180 likes | 255 Views
Dvoufázová simplexová metoda. RNDr. Jiří Dvořák, CSc. dvorak @uai.fme.vutbr.cz. Dvě fáze simplexové metody. I. Nalezení výchozího přípustného bázického řešení. Jestliže úloha nemá žádné přípustné řešení, pak konec. V opačném případě přechod na druhou fázi.
E N D
Dvoufázová simplexová metoda RNDr. Jiří Dvořák, CSc. dvorak@uai.fme.vutbr.cz Teorie systémů a operační analýza
Dvě fáze simplexové metody • I. Nalezení výchozího přípustného bázického řešení. Jestliže úloha nemá žádné přípustné řešení, pak konec. V opačném případě přechod na druhou fázi. • II. Postupné zlepšování bázického řešení. Tato fáze končí nalezením optimálního bázického řešení nebo zjištěním, že optimální řešení neexistuje. • V obou fázích se využívá simplexový algoritmus. TSOA: Dvoufázová simplexová metoda
Nalezení výchozího přípustného bázického řešení • a) Úloha LP je v kanonickém tvaru a b 0: • Volíme B = E. Pak xN = 0 a xB = b. • b) Úloha LP není v kanonickém tvaru: • Vytvoříme pomocnou úlohu následujícím způsobem. Do původní úlohy zavedeme nezáporné pomocné (umělé) proměnné tak, abychom získali kanonický tvar, a původní účelovou funkci nahradíme pomocnou účelovou funkcí, která je součtem pomocných proměnných. Simplexovým algoritmem pak hledáme řešení, které minimalizuje pomocnou účelovou funkci. TSOA: Dvoufázová simplexová metoda
Pomocná úloha • Minimalizovat • g(xP) = eTxP • za podmínek • A x + EP xP = b • x 0, xP 0 • kde • EP je matice typu (m, k) tvořená chybějícími jednotkovými sloupci, • e = (1, 1, … , 1)T je vektor dimenze k , • xP = (xn+1,xn+2, … , xn+k )T je vektor pomocných proměnných. TSOA: Dvoufázová simplexová metoda
Důsledky řešení pomocné úlohy • Nechť vektor je bázické optimální řešení • pomocné úlohy. • a) Je-li g(xPo) = 0 (tj. jestliže jsou všechny pomocné proměnné rovny nule), pak vektor xo je výchozí přípustné bázické řešení původní úlohy. • b) Je-li g(xPo) 0, pak původní úloha nemá žádné přípustné řešení. TSOA: Dvoufázová simplexová metoda
Redukce počtu pomocných proměnných • Pokud soustava rovnic Ax = b není v kanonickém tvaru, převedeme ji do tohoto tvaru Gauss-Jordanovou eliminační metodou (přitom je vhodné současně upravovat rovnici • z – cTx = 0). Nechť A´x = b´ je takto získaná soustava. Jestliže • b´ 0, můžeme pokračovat 2. fází simplexové metody. • V opačném případě určíme rovnici splňující podmínku • Tuto rovnici vynásobíme (–1) a pak ji přičteme ke všem rovnicím, které mají zápornou pravou stranu. Tím obdržíme soustavu rovnic s nezápornou pravou stranou, přičemž v matici soustavy chybí jeden jednotkový sloupec. Ten získáme zavedením pomocné proměnné do r-té rovnice a můžeme zahájit 1. fázi simplexové metody. TSOA: Dvoufázová simplexová metoda
Úprava soustavy nerovnic typu • Mějme soustavu nerovnic Axb, kde b 0. Soustavu převedeme na rovnicový tvar odečtením nezáporných doplňkových proměnných: • Ax–Exd = b • Určíme rovnici s největší pravou stranou. Nechť je to rovnice r-tá. Ostatní rovnice vynásobíme (–1) a přičteme k nim r-tou rovnici. Do r-té rovnice pak zavedeme pomocnou proměnnou. Tím získáme soustavu v kanonickém tvaru s nezápornou pravou stranou a můžeme zahájit 1. fázi simplexové metody. TSOA: Dvoufázová simplexová metoda
Možná zakončení simplexové metody • 1) Úloha má jediné optimální řešení: • Je splněno kritérium optimality a pro všechny nebázické proměnné je j 0. • 2) Úloha má nekonečně mnoho optimálních řešení: • Je splněno kritérium optimality a alespoň pro jednu nebázickou proměnnou je j = 0. • 3) Úloha nemá konečné optimální řešení: • Není splněno kritérium optimality a není možno určit klíčový řádek. • 4) Úloha nemá žádné přípustné řešení: • Optimální hodnota pomocné účelové funkce není nulová. TSOA: Dvoufázová simplexová metoda
Získání dalších optimálních řešení • Zvolíme za klíčový ten nebázický sloupec, kde j = 0. Jestliže se podaří určit klíčový řádek, pak provedením simplexové transformace získáme další optimální bázické řešení. • Když se nepodaří určit klíčový řádek, pak to znamená, že množina optimálních řešení není ohraničená. Klíčový sloupec potom určuje jeden z krajních směrů této množiny. • Tímto způsobem můžeme získat všechna další optimální bázická řešení a případně také všechny krajní směry množiny optimálních řešení. • Každá konvexní kombinace bázických optimálních řešení je rovněž optimálním řešením. V případě, že množina optimálních řešení není ohraničená, se další optimální řešení mohou získat sečtením konvexní kombinace bázických optimálních řešení a nezáporné lineární kombinace krajních směrů této množiny. TSOA: Dvoufázová simplexová metoda
Krajní směr množiny optimálních řešení • Nechť B je optimální báze, xo je odpovídající optimální bázické řešení, pro nebázickou proměnnou xs je s = 0 a nechť nelze určit klíčový řádek. Pak další optimální řešení leží na polopřímce x* = xo + ty, kde t 0 a y je krajní směr množiny optimálních řešení. • Nechť JB označuje množinu indexů bázických proměnných, JN množinu indexů nebázických proměnných, i(j) index řádku, ve kterém se nachází bázická proměnná xj , a ij prvky matice B–1A. Pak vektor y je určen takto: TSOA: Dvoufázová simplexová metoda
Případy, že úloha LP nemá řešení. • Jestliže simplexová metoda skončí s tím, že úloha LP nemá optimální nebo přípustné řešení, musíme prověřit, zda je v pořádku výchozí matematický model. Například neexistence konečného optimálního řešení může být způsobena tím, že jsme při tvorbě modelu zapomněli na nějaké podstatné omezení. • V případě, že model je v pořádku a úloha nemá žádné přípustné řešení, je možno zvažovat, zda lze některá omezení zmírnit. Pro určení toho, jaké nejmenší změny pravých stran jsou zapotřebí (resp. jaké změny jsou nejvýhodnější), je možno formulovat a řešit jinou úlohu LP. TSOA: Dvoufázová simplexová metoda
Degenerovaná úloha LP • Předchozí možnosti zakončení simplexové metody se vztahují k případu, kdy úloha nenídegenerovaná. • Degenerovaná je taková úloha, která má alespoň jedno degenerované bázické řešení. • U degenerované úlohy mohou nastat tyto situace: • může dojít k zacyklení (toto nebezpečí se dá odstranit úpravou simplexového algoritmu), • výskyt j = 0 u nebázické proměnné nemusí být příznakem existence nekonečně mnoha optimálních řešení. TSOA: Dvoufázová simplexová metoda
Zacyklení a možnosti jeho prevence • Zacyklení znamená, že po několika simplexových transformacích se dostaneme k tabulce, z níž byly tyto transformace zahájeny. Bylo dokázáno, že nejmenší počet takových transformací je 6. • V praxi se zacyklení vyskytuje velmi zřídka. Lze to vysvětlit tím, že při řešení úlohy na počítači zaokrouhlovací chyby způsobí změnu problému a tím také únik z cyklu. • Proti zacyklení je možné se zabezpečit pomocí anticyklických metod. Nejjednodušší z nich je metoda nejmenších indexů, při níž se pravidla pro určení klíčového prvku modifikují takto: • Za klíčový sloupec se volí ten sloupec, který má nejmenší index ze všech sloupců, kde není splněno kritérium optimality. • Pokud existuje více řádků, které splňují pravidlo pro výběr klíčového řádku, zvolí se za klíčový ten s nejmenším indexem. TSOA: Dvoufázová simplexová metoda
Odstranění lineárně závislých rovnic • Zatím jsme předpokládali, že ve standardním tvaru úlohy jsou všechny rovnice lineárně nezávislé, tj. h(A) = m. Tento předpoklad se v praxi předem neprověřuje. • Lineárně závislé rovnice lze odstranit po 1. fázi simplexové metody následujícím způsobem: • Předp., že h(A) = k < m, a že úloha má přípustné řešení. Pak po skončení 1. fáze zůstane v bázi m – k pomocných proměnných s nulovou hodnotou. Tyto proměnné a rovnice, které je obsahují, můžeme z tabulky vypustit. TSOA: Dvoufázová simplexová metoda
Maticové vyjádření simplexové tabulky • B je báze a cB je vektor cenových koeficientů bázických proměnných. • Uvedenou matici dostaneme vynásobením matic • Prvá z těchto matic se nazývá maticí simplexové transformace. TSOA: Dvoufázová simplexová metoda
Maticový zápis tabulky pro úlohu s nerovnicemi typu • Mějme úlohu . • Standardní tvar: • kde xD je vektor doplňkových proměnných. • Matice úlohy: • Vynásobíme-li tuto matici zleva maticí simplexové transformace, dostaneme TSOA: Dvoufázová simplexová metoda
Další verze simplexové metody • Revidovaná simplexová metoda (vychází z maticového vyjádření simplexového algoritmu) • Metoda pro řešení úloh s explicitními mezemi proměnných (aj xj bj) • Duálně simplexová metoda • Primárně duální metoda • Metody pro řešení rozsáhlých úloh • Metody pro řešení speciálních úloh (dopravní úloha, distribuční úloha, úloha o maximálním toku… ) • Lit.: Plesník, J., Dupačová, J., Vlach, M.: Lineárne • programovanie. Bratislava, Alfa 1990. TSOA: Dvoufázová simplexová metoda
Složitost simplexové metody • Dlouholeté výpočetní zkušenosti ukazují, že simplexová metoda je velmi rychlá. Z výpočetních experimentů plyne, že na úlohu LP s m omezujícími podmínkami stačí v průměru m iterací. • Existují však případy, kdy počet iterací může být velmi vysoký a může v závislosti na rozsahu úlohy růst exponencielně (takové algoritmy se označují jako nepolynomiální). • Polynomiální metody pro řešení úloh LP (zatím nevhodné pro praktické použití): • metoda elipsoidů (Chačijan) • Karmarkarova metoda TSOA: Dvoufázová simplexová metoda