2 Spojité modely rozhodování



Podobné dokumenty
Jak pracovat s absolutními hodnotami

fakulty MENDELU v Brně (LDF) s ohledem na disciplíny společného základu (reg. č. CZ.1.07/2.2.00/28.

LDF MENDELU. Simona Fišnarová (MENDELU) Základy lineárního programování VMAT, IMT 1 / 25

EKONOMICKO-MATEMATICKÉ METODY

5. Maticová algebra, typy matic, inverzní matice, determinant.

Parametrické programování

Úvod do optimalizace

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ. Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky

Skalární součin je nástroj, jak měřit velikost vektorů a úhly mezi vektory v reálných a komplexních vektorových prostorech.

skladbu obou směsí ( v tunách komponenty na 1 tunu směsi):

Jazyk matematiky Matematická logika Množinové operace Zobrazení Rozšířená číslená osa

{Q={1,2};S,T;u(s,t)} (3.3) Prorovnovážnéstrategie s,t vehřesnulovýmsoučtemmusíplatit:

Skalár- veličina určená jedním číselným údajem čas, hmotnost (porovnej životní úroveň, hospodaření firmy, naše poloha podle GPS )

4EK213 LINEÁRNÍ MODELY

Operace s maticemi Sčítání matic: u matic stejného typu sečteme prvky na stejných pozicích: A+B=(a ij ) m n +(b ij ) m n =(a ij +b ij ) m n.

Maticový a tenzorový počet

4. Lineární nerovnice a jejich soustavy

Metody operačního výzkumu cvičení

Determinant. Definice determinantu. Permutace. Permutace, vlastnosti. Definice: Necht A = (a i,j ) R n,n je čtvercová matice.

Katedra aplikované matematiky FEI VŠB Technická univerzita Ostrava

6. T e s t o v á n í h y p o t é z

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

Přehled učiva matematiky 7. ročník ZŠ

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

Euklidovský prostor Stručnější verze

STATISTICA Téma 8. Regresní a korelační analýza, regrese prostá

a m1 a m2 a mn zobrazení. Operaci násobení u matic budeme definovat jiným způsobem.

1. července 2010

Několik poznámek na téma lineární algebry pro studenty fyzikální chemie

4EK213 LINEÁRNÍ MODELY

Lineární programování

3. Matice a determinanty

GRAFY A GRAFOVÉ ALGORITMY

Základy matematiky kombinované studium /06

PLANIMETRIE, KONSTRUKČNÍ ÚLOHY V ROVINĚ

Matice. Přednáška MATEMATIKA č. 2. Jiří Neubauer. Katedra ekonometrie FEM UO Brno kancelář 69a, tel

Soustavy lineárních rovnic

y = Spočtěte všechny jejich normy (vektor je také matice, typu n 1). Řádková norma (po řádcích sečteme absolutní hodnoty prvků matice a z nich

0. Lineární rekurence Martin Mareš,

KATEDRA INFORMATIKY UNIVERZITA PALACKÉHO LINEÁRNÍ ALGEBRA 1 OLGA KRUPKOVÁ VÝVOJ TOHOTO UČEBNÍHO TEXTU JE SPOLUFINANCOVÁN

1/10. Kapitola 12: Soustavy lineárních algebraických rovnic

5. Lokální, vázané a globální extrémy

(Auto)korelační funkce Statistické vyhodnocování exp. dat M. Čada ~ cada

(Cramerovo pravidlo, determinanty, inverzní matice)

0.1 Úvod do lineární algebry

Matice se v některých publikacích uvádějí v hranatých závorkách, v jiných v kulatých závorkách. My se budeme držet zápisu s kulatými závorkami.

0.1 Úvod do lineární algebry

Lineární programování

Kapitola 1. Tenzorový součin matic

Cvičení z Numerických metod I - 12.týden

MATEMATIKA IV - PARCIÁLNÍ DIFERENCIÁLNÍ ROVNICE - ZÁPISKY Z. Obsah. 1. Parciální diferenciální rovnice obecně. 2. Kvaazilineární rovnice prvního řádu

IB112 Základy matematiky

4EK213 Lineární modely. 4. Simplexová metoda - závěr

4EK213 Lineární modely. 5. Dualita v úlohách LP

Karnaughovy mapy. Pravdivostní tabulka pro tři vstupní proměnné by mohla vypadat například takto:

2.2. SČÍTÁNÍ A NÁSOBENÍ MATIC

13. Lineární programování

Učební texty k státní bakalářské zkoušce Matematika Matice. študenti MFF 15. augusta 2008

Eduard Šubert: Koktejl nápoj je vektorem z lineárního obalu ingrediencí.

Základy matematiky pro FEK

1 Linearní prostory nad komplexními čísly

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

Učební texty k státní bakalářské zkoušce Matematika Základy lineárního programování. študenti MFF 15. augusta 2008

Mária Sadloňová. Fajn MATIKA. 150 řešených příkladů (vzorek)

12. Lineární programování

2 Trochu teorie. Tab. 1: Tabulka pˇrepravních nákladů

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Poznámky z matematiky

JčU - Cvičení z matematiky pro zemědělské obory (doc. RNDr. Nýdl, CSc & spol.) Minitest MT1

Funkce zadané implicitně

Vektory a matice. Matice a operace s nimi. Hodnost matice. Determinanty. . p.1/12

Využití simplexového algoritmu v projektování výroby

Soustavy lineárních rovnic a determinanty

Západočeská univerzita v Plzni. Fakulta aplikovaných věd Katedra matematiky. Geometrie pro FST 1. Pomocný učební text

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

ANTAGONISTICKE HRY 172

. Určete hodnotu neznámé x tak, aby

7. přednáška Systémová analýza a modelování. Přiřazovací problém

Matematika pro studenty ekonomie

Přiřazovací problém. Přednáška č. 7

Úvod do lineární algebry

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Operace s maticemi

V praxi pracujeme s daty nominálními (nabývají pouze dvou hodnot), kategoriálními (nabývají více

Projekt OPVK - CZ.1.07/1.1.00/ Matematika pro všechny. Univerzita Palackého v Olomouci

3. ANTAGONISTICKÉ HRY

Operační výzkum. Vícekriteriální programování. Lexikografická metoda. Metoda agregace účelových funkcí. Cílové programování.

Masarykova univerzita. Základy konvexní analýzy a optimalizace v R n.

2. Matice, soustavy lineárních rovnic

Gymnázium, Brno. Matice. Závěrečná maturitní práce. Jakub Juránek 4.A Školní rok 2010/11

Předmluva. Publikace obsahuje množství řešených i neřešených příkladů s výsledky k samostatnému studiu.

+ ω y = 0 pohybová rovnice tlumených kmitů. r dr dt. B m. k m. Tlumené kmity

1 Řešení soustav lineárních rovnic

Základy maticového počtu Matice, determinant, definitnost

Obecná úloha lineárního programování. Úloha LP a konvexní množiny Grafická metoda. Jiří Neubauer. Katedra ekonometrie FEM UO Brno

Využití simplexového algoritmu pro transformaci výroby

(4x) 5 + 7y = 14, (2y) 5 (3x) 7 = 74,

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

MATEMATIKA 1 4 A B C D. didaktický test. Zadání neotvírejte, počkejte na pokyn! Krok za krokem k nové maturitě Maturita nanečisto 2006

4EK201 Matematické modelování. 2. Lineární programování

Transkript:

2 Spojité modely rozhodování Jak již víme z přednášky, diskrétní model rozhodování lze zapsat ve tvaru úlohy hodnocení variant: f(a i ) max, a i A = {a 1, a 2,... a p }, kde f je kriteriální funkce a A je rozhodovací množina variant. Pro spojité modely rozhodování budeme používat následující zápis: f(x) max, x = (x 1, x 2,... x n ), x X, kde X = {x R n, g i (x) b i, x 0}, je rozhodovací množina variant a f kriteriální funkce. Přípustným řešením nazveme každý vektor x rozhodovací množiny X, tedy vektor, který splňuje omezující podmínky a podmínky nezápornosti. Optimálním řešením nazveme takový vektor x z množiny přípustných řešení, který maximalizuje hodnotu kriteriálníí funkce f(x). Pozn.: Pokud jsou funkce f a g i (x) lineární, mluvíme o úloze lineárního programování. 2.1 Model lineárního programování Model lineárního programování lze obecně zapsat ve tvaru: max z = c 1 x 1 + c 2 x 2 +... + c n x n... maximalizace kriteriální funkce za podmínek: a 11 x 1 + a 12 x 2 +... + a 1n x n b 1 a 21 x 1 + a 22 x 2 +... + a 2n x n b 2. a m1 x 1 + a m2 x 2 +... + a mn x n b m... omezující podmínky x 1, x 2,..., x n 0... podmínky nezápornosti Tento zápis je sice sndno pochopitelný ale bohužel zlouhavý a tak pro model lineárního programování častěji používáme zkrácený zápis pomocí symbolů sumy: max z = n c j x j... maximalizace kriteriální funkce j=1 1

za podmínek: n a ij x j b i... omezující podmínky j=1 x j 0... podmínky nezápornosti nebo maticový zápis: max z = c T x... maximalizace kriteriální funkce za podmínek: Ax b... omezující podmínky x 0... podmínky nezápornosti Pro maticový zápis platí: matice strukturních koeficientů a 11 a 12... a 1n a 21 a 22... a 2n A =...... a m1 a m2... a mn vektor řešení vektor pravých stran vektor cenových koeficientů x = b = c = 2 x 1 x 2. x n b 1 b 2. b m c 1 c 2. c n

Základní věta lineárního programování nám říká, že má-li úloha lineárního programování optimální řešení, pak existuje také základní optimální řešení. Jinými slovy, projdeme-li všechna základní řešení (kterých je konečně mnoho) a nenajdeme-li přípustné řešení, pak optimální řešení neexistuje. Navíc platí, že má-li úloha jedno optimální řešení, pak je základní. Má-li nekonečně mnoho řešení, pak je alespoň jedno řešení základní. Pokud mezi základními řešeními najdeme přípustné řešení, ale ne optimální, pak optimální řešení neexistuje. Základním řešením se rozumí vrcholy konvexního polygonu tvořícího množinu přípustných řešení. 2.2 Jednofázová simplexová metoda Krok 1 převod na soustavu rovnic Uvažujme maximalizační úlohu popsanou v předchozí kapitole. Nejprve soustavu omezujících podmínek převedeme na soustavu rovnic. Získáme tak kanonický tvar soustavy rovnic. Pro každou nerovnici (podmínku) použijeme jednu přídatnou proměnnou, která bude nezáporná. V soustavě máme původně x 1,..., x n a nyní přidáme obecně dalších m proměnných x n+1,..., x n+m. Pokud jsou nerovnosti tvaru, je třeba proměnné přičíst, pro nerovnosti opačného směru je třeba přídatné proměnné odečíst. Pro maximalizační úlohu z předchozí kapitoly získáme tedy kanonický tvar soustavy rovnic: a 11 x 1 +a 12 x 2 +... +a 1n x n +x n+1 = b 1 a 21 x 1 +a 22 x 2 +... +a 2n x n +x n+2 = b 2...... a m1 x 1 +a m2 x 2 +... +a mn x n +x n+m = b m Z této soustavy snadno sestavíme matici strukturních koeficientů. Matice má rozměr m (n+m) a obsahuje submatici rozměru m m, která je jednotková (v případě nerovností typu ): 3

A = a 11 a 12... a 1n 1 0... 0 a 21 a 22... a 2n 0 1... 0...... a m1 a m2... a mn 0 0... 1 Krok 2 nalezení výchozího řešení Pokud je soustava podmínek v kanonickém tvaru, tzn. že obsahuje jednotkovou submatici, je výchozím řešením vektor x = 0, je-li přípustný (neboli pokud na pravé straně jsou hodnoty nezáporné). V případě, že soustava není v kanonickém tvaru, řeší se úloha dvoufázovou simplexovou metodou, kde prvním krokem je najít přípustné výchozí řešení za pomoci pomocné účelové funkce. Krok 3 sestavení výchozí simplexové tabulky Do prvního řádku napíšeme do jednotlivých sloupců seznam všech proměnných, včetně přídatných proměnných. Dopředu přidáme další sloupec, do kterého budeme psát základní (bazické) proměnné. Pro snazší výpočty se doporučuje přidat ještě jeden sloupec, do kterého vypíšeme cenové koeficienty pro bazické proměnné. Do posledního sloupce budeme zapisovat vektor pravých stran a tam také nalezneme řešení. Do řádků pak zapíšeme bazické proměnné, pro kanonický tvar budou prvními bazickými proměnnými proměnné přídatné. Pak vpíšeme do tabulky strukturní koeficienty, první řádek odpovídá první podmínce, druhý řádek druhé podmínce atd. Sloupce odpovídají jednotlivým proměnným. Nakonec budeme uvádět řádek účelové funkce, kam pro začátek napíšeme opačné hodnoty cenových koeficientů (pr přídatné proměnné nuly) a do sloupce pro pravou stranu budeme psát hodnotu účelové funkce, která je na začátku rovna nule. 4

Pokud si hodnoty cenových koeficientů nepamatujeme, připíšeme si je do hlavičky tabulky, neboť je budeme potřebovat. Pro maximalizační úlohu, která má dvě proměnné a dvě podmínky ve tvaru, bude vypadat výchozí simplexová tabulka následovně: ceny c 1 c 2 0 0 c B zákl.prom. x 1 x 2 x 3 x 4 β i 0 x 3 a 11 a 12 1 0 b 1 0 x 4 a 21 a 22 0 1 b 2 zj 1 c 1 c 2 0 0 0 Poznamenejme ale nakonec, že řádek a sloupec s cenami se většinou v tabulkách neuvádí. Krok 4 ověření optimality Pro maximalizační úlohu platí, že řešení je optimální, pokud v řádku účelové funkce jsou nezáporná čísla (mluvíme pohopitelně o redukovaných a stínových cenách). Pro minimalizační úlohy je řešení optimální, pokud jsou všechny redukované a stínové ceny nekladné. V případě, že je podmínka optimality splněna, výpočet ukončíme, pokud ne, provedeme transformaci simplexové tabulky popsanou v kroku 5. Optimální řešení pak nalezneme v posledním sloupci, kde jsou hodnoty jednotlivých proměnných. Krok 5 transformace simplexové tabulky Řešení v simplexové tabulce není optimální, pro maximalizační úlohu je některá z cen v řádku účelové funkce záporná. Jako klíčový sloupec vybereme ten, ve kterém je v řádku účelové funkce záporná hodnota v absolutní hodnotě nejvyšší (neboli nejmenší záporné číslo). Proměnná, které odpovídá tento sloupec bude proměnnou vstupující do báze (stane se základní proměnnou). Pro minimalizaci bude klíčovým sloupcem ten, který má v řádku účelové funkce nejvyšší kladnou hodnotu. Připomeňme, že kladné ceny uvedené v řádku účelové funkce nám říkají, o kolik se sníží hodnota účelové funkce přidáním jedné jednotky odpovídající proměnné, záporné hodnoty naopak říkají, o kolik se hodnota účelové funkce zvýší. 5

Máme-li klíčový sloupec, zvolíme klíčový řádek. Pro všechny řádky i, která mají v klíčovém sloupci j kladnou hodnotu příslušného strukturního koeficientu α ij > 0 spočítáme hodnotu t i = b i /α ij. Řádek, který má tuto hodnotu nejnižší zvolíme jako klíčový a příslušná základní proměnná se stane nezákladní, neboli vystupující z báze. Také v případě minimalizace se volí klíčový řádek jako ten, který má výše uvedený poměr minimální. Důvod, proč volíme klíčový řádek takto je jednoduchý. Snažíme se hledat taková řešení, která jsou přípustná a nezpůsobí zápornost pravé strany. V případě, že zvolíme špatně klíčový řádek, docílíme toho, že v posledním sloupci se objeví záporné hodnoty a řešení nebude přípustné. Prvek, který je v klíčovém sloupci i klíčovém řádku se nazývá klíčový prvek. Nejprve transformujeme klíčový řádek tak, že všechny hodnoty v řádku vydělíme klíčovým prvkem a do legendy (sloupce se základními proměnnými) tohoto řádku napíšeme vstupující proměnnou. Pak transformujeme ostatní řádky tak, že vezmeme hodnotu v klíčovém sloupci a přenásobíme číslem ( 1). Takto získanou hodnotou přenásobíme každý prvek v řádku nové (vstupující) proměnné to je ten, která jsme před chvílí vydělili klíčovým prvkem. Tyto nově získané hodnoty přiteme k původnímu řádku ve staré simplexové tabulce a napíšeme do té nové. V praxi tedy platí, že pokud klíčový sloupec označíme j a klíčový řádek i, simplexovou tabulku (kromě klíčového řádku) transformujeme tak, že: a N kl = as kl as kj (as il /as ij). Horní index N označuje hodnotu v nové simplexové tabulce, index S ve staré. Pro klíčový řádek je transformace: a N il = a S il /as ij. Zbývá dopočítat řádek účelové funkce. Pokud míme tabulku rozšířenou o sloupec a řádek s cenami, bude výpočet jednodušší. Předpokládejme, že počítáme hodnotu pro j-tý sloupec, tedy proměnnou x j. Hodnota z j je pak počítána následovně: Prvek ve sloupci znásobíme cenovým koeficientem příslušné bazické proměnné (to je cena v prvním sloupci), tyto součiny nasčítáme pro všechny řádky a odečteme cenu proměnné ve sloupci (cenu v prvním řádku). Důležité je, že pro základní proměnné je v řádku účelové funkce nula. Hodnota účelové funkce (pravý dolní roh tabulky) je pak součinem cen základních proměnných (první sloupec) a množstvím těchto základních proměnných (pravé strany, poslední sloupec) nasčítaných přeš všechny řádky. 6

Pozn.: Pokud by v případě maximalizace hodnota účelové funkce nevzrostla, v případě minimalizace neklesla, je něco v nepořádku. Po této transformaci se vrátíme ke kroku 4 a ověříme optimalitu. Pro další studium Pro další studium simplexové metody a její praktické použití je důležité zvládnout: Dvoufázovou simplexovou metodu nalezení přípustného výchozího řešení pomocí pomocných proměnných a pomocné účelové funkce. Zamyslet se nad výpočtem minimalizace. Rozmyslet si počty optimálních řešení, alternativní řešení apod. Zamyslet se, co se stane pokud nerovnosti nemají očekávaný směr. Jak počítat v případě, že omezující podmínka je ve tvaru rovnosti. Interperataci redukovaných a stínových cen. Znalosti je možno čerpat z Lagová, Lineární modely, VŠE 1999, Lagová, Lineární modely v příkladech, VŠE 2002 a Jablonský, Operační výzkum, Professional Publishing 2002. 2.3 Řešené příklady Příklad 1 Zadání: max z = 10x 1 + 5x 2 za podmínek: 5x 1 + 3x 2 60 4x 1 2x 2 26 x 1, x 2 0 7

a) Nalezněte graficky řešení této úlohy. b) Vypočtěte simplexovou metodou řešení úlohy. Řešení: a) Účelová funkce je funkcí dvou proměnných, grafické řešení tedy nebude těžké najít, neboť množinu přípustných řešení lze zobrazit v rovině. Nejprve si tedy nakreslíme jednotlivá omezení. V obrázku můžeme vidět: Modrou barvou vyobrazenou polorovinu odpovídající první podmínce 5x 1 + 3x 2 60 Červenou barvou vyobrazenou polorovinu odpovídající druhé podmínce 4x 1 2x 2 26 Béžovou barvou podmínku nezápornosti pro x 1 Zelenou barvou podmínku nezápornosti pro x 2 Žlutě je pak vyznačen průnik těchto polorovin, tedy množina přípustných řešení Černé rovnoběžky ukazují jednotlivé hladiny pro účelovou funkci. Hodota účelové funkce roste směrem k severovýchodnímu (pravému hornímu) rohu (jak naznačuje černá šipka). Účelová funkce tedy nabývá na množině přípustných řešení (žlutý čtyřúhelník) svého maxima v bodě x opt. 8

