Simplexový algoritmus

Z testwiki
Skočit na navigaci Skočit na vyhledávání

Šablona:Různé významy Simplexový algoritmus nebo také simplexová metoda je algoritmus pro řešení úlohy lineárního programování, který byl poprvé popsán George Dantzigem. Algoritmus efektivně prohledává tzv. základní řešení úloh lineárního programování, kterých je konečný počet a hledá mezi nimi řešení optimální. Optimální řešení je takové základní řešení, které poskytuje nejlepší hodnotu účelové funkce. Metoda souvisí s vlastnostmi polytopu v N dimenzionálním euklidovském prostoru. Řešená úloha je tak i graficky interpretovatelná – hledají se vlastně co nejvzdálenější vrcholy polytopu.

Popis řešených úloh zpracovávaných simplexovým algoritmem

Úloha lineárního programování je taková úloha, která hledá extrém zadané kriteriální neboli účelové funkce při zadaných omezujících podmínkách. V ekonomických úlohách jsou přidány podmínky nezápornosti proměnných modelů z důvodu interpretace proměnných.

Mějme úlohu lineárního programování ve standardním tvaru:

Maximalizujte účelovou funkci z
𝐳=𝐜T𝐱
vůči omezením
𝐀𝐱𝐛,𝐱0
  • A je matice strukturních koeficientů o velikosti m řádků x n sloupců (jinými slovy máme m omezení, každé max. n proměnných),
  • vektor x je vektor proměnných modelu s n složkami,
  • vektor b je vektor omezení nebo také vektor pravých stran a má m složek.
  • cT je transponovaný vektor cenových koeficientů

Průběh algoritmu klasické simplexové metody

Algoritmus simplexové metody

Následující popis simplexového algoritmu neřeší speciální případy. Těmi jsou zejména:

  • Neomezenost úlohy
  • Degenerovanost úlohy
  • Perturbace úlohy
  • Nepřípustnost úlohy

1. Start – přepíšeme na ekvivalentní pomocnou úlohu

Zavedeme nové proměnné, tzv. přídatné proměnné, které vyrovnají omezující podmínky z nerovnic na rovnice. Přídatné proměnné definujeme následujícím způsobem:

𝐱n+i=𝐛ij=1n𝐚ij𝐱j
𝐱n+i0,i=1...m

Úlohu přepíšeme na tzv. ekvivalentní soustavu rovnic ve tvaru:

Maximalizujte 𝐝Tx vzhledem k omezením:
𝐁𝐱=𝐛
𝐱0

kde:

𝐁=(𝐀|𝐈),𝐈 – je jednotková matice (identity)
𝐝=(𝐜|𝟎)
𝐱=(𝐱𝟏𝐱𝟐...𝐱𝐧|𝐱𝐧+𝟏...𝐱𝐧+𝐦)

Při výpočtu je vhodné používat zápis v tzv. simplexové tabulce, která má následující výchozí tvar:

A I b
cT 0 0

kde:

A je matice strukturních koeficientů velikosti m x n
I je jednotková matice řádu m x m
b je vektor pravých stran o velikosti m x 1
cT je transponovaný vektor cenových koeficientů

2. Získání výchozího přípustného řešení

Pokud položíme všechny přídatné proměnné v jednotlivých omezeních pravým stranám těchto omezení a všechny ostatní proměnné se budou rovnat nule, získáme výchozí přípustné řešení.

Nenulové proměnné nazveme tzv. bazickými proměnnými, nulové proměnné jsou tzv. nebazické. Dá se používat i termínů základní a nezákladní proměnné.

3. Test optima a výběr vstupující proměnné

Řešení je optimální právě tehdy, pokud v maximalizační úloze platí, že všechny redukované a stínové ceny jsou větší rovno nule nebo v minimalizační úloze platí, že všechny redukované a stínové ceny jsou menší rovno nule. Pokud je daná podmínka splněna, řešení je optimální a hodnota účelové funkce je nejvyšší možná.

Pokud je uvedená podmínka v daném typu úlohy porušena, řešení není optimální, tedy hodnotu účelové funkce lze zlepšit. Vybereme proměnnou, která nejvíce porušuje kritérium optimality, odstraníme ji z báze a nahradíme výhodnější proměnnou.

