BAd_OPER_dynam

Transkrypt

BAd_OPER_dynam
BADANIA OPERACYJNE
Programownie dynamiczne
dr Adam Sojda
[email protected]
http://dydaktyka.polsl.pl/roz6/asojda/default.aspx
Pokój A405
Programowanie dynamiczne
Programowanie dynamiczne jest jedną z metod rozwiązywania
wieloetapowych problemów decyzyjnych. Jej twórcą jest amerykański
matematyk Richard Bellman. Przedstawiamy ją na przykładzie
dyskretnego deterministycznego problemu n - etapowego. Przyjmijmy
oznaczenia:
di
- decyzja, którą należy podjąć w i-tym etapie,
si
-
stan przed podjęciem decyzji di,
si+1 -
stan po podjęciu decyzji di.
Di
-
zbiór decyzji dopuszczalnych w i-tym etapie,
Si
- zbiór stanów, które mogą zaistnieć na początku i-tego etapu.
Ciąg decyzji { d1, d2, ... , dn } nazywamy strategią
dr Adam SOJDA
2
Programowanie dynamiczne
Z deterministycznego charakteru problemu wynika, ze wybór decyzji
di przy stanie si jednoznacznie wyznacza stan si+1. Zatem efekt
przyjęcia strategii { d1, d2, ... , dn }, czyli kolejnego podejmowania
decyzji d1, d2, ... , dn , można przedstawić następująco:
s1
d1
Etappierwszy
s2
d2
Etapdrugi
s3
sn
dn
sn+1
Etapn-ty
S1 jest zbiorem jednoelementowym. Ponieważ problem jest
deterministyczny wybór decyzji di przy stanie si określa
jednoznacznie si+1, co zapisujemy wzorem:
si+1=Ti( di, si ), gdzie i =1, 2, ..., n.
dr Adam SOJDA
3
Programowanie dynamiczne
Niech funkcją kryterium będzie funkcja
F ( d1, d2, ..., dn, s1, s2, ..., sn )
Rozwiązaniem rozważanego problemu jest znalezienie strategii
optymalnej, czyli takiego ciągu decyzji {d1, d2, ..., dn }, dla którego
funkcja F osiąga ekstremum.
Aby można było zastosować metodę programowania dynamicznego
problem ten musi mieć własność Markowa, to znaczy, że po podjęciu
decyzji d1, d2, ..., dk w kolejnych k etapach stan sn+1 na końcu etapu
n zależy wyłącznie od stanu sk+1 który zaistniał po podjęciu decyzji
dk oraz decyzji dk+1,, dk+2, ..., dn podjętych w następnych etapach.
dr Adam SOJDA
4
Programowanie dynamiczne
Z własności Markowa wynika zasada optymalności Bellmana, na
której oparto metodę programowania dynamicznego.
„Strategia optymalna ma tę własność, że niezależnie
od tego jaki był stan początkowy i jakie były decyzje
początkowe, pozostałe decyzje muszą tworzyć
strategię optymalną ze względu na stan będący
efektem tych początkowych decyzji.”
dr Adam SOJDA
5
Programowanie dynamiczne
Ciąg równań (RD) nazywany jest ciągiem równań funkcyjnych
Bellmana. Posługiwanie się tymi równaniami dla rozwiązania
wieloetapowego problemu decyzyjnego można przedstawić w formie
algorytmu:
⎧ g n (sn ) := max{ f n (d n , sn )}
d n ∈Dn
⎪
sn ∈S n
( RD )⎨
g k (sk ) := max{ f k (d k , sk ) + g k +1 (sk +1 )}
⎪
d k ∈Dk
sk ∈S k
⎩
dla k =1, 2, ..., n-1.
dr Adam SOJDA
6
Programowanie dynamiczne
Krok 1.
ETAP
n
Wyznacz
gn ( sn ) := max { fn ( dn , sn )}
Kroki 2,.., n-1.
ETAPY
Wyznacz
gk ( sk ) := max { fk ( dk , sk ) + gk+1 ( sk+1 )}
Krok n.
ETAP
Oblicz:
g.1 ( s1 ) := max { f1 ( d1, s1 ) + g2 ( s2 )}
dn ∈Dn
sn ∈Sn
n-k , gdzie k = 1, 2, ..., n-1.
dk ∈Dk
sk ∈Sk
1
d1∈D1
s1∈S1
Decyzja d1* , dla której funkcja g1( s1 ) osiąga maksimum, jest decyzją optymalną w 1
etapie. Odpowiada jej jednoznacznie stan s2* = T1( d1*, s1 ).
Powtarzając obliczenia dla funkcji g2( s2*), g3( s3*), ..., gn( sn*) otrzymujemy ciąg decyzji
optymalnych { d1*, d2*, ..., dn* } tworzących strategię optymalną.
dr Adam SOJDA
7
Programowanie dynamiczne
Zarząd firmy może przeznaczyć 150 jednostek pieniężnych na
inwestycje w trzech wydziałach A1, A2, A 3 .Jak rozdzielić posiadane
środki, aby spowodowało to maksymalny łączny wzrost zysków?
Wzrost zysków w poszczególnych wydziałach po zainwestowaniu w
nich odpowiednio 0, 50, 100, 150 jednostek pieniężnych podano w
tabeli.
dr Adam SOJDA
8
Programowanie dynamiczne
Rozwiązanie:
Sztucznie dzielimy cały proces przydziału kwoty 150 jednostek pieniężnych na trzy
etapy:
Etap 1.
Przydział x1 jednostek pieniężnych na A1,
Etap 2.
Przydział x2 jednostek pieniężnych na A2,
Etap 3.
Przydział x3 jednostek pieniężnych na A3.
Przyjmijmy oznaczenia:
si
- kwota, która pozostała do rozdziału, na początku i-tego etapu,
fi(xi,si) - wzrost zysku w wydziale Ai po przydzieleniu na inwestycje xi jp, jeśli na
inwestycje pozostało jeszcze si jp.
Łączny wzrost zysków z inwestycji wyniesie
F(x1,x2,x3,s1,s2,s3) = f1(x1,s1) + f2(x2,s2) + f3(x3,s3).
Zarząd firmy chce zmaksymalizować wzrost zysków.
max F(x1,x2,x3,s1,s2,s3) dla
si ∈Si,
i = 1,2,3
x1+x2+x3=150
dr Adam SOJDA
9
Programowanie dynamiczne
s1
x1
Etappierwszy
s2
x2
Etapdrugi
s3
x3
s4
Etaptrzeci
Zauważmy, że:
s1 = 150,
s2 = 150 – x1,
s3 = s2 – x2,
s4 = s3 – x3 = 0 stąd x3 = s3.
D1={ x1: 0 ≤ x1 ≤ s1},
D2={ x2: 0 ≤ x2 ≤ s2},
D3={ x3: x3 = s3}.
dr Adam SOJDA
10
Programowanie dynamiczne
Krok 1. (Etap 3). Przydział x3 wydziałowi A3
g3(s3) = max f3(x3,s3) =
max f3(x3,s3) = f3(s3,s3)
s3–x3=0
x3=s3
Krok 2. (Etap 2). Przydział x2 wydziałowi A2
g2(s2) = max (f2(x2,s2)+ g3(s3))
0 ≤ x2 ≤ s2
Krok 3. (Etap 1). Przydział x1 wydziałowi A1
g1(s1) = max (f1(x1,s1) + g2(s2))
0 ≤ x1 ≤ s1
Stąd możemy policzyć kolejno:
Krok 1. dla x3 = s3 gdzie 0 ≤ s3 ≤ 150
mamy
g3(s3) = f3(x3,s3) = f3(s3,s3)
dr Adam SOJDA
11
Programowanie dynamiczne
Krok 1. dla x3 = s3 gdzie 0 ≤ s3 ≤ 150
mamy
g3(s3) = f3(x3,s3) = f3(s3,s3)
dr Adam SOJDA
12
Programowanie dynamiczne
Krok 2. (Etap 2). Przydział x2 wydziałowi A2
g2(s2) = max (f2(x2,s2)+ g3(s3))
0 ≤ x2 ≤ s2
Ponieważ s3 = s2 – x2 więc s2 = s3 + x2.
dr Adam SOJDA
13
Programowanie dynamiczne
Krok 3.
Przydział x1 wydziałowi A1
g1(s1) = max (f1(x1,s1) + g2(s2))
0 ≤ x1 ≤ s1
Największy wzrost zysku 1150 jednostek pieniężnych przyniosą przydziały:
50
jednostek pieniężnych wydziałowi A3 ( x3 = 50 )
0
jednostek pieniężnych wydziałowi A2 ( x2 = 0)
100
jednostek pieniężnych wydziałowi A1 ( x1 = 100 )
lub
0
50
100
jednostek pieniężnych wydziałowi A3 ( x3 = 0)
jednostek pieniężnych wydziałowi A2 ( x2 = 50)
jednostek pieniężnych wydziałowi A1 ( x1 = 100).
dr Adam SOJDA
14
Programowanie dynamiczne
Krok 3.
Przydział x1 wydziałowi A1
g1(s1) = max (f1(x1,s1) + g2(s2))
0 ≤ x1 ≤ s1
Największy wzrost zysku 1150 jednostek pieniężnych przyniosą przydziały:
50
jednostek pieniężnych wydziałowi A3 ( x3 = 50 )
0
jednostek pieniężnych wydziałowi A2 ( x2 = 0)
100
jednostek pieniężnych wydziałowi A1 ( x1 = 100 )
lub
0
50
100
jednostek pieniężnych wydziałowi A3 ( x3 = 0)
jednostek pieniężnych wydziałowi A2 ( x2 = 50)
jednostek pieniężnych wydziałowi A1 ( x1 = 100).
dr Adam SOJDA
15