x opt lze snadno spočítat jako průsečík modré a červené přímky. Tyto přímky jsou grafickým vyjádřením první a druhé podmínky (se znamením rovnosti). Stačí tedy řešit soustavu dvou rovnic o dvou neznámých: 5x 1 + 3x 2 = 60 4x 1 2x 2 = 26 Tato soustava má jediné řešení x opt = (x 1, x 2 ) = (9, 5). b) Pomocí přídatných proměnných převedeme soustavu na ekvivalentní soustavu rovnic: 5x 1 +3x 2 +x 3 = 60 4x 1 2x 2 +x 4 = 26 Dále převedeme účelovou funkci do anulovaného tvaru: z 10x 1 5x 2 = 0 Nyní sestavíme výchozí simplexovou tabulku: zákl.prom. x 1 x 2 x 3 x 4 β i x 3 5 3 1 0 60 x 4 4 2 0 1 26 zj 1 10 5 0 0 0 Teď bychom měli zvolit klíčový sloupec protože funkci maximalizujeme, hledáme v řádku účelové funkce nejmenší záporný koeficient. V našem případě 10 a vstupující proměnnou tedy bude x 1. Dále musíme určit proměnnou vystupující, a tak spočítáme pro každý řádek, kde α ik > 0, hodnotu t = β i /α ik. Klíčovým řádkem, na kterém najdeme vystupující proměnnou, bude ten, který bude mít tuto hodnotu nejmenší. zákl.prom. x 1 x 2 x 3 x 4 β i t = β i /α ik x 3 5 3 1 0 60 12 x 4 4 2 0 1 26 13/2 zj 1 10 5 0 0 0 9

