lineární programování simplexový algoritmus
DESCRIPTION
Lineární programování Simplexový algoritmus. Základní pojmy. Přípustné řešení - množina přípustných řešení Bázické řešení (vrchol) Optimální řešení Alternativní řešení Suboptimální řešení. Řešitelnost úlohy. Řešení neexistuje neexistuje řešení omezujících podmínek - PowerPoint PPT PresentationTRANSCRIPT
Lineární programování
Simplexový algoritmus
Základní pojmy
• Přípustné řešení - množina přípustných řešení
• Bázické řešení (vrchol)
• Optimální řešení
• Alternativní řešení
• Suboptimální řešení
Řešitelnost úlohy
• Řešení neexistuje – neexistuje řešení omezujících podmínek– kriteriální funkce je neomezená v požadovaném
směru
• Existuje právě jedno řešení– jediné a bázické
• Existuje nekonečně mnoho řešení– dvě a více bázická optimální (alternativní) řešení
Základní věty
• Má-li úloha LP přípustné řešení, má i přípustné bázické řešení.
• Má-li úloha LP optimální řešení, má i optimální bázické řešení.
• Optimální řešení úlohy LP leží vždy na hranici množiny přípustných řešení.
• Má-li úloha LP více než jedno optimální řešení řešení, je optimálním řešením i jejich konvexní kombinace.
Simplexový algoritmus
• Výchozí řešení ve tvaru rovnic
• Soustava lineárních rovnic v kanonickém tvaru
• Nezápornost pravých stran
• Test optima (vstupu)
• Test přípustnosti báze (výstupu
• Přechod na nové řešení Jordanovou eliminační metodou
Soustava omezujících podmínek
• Numericky umíme řešit pouze soustavy lineárních rovnice, nikoliv nerovnic
• Jordanova eliminační metoda – bázické řešení
převedeme na bAx
bxA ~~
Kapacitní podmínky
• Ax b • Ax + Ed = b, d 0
doplňkové proměnné
Ax Ed b
Požadavkové podmínky
• Ax b • Ax - Ed + Ep = b, d 0
doplňkové proměnné + pomocné proměnné
Ax -Ed Ep b
Podmínky v rovnicovém tvaru
• určení, bilanční a pod.• Ax = b • Ax + Ep = b, p 0
pomocné proměnné
Ax Ep b
Druhy proměnných
• Strukturní – Vycházejí ze zadání úlohy
• Doplňkové– Doplňují nerovnice na rovnice– Rezerva v kapacitních podmínkách - kladný koeficient 1– Překročení v požadavkových podmínkách - záporný
koeficient -1
• Umělé– Vytvářejí jednotkovou matici
Bázické řešení
• Kanonický tvar soustavy rovnic• Proměnné s jednotkovými vektory - bázické• Řešení VZHLEDEM k bázickým proměnným
xN xB
AN E b xB
Příklad
Na 300 ha orné půdy se bude pěstovat pšenice, ječmen a řepka. K dispozici je 50 t NPK. Řepku je možno pěstovat na nejvýše 20 ha, ječmen alespoň na 100 ha.
Rozhodněte, na kolika ha kterou plodinu pěstovat, aby zisk byl maximální.
pšenice ječmen řepkaNPK t/ha 0,2 0,15 0,02Zisk tis. Kč 1 1,5 3
Matematický model
1 2 3
1 2 3
3
2
1 2 3
max 1 2 3
300
0,2 0,15 0,02 50
20
100
, , 0
1,5 3
x x x
x x x
x
x
x x x
Z x x x
Úpravy na rovnice a kanonicky tvar
1 2 3 4
1 2 3 5
3 6
2 7 8
1 2 3 4 5 6 7 8
max 1 2 3 4 5 6 7 8
300
0,2 0,15 0,02 50
20
100
, , , , , , , 0
1,5 3 0 0 0 0 100
x x x x
x x x x
x x
x x x
x x x x x x x x
Z x x x x x x x x
Výchozí řešení
1 1,5 3 0 0 0 0 -100c B x1 x2 x3 x4 x5 x6 x7 x8 b0 x4 1 1 1 1 0 0 0 0 3000 x5 0,2 0,15 0,02 0 1 0 0 0 500 x6 0 0 1 0 0 1 0 0 20
-100 x8 0 1 0 0 0 0 -1 1 100
Bázické proměnné
• Simplexová tabulka
Test optimality
Cena ekvivalentní lineární kombinace
zj - cj = iij.ci - cj
zj - cj 0 skutečná cena (náklady) nižší než bázická
zj - cj 0 skutečná cena (zisk) vyšší než bázická
• Optimální řešení
• Maximalizace: všechna (zj - cj) nezáporná
• Minimalizace: všechna (zj - cj) nekladná
1 1,5 3 0 0 0 0 -100c B x1 x2 x3 x4 x5 x6 x7 x8 b0 x4 1 1 1 1 0 0 0 0 3000 x5 0,2 0,15 0,02 0 1 0 0 0 500 x6 0 0 1 0 0 1 0 0 20
-100 x8 0 1 0 0 0 0 -1 1 100zj-cj -1 -101,5 -3 0 0 0 100 0 -10000
Test optimality
Vstupující proměnná
Vstup proměnné do báze
Výsledek testu optimalityMaximalizace• Do báze vstupuje proměnná, která má
zj - cj 0 a největší v absolutní hodnotě
– v našem příkladu x2
Minimalizace• Do báze vstupuje proměnná, která má
zj - cj 0 a s největší hodnotou
Test přípustnosti
• Zaručuje nezápornost řešení
• Pro vstupující proměnnou xj 0 musí platit
– Je-li ij > 0 ... Ω = bj /ij
– Je-li ij 0 ... Výpočet se neprovádí
• Vystupující proměnná je v řádku, kde je minimální Ω
Ω1 1,5 3 0 0 0 0 -100
c B x1 x2 x3 x4 x5 x6 x7 x8 b0 x4 1 1 1 1 0 0 0 0 300 3000 x5 0,2 0,15 0,02 0 1 0 0 0 50 3330 x6 0 0 1 0 0 1 0 0 20
-100 x8 0 1 0 0 0 0 -1 1 100 100zj-cj -1 -101,5 -3 0 0 0 100 0 -10000
Test přípustnosti
Vstupující proměnná
Vstupující proměnná
Pivot
Přechod na nové řešení
• Sloupec j-té proměnné, která vstupuje do báze se nazývá klíčový sloupec
• Řádek i-té proměnné, která vystupuje z báze se nazývá klíčový řádek
• Průsečík klíčového sloupce a řádku je klíčový prvek (pivot)
Postup eliminační metody
• Klíčový řádek dělíme klíčovým prvkem• Upravený klíčový řádek zapíšeme do další
tabulky• Pro úpravu dalšího řádku násobíme
upravený klíčový řádek prvkem v upravovaném řádku v klíčovém sloupci (leží pod nebo nad pivotem)
• Vynásobený klíčový řádek od původního upravovaného řádku odečteme
1 1,5 3 0 0 0 0 -100c B x1 x2 x3 x4 x5 x6 x7 x8 b
0 x4 1 1 1 1 0 0 0 0 3000 x5 0,2 0,15 0,02 0 1 0 0 0 500 x6 0 0 1 0 0 1 0 0 20
-100 x8 0 1 0 0 0 0 -1 1 100zj-cj -1 -101,5 -3 0 0 0 100 0 -10000
x4 0x5 0x6 0
1,5 x2 0 1 0 0 0 0 -1 1 100zj-cj 0
Jordanova eliminační metoda
1 1,5 3 0 0 0 0 -100
c B x1 x2 x3 x4 x5 x6 x7 x8 b
0 x4 1 1 1 1 0 0 0 0 300 300
0 x5 0,2 0,15 0,02 0 1 0 0 0 50 333
0 x6 0 0 1 0 0 1 0 0 20
-100 x8 0 1 0 0 0 0 -1 1 100 100
zj-cj -1 -101,5 -3 X X X 100 X -10000
0 x4 1 0 1 1 0 0 1 -1 200 200
0 x5 0,2 0 0,02 0 1 0 0,15 -0,15 35
0 x6 0 0 1 0 0 1 0 0 20 20
1,5 x2 0 1 0 0 0 0 -1 1 100
zj-cj -1 X -3 x x x -1,5 101,5 150
Nová báze
Nové řešení
0 x4 1 0 1 1 0 0 1 -1 200 2000 x5 0,2 0 0,02 0 1 0 0,15 -0,15 35 1750
0 x6 0 0 1 0 0 1 0 0 20 201,5 x2 0 1 0 0 0 0 -1 1 100
zj-cj -1 0 -3 0 0 0 -1,5 101,5 1500 x4 1 0 0 1 0 -1 1 -1 180 1800 x5 0,2 0 0 0 1 -0 0,15 -0,15 34,6 2313 x3 0 0 1 0 0 1 0 0 20
1,5 x2 0 1 0 0 0 0 -1 1 100zj-cj -1 0 0 0 0 3 -1,5 101,5 210
0 x7 1 0 0 1 0 -1 1 -1 1800 x5 0,05 0 0 -0,2 1 0,1 0 0 7,63 x3 0 0 1 0 0 1 0 0 20
1,5 x2 1 1 0 1 0 -1 0 0 280zj-cj 0,5 0 0 1,5 0 1,5 0 100 480
Výpočet modelu
Interpretace optimálního řešení
x1=0 (nebázická) pšenice se pěstovat nebude
x2=280 ječmen se bude pěstovat na 280 ha
x3=20 řepka se bude pěstovat na 20 ha
x4=0 (nebázická) žádná rezerva orné půdy
x5=7,6 rezerva NPK je 7,6 t
x6=0 (nebázická) žádná rezerva půdy pro řepku
x7=180 překročení plochy ječmene
Zisk bude 480 tis. Kč.
Příklad 2 • Výrobky A a B se opracovávají na dvou
strojích. – Výrobku A je třeba vyrobit alespoň 14 kusů. – Kapacita prvního stroje je 3000 hodin a kapacita
druhého stroje je 1000 hodin. – Požadavky výrobků na strojní hodiny viz tabulka.
• Sestavte výrobní program, který dosáhne maximálního zisku.
Stroj 1 Stroj 2 Zisk
A 80 20 30
B 2 2 30
Sestavení modelu
X1 …počet výrobků A
X2…počet výrobků B
Výrobku A alespoň 14 kusů
Kapacita prvního stroje je 3000 hodin
Kapacita druhého stroje je 1000 hodin
Počty výrobků jsou nezáporné
Maximalizujeme zisk
1
1 2
1 2
1 2
max 1 2
14
80 2 3000
20 2 1000
, 0
30 30
x
x x
x x
x x
Z x x
30 30 0 0 0 -1000c B x1 x2 x3 x4 x5 x6 b-1000 x6 1 0 -1 0 0 1 14
0 x4 80 2 0 1 0 0 30000 x5 20 2 0 0 1 0 1000
zj-cj
Výchozí řešení – simplexová tabulka
30 30 0 0 0 -1000c B x1 x2 x3 x4 x5 x6 b-1000 x6 1 0 -1 0 0 1 14
0 x4 80 2 0 1 0 0 30000 x5 20 2 0 0 1 0 1000
zj-cj -1030 -30 1000 0 0 0 -14000
Test optimality
30 30 0 0 0 -1000c B x1 x2 x3 x4 x5 x6 b-1000 x6 1 0 -1 0 0 1 14
0 x4 80 2 0 1 0 0 30000 x5 20 2 0 0 1 0 1000
zj-cj -1030 -30 1000 0 0 0 -14000
Výběr vstupující proměnné
30 30 0 0 0 -1000c B x1 x2 x3 x4 x5 x6 b-1000 x6 1 0 -1 0 0 1 14 14/1
0 x4 80 2 0 1 0 0 3000 3000/80
0 x5 20 2 0 0 1 0 1000 1000/20
zj-cj -1030 -30 1000 0 0 0 -14000
Výběr vystupující proměnné
30 30 0 0 0 -1000c B x1 x2 x3 x4 x5 x6 b-1000 x6 1 0 -1 0 0 1 14 14
0 x4 80 2 0 1 0 0 3000 37,50 x5 20 2 0 0 1 0 1000 50
zj-cj -1030 -30 1000 0 0 0 -1400030 x1 1 0 -1 0 0 1 14
0 x40 x5
Úprava klíčového řádku
30 30 0 0 0 -1000c B x1 x2 x3 x4 x5 x6 b-1000 x6 1 0 -1 0 0 1 14 14
0 x4 80 2 0 1 0 0 3000 37,50 x5 20 2 0 0 1 0 1000 50
zj-cj -1030 -30 1000 0 0 0 -1400030 x1 1 0 -1 0 0 1 14
0 x4 0 2 80 1 0 -80 18800 x5
Úprava druhého řádku• Klíčový řádek násobíme (-80) a přičítáme k druhému řádku
30 30 0 0 0 -1000c B x1 x2 x3 x4 x5 x6 b-1000 x6 1 0 -1 0 0 1 14 14
0 x4 80 2 0 1 0 0 3000 37,50 x5 20 2 0 0 1 0 1000 50
zj-cj -1030 -30 1000 0 0 0 -1400030 x1 1 0 -1 0 0 1 140 x4 0 2 80 1 0 -80 18800 x5 0 2 20 0 1 -20 720
Úprava třetího řádku• Klíčový řádek násobíme (-20) a přičítáme ke třetímu řádku
30 30 0 0 0 -1000c B x1 x2 x3 x4 x5 x6 b-1000 x6 1 0 -1 0 0 1 14 14
0 x4 80 2 0 1 0 0 3000 37,50 x5 20 2 0 0 1 0 1000 50
zj-cj -1030 -30 1000 0 0 0 -1400030 x1 1 0 -1 0 0 1 14
0 x4 0 2 80 1 0 -80 1880 9400 x5 0 2 20 0 1 -20 720 360
zj-cj 0 -30 -30 0 0 1030 420
Volba klíčového sloupce a řádku
30 30 0 0 0 -1000c B x1 x2 x3 x4 x5 x6 b-1000 x6 1 0 -1 0 0 1 14 14
0 x4 80 2 0 1 0 0 3000 37,50 x5 20 2 0 0 1 0 1000 50
zj-cj -1030 -30 1000 0 0 0 -1400030 x1 1 0 -1 0 0 1 14
0 x4 0 2 80 1 0 -80 1880 9400 x5 0 2 20 0 1 -20 720 360
zj-cj 0 -30 -30 0 0 1030 42030 x1 1 0 -1 0 0 1 14
0 x4 0 0 60 1 -1 -60 116030 x2 0 1 10 0 0,5 -10 360
zj-cj 0 0 270 0 15 730 11220
Konec výpočtu
Výsledek řešení
x1=14 výrobků typu A bude 14 kusů
x2=360 výrobků typu B bude 360 kusů
x3=0
x4=1160 volná kapacita 1. stroje
x5=0
Zisk bude 11220 tis. Kč.