lineární programování simplexový algoritmus

40
Lineární programování Simplexový algoritmus

Upload: nasya

Post on 05-Jan-2016

95 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: Lineární programování Simplexový algoritmus

Lineární programování

Simplexový algoritmus

Page 2: 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í

Page 3: Lineární programování Simplexový algoritmus

Ř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í

Page 4: Lineární programování Simplexový algoritmus

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.

Page 5: Lineární programování Simplexový algoritmus

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

Page 6: Lineární programování Simplexový algoritmus

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 ~~

Page 7: Lineární programování Simplexový algoritmus

Kapacitní podmínky

• Ax b • Ax + Ed = b, d 0

doplňkové proměnné

Ax Ed b

Page 8: Lineární programování Simplexový algoritmus

Požadavkové podmínky

• Ax b • Ax - Ed + Ep = b, d 0

doplňkové proměnné + pomocné proměnné

Ax -Ed Ep b

Page 9: Lineární programování Simplexový algoritmus

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

Page 10: Lineární programování Simplexový algoritmus

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

Page 11: Lineární programování Simplexový algoritmus

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

Page 12: Lineární programování Simplexový algoritmus

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

Page 13: Lineární programování Simplexový algoritmus

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

Page 14: Lineární programování Simplexový algoritmus

Ú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

Page 15: Lineární programování Simplexový algoritmus

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

Page 16: Lineární programování Simplexový algoritmus

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á

Page 17: Lineární programování Simplexový algoritmus

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á

Page 18: Lineární programování Simplexový algoritmus

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

Page 19: Lineární programování Simplexový algoritmus

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í Ω

Page 20: Lineární programování Simplexový algoritmus

Ω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

Page 21: Lineární programování Simplexový algoritmus

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)

Page 22: Lineární programování Simplexový algoritmus

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

Page 23: Lineární programování Simplexový algoritmus

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

Page 24: Lineární programování Simplexový algoritmus

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í

Page 25: Lineární programování Simplexový algoritmus

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

Page 26: Lineární programování Simplexový algoritmus

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č.

Page 27: Lineární programování Simplexový algoritmus
Page 28: Lineární programování Simplexový algoritmus

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

Page 29: Lineární programování Simplexový algoritmus

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

Page 30: Lineární programování Simplexový algoritmus

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

Page 31: Lineární programování Simplexový algoritmus

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

Page 32: Lineární programování Simplexový algoritmus

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é

Page 33: Lineární programování Simplexový algoritmus

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é

Page 34: Lineární programování Simplexový algoritmus

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

Page 35: Lineární programování Simplexový algoritmus

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

Page 36: Lineární programování Simplexový algoritmus

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

Page 37: Lineární programování Simplexový algoritmus

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

Page 38: Lineární programování Simplexový algoritmus

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

Page 39: Lineární programování Simplexový algoritmus

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č.

Page 40: Lineární programování Simplexový algoritmus