Z tabulky vidíme, že vystupující proměnnou bude x 4. V dalším kroku nahradíme vystupující proměnnou proměnnou vstupující a řádek vydělíme řídícím prvkem. Ostatní řádky upravíme tak, abychom v sloupci s vstupující proměnnou získali jednotkový vektor. Tak získáme novou simplexovou tabulku. zákl.prom. x 1 x 2 x 3 x 4 β i x 3 0 11/2 1 5/4 55/2 x 1 1 1/2 0 1/4 13/2 zj 2 0 10 0 5/2 65 Vzhledem k tomu, že v řádku účelové funkce je stále alespoň jedna záporná hodnota, celý postup opakujeme. zákl.prom. x 1 x 2 x 3 x 4 β i t = β i /α ik x 3 0 11/2 1 5/4 55/2 5 x 1 1 1/2 0 1/4 13/2 xxx zj 2 0 10 0 5/2 65 zákl.prom. x 1 x 2 x 3 x 4 β i x 2 0 1 2/11 5/22 5 x 1 1 0 1/11 3/22 9 zj 3 0 0 20/11 5/22 115 Nyní jsme našli optimální řešení, neboť v řádku účelové funkce již není žádný koeficient záporný. Koeficienty jsou nulové pouze pro základní proměnné, což znamená, že neexistuje alternativní řešení a nalezené řešení je jediným optimálním řešením. Hledané řešení tedy je x = (x 1, x 2, x 3, x 4 ) = (9, 5, 0, 0), hodnota účelové funkce (v simplexové tabulce vpravo dole) je rovna 115. Příklad 2 Zadání: max z = x 1 + x 2 10