Nová vstupující proměnná se nachází v tzv. klíčovém řádku k, kde xk určíme následujícím způsobem:

v maximalizační úloze k je index řádku, kde xk=minzj,j=1..n
v minimalizační úloze k je index řádku, kde xk=maxzj,j=1..n

4. Výběr vystupující proměnné

Vystupující proměnnou určíme z čísla ti přiřazenému každému omezení s aik>0, kde k je index klíčového sloupce. Vybíráme

minti=biaik

index i je index klíčového řádku, který označíme q. Potom aqk je klíčový prvek.

5. Transformace tabulky

Tabulku upravíme pomocí Gaussovy eliminační metody, kdy pro klíčový řádek platí:

  • aqknew=1
  • aqjnew=aqjaqk
  • binew=biaqk

a ostatní řádky upravíme tak, aby v klíčovém řádku vznikl jednotkový vektor s jedničkou v klíčovém řádku. Gaussova eliminace se týká i vektoru pravé strany a řádku účelové funkce v simplexové tabulce.

Po transformaci pokračujeme na test optima.

Tabulka se po transformaci mění výpočtem na následující tvar:

Bs1A Bs1 Bs1b
cBTBs1AcT cBTBs1 cBTBs1b

kde

Bs1 je inverzní matice báze
cBT je transponovaný vektor cen bazických proměnných

Demonstrační úloha

Maximalizujte funkci:

𝐳=𝐱1+𝐱2

vůči omezením

𝐱1+𝐱21
𝐱13
𝐱22
𝐱1,𝐱20

Řešení

1. Zavedeme nové proměnné a zapíšeme do tabulky:

𝐱3=1(1𝐱1+1𝐱2)
𝐱4=3(1𝐱1+0𝐱2)
𝐱5=2(0𝐱1+1𝐱2)
z=𝐱1+𝐱2
Po úpravě:
𝐱3=1+1𝐱11𝐱2
𝐱4=31𝐱1
𝐱5=21𝐱2
z=𝐱1+𝐱2

2. Hledáme kandidáty do báze:

1. Vezměme si např. x1 – mohli bychom i x2 (obě proměnné mají v účelové funkci kladné a v tabulce záporné znaménko), ale je to pomalejší.
2. Jediná rovnice, která nám klade na x1 omezení je druhá rovnice. Podle ní je x1 maximálně 3. (Kdybychom zvolili x2, nejpřísnější omezení by plynulo z první rovnice: x2 je max. 1)
3. vyjádříme x1 z druhé rovnice, dosadíme x1 do zbývajících rovnic a do účelové funkce. Dopracujeme se k následující soustavě:
𝐱1=3𝐱4
𝐱3=4𝐱4𝐱2
𝐱5=2𝐱2
z=3𝐱4+𝐱2
4. Nyní nám již zbývá jediná proměnná s kladným znaménkem v účelové funkci a současně se záporným znaménkem v rovnicích z tabulky – je to x2
5. Postupujme obdobně jako před chvílí. Nejpřísnější omezení klade poslední rovnice – x2 je podle ní max. dva. Vyjádřeme tedy x2 z poslední rovnice a dosaďme do účelové funkce a ostatních rovnic:
𝐱2=2𝐱5
𝐱3=2𝐱4+𝐱5
𝐱1=3𝐱4
z=5𝐱4𝐱5
6. Další analogická úprava není možná – účelová funkce nemůže být dále maximalizována. Víme (předpoklady úlohy), že x4 ani x5 není menší, než nula. Maximální hodnota účelové funkce z’ je menší, nejvýše rovna 5 pro vektor (x1,…,x5) = (3,2,2,0,0).

Literatura

  • Lagová M., Jablonský J., Lineární modely, Praha, 2004, nakladatelství Oeconomica, Šablona:ISBN
  • Jablonský J., Programy pro matematické modelování, Praha, 2007, nakladatelství Oeconomica, Šablona:ISBN
  • Jablonský J., Operační výzkum – kvantitativní metody pro ekonomické rozhodování, Praha, 2002, Professional Publishing, Šablona:ISBN

Externí odkazy

Šablona:Autoritní data