Lineární programování Petr Tichý 19. prosince 2012 1
Outline 1 Lineární programování 2 Optimalita a dualita 3 Geometrie úlohy 4 Simplexová metoda 2
Lineární programování Lineární program (1) min f(x) za podmínek h(x) = 0, q(x) 0. x Rn Položme f(x) c T x, h(x) Ax b, q(x) x, kde A R m n, b R m, c R n, m n, a přepišme ve standardním tvaru (2) min x R n ct x za podmínek Ax = b, x 0. Problém (2) nazveme lineární program (LP). 3
Převod na standardní tvar LP často nejsou zadány ve standardním tvaru, ale např. ve tvaru min x R ct x za podmínek Ax b. n Převod standardní tvar: předchozí lze ekvivalentně zapsat min x R ct x za podmínek Ax + z = b, z 0. n Zavedeme pomocné proměnné x + a x, x = x + x, x + max{x, 0} 0, x max{ x, 0} 0 a původní problém přepíšeme ve standardním tvaru min x R ct x za podmínek Ax = b, x 0, n x [x +, x, z], c [c, c, 0], A [A, A, I]. 4
Neexistence řešení Mohou nastat situace, kdy úloha LP nemá řešení množina přípustných bodů Ax = b, x 0 je prázdná. existuje posloupnost x k R n tak, že c T x k pro k, problém není zdola omezen. 5
Outline 1 Lineární programování 2 Optimalita a dualita 3 Geometrie úlohy 4 Simplexová metoda 6
LP a Karush-Kuhn-Tackerovy (KKT) podmínky Je-li x řešením (1), pak existují λ R m, µ R n tak, že f(x ) + h(x )λ + q(x )µ = 0, µ T q(x ) = 0, µ 0. Po dosazení do LP (společně s podmínkami pro přípustnou oblast), (3) c A T λ µ = 0, µ T x = 0, µ 0, Ax = b, x 0. 7
KKT podmínky jsou postačující LP je konvexní (f i přípustná oblast jsou konvexní) KKT podmínky jsou i postačující pro existenci globáního minima. Věta Splňuje-li nějaká trojice (λ, µ, x ) podmínky (3), pak je x bodem globáního minima problému (2) Důkaz: 8
Duální problém Problém (2) nazveme primární problém. Duálním problémem k problému (2) nazveme problém (4) max λ R m bt λ za podmínky A T λ c. Ekvivalentní vyjádření duálního problému: (5) max λ R m bt λ za podmínek A T λ + µ = c, µ 0. λ a µ se nazývají duální proměnné. Primární a duální problém nad stejnými daty A, b, c. Jaký je mezi nimi vztah? 9
Vztah primárního a duálního problému Pozorování: KKT podmínky pro duální problém (5) se shodují s KKT podmíkami (3) pro problém (2). Lemma (slabá dualita) Je-li x bodem přípustné oblasti problému (2) a λ bodem přípustné oblasti problému (4), pak platí c T x λ T b. Důsledek Jsou-li x 0 a λ 0 body přípustných oblastí problémů (2) a (4) a platí-li c T x 0 = λ T 0 b, potom jsou x 0 a λ 0 řešeními korespondujících problémů. 10
Vztah primárního a duálního problému Silná dualita min x R ct x za podmínek Ax = b, x 0. n max λ R bt λ za podmínky A T λ c. m Věta (silná dualita) Problém (2) má konečné řešení právě tehdy, když problém (4) má konečné řešení. Mají-li oba problémy konečná řešení, pak jsou si hodnoty cílových funkcí v řešení rovny. Je-li jeden z problémů neomezený, potom je přípustna oblast druhého problému prázdná. 11
Outline 1 Lineární programování 2 Optimalita a dualita 3 Geometrie úlohy 4 Simplexová metoda 12
Bázické body Idea Nechť A R m n, b R m, m n. Uvažujme problém (6) Ax = b. Je-li rank(a) = m, lze z A vybrat m lineárně nezávislých sloupců a poskládat je do (regulární) matice B, např. (pro jednoduchost), B = [a 1,..., a m ]. Soustava Bx B = b má jednoznačné řešení. Položíme-li [ ] xb x =, 0 je x jedním z řešení soustavy (6). 13
Bázické body Definice Definice (bázický bod) Uvažujme problém (6) a nechť B R m m je regulární matice vytvořená z vybraných sloupců matice A. Položme všechny složky vektoru x, které nejsou asociovány se sloupci B, rovny nule. Položme zbývající složky x rovny příslušným složkám řešení soustavy Bx B = b. Takový vektor x nazveme bázickým bodem problému (6). Složky vektoru x korespondující k sloupcům B nazveme bázické proměnné. V dalším předpoklad: m < n a A má lineárně nezávislé řádky. Pokud je jedna nebo více bázických proměnných nulových, pak x nazveme degenerovaný bázický bod. Zajímají nás bázické přípustné body splňující navíc x 0. 14
Řešení a bázické přípustné body Věta (Základní věta lineárního programování) Uvažujme problém za podmínek min x R ct x n (7) Ax = b, x 0, kde A R m n, rank(a) = 0. Existuje-li přípustný bod splňující (7), pak existuje i bázický přípustný bod. Existuje-li řešení výše uvažovaného problému, pak existuje i řešení, které je bázickým přípustným bodem. Důsledek: Řešení problému lineárního programování stačí hledat mezi bázickými přípustnými body. 15
Geometrie úlohy Definice (extrémní bod) Nechť C R n je konvexní množina. Bod x C nazveme extrémním bodem množiny C, pokud neexistují dva různé body x 1 C a x 2 C takové, že x = αx 1 + (1 α)x 2 pro nějaké 0 < α < 1. Věta (ekvivalence extrémních a bázických přípustných bodů) Nechť A R m n, b R m, m < n, rank(a) = m. Nechť K je konvexní polytop (průnik poloprostorů) obsahující všechny vektory x R n splňující podmínky (7), Ax = b, x 0. Potom x je extrémním bodem K právě tehdy, je-li přípustným bázickým bodem. 16
Geometrie úlohy 17
Důsledky geometrické interpretace úlohy 1 Je-li konvexní množina K určená podmínkami Ax = b a x 0 neprázdná, pak má alespoň jeden extrémní bod. 2 Množina K určená podmínkami Ax = b a x 0 má nejvýše konečný počet extrémních bodů. 3 Je-li K omezená, pak je K mnohostěnem (polyhedronem), tj. je konvexní kombinací konečného počtu bodů. 18
Outline 1 Lineární programování 2 Optimalita a dualita 3 Geometrie úlohy 4 Simplexová metoda 19
Idea simplexové metody Idea: Procházet bázické přípustné body (jeden z nich je řešením). V každém proku je potřeba: zůstat v množině bázických přípustných bodů, snižovat hodnotu cílové funkce, umět detekovat případ, kdy je problém neomezený. 20
Formalismus výběru sloupců Ze sloupců matice A vybereme m, které jsou LN B. Označme B množinu indexů takových, že B = [a i ] i B, A B B. Dále označme N = {1, 2, 3,..., n} \ B a N = [a i ] i N, A N N. B nazveme množinou bázických a N nebázických indexů. Podle B a N lze rozdělit n-složkové vektory x, µ a c na x B [x i ] i B, x N [x i ] i N, c B [c i ] i B, c N [c i ] i N, µ B [µ i ] i B, µ N [µ i ] i N. 21
Idea dosazení do KKT Podle definic indexových množin B a N, a matic B a N je Ax = b Bx B + Nx N = b. x je dle definice bázickým bodem x B = B 1 b, x N = 0. Idea: Mějmě bázický přípustný bod x a příslušné indexové množiny. Dosaďme jej do KKT podmínek a volme ostatní parametry tak, aby byly KKT podmínky co nejlépe splněny. (Pokud se podaří nalézt x splňující KKT podmínky, máme řešení. 22
Dosazení bázického přípustného bodu do KKT podmínek Ax = b, x 0, µ T x = 0, c A T λ µ = 0, µ 0. x je přípustný bázický první dvě podmínky splněny a x N = 0. Volme µ B 0, potom x T µ = x T B µ B + x T N µ N = 0 třetí OK. Dopočítejme λ a µ N tak, aby byla splněna čtvrtá podmínka: c B B T λ µ B = 0 a c N N T λ µ N = 0. S využitím µ B = 0 dostaneme λ = B T c B a µ N = c N N T λ. Pokud µ N 0 pátá splněna a máme řešení. Pokud ne, využijeme záporné složky µ N k přesunu do lepšího bodu. 23
Formulace problému přesunu Máme bázický přípustný x a množiny indexů B, N. Chceme přesun tak, aby y byl bázický přípustný, x y aby byla lépe splněna podmínka nezápornosti µ, aby klesla cenová funkce, c T x c T y, aby došlo k výměně pouze jednoho indexu mezi B a N. Pivoting: Chceme určit vstupní index k N a výstupní index p B, zaměnit je, a určit příslušné bázické řešení y. 24
Určení vstupního a výstupního indexu Zvolme vstupní index k tak, že µ k < 0. a k je příslušný sloupec A. Nové y bude určitě splňovat y i = 0 pro i N, i k. Chceme Ay = b dosaďme, a proto Ay = By B + a k y k = b = Ax = Bx B, (8) y B = x B B 1 a }{{ k y } k. d Volme y k > 0 jako nejmenší kladné číslo takové, že je některá ze složek y B nulová. Index této nulové složky je výstupní index p. Geometricky: Pohyb po hraně přípustného mnohostěnu až dokud nedojdeme do dalšího vrcholu. 25
Jak krok (8) ovlivní c T x? jednoduchými algebraickými úpravami lze ukázat c T y = c T x + µ k y k. Víme, že µ k < 0. Je-li báze nedegenerovaná, je y k > 0 a µ k y k < 0. Věta Je-li lineární program (2) omezený a nedegenerovaný, pak simplexová metoda nalezne optimální řešení po konečné počtu kroků. 26
Krok simplexové metody Dáno B, N a x, x N = 0. Řešme B T λ = c B λ. Spočtěme µ N = c N N T λ. Pokud µ N 0 stop, máme řešení. Určeme vstupní index k tak, že µ k < 0. Řešme Bd = a k, získáme d = B 1 a k. Pokud d 0 stop, neomezený problém. Určeme y k a výstupní index p: (x B ) i y k min d i >0 d i a p je index, pro který nastává minimum. Aktualizace y B = x B dy k, y N = [0,..., 0, y k, 0,..., 0] T. Záměňme v B a N indexy k a p. 27
Krok simplexové metody 28