za podmínek: 5x 1 + 5x 2 25 2x 1 + 4x 2 16 x 1 5 x 1, x 2 0 a) Nalezněte graficky řešení této úlohy. b) Vypočtěte simplexovou metodou řešení úlohy. Řešení: a) Účelová funkce je funkcí dvou proměnných, grafické řešení tedy nebude těžké najít, neboť množinu přípustných řešení lze zobrazit v rovině. Nejprve si tedy nakreslíme jednotlivá omezení. V obrázku můžeme vidět: Modrou barvou vyobrazenou polorovinu odpovídající první podmínce 5x 1 + 5x 2 25 Červenou barvou vyobrazenou polorovinu odpovídající druhé podmínce 2x 1 + 4x 2 16 Růžovou barvou vyobrazenou polorovinu odpovídající třetí podmínce x 1 5 11

x opt Béžovou barvou podmínku nezápornosti pro x 1 Zelenou barvou podmínku nezápornosti pro x 2 Žlutě je pak vyznačen průnik těchto polorovin, tedy množina přípustných řešení (povšimněme si, že třetí podmínka množinu nijak neomezuje, kdybychom tuto podmínku vypustili, získali bychom zcela stejné řešení při řešení simplexovou metodou by tedy nebylo nutné tuto podmínku uvažovat, my ji však při výpočtech budeme pro ukázku stejně brát v úvahu). Černé rovnoběžky ukazují jednotlivé hladiny pro účelovou funkci. Hodota účelové funkce roste směrem k severovýchodnímu (pravému hornímu) rohu (jak naznačuje černá šipka). Účelová funkce tedy nabývá na množině přípustných řešení (žlutý čtyřúhelník) svého maxima na celé černé úsečce začínající v bodě x opt a končící v bodě (5,0). Simplexovou metodou bychom měli získat oba tyto body. Optimálním řešením pak bude jakákoliv konvexní kombinace těchto dvou bodů (tedy výše zmiňovaná úsečka). lze snadno spočítat jako průsečík modré a červené přímky. Tyto přímky jsou grafickým vyjádřením první a druhé podmínky (se znamením rovnosti). Stačí tedy řešit soustavu dvou rovnic o dvou neznámých: 5x 1 + 5x 2 = 25 2x 1 + 4x 2 = 16 Tato soustava má jediné řešení x opt = (x 1, x 2 ) = (2, 3). Druhým optimálním základním řešením je průsečík modré, zelené a růžové přímky, tedy bod x N = (x 1, x 2 ) = (5, 0). Konvexní kombinaci těchto dvou bodů lze zapsat jako x = kx opt + (1 k)x N, k < 0, 1 >. Jinými slovy, pro každé optimální řešení platí: x 1 = k 2 + (1 k) 5 = 2k + 5 5k = 5 3k, x 2 = k 3 + (1 k) 0 = 3k 0 = 3k, 12

