Metody systemowe i decyzyjne w informatyce Laboratorium Zadanie nr 3 Osada autor: A Gonczarek Celem poniższego zadania jest zrealizowanie fragmentu komputerowego przeciwnika w grze strategiczno-ekonomicznej (np The Settlers) Zadanie, które ma rozwiązywać program, będzie polegało na optymalnym wybudowaniu budynków osady tak, aby minimalizować całkowity koszt wydobycia i dostarczania różnych zasobów, trzymając się przy tym pewnych podanych poniżej założeń Załóżmy najpierw, że na planszy gry rozlokowanych jest N skupisk różnych zasobów Dla uproszczenia załóżmy również, że skupiska mają kształt koła Każdy zasób opisany jest następującymi parametrami: 1 z n = (zn 1 zn) T współrzędne położenia środka skupiska na planszy ρ n promień skupiska [metr] 3 ω n pożądana prędkość napływu n-tego zasobu do osady [jednostka/sekunda] 4 c n koszt potrzebny do wyszkolenia ekipy robotników, która ze skupiska oddalonego o jeden metr, bedzie dostarczała jedna jednostke n-tego zasobu w ciagu sekundy [(złoto sekunda)/(metr jednostka)] gdzie n = 1,, N Przyjmijmy, że parametry ω n są ustalone i zależą od przyjętej strategii komputerowego przeciwnika W skład budynków osady wchodzi ratusz, którego współrzędne oznaczone są przez: x 0 = (x 1 0 x 0) T (1) Ponadto każdemu zasobowi odpowiada jeden budynek osady odpowiedzialny za jego przetwarzanie (np tartak przetwarza drewno) Położenia tych budynków oznaczone są przez x n = (x 1 n x n) T, () gdzie n = 1,, N Zakładamy ponadto, że budynki osady nie mogą być oddalone od ratusza dalej niż o odległość r [metr] Niech L n oznacza odległości n-tego budynku od n-tego zasobu i wyraża się wzorem: L n (x n ) = f( x n z n ρ n ), (3) 1
gdzie funkcja f( ) ma postać: 0 gdy x 0 f(x) = x gdy x > 0 (4) Koszt φ n (x n ) wyszkolenia robotników pozyskujących n-ty zasób z ustalonym zapotrzebowaniem ω n wynosi: φ n (x n ) = c n ω n L n (x n ) = a n f( x n z n ρ n ), (5) gdzie a n = c n ω n Niech x = (x 1 0 x 0 x 1 1 x 1 x 1 N x N) T oznacza wektor położeń wszystkich budynków w osadzie Całkowity koszt wyszkolenia robotników pozyskujących wszystkie zasoby z ustalonymi prędkościami napływu ω n wynosi: φ(x) = φ n (x n ) = a n f( x n z n ρ n ) (6) Do znalezienia optymalnego położenia budynków x minimalizującego koszt szkolenia robotników (6) zastosujemy optymalizację numeryczną Zastosujemy metody, które wymagają, aby funkcja celu była różniczkowalna Funkcja (6) nie jest różniczkowalna ponieważ funkcja (4) nie jest różniczkowalna w zerze Możemy rozwiązać ten problem stosując następującą aproksymację funkcji (4): g(x) = 1 ( ) x x γ, (7) gdzie γ jest pewną ustaloną liczbą (np γ rysunku 1 = 01) Obie funkcje zostały przedstawione na Rysunek 1: Funkcje f(x) i g(x)
Po zastępieniu funkcji (4) funkcją (7) otrzymujemy ostateczną postać funkcji celu: φ(x) = a n g( x n z n ρ n ) (8) Sformułujemy następujące zadanie optymalizacji: minimalizuj (po x) φ(x) przy ograniczeniach: x n x 0 r, n = 1,, N Ograniczenia wynikają z faktu, że budynki osady nie mogą być oddalone od ratusza dalej niż o odległość r Ponieważ zarówno funkcja celu, jak i ograniczenia są wypukłe do rozwiązania zadania optymalizacji zastosujemy algorytm Interior-Point Zacznijmy od przedstawienia algorytmu Newtona dla zadania optymalizacji bez ograniczeń Niech F (x) oznacza funkcję podwójnie różniczkowalną Metoda Newtona ma następującą postać: Algorithm 1: Metoda optymalizacji Newtona Input : Punkt startowy x 0 domf, dokładność ε Output: Punkt optymalny x dla funkcji F 1 x x 0 ; while F (x) T ( F (x)) 1 F (x) ε do 3 x ( F (x)) 1 F (x); 4 η arg min η>0 F (x η x); 5 x x η x; 6 end W powyższym algorytmie domf oznacza dziedzinę funkcji F, F (x) oznacza gradient funkcji F (x), natomiast F (x) oznacza hesjan (macierz pochodnych cząstowych drugiego rzędu) Ponadto ε jest ustalonym parametrem i oznacza dokładność Aby wyznaczyć długość kroku η w każdej iteracji algorytmu Newtona należy użyć metody minimalizacji w kierunku dla funkcji jednej zmiennej F (η) = F (x η x) lub skorzystać z następującej heurystyki: Algorithm : Backtracking line search Input : Parametry α (0, 05), β (0, 1), punkt x, kierunek x Output: Długość kroku η 1 η 1; while F (x η x) F (x) α F (x) T x do 3 η βη; 4 end 3
W zależności od stosowanego języka do implementacji, w powyższym algorytmie może być również konieczne sprawdzanie czy F (x η x) nie osiąga wartości NaN (Not a Number) Dla sformułowanego zadania optymalizacji wyznaczamy funkcję z logarytmiczną barierą: G t (x) = tφ(x) ln(r x n x 0 ) (9) Metoda Interior-Point z logarytmiczną barierą ma następującą postać: Algorithm 3: Metoda Interior-Point Input : Parametry t 0, µ > 1, punkt startowy x 0 domg t0, dokładność ε Output: Punkt optymalny x dla zadania optymalizacji z ograniczeniami 1 x x 0 ; t t 0 ; 3 while N t ε do 4 Wyznacz x(t) algorytmem Newtona dla funkcji G t i punktu startowego x; 5 x x(t); 6 t µt; 7 end W powyższym algorymie N oznacza liczbę ograniczeń nierównościowych w zadaniu optymalizacji Aby użyć metody Interior-Point do sformułowanego zadania optymalizacji pozostaje jedynie wyznaczyć gradient i hesjan funkcji G t (x) Gradient będzie miał następującą postać: G t (x) = G t(x) x 0 G t(x) x 1 G t(x) x N, (10) gdzie Gt(x) x n są wektorami o wymiarach 1, dla n = 0, 1,, N i mają następującą postać: G t (x) x 0 (x n x 0 ) =, (11) r x n x 0 gdzie n = 1,, N G t (x) = ta n g ( x n z n ρ n ) (x n z n ) (x n x 0 ), (1) x n x n z n r x n x 0 4
Hesjan będzie miał następującą postać: G t (x) = x 0 x T 0 x 1 x T 0 x x T 0 x N x T 0 x 0 x T 1 x 1 x T 1 x 0 x T 0 x x T 0 0 0 0 0 x 0 x T N x N x T N, (13) gdzie 0 oznaczają macierze samych zer o wymiarach, natomiast G t(x) x m x T n wymiarach, dla m, n = 0, 1,, N i mają następującą postać: G t (x) x 0 x T n G t (x) x 0 x T 0 = G t (x) x n x T 0 są macierzami o [ ] 4 = (r x n x 0 ) (x n x 0 )(x n x 0 ) T I r x n x 0, (14) [ ] 4 = (r x n x 0 ) (x n x 0 )(x n x 0 ) T I r x n x 0, (15) G t (x) x n x T n ta n = g ( x x n z n n z n ρ n )(x n z n )(x n z n ) T ta n g ( x x n z n 3 n z n ρ n )(x n z n )(x n z n ) T ta n g ( x n z n ρ n )I x n z n 4 (r x n x 0 ) (x n x 0 )(x n x 0 ) T I r x n x 0, (16) gdzie n = 1,, N i I oznaczają macierze jednostkowe o wymiarach Zadanie do wykonania 1 Sprawozdanie (max strony A4) Sprawozdanie ma się składać z dwóch części W pierwszej części sprawozdania należy uzasadnić, że problem optymalizacji sformułowany w zadaniu jest przykładem programowania wypukłego, tj że zarówno funkcja celu φ(x), jak i ograniczenia są funkcjami wypukłymi Następnie odpowiedzieć na pytanie, dlaczego w numerycznej optymalizacji istotne jest, żeby formułowane problemy były wypukłe Ponadto w sprawozdaniu umieścić wzory na pierwszą i drugą pochodną funkcji (7), gdyż są one niezbędne do wyliczenia zależności (1) i (16) Dodatkowo zaproponować jeden algorytm optymalizacji w kierunku dla funkcji jednej 5
zmiennej w celu wyliczenia długości kroku η w algorytmie Newtona i zapisać go w postaci pseudokodu Metoda ta ma być alternatywą dla heurystyki zaproponowanej w opracowaniu (algorytm ) Część druga sprawozdania ma zawierać ogólny schemat tworzonej aplikacji, opisany słownie, bądź w postaci diagramu UML Aplikacja W programie parametry z n mogą być generowane losowo lub wprowadzane przez kliknięcie Parametry ω n, ρ n i c n również mogą być generowane losowo lub wprowadzane przez użytkownika, przy czym przy każdym z zasobów mają być wypisane ich wartości Parametr r, jak również parametry algorytmów optymalizacji α, β, ε, µ, t 0 mają być wprowadzane przez użytkownika Punkt startowy x 0 można ustawić na 0 lub generować losowo, ale w taki sposób aby spełnione były ograniczenia nierównościowe Dodatkowo program ma wyświetlić położenia miejsca budowy ratusza oraz wszystkich pozostałych budynków, jak również podać koszt szkolenia robotników (wartość funkcji celu) Ponadto ma być podana liczba iteracji jaką wykonał algorytm Interior-Point oraz średnia liczba iteracji wykonywana przez algorytm Newtona W programie mają być zaimplementowane dwie metody wyliczania długości kroku η podana w opracowaniu heurystyka oraz metoda optymalizacji w kierunku zaproponowana w sprawozdaniu Dodatkowo ma być możliwość wprowadzenia wszystkich parametrów metody optymalizacji w kierunku 6