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ń.