k < 0, 1 >. b) Pomocí přídatných proměnných převedeme soustavu na ekvivalentní soustavu rovnic: 5x 1 +5x 2 +x 3 = 25 2x 1 +4x 2 +x 4 = 16 x 1 +x 5 = 5 Dále převedeme účelovou funkci do anulovaného tvaru: z x 1 x 2 = 0 Nyní sestavíme výchozí simplexovou tabulku: zákl.prom. x 1 x 2 x 3 x 4 x 5 β i x 3 5 5 1 0 0 25 x 4 2 4 0 1 0 16 x 5 1 0 0 0 1 5 zj 1 1 1 0 0 0 0 Teď bychom měli zvolit klíčový sloupec protože funkci maximalizujeme, hledáme v řádku účelové funkce nejmenší záporný koeficient. V našem případě 1 a vstupující proměnnou tedy bude x 1 nebo x 2 (je zcela jedno, který sloupec si vybereme). Dále musíme určit proměnnou vystupující, a tak spočítáme pro každý řádek, kde α ik 0, hodnotu t = β i /α ik. Klíčovým řádkem, na kterém najdeme vystupující proměnnou, bude ten, který bude mít tuto hodnotu nejmenší (pokud by řádků s touto nejnižší hodnotou bylo více, vybereme kterýkoliv z nich). zákl.prom. x 1 x 2 x 3 x 4 x 5 β i t = β i /α ik x 3 5 5 1 0 0 25 5 x 4 2 4 0 1 0 16 8 x 5 1 0 0 0 1 5 5 zj 1 1 1 0 0 0 0 V dalším kroku nahradíme vystupující proměnnou proměnnou vstupující a řádek vydělíme řídícím prvkem. Ostatní řádky upravíme tak, abychom v sloupci s vstupující proměnnou získali jednotkový vektor. Tak získáme novou simplexovou tabulku. 13

