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í
Cinkaničová, Goran, Rektor, Půlpan, Rampas, Zůbek

2 Dynamické programování
je metodou řešení jisté třídy extermálních úloh, které mají málo omezujících podmínek je specifický způsob optimalizace více-etapových rozhodovacích procesů, v nichž dochází k rozhodnutí v každé z následujících etap. etapa – jednotkový prvek, na než je celý proces rozdělen v čase nebo prostoru.

3 Dynamické programování
úlohy: 1) maximalizační - efektivní rozdělení zdrojů 2) minimalizační - plánování zásob

4 Dynamické programování
1. Příklad max. úlohy – Efektivní rozdělení zdrojů K dispozici máte šest horníků a ty máte rozdělit na čtyři pracoviště. Počet vytěžených vozíků rudy je závislý na počtu pracovníků přidělených na konkrétní pracoviště - viz. tabulka:

5 Dynamické programování
gi…… funkce počtu horníků | i= 1…4 počet horníků g1(x) g2(x) g3(x) g4(x) 1 9 32 38 35 2 26 75 50 3 42 89 65 4 51 57 103 5 54 77 104 85 6 101 109 107 95

6 Dynamické programování
Řešení: maximalizační úlohy - hledáme maximum funkce F= g1(x1)+g2(x2)+…+gn(xn) max F1(q)= g1(q), pro všechna q= 0,1,…Q F2(q)= max {g2(x)+F1(q-x)|x= 0,1,…q } Fj(q)= max {gj(x)+Fj-1(q-x)|x= 0,1,…q }

7 Dynamické programování
Fj(q)= max { gj(x)+Fj-1(q-x)|x= 0,1,…q } q F1(q) F2(q) F3(q) F4(q) 0(0) 1 9(1) 32(1) 38(1) 2 26(2) 41(1) 75(2) 75(0) 3 42(3) 58(1) 107(2) 110(0) 4 51(4) 74(1) 121(3) 142(1) 5 54(5) 83(1) 135(4) 157(2) 6 101(6) 109(6) 149(2) 172(3) F2(1)= g2(0)+F1(1-0)= 0+9= F2(2)= g2(0)+F1(2-0)= 0+26= 9 g2(1)+F1(1-1)= 32+0= g2(1)+F1(2-1)= 32+9= 41 g2(2)+F1(2-2)= 32+0= 32

8 Dynamické programování
Zhodnocení: Výsledná tabulka nám ukazuje efektivní rozdělení horníků do čtyř pracovišť.

9 Dynamické programování
2. Příklad min. úlohy – Plánování zásob Období 11týdnů je rozděleno do šesti nestejně dlouhých období. Poptávka je vztažena k začátku každého období. Náklady na skladování jsou c1= 0,4 peněžních jednotek za jednotku zboží a jeden týden skladování Náklady na zajištění objednávky jsou c2= 30 peněžních jednotek. Cena zboží nezávisí na velikosti objednávky.

10 Dynamické programování
Zjistěte, kdy je třeba objednávat zboží, aby bylo dosaženo min. nákladů na pořizování a udržování zásob - viz. tabulka: číslo období (i) 1 2 3 4 5 6 poptávka Q(i) 50 40 15 25 20 začátek období t(i) 8

11 Dynamické programování
Řešení: minimalizační úlohy -Vyjádříme souhrnné náklady na nákup na začátku jednoho období (k) a skladování do konce období (L) včetně. Náklady na pořízení a udržování zásob: N(k,L)= c2+c1 Σ Q(j) . (t(j)-t(k)) F(i) min. náklady na pokrytí poptávky do i-tého období včetně: F(i) = min {[F(j)+N(j+1,i)]; 0≤ j< i} L j=k

12 Dynamické programování
L N(k,L)= c2+c1 Σ Q(j) . (t(j)-t(k)) j=k 30 46 70 120 240 304 48 88 188 244 40 80 112 50 74 N(1,3)= c2+c1.[Q1(t1-t1)+Q2(t2-t1)+Q3(t3-t1)] = 30+0,4.[50.(0-0)+40.(1-0)+15.(4-0)]= 70 N(2,3)= c2+c1.[Q2(t2-t2)+Q3(t3-t2)] = 30+0,4.[40.(1-1)+15.(4-1)]= 48

13 Dynamické programování
Hodnoty F(i) získáme, ze vztahů: F(0)= 0; F(1)= c2 F(i) = min{[F(j)+N(j+1,i)]; 0≤ j< i} odkud: F(2)= min{F(0)+N(1,2), F(1)+N(2,2)}= min{0+46, 30+30}= 46 F(3)= min{F(0)+N(1,3), F(1)+N(2,3), F(2)+N(3,3),}= min{0+70, 30+48, 46+30}= 70

14 Dynamické programování
Počet kroků výpočtu je možné redukovat, protože při N(k,L+1)- N(k,L) > c2 např.: N(1,4)- N(1,3) > c > 30 32 > 30 je zřejmě výhodnější zajistit zásobování realizací další objednávky

15 Dynamické programování
Zhodnocení: Doplníme získané hodnoty do tabulky. číslo období (i) 1 2 3 4 5 6 poptávka Q(i) 50 40 15 25 20 začátek období t(i) 8 doba předchozí obj. min. náklady F(i) 30(0) 46(0) 70(0) 86(3) 116(5) 132(5)


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

Podobné prezentace


Reklamy Google