Dynamické programování

21
1 Dynamické programování RNDr. Jiří Dvořák, CSc. [email protected]

description

Dynamické programování. RNDr. Jiří Dvořák, CSc. dvorak @fme.vutbr.cz. Dynamické programování. - PowerPoint PPT Presentation

Transcript of Dynamické programování

Page 1: Dynamické programování

1

Dynamické programování

RNDr. Jiří Dvořák, CSc.

[email protected]

Page 2: Dynamické programování

2

Dynamické programováníDynamické programování se zabývá optimalizací dynamických úloh,

které je možno formulovat také jako úlohy řízení procesů probíhajících v čase. Dynamické programování je však použitelné i pro takové problémy, v nichž čas explicitně nevystupuje a může být do nich uměle zaveden.

Přístupy dynamického programování využívají aparát rekurentních funkcionálních vztahů a opírají se přitom o tzv. princip optimality, jehož autorem je Richard Bellman. Aplikace těchto přístupů vyžaduje zpravidla náročnější přípravu než aplikace metod matematického programování, neboť tyto přístupy v sobě zahrnují nejen vytvoření matematického modelu, ale také konstrukci výpočetní procedury k jeho řešení. Získaný algoritmus přitom podstatně závisí na struktuře řešeného problému.

Page 3: Dynamické programování

3

Příklady aplikací dynamického programování

Plánování výroby a zásob. Je třeba pro každou etapu plánovacího období určit, jaké množství výrobku vyrobit a jaké uskladnit pro budoucí použití, aby byla splněna poptávka po výrobku a byly minimalizovány seřizovací, výrobní a skladovací náklady.

Obnova zařízení. Zařízení postupně zastarává a zisk z jeho použití se postupně snižuje. Je třeba určit, kdy je nevhodnější pořídit nové zařízení.

Rozdělování zdrojů. Je dáno omezené množství nějakého ekonomického zdroje a několik možných způsobů použití s různým přínosem. Je třeba dané množství rozdělit tak, aby byl maximalizován celkový přínos.

Page 4: Dynamické programování

4

Rozhodovací procesRozhodovací proces může definovat pomocí pětice

T, P, Q, S, , kde jednotlivé symboly mají tento význam:

T … časová množina (obecně nějaká uspořádaná množina reálných čísel, přičemž tato čísla nemusejí mít význam časových hodnot)

P … množina stavů procesu

Q … množina rozhodovacích funkcí (strategií) q; q: T P

S … množina rozhodnutí

… transformační funkce; : T  T  P  Q  P; hodnotou výrazu je výsledný stav procesu v čase, do něhož se proces dostal z počátečního stavu p v čase t vlivem segmentu rozhodovací funkce q.