zákl.prom. x 1 x 2 x 3 x 4 x 5 β i x 1 1 1 1/5 0 0 5 x 4 0 2 2/5 1 0 6 x 5 0 1 1/5 0 1 0 zj 2 0 0 1/5 0 0 5 Nyní jsme našli optimální řešení, neboť v řádku účelové funkce již není žádný koeficient záporný: x 1 = (x 1, x 2, x 3, x 4, x 5 ) = (5, 0, 0, 6, 0), hodnota účelové funkce (v simplexové tabulce vpravo dole) je rovna 5. Koeficienty však nejsou nulové pouze pro základní proměnné, nýbrž i pro jednu proměnnou nezákladní, což znamená, že existuje alternativní řešení. Podívejme se, co by se stalo, kdybychom v předchozím kroku zvolili jako vstupující proměnnou x 2. zákl.prom. x 1 x 2 x 3 x 4 x 5 β i t = β i /α ik x 3 5 5 1 0 0 25 5 x 4 2 4 0 1 0 16 4 x 5 1 0 0 0 1 5 xxx zj 1 1 1 0 0 0 0 zákl.prom. x 1 x 2 x 3 x 4 x 5 β i t = β i /α ik x 3 5/2 0 1 5/4 0 5 2 x 2 1/2 1 0 1/4 0 4 16 x 5 1 0 0 0 1 5 5 zj 2 1/2 0 0 1/4 0 4 zákl.prom. x 1 x 2 x 3 x 4 x 5 β i x 1 1 0 2/5 1/2 0 2 x 2 0 1 1/5 1/2 0 3 x 5 0 0 2/5 1/2 1 3 zj 3 0 0 1/5 0 0 5 Nalezené alternativní řešení x 2 = (x 1, x 2, x 3, x 4, x 5 ) = (2, 3, 0, 0, 3) má stejnou hodnotu účelové funkce (=5). Po nalezení prvního řešení jsme však k alternativnímu řešení mohli dojít i mnohem rychlejší metodou: Nezákladní proměnnou, která má nulový 14

