Programowanie dynamiczne
Transkrypt
Programowanie dynamiczne
D. Miszczyńska, M. Miszczyński, KBO UŁ, Elementy programowania dynamicznego 1 Elementy PROGRAMOWANIA DYNAMICZNEGO (PD) Rozważamy n-etapowy proces decyzyjny: t stan początkowy decyzja etap 1 etap 2 ... etap n-1 x1 yn y n 1 y2 y1 etap n x n 1 x2 xn Stan procesu na początek każdego etapu t określa zmienna stanu (zmienna fazowa) y t ze zbioru Yt zwanego przestrzenią stanu (przestrzenią fazową); y t Yt . Decyzję w każdym etapie określa zmienna decyzyjna x t ze zbioru X t yt zwanego zbiorem decyzji dopuszczalnych; xt X t y t . Dla każdego etapu t znamy funkcję transformacji stanu (funkcja przejścia): yt 1 t yt , xt Oznacza to, że stan procesu na początek następnego (t+1) etapu zależy wyłącznie od stanu procesu na początku etapu aktualnego (t) oraz od decyzji podjętej w aktualnym (t) etapie. Wielkość korzyści (strat) dla etapu t jest opisana za pomocą funkcji korzyści bieżącej: Ft yt , xt Wielkość korzyści (strat) n-etapowego procesu jest opisana za pomocą funkcji korzyści procesu: F y1, x1, y2 , x2 ,, yn 1, xn 1, yn , xn n F y , x t t t t 1 Funkcja korzyści procesu n-etapowego jest więc funkcją: addytywną oraz rozłączną między etapami procesu ze względu na zmienne Ogólne zagadnienie PD można sformułować następująco: yt n oraz F y1 , x1 , y 2 , x2 ,, y n1 , xn1 , y n , xn Ft yt , xt max(min) t 1 przy ograniczeniach yt 1 t yt , xt y t Yt xt X t y t t 1,2, , n 1, n xt . D. Miszczyńska, M. Miszczyński, KBO UŁ, Elementy programowania dynamicznego 2 Procedura PD U podstaw procedury PD leży zasada optymalności Bellmana: „Polityka optymalna ma tę własność, że niezależnie od stanu początkowego procesu oraz decyzji określających dojście do danego stanu w wybranym etapie, pozostałe decyzje muszą stanowić politykę optymalną z danego etapu do etapu końcowego procesu”. Inaczej mówiąc: nie jest ważne jak dotarłeś do danego etapu, dalej musisz postępować optymalnie. Procedura PD jest zawsze postępowaniem 2-fazowym. 1. Faza I („wstecz”) – znajdowanie warunkowego sterowania optymalnego x y w każdym etapie t w kolejności: od etapu n (ostatniego) do etapu 1 (pierwszego); t n, n 1,,2,1 . * t t 2. Faza II („do przodu”) – znajdowanie bezwarunkowego sterowania optymalnego x w każdym etapie t w kolejności: od etapu 1 (pierwszego) do etapu n (ostatniego); t 1,2,, n 1, n . * t Dla uproszczenia zapisu przyjmujemy, że poszukujemy wartości największej funkcji korzyści procesu, tj. n F y1 , x1 , y 2 , x2 ,, y n1 , xn1 , y n , xn Ft yt , xt max t 1 D. Miszczyńska, M. Miszczyński, KBO UŁ, Elementy programowania dynamicznego 3 Faza I („wstecz”) Etap n (ostatni) poszukujemy warunkowej decyzji optymalnej xn* yn wykorzystując wyłącznie funkcję korzyści bieżącej Fn y n , xn etapu n. xn* y n : Gn y n max Fn y n , x n xn X n y n Etap t ( t n 1, n 2,,2,1 ) poszukujemy warunkowej decyzji optymalnej x y wykorzystując funkcję korzyści bieżącej F y , x etapu t oraz optymalną łączną korzyść warunkową dla wszystkich pozostałych etapów od następnego(t+1) do ostatniego (n), tj. wielkość G y , którą można zapisać na mocy równania transformacji stanu y y , x jako G y , x . W ten sposób dla etapu t przeszukiwana funkcja będzie zawsze funkcją zmiennej stanu i zmiennej decyzyjnej wyłącznie aktualnego etapu t. * t t t t t t 1 t 1 xt* yt : t t t t 1 t 1 t t t Gt y t max Ft y t , xt Gt 1 t y t , xt xt X t yt Wynikiem fazy I jest ciąg warunkowych sterowań optymalnych x y , x y ,, x y , x y oraz warunkowa optymalna wartość funkcji korzyści procesu G y . * n n * n 1 * 2 n 1 * 1 2 1 1 1 Faza II („do przodu”) Zakładamy, że stan początkowy procesu y (początek etapu 1) jest znany lub może być wskazany. Znajomość stanu y pozwala na wyznaczenie sterowania bezwarunkowego x poprzez wykorzystanie znajomości funkcji sterowania warunkowego x y . To z kolei pozwala na wyznaczenie stanu początkowego y poprzez wykorzystanie równania transformacji stanu y y , x . Powielając rekurencyjnie opisane postępowanie docieramy do ostatniego etapu (n). 1 1 * 1 * 1 2 2 1 1 * 1 1 D. Miszczyńska, M. Miszczyński, KBO UŁ, Elementy programowania dynamicznego Etap Stan początkowy Sterowanie bezwarunkowe 4 Stan procesu w następnym etapie yt xt* xt* yt y1 x1* x1* y1 y2 y2 x 2* x 2* y 2 y3 . . . . . . 1 2 . . . n-1 y n 1 xn*1 xn*1 yn1 n yn xn* xn* yn y , x y , x yt 1 t yt , xt* 1 1 * 1 2 2 * 2 . . y yn1 n2 yn2 , xn*2 yn n1 n 1 , xn*1 Na ogół nas nie interesuje Optymalną wartość funkcji korzyści procesu F wyznaczamy dzięki znajomości stanu procesu na początek etapu 1 ( y ) wykorzystując zależność F G y . max 1 max 1 1 D. Miszczyńska, M. Miszczyński, KBO UŁ, Elementy programowania dynamicznego Przykład 1 5 (Zagadnienie dyliżansu1) „W dawnych czasach żył Mr Mark Off, który postanowił poszukać szczęścia w San Francisco. Jedynym środkiem transportu ze Wschodu, gdzie mieszkał, na Zachód był dyliżans. Agent z biura podróży przedstawił mu mapę Stanów Zjednoczonych (patrz rys.), na której były zaznaczone różne możliwe trasy dyliżansów. Każdy kwadrat na mapie reprezentuje stan. Stany dla wygody ponumerowano. Zauważmy, że cała podróż ze Wschodu na Zachód składa się z czterech etapów niezależnie od wyboru drogi. Ponieważ podróżny wiedział, że podróż stanowi poważne niebezpieczeństwo dla jego zdrowia i życia, postanowił przed wyruszeniem z domu ubezpieczyć się. Cena polisy ubezpieczeniowej zależała od wyboru drogi; im większe niebezpieczeństwa czyhały na podróżnych, tym droższa była polisa bez-pieczeniowa. Niech cij oznacza cenę polisy ubezpieczeniowej na trasie od stanu i do stanu j. Przykładowe wartości cij zaznaczono na rysunku. Celem Marka Off był wybór takiej trasy ze Wschodu na Zachód, która minimalizowała ogólny koszt ubezpieczenia. etap 4 etap 3 etap2 etap1 „ 1 przykład pochodzi z pracy Wagner H.M., Badania operacyjne. Zastosowania w zarządzaniu, PWE, Warszawa,1980, s. 296 D. Miszczyńska, M. Miszczyński, KBO UŁ, Elementy programowania dynamicznego Przykład 1 6 (Zagadnienie dyliżansu - ROZWIĄZANIE) Etap 1 Stan początkowy Decyzja Etap 2 Etap 3 Etap 4 y1=1 y2{2,3,4} y3{5,6,7} x1(y1){2,3,4} x2(y2=2){5,6} x3(y3=5){8,9} x2(y2=3){5,6,7} x3(y3=6){8,9} x2(y2=4){6,7} x3(y3=7){8,9} „ t” y4{8,9} x4(y4=8)=10 x4(y4=9)=10 FAZA I („wstecz”) Etap 4 Etap 3 F4(y4,x4) G3(y3, x3)=F3(y3, x3) + G4(y4) G4(y4) x4*(y4) y4 \ x4 10 8 1 1 9 4 4 x3*(y3) y3 \ x3 8 9 10 5 7+1=8 5+4=9 8 8 10 6 3+1=4 4+4=8 4 8 7 7+1=8 1+4=5 5 9 Etap 2 Etap 1 G2(y2, x2)=F2(y2, x2) + + G3(y3) G2(y2, x2)=F2(y2, x2) + G3(y3) G2(y2) x2*(y2) y2 \ x2 G3(y3) 5 6 2 10+8=18 12+4=16 3 5+8=13 4 × 7 y1 \ x1 × 16 6 7+5=12 12 7 15+4=19 13+5=18 18 7 10+4=14 1 2 18 Etap Stan początkowy Decyzja Stan następny 1 y1 = 1 x1* = x1*(y1= 1) = 3 y2 = 3 2 y2 = 3 x2* = x2*(y2= 3) = 7 y3 = 7 3 y3 = 7 x3* = x3*(y3= 7) = 9 y4 = 9 4 y4 = 9 x4* = x4*(y4= 9) = 10 „y5” = 10 17 x1*(y1) 17 3 4 2+16= 5+12= 1+18= FAZA II („do przodu”) Fmin = G1(y1=1) = 17 3 G1(y1) 19 D. Miszczyńska, M. Miszczyński, KBO UŁ, Elementy programowania dynamicznego Przykład 2 7 (zarządzanie zapasami – popyt dany) Ustal dla pewnego dobra program produkcyjny {xt} dla 4 kolejnych okresów (t) minimalizujący łączne koszty produkcji i koszty magazynowania w okresach 14. Popyt (Dt) na produkowane dobro jest stały w każdym okresie t: Dt 3 dla t=1,2,3,4. max Możliwości produkcyjne (xt) w każdym etapie t : xt 5 . Koszty produkcji (C(xt)) ilości xt>0 w okresie t : C xt 15 5 xt . Koszty magazynowania są naliczane od stanu magazynu na koniec okresu. Oznacza to, że są one naliczane od stanu początkowego magazynu w okresie następnym (Zt+1). Koszt przetrzymywanie jednostki dobra w okresie t : hZ t 3 Z t . „Korzyść” bieżąca etapu t wynosi zatem: F Z t , xt C xt hZ t . Pojemność magazynu wynosi 4 jednostki (Zmax=4). Cała produkcja okresu 1-4 musi być sprzedana. Oznacza to, że Z5 (maj)=0. Równanie transformacji stanu ma postać: yt 1 yt , x t yt xt Dt yt xt 3 . Schemat postępowania Etap 1 styczeń Etap 2 luty Etap 3 marzec Etap 4 kwiecień Stan początkowy y1=Z1=0 y2=Z24 y3=Z34 y4=Z44 Decyzja x15 x25 x35 x43 t maj y5=Z5=0 FAZA I („wstecz”) Etap 4 (kwiecień) G4(y4, x4)=F4(y4, x4) = h4(y4) + C(x4) G4(y4) x4*(y4) y4 \ x4 0 1 2 3 4 5 0 × × × 0+30 × × 30 3 1 × × 3+25 × × × 28 2 2 × 6+20 × × × × 26 1 3 9+0 × × × × × 9 0 4 × × × × × × × × D. Miszczyńska, M. Miszczyński, KBO UŁ, Elementy programowania dynamicznego 8 Etap 3 (marzec+kwiecień) G3(y3, x3)=F3(y3, x3) + G4(y4) = h3(y3) + C(x3) + G4(y4) G3(y3) x3*(y3) y3 \ x3 0 1 2 3 4 5 0 0+30+30 0+35+28 0+40+26 60 3 1 3+25+30 3+30+28 3+35+26 3+40+9 52 5 2 6+20+30 6+25+28 6+30+26 6+35+9 50 4 3 9+0+30 9+20+28 9+25+26 9+30+9 39 0 4 12+0+28 12+20+26 12+25+9 40 0 G2(y2) x2*(y2) Etap 2 (luty+marzec+kwiecień) G2(y2, x2)=F2(y2, x2) + G3(y3) = h2(y2) + C(x2) + G3(y3) y2 \ x2 0 1 2 3 4 5 0 0+30+60 0+35+52 0+40+50 87 4 1 3+25+60 3+30+52 3+35+50 3+40+39 82 5 2 6+20+60 6+25+52 6+30+50 6+35+39 80 4 3 9+0+60 9+20+52 9+25+50 9+30+39 69 0 4 12+0+52 12+20+50 12+25+39 64 0 G1(y1) x1*(y1) 117 3 ; 4 Etap 1 (styczeń+luty+marzec+kwiecień) G1(y1, x1)=F1(y1, x1) + G2(y2) = h1(y1) + C(x2) + G2(y2) y1 \ x1 0 1 2 3 4 5 0 0+30+87 0+35+82 0+40+80 D. Miszczyńska, M. Miszczyński, KBO UŁ, Elementy programowania dynamicznego 9 FAZA II („do przodu”) etap miesiąc 1 2 3 4 styczeń luty marzec kwiecień zapas produkcja początkowy 0 3 0 4 1 5 3 0 popyt 3 3 3 3 lub zapas końcowy 0 1 3 0 Kmin = 117 etap miesiąc 1 2 3 4 styczeń luty marzec kwiecień zapas produkcja początkowy 0 4 1 5 3 0 0 3 popyt 3 3 3 3 zapas końcowy 1 3 0 0