Optimální výrobní program Radka Zahradníková e-mail: RadkaZahradnikova@seznam.cz 1. července 2010
Obsah 1 Lineární programování 2 Simplexová metoda 3 Grafická metoda 4 Optimální výrobní program Řešení grafickou metodou Řešení simplexovou metodou 5 Literatura
nejjednoduší úloha matematického modelování aplikace: optimalizace výrobních plánů, dělení materiálu, míšení surovin, dopravních plánů při zásobování atd. algoritmy řešení úlohy LP založeny na využití numerických metod řešení SLAR odvozených od Gaussovy eliminační metody
Geometrická interpretace množina přípustných řešení V úlohy LP je podmnožina prostoru R n, vymezená nerovností Av b cíl úlohy LP - najít přípustné řešení v V, které maximalizuje (minimalizuje) danou lineární funkci z = cv max, (příp. cv min) na přípustné množině V neprázdná množina přípustných řešení vytváří v R n vždy uzavřený konvexní polyedr každý uzavřený konvexní polyedr je jednoznačně popsán svými vrcholy každý z vrcholů polyedru přípustných řešení úlohy LP - bazické řešení optimální řešení úlohy LP leží v některém z vrcholů polyedru
Kanonický tvar Úloha LP bývá obvykle specifikována jako: Av b, b 0 v 0 z = cv + d max v Tento tvar úlohy LP se nazývá kanonický. - předpoklad nezápornsti přípustných řešení - počátak soustavy souřadnic - bazické řešení
obecná metoda řešení úlohy LP pro úlohu v kanonickém tvaru transformace úlohy zavedením vektoru pomocných proměnných v R m, definovaného způsobem: v = b Av nerovnost Av b splněna pokud v 0 řešení v přípustné pokud v 0 a v 0 simplexový tvar: Av + v = b, b 0, v 0, v 0 z cv = d z max v,v dále iterativní využití Gaussovy eliminace
Simplexový algoritmus Předpokládejme, že máme úlohu lineárního programování ve standardním tvaru. Tj. Av b v 0 cv max v kde z = cv je cílová funkce, Av b jsou omezující podmínky a v 0 je podmínka nezápornosti.
Simplexový algoritmus Nalezení výchozího bazického řešení Zavedením pomocných proměnných v převedeme danou úlohu do kanonického tvaru, který potřebujeme pro aplikaci této metody. Av + v = b z cv = d z max v,v Výchozím bazickým řešením zvoĺıme počátek soustavy souřadnic, tzn. v = 0, v = b
Simplexový algoritmus Sestavení simplexové tabulky v 1 v 2... v n v 1 v 2... v m a 1,1 a 1,2... a 1,n 1 0... 0 b 1 e a 2,1 a 2,2... a 2,n 0 1... 0 b 2............. a m,1 a m,2... a m,n 0 0... 1 b m z c 1 c 2... c n 0 0... 0 d
Simplexový algoritmus Nalezení bazického řešení s vyšší hodnotou cílové funkce Podoba simplexové tabulky a bazického řešení v k-tém kroku algoritmu: v e k A k b k z c k d k v k i = b k i i e k v k i = 0 i / e k
Simplexový algoritmus Nalezení bazického řešení s vyšší hodnotou cílové funkce výběr nové bazické proměnné (kĺıčového sloupce) na základě hodnoty prvků vektoru c k výběr bazické proměnné, která bude vyřazena z báze (kĺıčového řádku) na základě hodnoty podílu: bk i a k i,j přepočet nového bazického řešení a vyčíslení hodnoty cílové funkce využitím Gaussovy eliminace
Simplexový algoritmus Počet řešení Simplexový algoritmus může být ukončen jedním z následujících výsledků: existuje právě jedno řešení poslední řádek simlexové tabulky neobsahuje žádné záporné a nulové prvky existuje nekonečně mnoho řešení poslední řádek tabulky neobsahuje žádné záporné prvky a navíc je prvek i vektoru c end odpovídající nebazické proměnné v end i nulový. řešení je v nekonečnu sloupec odpovídající nově vybrané bazické proměnné neobsahuje žádný kladný prvek
Popis metody Pro všechny omezující podmínky zaneseme do grafu hraniční přímky definující poloroviny a označíme směr polorovin. Najdeme průnik jednotlivých polorovin - polyedr ohraničující množinu přípustných řešení úlohy. Nalezneme extremální vrchol. Určíme proměnné úlohy LP a hodnotu cílové funkce v extremálním vrcholu.
Zadání problému Beaver Creek Pottery Company je malá firma, která vyrábí originální hrnky a misky. Společnost přitom využívá dva základní zdroje - speciální hrnčířskou hĺınu a kvalifikovanou práci. Na vyrobení 1 hrnku je potřeba 3 libry hĺıny a 2 hodiny práce. Na vyrobení misky 4 libry hĺıny a hodina práce. Hrnek se prodává za 50 dolarů, miska za 40 dolarů. Společnost chce zjistit, kolik misek a kolik hrnků má každý den vyrobit, aby dosáhla maximálního zisku, pokud má na každý den k dispozici 120 liber hĺıny a pracovní kapacita je 40 hodin.
Řešení grafickou metodou Formulace úlohy x 1...počet misek x 2...počet hrnků Cílem úlohy je najít takový počet vyráběných kusů jednotlivých výrobků, aby bylo dosaženo maxima cílové funkce: z = 40x 1 + 50x 2, Omezující podmínka pro práci: 1x 1 +2x 2 40. Omezující podmínka pro hĺınu: 4x 1 + 3x 2 120 Podmínky nezápornosti: x 1 0 x 2 0
Řešení grafickou metodou Množina přípustných řešení Pokud nyní pro obě omezující podmínky zaneseme do grafu hraniční přímky definující poloroviny, označíme směr polorovin a najdeme jejich průnik, dostaneme množinu přípustných řešení (viz obr. 1). 40 35 4x 1 +3x 2 =120 30 25 x 2 20 x 1 +2x 2 =40 15 10 5 0 0 5 10 15 20 25 30 35 40 x 1 Obrázek: Množina přípustných řešení
x 2 x 1 Řešení grafickou metodou Extremální vrchol Z teorie víme, že funkce nabývá svého optima vždy v jednom z vrcholů polyedru. Pokud vykresĺıme přímku cílové funkce pro různá z (např. z=800, 1200, 1600 - viz obr. 2) zjistíme, že cílová funkce nabývá svého maxima na množině přípustných směrů v bodě, který je nejdál od počátku. 35 30 25 40x 1 +50x 2 =1600 20 40x 1 +50x 2 =1200 15 40x 1 +50x 2 =800 10 5 0 5 10 15 20 25 30 35 40 Obrázek: Cílové funkce pro různé hodnoty z
x 2 x 1 Řešení grafickou metodou Extremální vrchol Postup pro určení maxima (viz obr. 3): Nakresĺıme přímku cílové funkce pro libovolné z, např. z=800 Nakresĺıme přímku rovnoběžnou s přímkou z=800 dotýkající se množiny přípustných řešní v bodě nejvíce vzdáleném od počátku - extremální vrchol 35 30 25 20 15 10 5 0 5 10 15 20 25 30 35 40 Obrázek: Hledání extremálního vrcholu
Řešení grafickou metodou Řešení v extremálním vrcholu Řešíme soustavu 2 rovnic: 1x 1 + 2x 2 = 40 x 1 = 40 2x 2 4x 1 + 3x 2 = 120 4(40 2x 2 ) + 3x 2 = 120 5x 2 = 40 tedy x 2 =8 x 1 =24. a z = 40x 1 + 50x 2 =40*24+50*8= 1360 dolarů.
x 2 x 1 Řešení grafickou metodou Shrnutí Hodnoty ve všech vrcholech polyedru Pro vrchol A dostaneme: x 1 =0 misek, x 2 =20 hrnků, z=1000 dolarů. Pro vrchol B dostaneme: x 1 =24 misek, x 2 =8 hrnků, z=1360 dolarů. Pro vrchol C dostaneme: x 1 =30 misek, x 2 =0 hrnků, z=1200 dolarů. Zjistili jsme tedy, že optimální výrobní program firmy je vyrobit každý den 24 misek a 8 hrnků, zisk firmy bude 1360 dolarů denně. 20 A 18 16 14 12 10 8 B 6 4 2 C 0 0 5 10 15 20 25 30 Obrázek: Množina přípustných řešení s vyznačenými vrcholy
Řešení simplexovou metodou Formulace úlohy Dáno: cílová funkce: z = 40x 1 + 50x 2 omezující podmínky: 1x 1 +2x 2 40, 4x 1 +3x 2 120 podmínky nezápornosti: x 1 0, x 2 0
Řešení simplexovou metodou Kanonický tvar Úlohu LP přepíšeme do kanonického tvaru, abychom mohli použít simlexovou metodu, tj. zavedeme přídavné proměnné s 1 a s 2. 1x 1 + 2x 2 + s 1 = 40 4x 1 + 3x 2 + s 2 = 120 z 40x 1 50x 2 = 0 kde x 1 0, x 2 0, s 1 0, s 2 0 a z 40x 1 50x 2 = 0 je přepsaná cílová funkce, kterou chceme maximalizovat.
Řešení simplexovou metodou Simplexová tabulka Jako výchozí bazické řešení voĺıme počátek soustavy souřadnic, tj. x 1 = 0, x 2 = 0 a dopočteme hodnoty s 1, s 2. Tedy dostaneme: x (0) = (x 1, x 2, s 1, s 2 ) = (0, 0, 40, 120). Výchozí simplexová tabulka má následující tvar: x 1 x 2 s 1 s 2 b s 1 1 2 1 0 40 s 2 4 3 0 1 120 z -40-50 0 0 0 Bazické proměnné jsou v prvním sloupci (s 1, s 2 )
Řešení simplexovou metodou Hledání nového bazického řešení-krok 1 Kĺıčový sloupec - nalezení nové bazické proměnné Použijeme pravidlo výběru proměnné s největší absolutní hodnotou záporného prvku v posledním řádku - tj. x 2. Kĺıčový řádek - nalezení vyřazované bazické proměnné Pro všechny nezáporné prvky kĺıčového sloupce spočteme podíl posledního sloupce tabulky a odpovídajícího prvku kĺıčového sloupce. Řádek s nejmenším podílem je kĺıčovým řádkem - tj. s 1. x 1 x 2 s 1 s 2 b podíl 40 s 1 1 2 1 0 40 2 = 20 120 s 2 4 3 0 1 120 3 = 40 z -40-50 0 0 0 -
Řešení simplexovou metodou Hledání nového bazického řešení-krok 1 Kĺıčový prvek Průsečík kĺıčového sloupce a kĺıčového řádku definuje kĺıčový prvek (2). Proměnná x 2 nahradí bazickou proměnnou s 1. Přepočet nového bazického řešení Využitím Gaussovy eliminační metody nahradíme bazickou proměnnou odpovídající kĺıčovému řádku s 1 proměnnou odpovídající kĺıčovému sloupci x 2. Řídícím prvkem eliminace je kĺıčový prvek, ke každému řádku přičteme takový násobek kĺıčového řádku, aby hodnoty všech prvků v kĺıčovém sloupci byly rovny 0. Kĺıčový řádek upravíme tak, aby na pozici kĺıčového prvku byla 1. násobek x 1 x 2 s 1 s 2 b s 1 1 2 1 0 40-3 2 s 2 4 3 0 1 120 25 z -40-50 0 0 0
Řešení simplexovou metodou Hledání nového bazického řešení-krok 1 Zisk nového bazického řešení Provedením úprav dostaneme novou simplexovou tabulku: x 1 x 2 s 1 s 2 b 1 1 x 2 2 1 2 0 20 5 s 2 2 0 3 2 1 60 z -15 0 25 0 1000 Novým bazickým řešením je x (1) = (0, 20, 0, 60) a hodnota cílové funkce vzrostla na z=1000.
Řešení simplexovou metodou Hledání nového bazického řešení-krok 2 Kĺıčový sloupec - nalezení nové bazické proměnné Záporná hodnota v posledním řádku je pouze u x 1, tedy jen pro tento prvek může dojíz k nárůstu cílové funke, tj. x 1 bude novou bazickou proměnnou. Kĺıčový řádek - nalezení vyřazované bazické proměnné Vypočteme podíl posledního sloupce tabulky a odpovídajícího prvku kĺıčového sloupce a zjistíme minimální hodnotu s 2 bude vyřazenou proměnnou. x 1 x 2 s 1 s 2 b podíl 1 1 x 2 2 1 2 0 20 40 5 s 2 2 0 3 2 1 60 24 z -15 0 25 0 1000 -
Řešení simplexovou metodou Hledání nového bazického řešení-krok 2 Kĺıčový prvek Průsečík kĺıčového sloupce a kĺıčového řádku definuje kĺıčový prvek ( 5 2). Proměnná x1 nahradí bazickou proměnnou s 2. Přepočet nového bazického řešení Gaussovou eliminací zajistíme, aby proměnná x 1 nahradila bazickou proměnnou s 2. násobek x 1 x 2 s 1 s 2 b - 1 1 1 5 x 2 2 1 2 0 20 5 s 2 2 0 3 2 1 60 6 z -15 0 25 0 1000
Řešení simplexovou metodou Hledání nového bazického řešení-krok 2 Zisk nového bazického řešení Provedením úprav dostaneme novou simplexovou tabulku: x 1 x 2 s 1 s 2 b 4 x 2 0 1 5-1 5 8 x 1 1 0 3 5 1 24 z 0 0 16 6 1360 Novým bazickým řešením je x (2) = (24, 8, 0, 0) a hodnota cílové funkce vzrostla na z=1360. Nyní už nemůžeme vybrat proměnnou, která by zvýšila hodnotu cílové funkce, tedy algoritmus skončil a stávající bazické řešení je optimálním řešením úlohy.
x 2 40 35 30 25 20 15 10 5 A x 1 +2x 2 +s 1 =40 4x 1 +3x 2 +s 2 =120 x 1 B C Řešení simplexovou metodou Shrnutí Hodnoty ve všech vrcholech polyedru Pro vrchol A dostaneme: x 1 =0, x 2 =20,s 1 =0, s 2 =60, z=1000 Pro vrchol B dostaneme: x 1 =24, x 2 =8,s 1 =0, s 2 =0, z=1360 Pro vrchol C dostaneme: x 1 =30, x 2 =0,s 1 =10, s 2 =0, z=1200 Opět jsme tedy zjistili, že optimální výrobní program firmy je vyrobit každý den 24 misek a 8 hrnků, zisk firmy bude 1360 dolarů denně. 0 0 5 10 15 20 25 30 35 40 Obrázek: Množina přípustných řešení s vyznačenými vrcholy
Zdroje skripta k předmětu Operační analýza internetový zdroj: http://www.fi.muni.cz/ hlineny/teaching/ou/ou-lect 6.pdf