Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra matematiky Obor: Matematické inženýrství Optimální výrobní program Semestrální práce - matematika a byznys Vypracovala: Radka Zahradníková Datum: 30.6.2010
1 Úvod Každý člověk se někdy v životě musí rozhodovat. A je určitě zřejmé, že každý chce zvolit takové rozhodnutí, které mu přinese co největší užitek. Musí tedy hledat taková rozhodnutí, která maximalizují jeho užitek vzhledem ke stanovenému cíli. Různých specifických rozhodovacích situací nás může potkat celá řada. Zvláště, pohybujeme-li se v oblasti ekonomie a financí, musíme vybírat takovou možnost, která nám umožní minimalizovat náklady a maximalizovat zisk. Najít optimální řešení však není vždy snadné. Pomoci v těchto případech může teorie rozhodovacích procesů, která dává návody na řešení typizovaných rozhodovacích situací. Tyto situace jsou zkoumány v různých vědních disciplínách jako např. Lineární programování, Dynamické programování, Teorie optimálních systémů automatického řízení, Teorie her.. Na různé rozhodovací situace samozřejmě používáme různé matematické modely a teorie, abychom vždy našli to nejlepší řešení dané problematiky. Úspěch záleží jak na volbě teorie, tak i na kvalitě sestavení matematického modelu rozhodovací situace a zahrnutí všech podstatných vlastností modelované reality. 2 Lineární programování Úloha lineárního programování (LP) je nejjednoduší úlohou matematického modelování, přesto má její řešení velké množství aplikací. Mezi typické úlohy, které je možné řešit užitím úlohy lineárního programování patří zejména úlohy z 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 jsou obvykle založeny na využití numerických metod řešení soustav lineárních algebraických rovnic odvozených od Gaussovy eliminační metody. 2.1 Geometrická interpretace LP úlohy Množina přípustných řešení V úlohy LP je podmnožina prostoru R n, vymezená nerovností Av b, (A R m n, b R m, m > n) kde A a b jsou pevně dané. Cílem úlohy LP je 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. Každá nerovnost a k v b k vymezuje v R n poloprostor ohraničený nadrovinou a k v = b k. Množina přípustných řešení je průnikem m těchto poloprostorů vymezených nerovností Av b. Neprázdná množina přípustných řešení vytváří v R n vždy uzavřený konvexní polyedr. Vrcholy polyedru přípustných řešení lze obecně najít jako průsečíky hraničních nadrovin. Vrchol konvexního uzavřeného polyedru je jeho bod, který neleží na spojnici jiných dvou bodů tohoto polyedru. 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 2
LP proto nazveme bazickým řešením. Navíc platí, že pokud je množina přípustných řešení tvořena ohraničeným uzavřeným konvexním polyedrem, potom optimální řešení úlohy LP leží v některém z vrcholů polyedru. 2.2 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ý. Pro řešení úlohy LP v kanonickém tvaru byla vyvinuta simplexová matoda. Pro tento tvar je charakteristický předpoklad nezápornsti přípustných řešení a fakt, že počátak soustavy souřadnic je bazickým řešením. Na kanonický tvar může být převedena jakákoli obecná úloha LP s alespoň jedním bazickým řešením pomocí vhodného posunutí a natočení souřadné soustavy. 3 Simplexová metoda Simplexová metoda je obecná metoda řešení úlohy LP a je formulována pro úlohu LP v kanonickém tvaru Av b,b 0 v 0 z = cv + d max v kde A R m n, b R m,v R n, c R n a z,d R 1. Tato metoda je založena na vyjádření množiny přípustných řešení LP v kanonickém tvaru pomocí všech řešení nedourčené soustavy lineárních rovnic omezených podmínkou nezápornosti a následným využitím Gausovy eliminační metody k získání optimálního řešení. Transformace úlohy se dosáhne pomocí zavedení vektoru pomocných proměnných v R m, definovaného způsobem: v = b Av. Nerovnost Av b je tedy splněna, jestliže v 0. Řešení v je tedy přípustné, jestliže vyhovuje podmínce nezápornosti v 0 a zároveň je nezáporný příslušný vektor pomocných proměnných v 0. Kanonický tvar úlohy LP definované v R n a vymezené soustavou m nerovností lze ekvivalentně vyjádřit v R m+n v simlexovém tvaru jako: Av + v = b,b 0,v 0,v 0 z cv = d z max v,v Další krok simplexové metody je založen na iterativním využití Gaussovy eliminace tak, aby v konečném počtu kroků nabyla soustava v simplexovém tvaru fromy s explicitně vyjádřeným řešením optimalizační úlohy. 3
3.1 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. Řešení úlohy najdeme následujícím postupem: Nalezení výchozího bazického řešení a sestavení simlexové tabulky 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 zvolíme počátek soustavy souřadnic, tzn. v = 0, v = b Sestavíme simlexovou tabulku následujícím způsobem: 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 Nalezení bazického řešení s vyšší hodnotou cílové funkce Podoba simlexové 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 Výběr nové bazické proměnné (klíčového sloupce) O vývoji cílové funkce z lze rozhodnout na základě hodnoty prvků vektoru c k v případě zařazení odpovídající proměnné mezi bazické proměnné. 4
Je-li prvek c k i kladný - hodnota cílové funkce se sníží nulový - hodnota cílové funkce se nezmění záporný - hodnota cílové funkce se zvýší Tedy jako novou bazickou proměnnou volíme pouze tu, které odpovídá záporný prvek vektoru c k. Pokud je více možností, volíme záporný prvek s největší absolutní hodnotou. Pokud žádný záporný prvek neexistuje, nenajdeme bazickou proměnnou, která by zvýšila hodnotu cílové funkce a stávající bazické řešení je hledaným optimálním řešením úlohy LP. Výběr bazické proměnné, která bude vyřazena z báze (klíčového řádku) Pro všechny nezáporné prvky matice A k odpovídající sloupci bazické b proměnné vybrané v předchozím kroku spočteme podíl: k i, kde b k i jsou prvky vektoru b k, a k i,j jsou prvky matice A k a j je index proměnné vybrané v předchozím kroku. Z báze řešení pak vyřadíme tu proměnnou, pro kterou je uvedený podíl nejmenší. Pokud ve vybraném sloupci neexistuje žádný kladný prvek, má úloha LP řešení v nekonečnu. Přepočet nového bazického řešení a vyčíslení hodnoty cílové funkce. Využitím Gaussovy eliminace nahradíme nově vybranou bazickou proměnnou tu proměnnou, která byla vybrána v předchozím kroku (proměnná vyřazená z báze). Cyklus simplexové metody Pokud nebylo dosaženo maximálního počtu kroků algoritmu, hledáme další bod, který by zvýšil hodnotu cílové funkce.v opačném případě vznikl nekonečný cyklus, což znamená, že řešení úlohy je v nekonečnu. 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í Pokud poslední řádek simlexové tabulky neobsahuje žádné záporné a nulové prvky. Existuje nekonečně mnoho řešení Pokud poslední řádek tabulky neobsahuje žádné záporné prvky a navíc je prvek i vektoru c end odpovídající nebazické proměnné vi end nulový. Řešení je v nekonečnu Pokud sloupec odpovídající nově vybrané bazické proměnné neobsahuje žádný kladný prvek. a k i,j 4 Grafická metoda Grafické řešení se z praktických důvodů užívá hlavně pro řešení úloh LP se dvěma neznámými. Princip úlohy spočívá ve vykreslení jednotlivých polorovin daných omezujícími podmínkami a nalezení maxima (resp. minima) na polyedru, který vznikne
průnikem daných polorovin. Postup: 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. Optimální výrobní program 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 hlínu a kvalifikovanou práci. Na vyrobení 1 hrnku je potřeba 3 libry hlíny a 2 hodiny práce. Na vyrobení misky 4 libry hlíny a hodina práce. Hrnek se prodává za 0 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 hlíny a pracovní kapacita je 40 hodin..1 Řešení grafickou metodou.1.1 Formulace úlohy Nejprve musíme definovat proměnné, cílovou funkci a omezující podmínky. Proměnnými x označíme počet hrnků a misek, které se mají vyrobit za jeden den....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 = 40 + 0x 2, kde z... celkový zisk za jeden den v dolarech 40...zisk z misek 0x 2...zisk z hrnků Nyní definujeme omezující podmínku pro práci: 1...počet hodin na výrobu misek za 1 den 2x 2...počet hodin na výrobu hrnků za 1 den 1 +2x 2...celkový počet hodin na výrobu za 1 den 6
Celkový počet hodin je omezen na 40 hodin denně, tedy můžeme zapsat omezující podmínku ve tvaru: 1 +2x 2 40. Podobně definujeme i omezující podmínku pro hlínu: 4...množství hlíny na výrobu misek na 1 den 3x 2...množství hlíny na výrobu hrnků na 1 den 4 +3x 2...celkové množství hlíny na 1 den Celkové množství hlíny je omezeno na 120 liber denně, tedy můžeme zapsat omezující podmínku ve tvaru: 4 + 3x 2 120 Ještě musíme přidat podmínky nezápornosti (nejde vyrobit záporné množství výrobků): 0 x 2 0.1.2 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 3 4 +3x 2 =120 30 2 x 2 20 +2x 2 =40 1 10 0 0 10 1 20 2 30 3 40 Obrázek 1: Množina přípustných řešení.1.3 Extremální vrchol Z teorie víme, že funkce nabývá svého optima vždy v jednom z vrcholů polyedru. Pokud vykreslí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. 7
3 30 2 40 +0x 2 =1600 20 40 +0x 2 =1200 x 2 1 40 +0x 2 =800 10 0 10 1 20 2 30 3 40 Obrázek 2: Cílové funkce pro různé hodnoty z Postup pro určení maxima (viz obr. 3): Nakreslíme přímku cílové funkce pro libovolné z, např. z=800 Nakreslíme přímku rovnoběžnou s přímkou z=800 dotýkající se množiny přípustných řešení pouze v 1 bodě, který je nejvíce vzdálený od počátku. Tímto bodem je jeden z vrcholů polyedru - tzv. extremální vrchol. 3 30 2 20 x 2 1 10 0 10 1 20 2 30 3 40 Obrázek 3: Hledání extremálního vrcholu.1.4 Řešení v extremálním vrcholu Nyní potřebujeme určit hodnoty proměnných, x 2 a maximální hodnoty cílové funkce. Toto můžeme provést bud odečtením z grafu, nebo spočtením soustavy 2 rovnic definujících extremální vrchol. Pokud tedy řešíme rovnice: 8
1 + 2x 2 = 40 = 40 2x 2 4 + 3x 2 = 120 4(40 2x 2 ) + 3x 2 = 120 x 2 = 40 tedy x 2 =8 =24. a z = 40 + 0x 2 =40*24+0*8= 1360 dolarů..1. Shrnutí Stejným postupem můžeme získat hodnoty proměnných a cílové funkce ve všech vrcholech (vrcholy jsou vyznačeny na obr. 4) Pro vrchol A dostaneme: =0 misek, x 2 =20 hrnků, z=1000 dolarů. Pro vrchol B dostaneme: =24 misek, x 2 =8 hrnků, z=1360 dolarů. Pro vrchol C dostaneme: =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ě. x 2 20 A 18 16 14 12 10 8 B 6 4 2 C 0 0 10 1 20 2 30 Obrázek 4: Množina přípustných řešení s vyznačenými vrcholy.2 Řešení simplexovou metodou Nyní budeme úlohu řešit jinou metodou..2.1 Zadání Dáno: cílová funkce: z = 40 + 0x 2 omezující podmínky: 1 +2x 2 40, 4 +3x 2 120 podmínky nezápornosti: 0, x 2 0 9
.2.2 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. 1 + 2x 2 + s 1 = 40 4 + 3x 2 + s 2 = 120 z 40 0x 2 = 0 kde 0, x 2 0, s 1 0, s 2 0 a z 40 0x 2 = 0 je přepsaná cílová funkce, kterou chceme maximalizovat..2.3 Simplexová tabulka Nejprve sestavíme simplexovou tabulku. Jako výchozí bazické řešení volíme počátek soustavy souřadnic, tj. = 0, x 2 = 0 a dopočteme hodnoty s 1, s 2. Tedy dostaneme: x (0) = (,x 2,s 1,s 2 ) = (0, 0, 40, 120). Výchozí simplexová tabulka má následující tvar: x 2 s 1 s 2 b s 1 1 2 1 0 40 s 2 4 3 0 1 120 z -40-0 0 0 0 Bazické proměnné jsou v prvním sloupci (s 1, s 2 )..2.4 Hledání nového bazického řešení-krok 1 Klíč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. Klíčový řádek - nalezení vyřazované bazické proměnné Pro všechny nezáporné prvky klíčového sloupce spočteme podíl posledního sloupce tabulky a odpovídajícího prvku klíčového sloupce. Řádek s nejmenším podílem je klíčovým řádkem - tj. s 1. x 2 s 1 s 2 b podíl 40 s 1 1 2 1 0 40 = 20 2 120 s 2 4 3 0 1 120 = 40 3 z -40-0 0 0 0-10
Klíčový prvek Průsečík klíčového sloupce a klíčového řádku definuje klíč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í klíčovému řádku s 1 proměnnou odpovídající klíčovému sloupci x 2. Řídícím prvkem eliminace je klíčový prvek, ke každému řádku přičteme takový násobek klíčového řádku, aby hodnoty všech prvků v klíčovém sloupci byly rovny 0. Klíčový řádek upravíme tak, aby na pozici klíčového prvku byla 1. násobek x 2 s 1 s 2 b s 1 1 2 1 0 40-3 2 s 2 4 3 0 1 120 2 z -40-0 0 0 0 Zisk nového bazického řešení Provedením úprav dostaneme novou simplexovou tabulku: x 2 s 1 s 2 b 1 1 x 2 1 0 20 2 2 s 2 0 3 1 60 2 2 z -1 0 2 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..2. Hledání nového bazického řešení-krok 2 Klíčový sloupec - nalezení nové bazické proměnné Záporná hodnota v posledním řádku je pouze u, tedy jen pro tento prvek může dojíz k nárůstu cílové funke, tj. bude novou bazickou proměnnou. Klíčový řádek - nalezení vyřazované bazické proměnné Vypočteme podíl posledního sloupce tabulky a odpovídajícího prvku klíčového sloupce a zjistíme minimální hodnotu s 2 bude vyřazenou proměnnou. x 2 s 1 s 2 b podíl 1 1 x 2 1 0 20 40 2 2 s 2 0 3 1 60 24 2 2 z -1 0 2 0 1000 - Klíčový prvek Průsečík klíčového sloupce a klíčového řádku definuje klíčový prvek ( 2). Proměnná nahradí bazickou proměnnou s 2. 11
Přepočet nového bazického řešení Gaussovou eliminací zajistíme, aby proměnná nahradila bazickou proměnnou s 2. násobek x 2 s 1 s 2 b - 1 1 1 x 2 1 0 20 2 2 s 2 0 3 1 60 2 2 6 z -1 0 2 0 1000 Zisk nového bazického řešení Provedením úprav dostaneme novou simplexovou tabulku: x 2 s 1 s 2 b 4 x 2 0 1-1 8 1 0 3 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..2.6 Výsledek 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. Opět můžeme získat hodnoty proměnných a cílové funkce ve všech vrcholech (vrcholy jsou vyznačeny na obr. ) Pro vrchol A dostaneme: =0, x 2 =20,s 1 =0, s 2 =60, z=1000 Pro vrchol B dostaneme: =24, x 2 =8,s 1 =0, s 2 =0, z=1360 Pro vrchol C dostaneme: =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ě. 40 3 4 +3x 2 +s 2 =120 30 2 x 2 20 A +2x 2 +s 1 =40 1 10 B 0 0 10 1 20 2 30 3 40 C Obrázek : Množina přípustných řešení s vyznačenými vrcholy 12
6 Literatura skripta k předmětu Operační analýza internetový zdroj: http://www.fi.muni.cz/ hlineny/teaching/ou/ou-lect 6.pdf 7 Kontakt e-mail: RadkaZahradnikova@seznam.cz 13