Jan Schmidt 2011 Katedra číslicového návrhu Fakulta informačních technologií České vysoké učení technické v Praze Zimní semestr 2011/12 MI-PAA EVROPSKÝ SOCIÁLNÍ FOND PRAHA & EU: INVESTUJENE DO VAŠÍ BUDOUCNOSTI 13. Lineární programování Formulace Prostor řešení a simplexová metoda Celočíselné lineární programování
Terminologie Programování : čti programování výrobní linky Lineární : čti při omezujících podmínkách a optimalizačním kritériu vyjádřených lineárními výrazy (také kvadratické, hyperbolické programování) Dynamické programování : programování výpočtu kombinatorického problému 2
Formulace Dána reálná čísla a 11... a mn, b 1... b m, c 1... c n Nalezněte reálná x 1, x 2,..., x n tak, aby c 1 x 1 + c 2 x 2 +... + c n x n max. c T x max. za podmínky a 11 x 1 + a 12 x 2 +... + a 1n x n b 1 a 21 x 1 + a 22 x 2 +... + a 2n x n b 2 Ax b a m1 x 1 + a m2 x 2 +... + a mn x n b m x 1 0, x 2 0,..., x n 0 x 0 3
Příklady Výrobní problémy nechť a ij je spotřeba materiálu i pro výrobek j nechť b i jsou dostupné zdroje materiálu i nechť c j je zisk z výroby jednotkového množství výrobku j maximalizace zisku z využití daných zdrojů Směšovací problémy minimalizace nákladů na dosažení stanoveného cíle 4
Příklad Moret & Shapiro x výroba světlého piva, hl y výroba tmavého piva, hl 21x + 31y max. 2x + 3y 25 4x + y 32 2x + 9y 54 x 0, y 0 Pivovar vaří světlé a tmavé pivo. Na 1hl světlého piva je potřebí 2 jednotky sladu, 4 jednotky chmele a 2 jednotky kvasnic. Na 1hl tmavého piva jsou potřebí 3 jednotky sladu, 1 jednotka chmele a 9 jednotek kvasnic. Zisk z prodeje světlého a tmavého piva je v poměru 21:31. Je k dispozici 25 jednotek sladu, 32 jednotek chmele a 54 jednotek kvasnic. Jaký má být výrobní program pro maximální zisk? 5
Lineární programování a kombinatorické problémy x A, b, c Ax b x 0 konfigurační a výstupní proměnné vstupní proměnné omezující podmínky c T x max. optimalizační kritérium a přece se netočí není to kombinatorický problém 6
Tvary lineárního programování c T x max. c T x max. Ax b x 0 c T x max. Ax = b x 0 Ax = b x 0 kanonický tvar standardní tvar obecný tvar formulace základních úloh metody řešení praxe 7
Ekvivalence zvláštní případ standardní tvar ukážeme zvláštní případ obecný tvar ukážeme kanonický tvar 8
Ekvivalence obecný x j 0 původní rovnice obecný kanonický x j = x j+ - x j - x j + 0 x j - 0 standardní nová rovnice nové proměnné nechť a (i) je i-tý řádek matice A a (i) x b i a (i) x = b i -a (i) x -b i původní rovnice nové rovnice a (i) x + s i = b i a (i) x s i = b i a (i) x b i a (i) x b i s i 0 s i 0 9
Jak vypadá prostor řešení? Příklad x 1 x 2 x 3 x 4 x 5 x 6 x 7 max. x 1 + x 2 + x 3 + x 4 = 4 x 1 + x 5 = 2 x 3 + x 6 = 3 3x 2 + x 3 + x 7 = 6 x 1, x 2, x 3, x 4, x 5, x 6, x 7 0 m=4 rovnic pro n=7 proměnných n-m=3 proměnné volné nějaký útvar v E 3 10
Prostor řešení x 1 + x 2 + x 3 + x 4 = 4 x 1 + x 5 = 2 x 3 + x 6 = 3 3x 2 + x 3 + x 7 = 6 x 1, x 2, x 3, x 4, x 5, x 6, x 7 0 x 4, x 5, x 6, x 7 0 x 1 + x 2 + x 3 4 x 1 2 x 3 3 3x 2 + x 3 6 x 1 0 x 2 0 x 3 0 11
0,1,3 0,0,3 x 3 1,0,3 Geometrický názor 2,0,2 x 2 0,0,0 x 1 2,0,0 0,2,0 2,2,0 dva průsečíky splynuly v jeden 12
Prostor řešení Konvexní těleso y 1, y 2,... y k řešení 1 y 1 + 2 y 2 +... + k y k je řešení, pokud 1+ 2 +... + k =1 13
Optimalizační kritérium x 1 + x 2 + x 3 + x 4 = 4 x 1 + x 5 = 2 x 3 + x 6 = 3 3x 2 + x 3 + x 7 = 6 x 1 x 2 x 3 x 4 x 5 x 6 x 7 max x 1 + 3x 2 + 2x 3 15 x 1 + 3x 2 + 2x 3 15 = z max geometrická reprezentace? 14
0,1,3 0,0,3 1,0,3 x 1 + 3x 2 + 2x 3 15 = z x 3 2,0,2 0,0,0 2,0,0 x 1 x 2 0,2,0 2,2,0 z = 15 15
0,1,3 0,0,3 1,0,3 x 1 + 3x 2 + 2x 3 15 = z x 3 2,0,2 0,0,0 x 1 2,0,0 x 2 0,2,0 2,2,0 z = 13 16
0,1,3 0,0,3 1,0,3 x 1 + 3x 2 + 2x 3 15 = z x 3 2,0,2 0,0,0 2,0,0 x 1 x 2 0,2,0 2,2,0 z = 9 17
0,1,3 0,0,3 1,0,3 x 1 + 3x 2 + 2x 3 15 = z x 3 2,0,2 0,0,0 x 1 2,0,0 x 2 0,2,0 2,2,0 z = 6 18
Počet řešení Prostor řešení je konvexní těleso Dotyk svazku (nad-)rovin s prostorem řešení je bod (vrchol) úsečka (hrana) (nad-)rovina (stěna) Pokud nežádáme všechna řešení, stačí se zabývat jen vrcholy Nejsou žádná lokální minima Stačí aplikovat lokální prohledávání (například pouze nejlepší ) na množinu vrcholů Ale kde najdeme vrcholy? 19
0,1,3 6 0,0,3 9 8 x 3 1,0,3 9 2,0,2 0,0,0 x 1 2,0,0 15 13 x 2 0,2,0 2,2,0 9 7 20
Báze a bázová řešení a (1) a (2) a (3) a (4) a (5) a (6) a (7) x 1 + x 2 + x 3 + x 4 = 4 x 1 + x 5 = 2 x 3 + x 6 = 3 3x 2 + x 3 + x 7 = 6 nechť a (i) je i-tý sloupec matice A Nejméně n-m sloupců lineárně závislých Volbou m lineárně nezávislých sloupců volíme bázi Všechny proměnné, které neodpovídají sloupcům báze, položíme rovny nule a řešíme zbylou soustavu Dostaneme bázové řešení 21
Báze a bázová řešení a (1) a (2) a (3) a (4) a (5) a (6) a (7) x 1 + x 2 + x 3 + x 4 = 4 x 1 + x 5 = 2 x 3 + x 6 = 3 3x 2 + x 3 + x 7 = 6 B = (a (4) a (5) a (6) a (7) ) x 1 =x 2 =x 3 =0 (0 0 0 4 2 3 6) B = (a (1) a (2) a (3) a (6) ) x 4 =x 5 =x 7 =0 (2 2 0 0 0 3 0) B = (a (1) a (2) a (4) a (6) ) x 3 =x 5 =x 7 =0 (2 2 0 0 0 3 0) dvojitý bod (více než 3 nuly) B = (a (2) a (5) a (6) a (7) ) x 1 =x 3 =x 4 =0 (0 4 0 0 2 3 6) tato báze neodpovídá žádnému řešení 22
Přechod mezi bázemi Každému vrcholu odpovídá nějaká báze Máme bázi B = (a (B1), a (B2),..., a (Bm) ) a odpovídající bázové řešení x Vybereme si sloupec a (j), který v bázi není a chceme jej tam mít Který sloupec vypadne? 23
Přechod mezi bázemi B = (a (B1), a (B2),..., a (Bm) ), odpovídající bázové řešení x Sloupec a (j) musí být lineární kombinací sloupců báze (s nějakými koeficienty t ij ) a (j) = m i=1 t ij a (Bi) protože x je řešení a protože proměnné, které neodpovídají sloupcům báze, jsou nulové. > 0 m i=1 m i=1 x i a (Bi) = b rovnice pohybu z původního vrcholu do nového (x i t ij ) a (Bi) + a (j) = b 24
Přechod mezi bázemi B = (a (1) a (3) a (6) a (7) ) (2 0 2 0 0 1 4) a (1) a (2) a (3) a (4) a (5) a (6) a (7) x 1 + x 2 + x 3 + x 4 = 4 x 1 + x 5 = 2 x 3 +x 6 = 3 3x 2 + x 3 +x 7 = 6 chci a (5) do báze a (5) = a (1) - a (3) + a (6) + a (7) t 15 =1 t 25 = 1 t 35 =1 t 45 =1 Jestliže (vhodně uspořádané) sloupce báze tvoří jednotkovou matici, můžeme koeficienty t ij číst přímo budeme v tomto tvaru matici udržovat Gaussovou eliminací 25
Přechod mezi bázemi B = (a (1) a (3) a (6) a (7) ) (2 0 2 0 0 1 4) a (1) a (2) a (3) a (4) a (5) a (6) a (7) x 1 + x 2 + x 3 + x 4 = 4 x 1 + x 5 = 2 x 3 +x 6 = 3 3x 2 + x 3 +x 7 = 6 a (5) = a (1) - a (3) + a (6) + a (7) t 15 =1 t 25 = 1 t 35 =1 t 45 =1 (2 1. ) a (1) +(2+1. ) a (3) + (1 1. ) a (6) + (4 1. ) a (7) + a (5) = b s rostoucím se tento člen vynuluje nejdříve max=1 a(6) opouští bázi (1 0 3 0 1 0 3) 26
6 0,1,3,0,2,0,0 9 8 0,0,3,1,2,0,3 x 3 1,0,3,0,1,0,3 9 =1 2,0,2,0,0,1,4 =0 15 13 0,0,0,4,2,3,6 x 1 2,0,0,2,0,3,6 x 2 0,2,0,2,2,3,0 2,2,0,0,0,3,0 9 7 27
Který sloupec? B = (a (B1), a (B2),..., a (Bm) ), odpovídající bázové z= a (j) = m i=1 m i=1 x i c Bi t ij a (Bi) cena řešení x (proměnné, které nepřísluší sloupci báze, jsou nulové) proměnné ve sloupcích, příslušejících bázi, redukovány o t ij z = j max (c j m i=1 t ij c Bi ) změna ceny při zavedení sloupce j do báze Zavést sloupec, pro který je z nejlepší nebo aspoň kladné. Neexistuje-li, konec (globální optimum) 28
Tabulky simplexové metody hodnota optimalizačního kritéria c -1-1 -1-1 -1-1 -1-1 0 0. řádek 0 1 1 1 1 0 0 0 4 0 1 0 0 0 1 0 0 2 0 0 0 1 0 0 1 0 3 0 0 3 1 0 0 0 1 6 A b myšlený sloupec pro proměnnou z 29
Řešení příkladu simplexovou metodou 1 na j-té pozici dostaneme m i=1 t ij c Bi Gaussovou eliminací přivedeme 0 ve sloupcích báze 1 3 2 0 0 0 0 15 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 3 1 0 0 0 1 4 2 3 6 jednotková podmatice báze (nemusíme hledat) 30
Co dál? 2 do báze max z báze c j t ij c i z z a (1) 2 a (5) -1 1 2-13 a (2) 2 a (7) -1 3 6-9 a (3) 3 a (6) -1 2 6-9 Nejrychlejší vzestup dostaneme pro a (2) a a (3) Klasická simplexová metoda rozhoduje jen podle t ij c i, není tedy metodou pouze nejlepší Dostaneme a (2) do báze 31
a (2) v bázi 3 báze a (2) a (4) a (5) a (6), bázové řešení: 0 2 0 2 2 3 0 1 0 1 0 0 0-1 9 1 0 2 / 3 1 0 0-1 / 3 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 / 3 0 0 0 1 / 3 2 2 3 2 vybereme a (3) do báze, bázi opouští a (6), bázové řešení 0 1 3 0 2 0 0 výběr a (1) do báze vede k 2 2 0 0 3 0 0 32
a (3) v bázi 4 báze a (2) a (3) a (4) a (5), bázové řešení: 0 1 3 0 2 0 0 1 0 0 0 0-1 -1 6 1 0 0 1 0-2 / 3 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0-1 / 1 3 / 3 0 2 3 1 Toto by mělo být optimum, avšak kladný koeficient 1. členu 0. řádku nás navádí k přivedení a (1) do báze 33
a (1) v bázi 5 báze a (1) a (2) a (3) a (5), bázové řešení: 0 1 3 0 2 0 0 0 0 0-1 0-1 / 3-1 6 1 0 0 1 0-2 / 3 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 0 0-1 / 1 3 / 3 0 2 3 1 Tato báze odpovídá stejnému bodu jako předchozí (je dvojitý). V 0. řádku není žádný kladný koeficient, víme, že jsme v optimu 34
Simplexová metoda - složitost možných bází je m n existují instance, na kterých simplexová metoda tyto báze skutečně prohledá existují polynomiální metody řešení 35
Celočíselné lineární programování A, b, c celočíselné x celočíselné x {0, 1}: 0/1 lineární programování (zvl. případ) Problém batohu je zvláštním případem 0/1 lineárního programování Problém batohu je NP-těžký Problém celočíselného lineárního programování je NP-těžký Řešení celočíselné úlohy má vždy horší optimalizační kritérium než řešení relaxované úlohy v oboru reálných čísel 36
Příklad Moret & Shapiro x výroba světlého piva, hl y výroba tmavého piva, hl 21x + 31y max. 2x + 3y 25 4x + y 32 2x + 9y 54 x 0, y 0 Pivovar vaří světlé a tmavé pivo. Na 1hl světlého piva je potřebí 2 jednotky sladu, 4 jednotky chmele a 2 jednotky kvasnic. Na 1hl tmavého piva jsou potřebí 3 jednotky sladu, 1 jednotka chmele a 9 jednotek kvasnic. Zisk z prodeje světlého a tmavého piva je v poměru 21:31. Je k dispozici 25 jednotek sladu, 32 jednotek chmele a 54 jednotek kvasnic. Jaký má být výrobní program pro maximální zisk? 37
Příklad hl 2x+3y=25 4x+y=32 21x+31y = z (7,1 3,6) 2x+9y=54 1 5 10 hl 38
Příklad, pokračování Moret & Shapiro x výroba světlého piva, sudů y výroba tmavého piva, sudů 21x + 31y max. 2x + 3y 25 4x + y 32 2x + 9y 54 Pivo se prodává ve 100l sudech. x 0, y 0 x, y celé 39
2x+3y=25 4x+y=32 229 250 260,7 2x+9y=54 240 1 5 40
Metoda sečných nadrovin 229 250 260,7 přídavná omezení, volená tak, aby některé neceločíselné vrcholy byly vyloučeny 240 1 5 41
Metoda větví a hranic (7,25 3) 245,25 y 3 máme lepší původní úloha y 4 (6,5 4) 260,5 (7,1 3,6) 260,7; x 7 x 8 x 6 x 7 (4 6) nemá není třeba zkoumat, 250 řešení budou horší než 245,25 prohledávat prostor úloh tak, aby prořezávání eliminovalo co nejvíce větví 42
Duální úloha otoč co můžeš c T x max. b T y min. Ax b A T y c x 0 y 0 Věty: x,y řešení c T x b T y x,y optimální řešení c T x = b T y 43