Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Dynamické programování

Podobné prezentace


Prezentace na téma: "Dynamické programování"— Transkript prezentace:

1 Dynamické programování
RNDr. Jiří Dvořák, CSc.

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.

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.

4 Rozhodovací proces Rozhodovací 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.

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

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.

7 Proces s konečným počtem etap
Uvaž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.

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 .

9 Funkcionální rovnice Pro 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.

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.

11 Tabulková metoda 1. 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

12 Úloha o batohu Má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.

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 .

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í

15 Řešení systému funkcionálních rovnic
Systé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 xjo(pj) se zaznamenávají do tabulek. Optimální řešení x* úlohy o batohu se pak z těchto tabulek získá takto: kde

16 Zobecněná úloha o batohu
Má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.

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ů

18 Proces s nekonečným počtem etap
Procesy 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í.

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)}.

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

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


Stáhnout ppt "Dynamické programování"

Podobné prezentace


Reklamy Google