Metody optymalizacji – Paweł Zieliński 1 Metody optymalizacji
Transkrypt
Metody optymalizacji – Paweł Zieliński 1 Metody optymalizacji
1 Metody optymalizacji – Paweł Zieliński Metody optymalizacji – laboratorium zad. 0 Przeczytać opis języka OPL w celu zapoznania się z możliwościami OPL i środowiska IBM ILOG CPLEX Optimization Studio. zad. 1 Załóżmy, że chcemy zebrać dane liczbowe na temat m różnych cech populacji. Ogromna ilość zebranej informacji pamiętana jest w chmurze w n różnych miejscach (serwerach). Niech Tj oznacza czas potrzebny na przeszukanie j-tego miejsca, j = 1, . . . , n, przy czym zakładamy, że nie zależy on od liczby cech, których charakterystyki liczbowe zamierza się w danym momencie odczytać. Dane dotyczące niektórych cech zapisane są w więcej niż jednym miejscu, tzn. niektóre miejsca zawierają duplikaty informacji. Niech qij = 1 jeśli dane na temat cechy i zapisane są w miejscu j, oraz qij = 0 w przeciwnym przypadku. W ten sposób, np. q13 = q18 = q19 = 1 oznacza, że dane na temat cechy 1 zapisane są w miejscach 3, 8 i 9. Wyznaczyć te spośród n miejsc, które należy przeszukać, aby zminimalizować łączny czas odczytania danych dotyczących wszystkich cech. Podać model powyższego problemu. Zapisać go w OPL. Rozwiązać jakiś egzemplarz problemu. Oddzielić model od danych. Dane (m liczba cech, n liczba miejsc, czasy dostępu Tj do miejsc oraz qij informacje w których miejscach pamiętane są cechy) powinny być zadawane w osobnym pliku z danymi, tak aby na ich podstawie OPL generował model i go rozwiązywał. Maksymalnie sparametryzować zapis modelu. zad. 2 Niech Pij będzie j-tym podprogramem obliczania funkcji i należącym do biblioteki podprogramów (i ∈ {1, . . . , m}, j ∈ {1, . . . , n}). Podprogram Pij zajmuje rij komórek pamięci i potrzeba na jego wykonanie tij jednostek czasu. Należy ułożyć program P obliczający zadany zbiór funkcji I, I ⊆ {1, . . . , m}. Zatem należy dobrać tak podprogramy Pij wchodzące w skład P , obliczające wszystkie funkcje z I, aby cały program zajmował nie więcej niż M komórek pamięci, a czas jego wykonania był minimalny. Podać model powyższego problemu. Zapisać go w OPL. Rozwiązać jakiś egzemplarz problemu. Oddzielić model od danych. Dane (m, n, czasy wykonania podprogramów tij , wymagania pamięciowe podprogramów rij , zbiór I funkcji do obliczenia oraz wymagania pamięciowe M programu P ) powinny być zadawane w osobnym pliku z danymi, tak aby na ich podstawie OPL generował model i go rozwiązywał. Maksymalnie sparametryzować zapis modelu. zad. 3 Dany jest zbiór zadań Z = {1, ..., n}, które mają być wykonywane na trzech procesorach P1 , P2 i P3 . Zakładamy, że: 1. każdy procesor może wykonywać w danym momencie tylko jedno zadanie, 2. każde zadanie musi być wykonywana najpierw na procesorze P1 następnie na procesorze P2 i na końcu na procesorze P3 , 3. kolejność wykonywania zadań na wszystkich trzech procesorach jest taka sama. Dla każdego zadania i ∈ Z są zadane czasy trwania ai , bi oraz ci odpowiednio na procesorach P1 , P2 i P3 . Wszystkie dane są dodatnimi liczbami całkowitymi. Każdy harmonogram jest jednoznacznie określony przez pewną permutację π = (π(1), ..., π(n)) zadań należących do zbioru Z. Niech Cπ(k) oznacza czas zakończenie k-go zadania na procesorze P3 dla permutacji π. Celem jest wyznaczenie permutacji π takiej, że: Cmax = Cπ(n) → min . Podać model powyższego problemu. Zapisać go w OPL. Rozwiązać jakiś egzemplarz problemu. Oddzielić model od danych. Dane (liczba procesorów, czasy trwania zadań na procesorach) powinny być zadawane w osobnym pliku z danymi, tak aby na ich podstawie OPL generował model i go rozwiązywał. Maksymalnie sparametryzować zapis modelu. Program w OPL powinien wizualizować rozwiązanie na tekstowej konsoli w stylu diagramu Gantt’a. Taka wizualizacja pozwala łatwo sprawdzić dopuszczalność harmonogramu. 2 Metody optymalizacji – Paweł Zieliński P1 P2 P3 1 2 1 3 4 2 3 1 4 2 3 4 Cmax Rysunek 1: Przykładowy harmonogram dla czterech zadań wyznaczony przez permutację π = (1, 2, 3, 4). zad. 4 ∗ Dany jest zbiór zadań Z = {1, ..., n}, które mają być wykonywane na jednym procesorze (w każdym momencie na procesorze może być wykonane tylko jedno zadanie). Dla każdego zadania j, j ∈ Z, są zadane: moment przybycia rj (gotowość do wykonania - przed tym momentem zadanie jest niedostępne), wagę (priorytet) wj . Wszystkie zadania mają ten sam czas wykonania p na procesorze. Wszystkie zadania są podzielne, tzn. wykonanie każdego zadania ze zbioru Z może być przerywane w dowolnym momencie i następnie kontynuowane, przy czym obsługa tego przerwania nie jest związana ze stratą czasu. Niech Cj będzie momentem zakończenia wykonania zadania j (tj. moment, w którym zadanie j wykonano na procesorze przez p jednostek czasowych). Należy P podać harmonogram wykonania zadań (jak wykonać zadania) minimalizujący kryterium j∈Z wj Cj . Przykład Dane: n = 6, czas wykonania zadań p = 3, momenty przybycia r1 = 0, r2 = 1, r3 = 3, r4 = 5, r5 = 6, r6 = 7, wagi w1 = 3, w2 = 100, w3 = 2, w4 = 10, w5 = 5, w6 = 200. Optymalny harmonogram jest następujący: 1 | 2 2 2 | 1 1 | 4 | 6 6 6 | 4 4 | 5 5 5 | 3 3 3 | – oś czasowa t. Wyznaczone momenty zakończenia zadań są: C1 = 6, C2 = 4, C3 = 18, C4 = 12, C5 = 15, C6 = 10. Zatem zadanie nr 1 należy rozpocząć po t = 0, wykonać 1 jednostkę (przerwać), następnie po t = 1 rozpocząć wykonanie zadania nr 2 przez 3 jednostki (C2 = 4), po t = 4 kontynuowaćPwykonanie przerwanego zadania nr 1 przez 2 jednostki (C1 = 6), itd. Wartość funkcji celu j∈Z wj Cj = 2649. Podać model powyższego problemu. Zapisać go w OPL. Rozwiązać jakiś egzemplarz problemu. Oddzielić model od danych. Dane powinny być zadawane w osobnym pliku z danymi, tak aby na ich podstawie OPL generował model i go rozwiązywał. Maksymalnie sparametryzować zapis modelu. Program w OPL powinien wizualizować rozwiązanie jak w przykładzie. Taka wizualizacja pozwala łatwo sprawdzić dopuszczalność harmonogramu. zad. 5 † Dany jest zbiór R złożony z p typów odnawialnych zasobów R1 , R2 , . . . , Rp . Zasoby te są limitowane, tj. dla każdego Ri , i = 1, . . . , p podany jest limit Ni jednostek. Limity są stałe – nie zmieniają się w całym okresie planowania. Dany jest zbiór czynności Z = {1, ..., n}. Dla każdej czynności j ∈ Z dany jest czas jej wykonania tj (w jednostkach czasowych) oraz wektor r j = [r1 , r2 , . . . , rp ] opisujący zapotrzebowanie na poszczególne zasoby R1 , R2 , . . . , Rp , tzn. opisujący ilość jednostek zasobów zużywanych podczas wykonywania czynności j. Na czynności zbioru Z nałożone są ograniczenia kolejnościowe (Z jest częściowo uporządkowany). Ograniczenia kolejnościowe mogą być reprezentowane za pomocą grafu, w którym wierzchołki odpowiadają czynnością, a łuki ∗ Ciekawostka, † Problem do tej pory nie istnieje iteracyjny efektywny algorytm rozwiązujący rozpatrywany problem. występuje podczas planowania i rozdziału zasobów np. w projekcie programistycznym. 3 Metody optymalizacji – Paweł Zieliński określają poprzedzanie. Jeśli k → l, to czynność l nie może być rozpoczęta przed ukończeniem czynności k. Należy znaleźć harmonogram minimalizujący czas wykonania całego przedsięwzięcia. Harmonogram jest dopuszczalny jeśli spełnia ograniczenia kolejnościowe oraz przydział zasobów, zgodny z zapotrzebowaniem, nie przekracza podanych limitów w każdym momencie okresu planowania. Podać model powyższego problemu. Zapisać go w OPL. Rozwiązać jakiś egzemplarz problemu. Oddzielić model od danych. Maksymalnie sparametryzować zapis modelu. Program w OPL powinien wizualizować rozwiązanie na tekstowej konsoli w stylu diagramu Gantt’a. Drukować również zapotrzebowanie na zasoby dla każdego momentu okresu planowania. Taka wizualizacja pozwala łatwo sprawdzić dopuszczalność harmonogramu. Przykład egzemplarza problemu Dane: liczba czynności n = 8 , jeden typ zasobów (np. programiści) p = 1, limit zasobu N1 = 30, Czynność j Czynności poprzedzające Czasy wykonania tj Zapotrzeb. na zasoby r j = [r1 ] 1 — 50 9 2 1 47 17 3 1 55 11 4 1 46 4 5 2 32 13 6 3,4 57 7 7 4 15 7 8 5,6,7 62 17 Graf poniżej opisuje ograniczenia kolejnościowe. 1 2 5 3 6 4 8 7 Uwaga: Zakłada się, że dane we wszystkich zadaniach mają wartości całkowite Rozwiązania problemów przedstawić w postaci sprawozdania, plik pdf + wydruk, które powinno zawierać: 1. model (a) definicje zmiennych decyzyjnych (opis, jednostki), (b) ograniczenia, (c) funkcję celu, 2. wyniki oraz ich interpretację. Do sprawozdania należy dołączyć pliki w formacie OPL. Każdy plik powinien zawierać: model, imię i nazwisko autora, komentarze zmiennych, zaetykietowane ograniczenia oraz komentarz ograniczeń.