ttq ,(

Page 5: Dynamické programování

5

Klasifikace rozhodovacích procesů

Podle vlastností časové množiny T diskrétní procesy (T je nejvýše spočetná) spojité procesy (T je interval).

Podle charakteru veličin, které v procesech vystupují: procesy deterministické, procesy stochastické fuzzy procesy.

Dalším možným dělením procesů je dělení na procesy stacionární (výsledek transformace nezávisí na

volbě počátečního okamžiku t) procesy nestacionární.

Page 6: Dynamické programování

6

Diskrétní rozhodovací proces Diskrétní rozhodovací proces můžeme definovat jako posloupnost

vektorů {p1, q1, p2, q2, … }, kde pi je stav v i-té etapě procesu, qi je rozhodnutí v i-té etapě procesu, přičemž p1 je počáteční stav a pro ostatní stavy platí pi+1 = i (pi, qi).

Jestliže pro všechna i = 1, 2, … je pi+1 = (pi, qi), tj. transformační funkce nezávisí na etapě procesu, jedná se o proces stacionární. Předpokládáme, že rozhodnutí qi může nabývat hodnot z množiny Si (pi).

Cílem je nalezení takové rozhodovací strategie {q1, q2, … }, která optimalizuje kriteriální funkci F(p1, q1, p2, q2, … ) sdruženou s daným procesem, přičemž jsou splněny dané omezující podmínky.

Diskrétní rozhodovací procesy se také označují jako víceetapové rozhodovací procesy. Tyto procesy dělíme na procesy s konečným počtem etap a procesy s nekonečným počtem etap.

Page 7: Dynamické programování

7

Proces s konečným počtem etapUvažujme N-etapový rozhodovací proces

{p1, q1, p2, q2, … , pN, qN},

kde pi jsou stavové proměnné, qi jsou rozhodovací proměnné,

přičemž p1 je počáteční stav, pro ostatní stavy platí

pi+1 =  i (pi, qi) a qi  Si (pi) pro i = 1, 2, … , N.

Cílem je nalezení takové rozhodovací strategie {q1, q2, … , qN}, která

maximalizuje účelovou funkci F(p1, q1, p2, q2, … , pN, qN),

sdruženou s daným procesem.

Tvar této funkce nemůže být libovolný. Abychom mohli uplatnit přístupy dynamického programování, musí být účelová funkce separovatelná, což znamená, že je z ní možno separovat složky odpovídající jednotlivým etapám procesu.

Page 8: Dynamické programování

8

Příklad funkce sdružené s procesem

Uvažujme problém

Definujme pro i = 1, 2, … , N funkce

Výraz fN – i + 1(pi) tedy představuje maximální hodnotu

účelové funkce sdružené s (N – i + 1)-etapovým procesem, který začíná ve stavu pi .

max),(),,...,,,,(1

2211

N

iiiiNN qpgqpqpqpF

N

ijjjj

qqiiN qpgpf

Ni

),(max)(},...,{

1

Page 9: Dynamické programování

9

Funkcionální rovnicePro funkce fN – i + 1(pi) (i = 1, 2, … , N) platí

Tímto způsobem je N-rozměrný optimalizační problém převeden na posloupnost jedno rozměrných problémů, které se řeší postupně pro i = N, N–1, … , 1.

)(),,...,,,,(max 12211},...,,{ 21

pfqpqpqpF NNNqqq N

1,...,2,1

,),(),(max)()(

1

Ni

qpfqpgpf iiiiNiiipSq

iiNiii

),(max)()(

1 NNNpSq

N qpgpfNNN

Page 10: Dynamické programování

10

Bellmanův princip optimality

Nechť je optimální strategie N-etapového procesu s počátečním stavem p1 a transformační funkcí i .

Pak posloupnost (2  i  N) tvoří optimální strategii (N  i +1)-etapového procesu, jehož počáteční stav pi je

dán vztahy

Slovně tento princip můžeme formulovat tak, že jakákoli zbývající část optimální strategie je rovněž optimální, pokud proces začíná ve stavu, do nějž se dostane v důsledku předcházející části optimální strategie.

},...,,{ 21Nqqq

},...,,{ 1

Nii qqq

ijqpp jjjj ,...,2),,( 111

Page 11: Dynamické programování

11

Tabulková metoda1. Postupně pro i = N, N – 1, … , 1 a pro všechny možné

hodnoty stavů se počítají hodnoty fN – i + 1(pi) a ukládají se do

tabulek. Do dalších tabulek se ukládají příslušná optimální rozhodnutí . Pro druhou fázi této metody je nutno uchovat tabulky všech hodnot . Pro výpočet hodnot fN – i + 1(pi) stačí pouze tabulka s hodnotami fN – i (pi+1) .

2. Určením hodnoty fN  (p1) je určena optimální hodnota účelové

funkce F. Současně je také určeno optimální výchozí rozhodnutí . Zbývající prvky příslušné optimální strategie se pak naleznou v tabulkách hodnot na základě vztahu

kde i = 2, … , N a .

)(oii pq

)(oii pq

*1q

),()( 111oo

iiiiiii qpqpqq

11 pp

Page 12: Dynamické programování

12

Úloha o batohuMáme n věcí, jejichž celková hmotnost převyšuje limit

hmotnosti obsahu batohu. Úkolem je naplnit batoh tak, aby byla maximalizována celková cena obsahu batohu.

Matematický model:

kde aj je hmotnost j-té věci, cj je cena j-té věci, b je limit hmotnosti, xj = 1 znamená, že j-tou věc vezmeme, a xj = 0 znamená, že j-tou věc nevezmeme.

njx

bxa

xcf

j

n

jjj

n

jjj

,,11,0

max)(

1

1

x

Page 13: Dynamické programování

13

Formulace úlohy o batohu pomocí dynamického programování

Úlohu o batohu chápeme jako n-etapový rozhodovací proces, kde stavem procesu na začátku j-té etapy je zbývající kapacita batohu (označme ji pj) a rozhodnutím v j-té etapě je určení hodnoty proměnné xj (1 znamená j-tou věc vzít a 0 znamená nevzít).

Stavy procesu:p1 = b, pj+1 = pj – aj xj

Přípustná rozhodnutí:

Úloha se převede na systém n funkcionálních rovnic, přičemž j-tá rovnice určuje optimální hodnotu účelové funkce spojené s (n – j + 1)-etapovým procesem, začínajícím ve stavu pj .

0|1,0)( xapxpSx jjjjj

Page 14: Dynamické programování

14

Systém funkcionálních rovnic pro úlohu o batohu

Označme symbolem n – j + 1(pj) optimální hodnotu účelové funkce spojené s (n – j + 1)-etapovým procesem, začínajícím ve stavu pj . Pak platí

nnpSx

n

jjjjnjjpSx

jjn

n

n

jjj

xcp

nj

xapxcp

bxc

nnn

jjj

)(1

)(1

1

max)(

1,...,2,1

)(max)(

)(max

Page 15: Dynamické programování

15

Řešení systému funkcionálních rovnicSystém funkcionálních rovnic se řeší pro j = n, n – 1, … , 1 a pro

hodnoty stavů

kde je zvolená hodnota (např. = 1) a získané optimální hodnoty xj

o(pj) se zaznamenávají do tabulek.

Optimální řešení x* úlohy o batohu se pak z těchto tabulek získá takto:

kde

njpxx jjj ,...,2,1),(o

njxappbp jjjj ,...,2,, 1111

babpj

kkj ,,0max}...,2,{

1

1

Page 16: Dynamické programování

16

Zobecněná úloha o batohuMáme n druhů věcí a od každého druhu několik exemplářů. Celková

hmotnost všech věcí převyšuje limit hmotnosti obsahu batohu (kontejneru). Úkolem je naplnit batoh tak, aby celková cena obsahu batohu byla maximální.

Matematický model:

kde aj je hmotnost věci j-tého druhu, b je limit hmotnosti batohu, cj je cena věci j-tého druhu, dj je disponibilní počet věcí j-tého druhu, xj je počet věcí j-tého druhu vložených do batohu a Z označuje množinu celých čísel.

njZxdx

bxa

xcf

jjj

n

jjj

n

jjj

,,1,,0

max)(

1

1

x

Page 17: Dynamické programování

17

Formulace a řešení zobecněné úlohy o batohu pomocí DP

Můžeme použít stejné funkcionální rovnice jako pro klasickou úlohu o batohu, přičemž množiny přípustných rozhodnutí jsou dány vztahem

kde [ ] označuje největší celé číslo menší nebo rovné hodnotě výrazu uvnitř závorek.

Systém funkcionálních rovnic se řeší pro hodnoty stavů

j

jjjj a

pdpS ,min,...,1,0)(

bdabpj

kkkj ,,0max}...,2,{

1

1

Page 18: Dynamické programování

18

Proces s nekonečným počtem etapProcesy s nekonečným počtem etap jsou jen matematickou

idealizací reality. Uvažujme proces s konečným počtem etap s funkcionální rovnicí

Jestliže při velké hodnotě N použijeme jako aproximaci tohoto procesu proces s nekonečným počtem etap, dostaneme rovnici

kterou můžeme chápat jako limitní případ výše uvedeného vztahu pro N .

Tuto rovnici je obvykle nutno řešit metodou postupných aproximací. Je možné použít aproximace v prostoru funkcí a aproximace v prostoru strategií.

.1,),(),(max)( 1 Nqpfqpgpf Nq

N

),(),(max)( qpfqpgpfq

Page 19: Dynamické programování

19

Aproximace v prostoru funkcí

Zvolíme počáteční aproximaci f0(p) funkce f(p) a pak následně určujeme další aproximace této funkce na základě vztahů

Řešením těchto rovnic získáváme funkce

Chceme-li nějaký problém řešit uvedeným způsobem, musíme nejprve zkoumat otázku, za jakých podmínek posloupnosti

konvergují k řešení {f(p)} a {q*(p)}.

),(),(max)( 10111

qpfqpgpfq

),(),(max)( 1 nnnq

n qpfqpgpfn

....),(),( 21 pqpq

)}({)},({ pqpf nn

Page 20: Dynamické programování

20

Plnění batohu jako proces s nekonečným počtem etap

Předpokládejme, že počet věcí každého druhu je stejný a je roven M, což je velké číslo. Pak můžeme tuto úlohu chápat jako M-etapový rozhodovací proces, kde stavem procesu na začátku i-té etapy je zbývající kapacita batohu a rozhodnutím v i-té etapě je určení druhu věci, jejíž jeden exemplář se vloží do batohu.

Tento proces můžeme aproximovat procesem s nekonečným počtem etap, kterému odpovídá funkcionální rovnice

kde (p) označuje maximální cenu, kterou lze získat naplněním batohu o kapacitě p a

jinak0

)( a 0 pro)(max)( )(

pSpapcp

qqpSq

nqpaqpS q ,...,1,|)(

Page 21: Dynamické programování

21

Řešení úlohy o plnění batohu v nekonečném počtu etap

Princip řešení zobecněné úlohy o batohu založené na funkcionální rovnici uvedené na předchozím snímku můžeme charakterizovat takto: jestliže dokážeme optimálně naplnit menší batoh, dokážeme to i pro větší batoh.

Vzhledem k charakteru úlohy nemusíme zmíněnou funkcionální rovnici řešit metodou aproximací. Tuto rovnici řešíme postupně pro hodnoty p = 0, , 2, … , b. Tak získáme optimální rozhodovací funkci q*(p).

Optimální řešení výchozí úlohy je funkcí

q*(p) určeno tak, že je počet případů, kdy q*(p) = i.

Pro úlohu s počty exemplářů jednotlivých věcí omezenými hodnotami di je toto optimální řešení použitelné tehdy, jestliže

pro všechna i platí, že

},...,,{* 21 nxxxx

*ix

.*ii dx