Úvod do lieárího programováí ) Defiice úlohy Jedá se o optimalizaí problémy které jsou popsáy soustavou lieárích rovic a erovic. Kritéria optimalizace jsou rovž lieárí. Promé v této úloze abývají reálých hodot které leží v uritých mezích. Takové optimalizaí úlohy azýváme lieárím programováím. Úloha lieárího programováí je defiováa jako mi ma{ : A b A b A = b c T kde f() = c T je úelová fukce (kritérium) ve tvaru f ( ) = c c... c = [... omezeí ešeí je ve tvaru a a a... a m a a m... 0.... a... a... a m b b b m 0} ] T ) Úlohy vedoucí a lieárí programováí Optimálí výrobí program Vyrábíme rzých výrobk a každý z ich potebuje m rzých zdroj (surovi a pod.). Na výrobu jedoho výrobku j-tého druhu potebujeme a ij jedotek i-tého zdroje. Zdroje jsou omezeé a máme k dispozici b i jedotek i-tého zdroje. Zisk pi výrob jedoho výrobku j-tého typu je c j. Poty výrobk j-tého typu ozaíme j. Naší úlohou je maimalizovat zisk pi respektováí omezeí a zdroje surovi. Potom hledáme ešeí problému ma{ c T : A b 0}.
Smšovací problém Máme základích surovi. Úkolem je amíchat suroviy tak aby výsledý výrobek ml pedepsaé složeí a suroviové áklady miimálí. Možství jedotek suroviy j-tého druhu ozaíme j její cea za jedotku je c j. Požadovaé složeí výsledého produktu je popsáo vektorem b jehož složky b i jsou rovy požadovaému obsahu látky i ve výsledém produktu. Jedotkové možství základí suroviy j- tého typu obsahuje a ij jedotek látky typu i. Hledáme tedy mi{ c T : A = b 0}. Dopraví problém Máme m výrobc a spotebitel. Sažíme se rozvést zboží od výrobc ke spotebitelm s miimálími áklady pi respektováí omezeí. Distribuí problém Jedá se o optimálí rozpis (resp. pláováí) výroby a stroje i jiá zaízeí. Optimálí ízeí dyamických systém Moho problému optimálího ízeí lze pevést a úlohu lieárího programováí. Píkladem je optimálí ízeí lieárího diskrétího dyamického systému s omezeím velikosti vstupích velii a lieárím kritériem (asov optimálí diskrétí ízeí). Píklad úlohy lieárího programováí Píklad je z prostedí optimálího výrobího programu. Vyrábíme výrobky A a B ze surovi S a S. Zásoby surovi jsou omezeé skladem: Surovia S Surovia S Cea Výrobek A kg / výrobek kg / výrobek 5 USD / výrobek Výrobek B 6 kg / výrobek kg / výrobek 8 USD / výrobek Sklad 500 kg 800 kg MAX Kolik výrobk A a B máme vyrobit aby byl maimálí zisk pi respektováí skladových zásob surovi?
Formulace úlohy Ozame možství výrobku A a možství výrobku B. Úelová fukce bude vyjadovat hodotu možství obou výrobk a omezeí skladové zásoby: f ( ) = 5 6 8 50 80 0. Grafické ešeí Do grafu arteme ob omezeí a úelovou fukci a hledáme maimum fukce f(). ešeí úlohy leží a hraici pípustých hodot ešeí (tyúhelíku ABCD). Vzhledem k lieárí úelové fukci lze ešeí hledat a vrcholech možiy pípustých ešeí. V ašem pípad dostáváme optimálí ešeí: = 00 a = 00. ) Simpleová metoda Budeme ešit základí úlohu lieárího programováí ma{ c T : A b 0}.
ešeí úloh lieárího programováí pomocí simpleové metody ukážeme a pedchozím píkladu: f ( ) = 5 8 MAX 6 50 80 0. Prvím krokem simpleové metody je pepis úlohy do kaoického tvaru. Zavedeím dalších promých a které azýváme doplkovými dostaeme z erovosí rovosti f ( ) = 5 6 8 MAX = 50 = 80 0. Dalším krokem je tvorba tzv. simpleové tabulky do které se zapisuje omezeí a upraveé kritérium (v tomto pípad f() = -5-8 ): b 6 0 500 0 800-5 -8 0 0 0 = f() Simpleová tabulka popisuje v prvích dvou ádcích aše dv omezeí. Z prvího omezeí plye = 500 - ( 6 ) a z druhého omezeí zase plye = 800 - ( ). Odtud dostaeme základí ešeí = 500 a = 800 (ostaí promé jsou ulové = = 0). Posledí ádek vyjaduje kritérium které je ulové. Teto krok zameá že jsme v bodu A a obrázku (viz. grafické ešeí). Nyí musíme urit promou (která odpovídá sloupci) pomocí které budeme rozvíjet ešeí. Vybíráme tu promou která má ejižší hodotu v posledím ádku (úelové fukci) a vyskytuje se v úelové fukci (tato promá ejvíce zvýší hodotu úelové fukce). Tímto postupem uríme tzv. klíový sloupec který v ašem pípad odpovídá promé. Dále musíme urit tzv. klíový ádek kterým budeme ostatí ádky upravovat (respektive elimiovat) tak abychom v ostatích ádcích dostali v klíovém sloupci ulové hodoty. Klíový ádek je takový ádek který má miimálí podíl le b j / a j pro všechy ádky omezeí j =...m kde a j symbolizuje prvek v klíovém sloupci. V ašem pípad je klíovým ádkem prví ádek protože podíl 500/6 = 50 je meší ež podíl 800/ = 0 ve druhém ádku. Po úprav ádk ádkem klíovým dostaeme
b / /6 0 50 0 -/ 00-0 / 0 000 = f() Z upraveé simpleové tabulky lze peíst ešeí (ve tvaru * = [ ]) * = [ 5 00] které ješt eí optimálí protože v posledím ádku se vyskytuje záporá hodota v prvím sloupci tabulky. Tato druhá iterace odpovídá bodu B a obrázku pro grafické ešeí. Obdob provedeme ješt jedu iteraci tetokrát klíový sloupec je sloupec odpovídající promé klíový ádek bude druhý ádek. Po provedeí další úpravy dostaeme b 0 / -/6 00 0 - / 00 0 0 / / 00 = f() Tato iterace byla posledí protože posledí ádek obsahuje ezáporá ísla ve sloupcích odpovídající promým v kriteriu (tedy a ). Z posledí tabulky lze odeíst optimálí ešeí ( obsahuje bázi [] které odpovídá sloupec b = [000] platí = 00) * = [0 0 0]. Zmíé ešeí odpovídá bodu C a obrázku. ) Speciálí pípady Alterativí ešeí V pípad že úloha lieárího programováí emá jedozaé ešeí ale má jich ekoe moho jedá se o alterativí ešeí. Teto pípad ukážeme a jedoduchém píkladu Píklad: f ( ) = 6 0. MAX Vytvoíme simpleovou tabulku s doplkovými promými b 0 0 6 - - 0 0 0 = f()
Provedeme úpravu klíovým ádkem a dostaeme b / 0 -/ / 0 / 0 0 0 = f() V posledím ádku jsme po prví iteraci dostali ezáporé prvky tudíž jsme dosáhli optimálího ešeí * = [ 0]. Všimme si ale prvího sloupce který sice eobsahuje bázi (a proto = 0) ale v ádku reprezetující kriterium je ula. Z toho plye že lze upravit tabulku tak aby prví promá byla bázová - vyásobíme prví ádek a elimiujeme druhý ádek (posledí ádek eupravujeme!). Potom dostaeme b 0-0 - 0 0 0 = f() Z tabulky odeteme další optimálí ešeí * = [ 0]. Dostali dv krají optimálí ešeí * = [ ] a * = [ ]. Optimálí ešeí * lze parametrizovat * * * 0 = λ ( λ) = λ ( ) λ λ.
Neomezeé ešeí V pípad že úloha lieárího programováí emá omezeé ešeí potom mže jeda ebo kolik promých abývat libovolých hodot úelová fukce roste a promá spluje omezující podmíky. Píklad: f ( ) = 0. MAX Vytvoíme simpleovou tabulku s doplkovými promými b - - - 0 0 = f() Provedeme úpravu klíovým ádkem a dostaeme b - -7 0 = f() Po prví iteraci dostáváme ešeí * = [ 0] (bod A a ásledujícím obrázku). Dále ám zbývá optimalizovat ešeí podle promé. Ale prvek odpovídající omezeí pro tuto promou je záporý (-) a tudíž promá mže rst ade všechy meze piemž úelová fukce také roste omezující podmíka je pitom spla. Potom pro ešeí platí * = [ 0] a f() =.
Úlohy Úloha 8.: ešte úlohy lieárího programováí a) 0. 90 90 00 5.5 ) ( = MAX f b) 0. 8 9 9 7 ) ( = MAX f c) 0. ) ( = MAX f
Úloha 8.: Optimálí výrobí program Spoleost vyrábí druhy baleých aj (A B a C) každý se skládá ze tí surovi (aj S S a S). Formulujte úlohu jako úlohu lieárího programováí a urete kolik kus aje A B a C se má vyrobit abychom maimalizovali zisk z prodeje s respektem a skladové zásoby surovi S S a S. Urete zisk z prodeje. S S S Cea aj A 0 g/kus 0 g/kus 0 g/kus K/kus aj B 0 g/kus 0 g/kus 0 g/kus 7 K/kus aj C 0 g/kus 0 g/kus 0 g/kus 8 K/kus Sklad 0 kg 50 kg 60 kg MAX Úloha 8.: Distribuí (pláovací) problém Spoleost vlastí dva stroje S S a vyrábí dva druhy výrobk V a V. Deí vytížeost obou stroj má být maimál 0 hodi. Za de se musí vyrobit 60 kus výrobk V a 80 kus výrobk V. Výrobek V stojí 00 K výrobek V 50 K. Formulujte úlohu jako úlohu lieárího programováí a urete kolik hodi se budou vyrábt výrobky V a prvím stroji S a druhém stroji S a kolik hodi se budou vyrábt výrobky V a prvím stroji S a druhém stroji S. V pípad že v pláu rozvrhu výroby stroj budou prostoje upravte rozvrh s ohledem a zisk tak aby výsledý rozvrh prostoje eobsahoval. Urete teto zisk. Výko stroj lze popsat tabulkou: Výrobek V Výrobek V Stroj S 5 ks/hod 0 ks/hod Stroj S 0 ks/hod 0 ks/hod Úloha 8.: Smšovací problém Ze tí složek je teba amíchat 0 kg smsi. Prví složka stojí 0 K/kg druhá 0 K/kg a tetí 0 K. Pitom sms musí obsahovat alespo 50 procet druhé složky maimál 60 procet druhé složky a miimál 5 procet tetí složky. Formulujte úlohu jako úlohu lieárího programováí a urete hmotostí podíl složek ve smsi tak aby byly suroviové áklady miimálí.