koeficient v řádku účelové funkce, zvolíme jako proměnnou vstupující a zcela běžnou metodou najdeme proměnnou vystupující. Sestavíme novou simplexovou tabulku a okamžitě získáme alternativní řešení: zákl.prom. x 1 x 2 x 3 x 4 x 5 β i t = β i /α ik x 1 1 1 1/5 0 0 5 5 x 4 0 2 2/5 1 0 6 3 x 5 0 1 1/5 0 1 0 xxx zj 2 0 0 1/5 0 0 5 zákl.prom. x 1 x 2 x 3 x 4 x 5 β i x 1 1 0 2/5 1/2 0 2 x 2 0 1 1/5 1/2 0 3 x 5 0 0 2/5 1/2 1 3 zj 3 0 0 1/5 0 0 5 Výpočet této konečné simplexové tabulky je výrazně jednodušší, než postupný výpočet předvedený v předchozí fázi, ale vede k identickému řešení. Nyní jsme tedy nalezli dva optimální body (a žádný další mezi základními řešeními nenalezneme). Optimálním řešením je tedy každý bod, který je konvexní kombinací těchto dvou nalezených bodů (včetně krajních bodů): x = kx 1 + (1 k)x 2, k < 0, 1 >. 2.4 Dualita v úlohách lineárního programování Ve všech přechozích kapitolách jsme pracovali s maximalizační úlohou, kterou lze zapsat různými způsoby. My teď budeme používat maticový zápis, ale pokud by to někomu dělalo problémy, může si vztahy snadno přepsat do jakékoliv formy. Maximalizační úlohu lineárního programování lze tedy zapsat následovně: max z = c T x... maximalizace kriteriální funkce za podmínek: Ax b... omezující podmínky x 0... podmínky nezápornosti V teorii duality se tato úloha nazývá primární úlohou. 15

