Simplexová metoda pro známé počáteční řešení úlohy LP RNDr. Jiří Dvořák, CSc. dvorak@uai.fme.vutbr.cz Teorie systémů a operační analýza
Kanonický tvar úlohy LP Uvažujme úlohu ve standardním tvaru (a) kde A je typu (m,n). Řekneme, že úloha (a) je v kanonickém tvaru, když matice A obsahuje jednotkovou matici typu (m,m). TSOA: Simplexová metoda pro známé počáteční řešení
Kanonický tvar úlohy LP a bázické řešení Nechť úloha (a) je v kanonickém tvaru a nechť b 0. Zvolme bázi B = E a označme xB … vektor bázických proměnných, xN … vektor nebázických proměnných. Bázické řešení: xN = 0 xB = b TSOA: Simplexová metoda pro známé počáteční řešení
Speciální případ úlohy LP Předpokládejme úlohu LP v kanonickém tvaru, kde jednotková matice je tvořena posledními m sloupci matice A a kde b 0. Nebázické proměnné: xN = (x1, x2, … , xn–m)T Bázické proměnné: xB = (xn–m+1, xn–m+2, … , xn)T Bázické řešení: x0 = (0, … ,0, b1, b2, … , bm)T Obecné řešení: Nebázické proměnné x1, x2, … , xn–m jsou volné a bázické proměné jsou určeny vztahem TSOA: Simplexová metoda pro známé počáteční řešení
TSOA: Simplexová metoda pro známé počáteční řešení Úprava účelové funkce Účelovou funkci vyjádříme pomocí nebázických proměnných: po úpravě dostaneme TSOA: Simplexová metoda pro známé počáteční řešení
Prověření optimality bázického řešení Označme: Pak a f(x0) = F. Nechť x1 = (0, … , , … ,0, 1, … , m)T, kde > 0 se nachází na s-té pozici a i = bi – ais . Potom f(x1) = F – s . Je-li tedy s < 0, pak řešení x0 není optimální, neboť hodnotu účelové funkce lze zvětšit o hodnotu (–s). TSOA: Simplexová metoda pro známé počáteční řešení
Nové řešení musí být přípustné Aby řešení x1 bylo přípustným řešením dané úlohy LP, musí splňovat podmínky nezápornosti x1 0. Hodnota > 0 tedy musí být řešením soustavy nerovnic bi – ais 0, i = 1, … ,m. Je-li aps 0, pak odpovídající nerovnice je splněna pro jakoukoli kladnou hodnotu a může být tudíž vynechána. Řešením zbylé soustavy nerovnic je podmínka TSOA: Simplexová metoda pro známé počáteční řešení
Nové řešení musí být bázické Aby řešení bylo bázické, musí být některá dosavadní bázická proměnná anulována. Položíme-li bude anulována proměnná xn–m+r , kde r je určeno vztahem neboť xn–m+r = br – ars . TSOA: Simplexová metoda pro známé počáteční řešení
Kanonický tvar odpovídající nové bázi K nové bázi B1 patří s-tý sloupec matice A a sloupce s indexy n–m+i pro i = 1, … , m, i r. Nový kanonický tvar získáme eliminační metodou, při níž s-tý sloupec matice A upravíme na jednotkový a zachováme jednotkové sloupce s indexy n–m+i pro i = 1, … , m, i r. TSOA: Simplexová metoda pro známé počáteční řešení
Algoritmus simplexové metody Mějme výchozí přípustné bázické řešení x0. Položme k = 1, xk = x0 , A(k) = A, b(k) = b. Simplexový algoritmus: 1. Test kritéria optimality pro xk. Je-li splněno, pak konec (bázické řešení xk je optimálním řešením). 2. Určení klíčového prvku ars(k) matice A(k). Není-li možné určit klíčový prvek, pak konec (úloha nemá konečné optimální řešení). 3. Simplexová transformace matice (A(k) | b(k)). Získáme matici (A(k+1) | b(k+1)) a nové bázické řešení xk+1. Položíme k = k +1 a postup opakujeme od bodu 1. TSOA: Simplexová metoda pro známé počáteční řešení
TSOA: Simplexová metoda pro známé počáteční řešení Simplexová tabulka označují i-tou bázickou proměnnou a její koeficient v účelové funkci TSOA: Simplexová metoda pro známé počáteční řešení
Stanovení hodnot veličin j a F Veličiny slouží k testování kritéria optimality a F představuje hodnotu účelové funkce pro aktuální bázické řešení. Výchozí hodnoty těchto veličin můžeme získat také tak, že k soustavě rovnic přidáme rovnici a pak z ní eliminační metodou odstraníme bázické proměnné (nesmíme ji přitom ničím násobit ani dělit). TSOA: Simplexová metoda pro známé počáteční řešení
TSOA: Simplexová metoda pro známé počáteční řešení Kritérium optimality a) Kritérium optimality pro maximalizační úlohu: pro j = 1, … , n. b) Kritérium optimality pro minimalizační úlohu: TSOA: Simplexová metoda pro známé počáteční řešení
Určení klíčového prvku a) Určení indexu s klíčového sloupce: J je množina indexů těch sloupců, kde nebylo splněno kritérium optimality. Klíčový sloupec určuje proměnnou, která vstoupí do báze. b) Určení indexu r klíčového řádku: Klíčový řádek určuje proměnnou, která bude z báze vyloučena. Je-li určen klíčový prvek, pak do báze vstupuje proměnná xs a nahrazuje proměnnou na r-té pozici. TSOA: Simplexová metoda pro známé počáteční řešení
Poznámky k určení klíčového prvku Pokud podmínce pro klíčový sloupec vyhovuje několik sloupců tabulky, můžeme volit kterýkoli z nich. Totéž platí pro určení klíčového řádku. Klíčovým řádkem může být i ten řádek, kde je pravá strana nulová (taková situace může nastat v případě, že aktuální bázické řešení je degenerované). Musí ale být splněna podmínka, že . TSOA: Simplexová metoda pro známé počáteční řešení
Simplexová transformace Úprava klíčového řádku: Úprava ostatních řádků (i = 1, … , m, i r): TSOA: Simplexová metoda pro známé počáteční řešení
Poznámky k simplexové transformaci Z uvedených vzorců vyplývá, že řádek, který není klíčový, nesmíme při úpravě ničím násobit nebo dělit. Pokud tuto zásadu nedodržíme, ztratíme kanonický tvar a hodnota bázické proměnné odpovídající tomuto řádku se nebude rovnat pravé straně. Pokud je zachován kanonický tvar, získáme nové bázické řešení následujícím způsobem: nebázické proměnné se položí rovny nule, bázická proměnná v i-tém řádku se rovná pravé straně. TSOA: Simplexová metoda pro známé počáteční řešení
TSOA: Simplexová metoda pro známé počáteční řešení Zjednodušení úprav j K soustavě rovnic přidáme rovnici kde proměnná z reprezentuje hodnotu účelové funkce. Tuto rovnici pak upravujeme stejně jako všechny ostatní: TSOA: Simplexová metoda pro známé počáteční řešení