Ke každé primární úloze je možno velmi snadno sestavit úlohu duální. K výše uvedené primární úloze má duální úloha tvar: min f = b T y... minimalizace kriteriální funkce za podmínek: A T y c... omezující podmínky y 0... podmínky nezápornosti Ukažme si nyní na příkladu, co to znamená prakticky: Příklad duální úloha Předpokládejme, že máme zadanou primární úlohu jako maximalizační funkci za daných podmínek. Naším úkolem je k primární úloze sestavit duální úlohu. Primární úloha: max z = 5x 1 + 3x 2 + 2x 3 za podmínek: x 1 + 2x 2 x 3 8 2x 1 x 2 + 3x 3 6 x 1 + x 2 x 3 7 x 1, x 2, x 3 0 Duální úloha: min f = 8y 1 + 6y 2 + 7y 3 za podmínek: y 1 + 2y 2 + y 3 5 2y 1 y 2 + y 3 3 y 1 + 3y 2 y 3 2 y 1, y 2, y 3 0 16

Podívejme se nyní pořádně, jak jsme duální úlohu sestavili. K maximalizaci je duální minimalizační problém. Koeficienty v účelové funkci duální úlohy tvoří vektor pravých stran z úlohy primární. Naopak vektor pravých stran v úloze duální je tvořen vektorem cenových koeficientů z primární úlohy. Směr nerovností v omezujících podmínkách je opačný a matice strukturních koeficientů je transformovaná. Tzn. že sloupcové vektory primární úlohy nyní tvoří řádkové vektory duální úlohy a naopak. Nyní se již nabízí jediná otázka: K čemu to je? V praxi má dualita velké využití, neboť primární a duální úloha mají velmi úzký vztah. V simplexové tabulce primární úlohy najdeme řešení na pravé straně. Nalezneme tam ale také řešení duální úlohy a to konkrétně v řádku účelové funkce pod přídatnými proměnnými. Odtud je již patrné využití. Pokud máme minimalizační úlohu, je její duální úloha maximalizační a patrně se vyhneme nepřípustnému výchozímu řešení. Není tedy běžně potřeba využívat dvoufázovéo simplexu (Pozor: ne vždy se tímto způsobem dvoufázovému simplexu vyhneme). Maximalizační úlohy již umíme řešit, takže není problém úlohu vyřešit a ceny pod přídatnými proměnnými interpretovat jako optimální řešení primární úlohy. Další výhodou je, že počet podmínek v primární úloze se rovná počtu proměnných v úloze duální. Máme-li tedy v primární úloze jen dvě podmínky (bez ohledu na počet proměnných), duální úloha bude sestavena za pomoci jen dvou proměnných. Všichni dobře víme, že úlohy se 2 proměnnými se velmi snadno řeší graficky. Poznamenejme ještě, že primární a duální úloha se nazývají symetricky sdružené duální úlohy. Ze symetrie úloh je již snadno pochopitelné, že přídatné proměnné se nazývají proměnnými duálními. Hodnoty duálních proměnných udávají, o kolik se zvýší hodnota účelové funkce primární úlohy, pokud se disponibilní množství daného zdroje (podmínka) zvýší o jednotku. Tyto hodnoty se často nazývají stínovými cenami. Hodnoty primárních proměnných se nazývají redukovanými cenami a říkají, o kolik se zvýší hodnota účelové funkce, pokud přidáme jednotku primární proměnné. Poslední poznámka se týká skutečnosti, že v případě, že podmínky nemají správný směr, je před sestavením duální úlohy třeba příslušné nerovnice přená- 17

sobit ( 1), aby nerovnost měla správný směr. Pak je možné již snadno duální úlohu sestavit. 18