155
Jiří Demel Operační výzkum (pro předměty 128opv, 128opv1 a 128opv2) 16. prosince 2020

Opera£ní výzkum - cvut.czdemel/ped/ov/ov.pdf · 2020. 10. 14. · asto jde o soustavy diferenciálních rovnic, jejich °e²ení pak jsou funkce, které lze chápat jako p°edpov¥¤

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

  • Jiří Demel

    Operační výzkum

    (pro předměty 128opv, 128opv1 a 128opv2)16. prosince 2020

  • © Jiří Demel, 2006, 2008, 2009, 2011, 20 17,2020

  • 3

    Obsah

    1 Úvod do operačního výzkumu 51.1 Proč tak divný název . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Modely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3 Klasické části operačního výzkumu . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4 Optimalizační úlohy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

    2 Lineární programování 92.1 Formulace úlohy a aplikace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2 Řešení dvourozměrných úloh LP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.3 Geometrický pohled na lineární programování . . . . . . . . . . . . . . . . . . . . . 152.4 Kanonický tvar úlohy LP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.5 Bázická přípustná řešení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.6 Základní simplexová metoda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.7 Umělé proměnné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.8 Součinový tvar matice soustavy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.9 Změny ve vypočtené úloze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362.10 Dualita . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

    3 Dopravní úloha 473.1 Základní fakta a aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.2 Heuristiky pro dopravní úlohu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.3 Metoda modi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    4 Celočíselné lineární programování 594.1 Typy úloh a aplikace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.2 Metoda sečných nadrovin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.3 Metoda větví a mezí . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644.4 Backtracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.5 Heuristické algoritmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

    5 Dynamické programování 755.1 Bellmanův princip optimality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.2 Příklad: alokace investic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755.3 Optimální doplňování zásob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    6 Teorie zásob 816.1 Základní pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816.2 Náhodné dynamické modely . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.3 Jednorázová náhodná poptávka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826.4 Konstantní poptávka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836.5 Deterministická diskrétní poptávka . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

    16. prosince 2020, 11:06

  • 4 Obsah

    7 Strukturní model 85

    8 Teorie grafů 898.1 Definice grafu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 898.2 Způsoby zadávání grafů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 928.3 Sledy a odvozené pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 948.4 Souvislost a silná souvislost . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968.5 Stromy a kostry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 988.6 Prohledávání grafů . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008.7 Acyklické grafy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1068.8 Jádro grafu a hry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1078.9 Nejkratší cesty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1088.10 Časové plánování, metoda CPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

    9 Náhodná čísla a metoda Monte Carlo 1179.1 Náhodné veličiny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1179.2 Generování náhodných čísel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1219.3 Generátory rovnoměrného rozložení . . . . . . . . . . . . . . . . . . . . . . . . . . . 1239.4 Generování obecných rozložení . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249.5 Metoda Monte Carlo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    10 Náhodné procesy 12910.1 Náhodné procesy obecně . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12910.2 Poissonův proces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

    11 Markovské řetězce 13311.1 Základní pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13311.2 Jednoduché výpočty . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13511.3 Klasifikace stavů a typy řetězců . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13611.4 Analýza obecného markovského řetězce . . . . . . . . . . . . . . . . . . . . . . . . 13711.5 Absorbující řetězce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13811.6 Stacionární řetězce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13911.7 Periodické řetězce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    12 Teorie front 14312.1 Základní pojmy teorie front . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14312.2 Typy systémů hromadné obsluhy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

    13 Simulace 14913.1 Základní triky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14913.2 Simulace s pevným časovým krokem . . . . . . . . . . . . . . . . . . . . . . . . . . 15113.3 Simulace s proměnným časovým krokem . . . . . . . . . . . . . . . . . . . . . . . . 153

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 5

    Kapitola 1

    Úvod do operačního výzkumu

    1.1 Proč tak divný název

    Za 2. světové války běžel ve Velké Británii výzkumný projekt nazvaný “Research in MilitaryOperations”. Jeho cílem bylo zvýšit efektivitu vojenských operací, snížit ztráty v námořní dopravěnebo při bombardování nepřátelského území. Při řešení byly používány převážně matematickémetody. Řešené problémy byly převáděny na matematické úlohy, které daný problém modelovaly.Na základě výsledků řešení těchto matematických úloh pak byly formulovány závěry pro původníproblém.

    Po válce se zjistilo, že podobné metody lze použít i v civilní oblasti. Vzniklý obor se začalvyučovat na univerzitách pod názvem “Operations Research” popř. “Operational Analysis”. Odtudčeské “operační výzkum” nebo “operační analýza”.

    1.2 Modely

    1.2.1 K čemu jsou modely. Pro operační výzkum je charakteristické používání tzv. modelů.Pomocí modelu zobrazujeme podstatné vlastnosti modelovaného systému. Modelovat lze částreálného světa, ale i nějaký jiný model.

    Model, jako lidský výtvor, nikdy nemůže zobrazovat celý svět (neboť je sám jeho součástí) anemůže zobrazovat všechny jeho vlastnosti. Z (možná nekonečně mnoha) vlastností reality si tedypři tvorbě modelu musíme vybrat ty, které pokládáme pro řešení daného problému za důležité ase kterými dovedeme pracovat.

    Neexistuje univerzální návod pro tvorbu dobrého modelu.Model, který zachycuje příliš mnoho vlastností, je těžké sestavit a je zpravidla těžké s ním

    pracovat. Model, který zachycuje příliš málo vlastností je zpravidla méně přesný, ale může býtsnáze zvládnutelný.

    Model lze rozličnými metodami zkoumat, s modelem pak lze například experimentovat, lzena něm vyhodnocovat různé veličiny, lze optimalizovat jeho parametry. Podstatné je, že zkoumánímodelu lze dělat mimo modelovaný kus světa, neboť práce s modelem je zpravidla levnější a rychlejšía lze dělat i takové experimenty, které by v reálném světě mohly mít katastrofické následky.

    Důležitou stránkou modelování je přenést výsledky práce s modelem zpět do reálného světa.Přitom jde jednak o překlad závěrů z řeči modelu do řeči původní problémové oblasti, jednako prosazení a uskutečnění těchto závěrů.

    Existuje mnoho druhů modelů. Liší se podle toho, které vlastnosti modelované části světazobrazují a podle toho, jak jsou realizovány.

    16. prosince 2020, 11:06

  • 6 Kapitola 1. Úvod do operačního výzkumu

    1.2.2 Fyzikální modely jsou zpravidla zmenšené kopie modelovaného objektu. Příklademjsou papírové modely budov, které používají architekti nebo model (části) letadla ofukovanýv aerodynamickém tunelu.

    1.2.3 Matematické modely zobrazují modelovanou část světa pomocí matematických vztahů.Úlohy o modelovaném objektu se tak převádějí na matematické úlohy, které pak lze řešit matema-tickými metodami.

    Matematické modely jsou obecně nesmírně rozmanité. Význačnými typy matematických modelůjsou modely vyhodnocovací a modely optimalizační.

    1.2.4 Vyhodnocovací modely slouží k výpočtu neznámých veličin z veličin známých. Tytomodely často mají podobu vzorců nebo rovnic. Často jde o soustavy diferenciálních rovnic, jejichřešení pak jsou funkce, které lze chápat jako předpověď budoucího chování modelovaného systému.

    K řešení některých vyhodnocovacích úloh lze použít simulaci (viz 1.2.6).

    1.2.5 Optimalizační modely slouží k hledání nejlepšího (tzv. optimálního) řešení. Modelo-vaný systém je zobrazen pomocí matematické optimalizační úlohy (viz. 1.4).

    Poznamenejme, že k hledání co nejlepšího řešení lze využít i vyhodnocovací model, a to tak, žeexperimentujeme se změnami parametrů a pamatujeme si nejlepší dosud nalezené řešení. Jistotu,že nalezené řešení je skutečným optimem takto získáte jen naprosto výjimečně.

    1.2.6 Simulační modely jsou zvláštním druhem vyhodnocovacích modelů, a to takové, kdečas modelovaného systému je zobrazen jako čas v modelu. Tedy časové uspořádání událostí (copředchází a co následuje) je v modelu stejné jako ve skutečnosti. V simulačním modelu tedy mohouprobíhat děje, které jsou obdobou dějů skutečných. Simulovat znamená napodobovat.

    Se simulačními modely lze experimentovat, přičemž cílem experimentů bývá nejen hledánínejvhodnějších parametrů modelu (optimalizace), ale např. výcvik obsluhujícího personálu. Např.letecké nebo automobilové trenažery jsou vlastně simulačními modely.

    Podle realizace se simulační modely dělí na fyzikální a počítačové.Simulační modely se dále dělí na deterministické (nepřipouštějící náhodu) a stochastické

    (připouštějící náhodu a s náhodou počítající).K simulaci náhodných dějů se používá tzv. metoda Monte-Carlo, tj. simulační experiment se

    buď mnohokrát náhodně opakuje, nebo se nechá (náhodně) probíhat dostatečně dlouho, a výsledkyse vyhodnotí statistickými metodami.

    Pozor, nezaměňujte pojmy “simulace” a “metoda Monte-Carlo”. Metoda Monte-Carlo jakotaková spočívá v provádění náhodných experimentů (které vůbec nemusí být simulační) a v jejichstatistickém vyhodnocení. Zdaleka ne každá simulace se dělá metodou Monte-Carlo (např. simulacedeterministických dějů) a naopak metodu Monte-Carlo lze použít i pro jiné účely než pro simulaci.

    1.3 Klasické části operačního výzkumu

    Některé části operačního výzkumu jsou charakterizovány použitými matematickými metodami,jiné části nesou svůj název podle aplikační oblasti.

    Lineární programování je předmětem kapitoly 2, str. 9. Jde o velmi široce použitelnou mate-maatickou optimalizační metodu.

    Teorie front se zabývá nesouladem mezi časově nesourodými požadavky na poskytnutí nějakéslužby a omezenými možnostmi tu službu poskytovat, viz kapitola 12, str. 143.

    Teorie zásob řeší problém kdy a jak doplňovat zásoby tak, aby náklady s tím spojené bylyminimální, viz kapitola 6, str. 81.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 1.4. Optimalizační úlohy 7

    Teorie rozvrhování se zabývá přidělováním práce tak, aby všechny práce byly (pokud možno)dokončeny včas nebo aby se minimalizovalo zpoždění (penále).

    Atd. . .

    Některé pojmy a triky se uplatňují ve více aplikačních oblastech. Platí to zejména o lineárnímprogramování (kapitola 2, str. 9) a teorii grafů (kapitola 8, str. 89).

    1.4 Optimalizační úlohy

    Úkolem je najít nejlepší přípustné řešení. Je třeba vysvětlit, co to je řešení, které řešení je přípustnéa co je míněno slovem nejlepší.

    1.4.1 Množina přípustných řešení. V optimalizačních úlohách hledáme rešení, které jenejlepší mezi všemi tzv. přípustnými řešeními. Množina všech přípustných řešení však obvyklenení dána seznamem svých prvků. Obvykle máme dánu množinu, které říkáme prostor řešení, aseznam podmínek, kterým říkáme omezující podmínky. Množina přípustných řešení pak je tvořenavšemi řešeními (tj. všemi prvky prostoru řešení), která splňují omezující podmínky.

    Je-li omezujících podmínek několik, musí je přípustné řešení splňovat všechny najednou.Tutéž množinu přípustných řešení lze často definovat několika způsoby.Hledáme-li například vlakové spojení v jízdním řádu, můžeme za prostor řešení pokládat

    všechna spojení z výchozí do cílové stanice. Omezující podmínky pak mohou určovat, jak velká mábýt časová rezerva při přestupování. Můžeme však také za prostor řešení prohlásit všechna vlakováspojení odkudkoli kamkoli a formou omezujících podmínek požadovat, aby jízda začínala a končilave správné stanici.

    Způsob, jakým je definována množina přípustných řešení, má velice podstatný vliv na způsobřešení úlohy, protože při řešení, chtěj nechtěj, musíme vycházet z tvaru a způsobu, jak je úlohazadána.

    1.4.2 Účelová funkce. Které řešení je lepší a které horší určuje v optimalizačních úlohách tzv.účelová funkce, což je zobrazení, které každému přípustnému řešení přiřazuje číslo, kterému říkámehodnota účelové funkce.

    Optimální řešení je pak takové přípustné řešení, které má mezi všemi přípustnými řešeníminejmenší nebo naopak největší hodnotu účelové funkce. Zde záleží na charakteru úlohy – např.náklady obvykle minimalizujeme, zatímco zisk zpravidla chceme co nejvetší, ale nemusí to tak býtvždy.

    Může se stát, že úloha má několik optimálních řešení. Všechna optimální řešení téže úlohyovšem musí mít stejnou hodnotu účelové funkce.

    1.4.3 Typ úlohy, instance úlohy a zadání úlohy. Slovem “úloha” bývají často označoványdvě dosti odlišné věci:

    Typ úlohy určuje způsob, jak je zadána účelová funkce, zda jde o minimalizaci nebo o maxima-lizaci, a způsob, jak je zadána množina přípustných rešení. V tomto smyslu tedy mluvíme např.o úloze lineárního programování, čímž máme na mysli obecný typ (druh) úlohy.

    Úlohy určitého typu mohou mít spousty různých instancí (konkrétních případů), které se lišínapř. v konkrétních hodnotách číselných parametrů.

    Instance úlohy je konkrétní případ úlohy, který je zadán tak konkrétně, že má smysl ji řešit(počítat) nebo se o to alespoň pokoušet. Zadání úlohy jsou vlastně data (mnohdy číselná), kterýmise odlišují jednotlivé instance úlohy.

    Například pro úlohu (tj. typ úlohy) najít v grafu nejkratší cestu mezi dvěma vrcholy musí zadáníúlohy obsahovat popis konkrétního grafu, ohodnocení hran jejich délkami a počáteční a koncový

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 8 Kapitola 1. Úvod do operačního výzkumu

    vrchol hledané cesty. Teprve máme-li k danému typu úlohy tyto konkrétní údaje, má smysl začítpočítat.

    Naopak obecný algoritmus pro řešení úloh daného typu (tj. pro řešení všech instancí) lzevymýšlet na základě znalosti typu úlohy, tj. i bez konkrétního zadání (bez dat).

    1.4.4 Vícekriteriální optimalizace se zabývá úlohami, v nichž máme několik účelovýchfunkcí. Například hledáme cestu a chceme, aby byla co nejlevnější a současně co nejrychlejší. Na-jít řešení, které by optimalizovalo všechny účelové funkce současně, obvykle není možné. Ostatněprávě proto těch účelových funkcí je několik a ne jedna univerzální.

    Metodami vícekriteriální optimalizace se (v tomto skriptu) nebudeme zabývat, to by bylo nasamostatnou přednášku, ale nastíníme alespoň některé základní možnosti:

    • Nahradit všechny účelové funkce jejich váženým průměrem. Tím se z několika účelovýchfunkcí stane funkce jediná. Samozřejmě je problém korektně stanovit váhy jednotlivýchúčelových funkcí. (Pozor, účelovou manipulací s vahami lze někdy dělat divy a korupce pakkvete.)

    • Hledat přípustné řešení, které je nejblíže nějakému ideálnímu (ale nepřípustnému) řešení.Zde je problém jednak v definici ideálního řešení, jednak ve způsobu měření vzdálenosti odtohoto řešení.

    • Hledat takové přípustné řešení, které při srovnání s kterýmkoli jiným přípustným řešením jev alespoň jedné účelové funkci lepší nebo alespoň stejně dobré. To ovšem zdaleka nemusí býtjednoznačné.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 9

    Kapitola 2

    Lineární programování

    Lineární programování (dále budeme často užívat zkratku LP) je význačnou a klasickou součástíoperačního výzkumu. Z matematického hlediska jde o typ optimalizační úlohy, o metody jejíhořešení a o teorii, na které jsou tyto metody založeny.

    Slovo „programování“ v názvy je z dnešního pohledu poněkud matoucí, protože dnes se progra-mují zejména počítače, ale v době vzniku operačního výzkumu slovo „programming“ vyjadřovalostanovení pořadí, času a způsobu plánovaných událostí, obvykle s cílem udělat to „co nejlépe“ .V kontextu operačního výzkumu slovo „programování“ chápejte jako „optimalizaci“ .

    2.1 Formulace úlohy a aplikace.2.1.1 Obecný tvar úlohy LP. Prostorem řešení úlohy lineárního programování (LP) je n-rozměrný vektorový prostor Rn. Řešeními úlohy tedy jsou n-rozměrné vektory, tj. uspořádanén-tice reálných čísel (x1, . . . , xn).

    Účelová funkce úlohy LP je lineární funkcí n proměnných, má tedy tvar

    L(x) = c1x1 + c2x2 + . . .+ cnxn ,

    kde c1, . . . , cn jsou konstanty, kterým říkáme cenové koeficienty nebo také koeficienty účelovéfunkce. Účelová funkce se buď maximalizuje nebo minimalizuje, což zapisujeme jako

    L(x)→ max nebo maxL(x) ,L(x)→ min nebo minL(x) .

    Omezující podmínky jsou v úloze lineárního programování dvou typů:

    Podmínky pro jednotlivé proměnné omezují pro každou jednotlivou proměnnou xjmnožinu hodnot, kterých tato proměnná smí nabývat. V praxi nejběžnější jsou pod-mínky nezápornosti, tj. podmínky tvaru xj = 0. Dalšími možnými případy jsou pod-mínka nekladnosti, tedy xj 5 0 a také “vůbec žádná podmínka”, tj. “neomezeno”.

    Strukturní podmínky mají tvar lineárních nerovností nebo rovnic, mají tedy tvar

    a1,1x1 + a1,2x2 + . . . a1,nxn Q b1

    a2,1x1 + a2,2x2 + . . . a2,nxn Q b2. . . . . .

    am,1x1 + am,2x2 + . . . am,nxn Q bm

    kde na místě označeném Q se může vyskytnout symbol 5, = nebo =.

    16. prosince 2020, 11:06

  • 10 Kapitola 2. Lineární programování

    2.1.2 Příklad – výroba při omezených zdrojích. Jde o nejznámější aplikaci úlohy LP.Úkolem je maximalizovat zisk z výroby n možných výrobků, přičemž výrobní zdroje (materiály,energie, práce) jsou omezeny.

    Výrobky, jejichž výrobu uvažujeme, označme (pevně) přirozenými čísly 1, . . . , n. Předpoklá-dáme, že jsou známy ceny c1, . . . , cn, za které lze tyto výrobky prodat na trhu a že tyto cenynezávisí na množství prodaných výrobků.

    Při výrobě spotřebováváme m zdrojů. Typickým zdrojem je materiál, ale může to být i energie,lidská práce (měřená ve člověkohodinách) apod. Předpokládáme, že spotřeba zdrojů je přímoúměrná velikosti výroby, přičemž koeficienty této úměrnosti jsou známy. Označme aij spotřebui-tého zdroje na výrobu jednotkového množství j-tého výrobku. Dále předpokládáme, že jsou známadisponibilní množství bi jednotlivých zdrojů, která lze pro výrobu použít.

    Tuto úlohu lze matematicky modelovat úlohou LP. Označme

    xj kolik se má vyrobit j-tého výrobku,cj cena, za kterou lze prodat jednotkové množství j-tého výrobku,bi disponibilní množství i-tého výrobního zdroje (kolik ho máme k dispozici),aij spotřeba i-tého zdroje na výrobu jednotkového množství j-tého výrobku.

    Úloha LP pak má tvar

    c1x1 + c2x2 + . . .+ cnxn → max

    a1,1x1 + a1,2x2 + . . . a1,nxn 5 b1a2,1x1 + a2,2x2 + . . . a2,nxn 5 b2

    . . . . . .

    am,1x1 + am,2x2 + . . . am,nxn 5 bm

    x1, . . . , xn = 0

    Uvědomte si, že jde o zjednodušený model reálné situace. Formulujte, v čem tato zjednodušeníspočívají.

    2.1.3 Maticový zápis úlohy LP. Označíme-li c = (c1, . . . , cn)T, lze účelovou funkci vyjádřitjako skalární součin L(x) = cTx.

    Koeficienty strukturních podmínek lze pokládat za prvky matice

    A =

    a1,1 a1,2 . . . a1,na2,1 a2,2 . . . a2,n...

    . . ....

    am,1 am,2 . . . am,n

    a koeficienty pravých stran strukturních podmínek můžeme pokládat za sloupcový vektor b == (b1, . . . , bm)

    T. Jsou-li všechny strukturní omezující podmínky stejného typu, tj. všechny typu “5”,všechny typu “=” nebo všechny typu “=”, lze strukturní podmínky elegantně vyjádřit maticovýmzápisem

    Ax 5 b nebo Ax = b nebo Ax = b .

    Podobně, jsou-li podmínky pro jednotlivé proměnné všechny stejného typu, tj. všechny typuxj = 0 nebo všechny typu xj 5 0, lze je vyjádřit vektorově jako

    x = 0 nebo x 5 0 .

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.1. Formulace úlohy a aplikace. 11

    Jako příklad maticového zápisu úlohy uvedeme zápis úlohy plánování výroby při omezenýchzdrojích 2.1.2.

    cTx → maxAx 5 b

    x = 0 .

    2.1.4 Doporučený postup tvorby modelu LP.

    1. Rozhodněte, co budou vyjadřovat proměnné úlohy LP a v jakých to bude jednotkách.

    2. Formulujte slovy, čeho chcete optimalizací dosáhnout a vyjádřete to pomocí účelové funkce.

    3. Formulujte slovně všechny omezující podmínky a přeložte toto slovní vyjádření do řečinerovností a rovnic. Určete jednotky, v nichž jsou vyjádřeny.

    4. Specifikujte významy konstant obsažených v zadání úlohy LP (koeficienty účelové funkce,koeficienty strukturních podmínek, koeficienty pravých stran). Určete jednotky, v nichž jsouvyjádřeny.

    5. Zkontrolujte, zda obě strany každé strukturní omezující podmínky jsou vyjádřeny ve stejnýchjednotkách. Samo o sobě to správnost modelu nezaručuje, ale často tak lze odhalit některéchyby.

    6. Nad výsledkem se zamyslete, zda opravdu modeluje to, co modelovat má.

    2.1.5 Úloha o směsi je další klasickou aplikací lineárního programování. Úkolem je z danýchsurovin připravit co nejlevnější směs s předepsaným složením, přičemž každá surovina je samasměsí. Předpokládáme, že o každé surovině známe její cenu i její přesné složení.

    Jako proměnné v modelu LP zvolíme množství jednotlivých surovin použitých ve výslednésměsi. Označme

    xj množství j-té suroviny vložené do směsi,cj cena za jednotkové množství j-té suroviny,bi množství látky i ve výsledné směsi,aij množství látky i v jednotkovém množství j-té suroviny.

    Úloha LP pak má tvar

    cTx → minAx = b

    x = 0 .

    2.1.6 Problém výživy je de facto speciálním případem úlohy o směsi. Hledáme, kolik mámesníst kterého jídla, abychom snědli předepsaná množství jednotlivých živin a přitom abychom sestravovali co nejlevněji.

    Viz též žertovná aplikace v 2.10.3, str. 42

    2.1.7 Dopravní úloha. Máme m dodavatelů, kteří dodávají stejný druh zboží a n spotřebitelů,kteří toto zboží spotřebovávají. Známe ceny za dopravu mezi všemi dodavateli a všemo spotřebiteli.Úkolem je zorganizovat dopravu co nejlevněji. Označme

    ai = kapacita i-tého dodavatele (kolik zboží je schopen dodat),bj = požadavek j-tého spotřebitele (kolik zboží chce spotřebovat),cij = cena za dopravu jednotkového množství zboží od i-tého dodavatele

    k j-tému spotřebiteli,xij = množství zboží dopravované od i-tého dodavatele k j-tému spotřebiteli.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 12 Kapitola 2. Lineární programování

    Pak má úloha LP tvarm∑i=1

    n∑j=1

    cijxij → min

    n∑j=1

    xij = ai

    m∑i=1

    xij = bj

    xij = 0 pro všechna i, j

    Všimněte si, že zde máme mn proměnných, které jsme pro pohodlí indexovali dvěma indexy, lzese tedy na ně dívat jako na matici. Přesto lze proměnné seřadit do posloupnosti (např. po řádcích)a celou úlohu přepsat ve tvaru úlohy lineárního programování.

    Dopravní úlohou se budeme zabývat v kapitole 3, str. 47.

    2.2 Řešení dvourozměrných úloh LP

    Úlohy, které mají jen dvě proměnné, lze snadno řešit graficky, tedy nakreslením obrázku. Nadvourozměrných příkladech ukážeme, co se může stát.

    2.2.1 Grafické řešeni úloh LP.

    • Nakreslete množinu přípustných řešení (jde o průnik přímek a polorovin).

    • Je-li průnik prázdný, stop, úloha nemá přípustné řešení.

    • Nakreslete směr optimalizace.

    • Zvolte zkusmo nějakou hodnotu účelové funkce H a nakreslete množinu bodů, které majíhodnotu účelové funkce rovnou H. Je to přímka kolmá na směr optimalizace a je určenarovnicí L(x) = H.

    • Najděte rovnoběžku s touto přímkou a to takovou, která má neprázdný průnik s množinoupřípustných řešení a je nejzazší ve směru optimalizace. Tento průnik je množinou optimálníchřešení.

    2.2.2 Příklad – jedno optimální řešení. Řešme úlohu

    2x1 + 3x2 → maxx1 − 2x2 5 2−2x1 + x2 5 2x1 + x2 5 5

    x1 = 0

    x2 = 0

    Viz obrázek 2.1. Pro začátek jsme zvolili hodnotu účelové funkce H = 6, příslušná přímka jenakreslena čárkovaně. Posunujeme ji rovnoběžně ve směru optimalizace (tj. zvětšujeme H), dokudtato přímka má neprázdný průnik s množinou přípustných řešení.

    Bod (1, 4), který je optimálním řešením, leží v průsečíku přímek určených prvou a třetí omezujícípodmínkou.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.2. Řešení dvourozměrných úloh LP 13

    x1

    x2

    2x1 + 3x2 → max

    −2x1 + x2 ≤ 2

    x1 − 2x2 ≤ 2

    x1 + x2 ≤ 5

    Obrázek 2.1: Jedno optimální řešení.

    Omezujícím podmínkám, které takto určují optimální řešení, říkáme aktivní omezující pod-mínky. Jejich “aktivita” spočívá v tom, že jakákoli drobná změna aktivních podmínek má za ná-sledek změnu optimálního řešení. Všimněte si, že u ostatních podmínek by jejich drobná změnaneměla vliv na souřadnice optimálního řešení. Dokonce i odstraněním neaktivní podmínky by seoptimální řešení nezměnilo.

    Která omezující podmínka je aktivní, to samozřejmě záleží na směru optimalizace, tedy nakoeficientech účelové funkce. Změnou těchto koeficientů lze směr optimalizace libovolně měnit(otáčet). Každý směr může být směrem optimalizace.

    Všimněte si, že každý krajní bod množiny přípustných řešení může být optimálním řešením přivhodně zvolené účelové funkci.

    2.2.3 Příklad – více optimálních řešení. Řešme úlohu z příkladu 2.2.2, ale s pozměněnouúčelovou funkcí (a tedy s jiným směrem optimalizace):

    2x1 + 2x2 → max ,

    Na obrázku 2.9 je množina optimálních řešení nakreslena tlustě.

    x1

    x2

    2x1 + 2x2 → max

    −2x1 + x2 ≤ 2

    x1 − 2x2 ≤ 2

    x1 + x2 ≤ 5

    Obrázek 2.2: Více optimálních řešení (příklad 2.2.3).

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 14 Kapitola 2. Lineární programování

    2.2.4 Příklad – více optimálních řešení II. Podobný příklad, ale s účelovou funkcí

    −2x1 + x2 → max .

    je na obrázku 2.3. Množinu optimálních řešení tvoří jiná úsečka.

    x1

    x2

    −2x1 + x2 → max

    −2x1 + x2 ≤ 2

    x1 − 2x2 ≤ 2

    x1 + x2 ≤ 5

    Obrázek 2.3: Více optimálních řešení (příklad 2.2.4).

    2.2.5 Příklad – neomezená účelová funkce. V úloze 2.2.2 vynechejme třetí omezujícípodmínku. Z obrázku 2.4 je zřejmé, že úloha sice má mnoho přípustných řešení, ale žádné z nichnení optimální. Ke každému přípustnému řešení totiž existuje přípustné řešení s lepší hodnotouúčelová funkce.

    x1

    x2 −2x1 + x2 ≤ 2

    x1 − 2x2 ≤ 2

    2x1 + 3x2 → max

    Obrázek 2.4: Neomezená účelová funkce, úloha nemá optimální řešení.

    Ve dvourozměrném prostoru to snadno vidíme z obrázku. Ve vícerozměrných prostorech takovýpřípad může nastat také, ale k jeho rozpoznání budeme potřebovat výpočetní aparát.

    Všimněte si, že nutným předpokladem, aby účelová funkce mohla být neomezená, je to, že imnožina přípustných řešení je neomezená, tj. nevejde se do jakkoli veliké (ale konečné) krychle.Ovšem pozor — naopak to neplatí — i když je množina přípustných řešení neomezená, úlohapřesto může mít optimální řešení. Například v naší úloze zaměňte maximalizaci za minimalizaci.Optimálním řešením pak bude bod (0, 0) navzdory tomu, že množina přípustných řešení jeneomezená.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.3. Geometrický pohled na lineární programování 15

    2.2.6 Příklad – neomezená množina optimálních řešení. V předchozím příkladě změnímeúčelovou funkci na

    −2x1 + x2 → max .

    Množina přípustných řešení je stále neomezená, ale polopřímka, která je na obrázku 2.10 nakreslenatlustě, je tvořena samými optimálními řešeními.

    x1

    x2−2x1 + x2 ≤ 2

    x1 − 2x2 ≤ 2

    −2x1 + x2 → max

    Obrázek 2.5: Neomezená množina optimálních řešení (příklad 2.2.6).

    Poznámka: Kdybychom při stejné množině přípustných řešení měli účelovou funkci x1 ++ x2 → min, úloha by měla jediné optimální řešení a to v počátku souřadnic.

    2.2.7 Příklad – žádné přípustné řešení. Množina přípustných řešení může být prázdná.Jinými slovy, může se stát, že žádný bod prostoru řešení nesplňuje všechny omezující podmínky,nebo, jinak řečeno, každý bod prostoru porušuje alespoň jednu omezující podmínku.

    Příklad této situace získáme, když v úloze 2.2.2 obrátíme nerovnosti ve strukturních podmín-kách. Viz obrázek 2.6.

    2x1 + 3x2 → max−2x1 + x2 = 2x1 − 2x2 = 2x1 + x2 5 5

    x1, x2 = 0

    Opět platí, že ve dvourozměrném prostoru to snadno vidíme z obrázku. Ve vícerozměrnýchprostorech to již zřejmé není a opět: k rozpoznání tohoto případu budeme potřebovat výpočetníaparát a hlubší porozumění.

    2.3 Geometrický pohled na lineární programování

    2.3.1 Bod. Uspořádanou n-tici (x1, . . . , xn) reálných čísel můžeme pokládat za bod n-rozměr-ného lineárního postoru Rn. Zároveň můžeme tyto n-tice pokládat za n-členné vektory, tj. n-ticelze (po složkách) sčítat a lze je násobit číslem, přičemž výsledkem je zase nějaká n-tice čísel, tedyvektor (a bod).

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 16 Kapitola 2. Lineární programování

    x1

    x2 −2x1 + x2 ≥ 2

    x1 − 2x2 ≥ 2

    x1 + x2 ≤ 5

    Obrázek 2.6: Žádné přípustné řešení.

    2.3.2 Lineární kombinace. Mějme k bodů a1, . . . , ak v n-rozměrném prostoru a k reálnýchčísel t1, . . . , tk. Pak bod

    t1a1 + t2a2 + . . .+ tkak

    nazýváme lineární kombinací bodů a1, . . . , ak. Čísla t1, . . . , tk nazýváme koeficienty lineární kom-binace.

    2.3.3 Afinní a konvexní kombinace jsou speciání případy lineárních kombinací. Lineárníkombinaci t1a1 + t2a2 + . . .+ tkak bodů a1, . . . , ak nazýváme:

    afinní kombinací, jestliže∑ki=1 ti = 1,

    konvexní kombinací, jestliže∑ki=1 ti = 1 a zároveň všechna ti jsou nezáporná.

    Máme-li dva různé body a, b, pak množina všech jejich konvexních kombinací je úsečkas krajními body a, b a jejich afinní kombinací je přímka těmito body procházející.

    Máme-li tři různé body a, b, c ∈ R3, které neleží na přímce, pak množina jejich konvexníchkombinací je trojúhelník s vrcholy a, b, c a jejich afinní kombinace je rovina, která těmito bodyprochází.

    Na konvexní kombinaci se můžeme také dívat jako na souřadnice těžiště soustavy k hmotnýchbodů a1, . . . , ak o hmotnostech t1, . . . , tk.

    2.3.4 Konvexní množina je taková množina bodů, která s každými dvěma svými body obsa-huje i celou úsečku, která tyto dva body spojuje.

    Příklady konvexních množin jsou úsečka, trojúhelník (včetně svého vnitřku) nebo krychle (opětvčetně vnitřku). Také jednoprvková množina tvořená jediným bodem je konvexní množinou.

    Příkladem množiny, která není konvexní, je množina bodů, které tvoří hranici čtverce. Jinýmpříkladem je množina tvořená úsečkou a bodem, který na té úsečce neleží.

    2.3.5 Nadrovina, poloprostor. Množina bodů x = (x1, . . . , xn), které vyhovují rovnici

    a1x1, . . . , anxn = b

    (kde ai a b jsou dané konstanty), se nazývá nadrovina.Množina bodů x = (x1, . . . , xn), které vyhovují nerovnici

    a1x1, . . . , anxn 5 b popř. a1x1, . . . , anxn = b

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.3. Geometrický pohled na lineární programování 17

    (kde ai a b jsou dané konstanty), se nazývá poloprostor.Každý poloprostor i nadrovina jsou konvexními množinami. Samozřejmě i celý prostor Rn je

    konvexní množinou.

    2.3.6 Průnik konvexních množin je konvexní množina.

    Důkaz: Soustavu konvexních množin, z nich děláme průnik, označme S. Vezměme libovolné dvabody z průniku. Úsečka mezi těmito body leží celá v každé množině z S (neboť každá tato množinaje konvexní) a tudíž ta úsečka leží i v průniku množin z S.

    Důsledek: Množina všech přípustných řešení úlohy LP je konvexní množinou (neboť je průnikempoloprostorů a nadrovin, což jsou konvexní množiny). Podobně i množina všech optimálníchřešení úlohy LP je konvexní množinou (neboť je průnikem konvexní množiny přípustných řešení anadroviny, která je určena rovnicí L(x) = konstanta).

    2.3.7 Uzavřená množina. Množina bodů M se nazývá uzavřená, když pro každou konver-gentní posloupnost bodů z M limita této posloupnosti je také bodem množiny M .

    Prakticky to znamená, že množina M obsahuje svou hranici. Příkladem (v jednorozměrnémprostoru) je uzavřený interval reálnách čísel 〈a, b〉.

    Množina přípustných řešení úlohy LP je vždy uzavřená. Všechny omezující podmínky v LPjsou zásadně neostré nerovnosti (tedy nerovnosti typu „nebo rovno“), nebo jsou to rovnice (a tedyvlastně dvě opačné neostré nerovnosti) právě proto, aby množina přípustných řešení byla uzavřená.Je to důležitá podmínka pro existenci optimálního řešení.

    2.3.8 Omezená množina. Množina bodů se nazývá omezenou, je-li podmnožinou nějaké (ko-nečně velké) krychle.

    Ekvivalentně, množinaM je omezená, existuje-li konstantaK > 0 taková, že všechny souřadnicevšech bodů množiny M jsou menší než K.

    2.3.9 O exitenci optima. Z matematické analýzy je známo, že každá spojitá funkce naomezené a uzavřené množině má minimum a maximum. Tedy, je-li množina přípustných řešeníúlohy LP omezená, pak je zaručeno, že tato úloha má optimální řešení.

    2.3.10 Konvexní obal množiny bodůM je množina všech bodů, které lze získat jako konvexníkombinace bodů množiny M .

    Tedy např. konvexním obalem tří různých bodů a, b, c, které neleží na přímce, je trojúhelníks vrcholy a, b, c. Pokud tyto tři body leží na přímce, je jejich konvexním obalem úsečka.

    2.3.11 Krajní bod konvexní množiny M je takový bod x ∈M , který není vnitřním bodemžádné úsečky, která leží celá v M .

    Krajními body čtverce (chápaného včetně jeho obvodu) jsou jeho vrcholy, ale jiné body na jehoobvodu krajními body nejsou. Krajními body kruhu je však celý jeho obvod.

    2.3.12 Konvexní obal množiny krajních bodů. Každá omezená a uzavřená konvexní mno-žina je konvexním obalem svých krajních bodů.

    Je-li tedy množina přípustných řešení úlohy LP omezená, lze ji elegantně (a velmi srozumitelně)popsat seznamem všech jejích krajních bodů. To je z praktického hlediska daleko užitečnější nežpopis pomocí rovnic a nerovností.

    2.3.13 Tvrzení. Má-li úloha LP optimální řešení, pak má (také) optimální řešení v některémkrajním bodě množiny P všech přípustných řešení. Jinak řečeno, úloha lineárního programovánímůže mít i jiná optimální řešení, ale některé z optimálních řešení je vždy v krajním bodě.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 18 Kapitola 2. Lineární programování

    Platí dokonce více: Je-li množina přípustných řešení úlohy LP omezená a je-li S množinavšech krajních bodů, které jsou optimálními řešeními této úlohy, pak množina všech optimálníchřešení této úlohy je konvexním obalem množiny S.

    To má velmi praktický důsledek: Při hledání optimálních řešení LP se stačí zajímat jen o krajníbody množiny přípustných řešení a těch, jak uvidíme dále, je konečně mnoho.

    2.4 Kanonický tvar úlohy LP

    2.4.1 Kanonický tvar úlohy LP má význam pro výpočet. Běžná metoda výpočtu, tzv.simplexová metoda, totiž funguje jen pro úlohy v kanonickém tvaru. Obecná úloha se řeší tak,že se nejprve převede na (v jistém smyslu ekvivalentní) úlohu v kanonickém tvaru a z jejího řešeníse pak odvodí řešení původní obecné úlohy. Podrobnosti vysvětlíme dále v 2.4.7.

    Úloha lineárního programování je v kanonickém tvaru, jestliže

    • účelová funkce se maximalizuje,• na všechny proměnné se klade podmínka nezápornosti a• všechny strukturní podmínky jsou typu rovnice, tj. „=“ a• včechny koeficienty bi pravých stran jsou nezáporné (bi = 0).

    Tytéž podmínky zapsány maticově jsou:

    cTx → maxAx = b

    x = 0

    Všimněte si, že podmínka bi = 0 není součástí zadání úlohy lineárního programování. Je topodmínka, které musí vyhovovat zadání (koeficienty pravých stran), aby se instance úlohy mohlanazývat úlohou v kanonickém tvaru.

    2.4.2 K čemu je kanonický tvar. Převod na kanonický tvar má dvojí smysl:

    • Se soustavami rovnic se dobře počítá, zejména lze provádět ekvivalentní řádkové úpravy, anižby to mělo vliv na množinu přípustných řešení. S nerovnostmi se to tak jednoduše dělat nedá.

    • Úlohu v kanonickém tvaru lze mnohem jednodušeji sdělit. K zadání úlohy v kanonickém tvarustačí zadat cenový vektor c, matici A a vektor pravých stran b a nic víc. Vše ostatní plynez obecných vlastností úloh v kanonickém tvaru.

    Jakoukoli obecnou úlohu lineárního programování lze převést na úlohu v kanonickém tvaru.

    2.4.3 Převod minimalizace na maximalizaci je snadný: stačí obrátit znaménka u všechkoeficientů účelové funkce.

    2.4.4 Převod podmínek pro jednotlivé proměnné se dělá pomocí substituce.Jestliže v původní úloze je podmínka xj 5 0, pak provedeme substituci xj = −x′j . Podmínka

    xj 5 0 tím přejde na podmínku nezápornosti x′j = 0. Po provedení výpočtu ovšem je nutnovýslednou hodnotu původní proměnné xj získat z hodnoty x′j zpětnou substitucí.

    Jestliže v původní úloze není hodnota proměnné xj vůbec nijak omezena, je převod paradoxnětrochu složitější. V tomto případě použijeme substituci xj = x′j−x′′j , přičemž u nových proměnnýchx′j a x′′j budeme požadovat jejich nezápornost. Jinými slovy, každý výskyt proměnné xj nahradímerozdílem dvou nezáporných proměnných. Po provedení výpočtu pak hodnotu původní proměnnéxj získáme zpětnou substitucí, tj. jako rozdíl oněch dvou proměnných.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.4. Kanonický tvar úlohy LP 19

    2.4.5 Převod nerovností 5 na rovnice se dělá přidáním nových, tzv. doplňkových proměn-ných. Nerovnost typu 5 převedeme na rovnici tak, že (nezápornou) hodnotu, o kterou je levástrana menší, než pravá, k levé straně přidáme jako hodnotu doplňkové proměnné, přičemž na tutonovou proměnnou klademe požadavek nezápornosti. Doplňková proměnná má hodnotu rozdílu mezipůvodní levou a pravou stranou, je tedy rovna rezervě, s jakou je původní nerovnost splněna.

    Za každou nerovnost, kterou takto převádíme na rovnici, přidáváme samostatnou doplňkovouproměnnou, čímž zvětšujeme dimenzi prostoru řešení.

    Celkový počet nerovností v úloze se zavedením doplňkových proměnných nezmění. Podstatnéovšem je, že nerovnosti ve strukturních omezujících podmínkách, se kterými se špatně pracuje, jsounahrazeny omezeními nezápornosti kladenými na doplňkové proměnné.

    2.4.6 Převod nerovností = na rovnice se dělá podobně, tedy také zavedením doplňkovýchproměnných, ale v tomto případě doplňkové proměnné od levých stran nerovnosti odečítáme. Takéna tyto doplňkové proměnné klademe požadavek nezápornosti.

    2.4.7 Vztah úlohy v obecném a kanonickém tvaru. Má-li jedna z úloh přípustné řešení,má je i druhá a lze ho i snadno získat.

    Pokud původní úloha měla přípustné řešení x1, . . . , xn, pak úloha v kanonickém tvaru, kteráje výsledkem převodu, má rovněž přípustné řešení a to takové, že původní proměnné své hodnotyzachovají a doplňkové proměnné jsou rovny rozdílům mezi levou a pravou stranou, tedy vlastněvelikosti rezervy ve splnění nerovnosti.

    Také naopak, pokud úloha v kanonickém tvaru má přípustné řešení, pak vynecháním doplňko-vých proměnných dostaneme přípustné řešení původní úlohy.

    2.4.8 Příklad. Převedeme na kanonický tvar úlohu

    2x1 + 3x2 → minx1 − 2x2 5 2−2x1 + x2 5 2x1 + x2 = 5

    x1, x2 = 0

    Kvůli třem strukturním podmínkám musíme zavést tři doplňkové proměnné x3, x4, x5.

    −2x1 −3x2 → maxx1 −2x2 +x3 = 2

    −2x1 +x2 +x4 = 2x1 +x −x5 = 5

    x1, . . . , xn = 0

    Vezměme libovolné přípustné řešení původní úlohy, např. řešení (3, 4). Toto řešení splňujestrukturní podmínky s rezervami po řadě 7, 4 a 2. Bod (3, 4, 7, 4, 2) je řešením odpovídající úlohyv kanonickém tvaru, přičemž rezervy 7, 4, 2 jsou hodnotami doplňkových proměnných x3, . . . , x5.

    Naopak, vezmeme-li libovolné řešení kanonického tvaru úlohy, např. (4, 1, 0, 9, 0), pak prvé dvěsouřadnice (4, 1) jsou přípustným řešením původní úlohy a hodnoty doplňkových proměnnýchsdělují, s jakými rezervami jsou splněny jednotlivé strukturní omezující podmínky. Nulová rezervaznamená, že omezující podmínka je splněna „na doraz“ a příslušný bod leží na přímce (obecněnadrovině), určené tou omezující podmínkou.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 20 Kapitola 2. Lineární programování

    2.5 Bázická přípustná řešení

    V tomto oddíle se budeme zabývat přípustnými řešeními úlohy v kanonickém tvaru, tj. nezápornýmiřešeními soustavy lineárních rovnic Ax = b a ukážeme, jak to souvisí s množinou krajních bodůmnožiny přípustných řešení.

    Budeme předpokládat, že řádky matice A jsou lineárně nezávislé, tj. že hodnost matice A jerovna počtu řádků m. Později uvidíme, že tento předpoklad bývá v úlohách LP triviálně splněn.

    2.5.1 Sloupcový prostor je vektorový prostor generovaný všemi sloupci matice A.Řešíme-li soustavu rovnic Ax = b, pak vlastně hledáme lineární kombinaci sloupců matice A,

    jejímž výsledkem je vektor pravých stran. Koeficienty této lineární kombinace (pokud existuje)jsou rovny souřadnicím řešení x1, . . . , xn soustavy rovnic.

    Úloha Ax = b má přípustné řešení právě tehdy, když vektor b je prvkem sloupcového prostoru,tj. když jej lze vygenerovat ze sloupců matice A jako lineární kombinaci.

    2.5.2 Bázické řešení soustavy rovnic Ax = b je jakékoli řešení x, které dostaneme takto:

    • zvolíme množinu sloupců matice A, označme je ati pro i = 1, . . . ,m, a to tak, aby tyto sloupcetvořily bázi sloupcového prostoru generovaného všemi sloupci matice A. Těmto sloupcůmbudeme říkat bázické sloupce.

    • Ze sloupců ati sestavíme čtvercovou matici A′ a řešením soustavy rovnic A′x = b dostanemehodnoty proměnných xti pro i = 1, . . . ,m. Tyto proměnné nazýváme bázickými proměnnými.

    • Ostatní proměnné xj , kde j 6∈ {t1, . . . , tm}, položíme rovny nule. Tyto proměnné nazývámenebázickými proměnnými.

    Jsou-li všechny souřadnice bázického řešení nezáporné, nazýváme toto řešení bázickým přípustnýmřešením. V dalším textu budeme občas používat zkratku BPŘ.

    Dodejme, že matice A′ je regulární. Proto je bázické řešení jednoznačně určeno výběrembázických sloupců. To mimochodem znamená, že bázckých řešení je vždy konečně mnoho, nemůžejich být více než

    (nm

    ).

    2.5.3 Jednotkový vektor je vektor, jehož všechny souřadnice jsou nulové, pouze jedna sou-řadnice má hodnotu 1. Jednotkový vektor, který má jedničku na i-tém místě, označíme ei.

    2.5.4 Kanonická báze je báze sloupcového prostoru, která je tvořena jednotkovými vektory,které jsou sloupci matice A.

    Ze sloupců, které tvoří kanonickou bázi, tedy lze složit jednotkovou matici řádu m. Dodejme, žesloupce, které tvoří kanonickou bázi, se nemusí vyskytovat v matici A ve stejném pořadí, ani tsněza sebou jako v jednotkové matici. Bázické sloupce mohou být v matici A na přeskáčku rozptýleny.Pro snazší orientaci zavedeme toto značení:

    2.5.5 Indexy bázických souřadnic. Máme-li v matici A kanonickou bázi, pak pro každý řádeki označme ti číslo bázickho sloupce matice A, který je jednotkovým vektorem s jedničkou na i-tépozici. Jinými slovy, ti = j pro takové j, že sloupec aj je v bázi a je jednotkovým vektorem ej .

    Kanonická báze je tedy tvořena množinou sloupců {ati | i = 1, . . . ,m}.

    2.5.6 Řešení reprezentované tabulkou. Soustavu rovnic Ax = b lze bez ztráty informacereprezentovat rozšířenou maticí soustavy. Pokud matice soustavy A obsahuje kanonickou bázitvořenou sloupci ati pro i = 1, . . . ,m, pak bázické řešení získané z této báze nazýváme řešenímreprezentovaným tabulkou (přičemž tabulkou se zde míní rozšířená matice soustavy).

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.5. Bázická přípustná řešení 21

    Díky speciálnímu tvaru kanonické báze platí

    xti = bi pro bázické proměnné ti ,xj = 0 pro ostatní (tj. nebázické) proměnné.

    Při výpočtu LP budeme pracovat pouze s řešeními, která budou reprezentována tabulkami,přičemž další tabulky budeme získávat ekvivalentními úpravami rozšířené matice soustavy.

    2.5.7 Krajní body a bázická přípustná řešení. Lze dokázat, že bod je bázickým přípustnýmřešením právě tehdy, když je krajním bodem množiny přípustných řešení.

    Důsledek: soustředíme se na bázická přípustná řešení.

    2.5.8 Jordanova eliminace. Popíšeme metodu, jak z jedné tabulky, která obsahuje kanonickoubázi, získat další tabulku, která je s ní ekvivalentní a rovněž obsahuje kanonickou bázi.

    • Zvolte nenulový klíčový prvek aij 6= 0. Jak jej volit uvedeme dále.

    • Klíčový řádek Ai vydělte klíčovým prvkem aij . Tím na místě klíčového prvku dostanetejedničku.

    • Ke každému neklíčovému řádku přičtěte takový násobek klíčového řádku, aby se hodnotav klíčovém sloupci vynulovala.

    Toto budeme nazývat jedním krokem Jordanovy eliminace.Provedením Jordanovy eliminace se změní kanonická báze. Z kanonické báze bude vyloučen

    sloupec s indexem tj (tento sloupec se eliminací poškodí) a bude nahrazen jednotkovým vektorem,který vznikne v klíčovém sloupci j.

    Pozor – má-li výsledná tabulka obsahovat kanonickou bázi, je třeba Jordanovu eliminacidělat přesně výše uvedeným způsobem. Pouze klíčový řádek smí být násoben (číslem různým odjedničky). K ostatním řádkům smíme pouze přičítat násobky řádku klíčového. Ověřte na příkladě,že jakýkoli jiný postup kanonickou bázi poškodí.

    2.5.9 Jak volit klíčový prvek v daném sloupci j. Pokud řešení reprezentované tabulkoubylo přípustné (tj. všechny pravé strany byly nezáporné) a volíme-li klíčový prvek tak, že

    1. klíčový prvek je kladný, tj. aij > 0 a2. podíl bi/aij je minimální (nejbližší k nule),

    pak po provedení Jordanovy eliminace bude řešení reprezentované tabulkou opět přípustné (tj.všechny pravé strany budou opět nezáporné).

    Pokud klíčový prvek ve sloupci zvolíte jinak (tj. porušíte-li některé z výše uvedených pravidel),dostanete v příští tabulce zápornou hodnotu na pravé straně a řešení reprezentované tabulkou tedybude nepřípustné. Vyzkoušejte na příkladě.

    2.5.10 Sousední řešení. Dvě řešení, která jsou reprezentována tabulkami, které lze získat jednuz druhé provedením jednoho kroku Jordanovy eliminace, nazýváme sousedními řešeními.

    Pokud množinu přípustných řešení pokládáme za mnohostěn v n-rozměrném prostoru, paksousední řešení jsou spojena hranou mnohostěnu.

    Až na degenerované případy má každé bázické přípustné řešení nejvýše n−m sousedů. Sousedůje vždy konečně mnoho.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 22 Kapitola 2. Lineární programování

    2.5.11 Jak získat všechna bázická přípustná řešení. Předpokládejme, že máme tabulku,která obsahuje kanonickou bázi a tedy reprezentuje nějaké bázické přípustné řešení. Tuto tabulkuspolu s řešením, které reprezentuje, a s množinou indexů bázických sloupců, zařaďme jako prvnípoložku seznamu.

    Dále pro každou tabulku v seznamu proveďme kontrolu, zda všechny sousední tabulky jsou takéobsaženy v seznamu. Pokud ne, pak tuto tabulku vypočteme (Jordanovou eliminací) a zařadímedo seznamu. Takto postupujte, dokud ke každé tabulce nemáme v seznamu všechny sousedy.

    Vzhledem k větě 2.3.13, str. 17 by bylo možné tímto způsobem najít optimální řešení, neboťvšech bázických přípustných řešení je konečně mnoho (určitě ne více než

    (nm

    )). Pro velká n a m by

    však tento postup byl velmi pracný, až nerealizovatelný. Naštěstí existuje způsob, jak předem, ještěpřed provedením kroku Jordanovy eliminace, poznat, zda se tímto krokem účelová funkce zlepšínebo zhorší.

    2.5.12 Pohyb k sousednímu řešení po hraně. Mějme rozšířenou matici soustavy s úplnoukanonickou bází. V řešení reprezentovaném tabulkou chtějme změnit (tj. zvětšit) nebázickousouřadnici xl o hodnotu ∆.

    Při změně je třeba zachovat platnost všech rovnic. Toho lze nejjednodušeji dosáhnout změnamibázických proměnných, protože každá z nich má vliv pouze na jednu rovnici.

    Výsledkem změny je řešení, které leží na polopřímce, jejímž krajním bodem je BPŘ reprezen-tované tabulkou a směrový vektor bude odvozen z l-tého sloupce matice A takto:

    • xl se změní z nuly na ∆,• každá bázická souřadnice xti se změní na hodnotu xti − ail ·∆,• ostatní souřadnice zůstanou nulové.

    Kvůli přípustnosti souřadnice xl musí být ∆ = 0. Proto mluvíme o polopřímce.Při rostoucím ∆ mohou bázické souřadnice xti růst i klesat, záleží to na hodnotách prvků ail

    ve sloupci l.Pokud při rostoucím ∆ žádná bázická souřadnice neklesá (tj. pokud ve sloupci al není žádný

    kladný prvek), pak pro všechna ∆ = 0 dostáváme přípustné řešení. Celá polopřímka je tedy tvořenapřípustnými řešeními. Tímto poněkud zvláštním případem, zejména otázkou, co se na té polopřímceděje s účelovou funkcí, se budeme zabývat dále v 2.6.10, str. 26 a v příkladech 2.6.11 a 2.6.14.

    Pokud při rostoucím ∆ některá bázická souřadnice klesá, pak nejmenší nezáporná hodnota ∆,při které se některá bázická souřadnice xtk vynuluje, je rovna bk/akl pro některé k. Při této hodnotě∆ máme všechny souřadnice nezáporné, a počet nenulových proměnných opět nepřesahuje m.

    Výsledné souřadnice jsou rovny bázickému přípustnému řešení, které bychom alternativně mohlidostat Jordanovou eliminací, kdybychom jako klíčový prvek zvolili akl. (Opět, ověřte na příkladě.)Všmněte si, že hodnota ∆ = bk/akl je rovna minimálnímu podílu bi/aij z 2.5.9.

    K sousednímu bázickému příustnému řešení (tj. k sousednímu vrcholu mnohostěnu) se tedymůžeme dostat dvěma způsoby: pohybem po hraně, nebo Jordanovou eliminací.

    2.5.13 Změna účelové funkce při pohybu k sousednímu řešení po hraně. Sledujeme-lizměnu účelové funkce při pohybu po hraně k sousednímu řešení, pak změna účelové fce je přmoúměrná velikosti parametru ∆ a závisí na cenových koeficientech cl a ct1 , . . . , ctm a to tak, žepřírůstek účelové funkce je roven

    ((m∑i=1

    cti · ail

    )− cl

    )·∆ .

    Můžete si to ověřit tím, že sečtete změny jednotlivých souřadnic vynásobené jejich cenovýmikoeficienty. Zkuste si to alespoň na příkladě.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.6. Základní simplexová metoda 23

    Výraz ve vnější závorce je velmi důležitý a vžilo se pro něj označení (zj − cj). Budeme jejnazývat relativní cenou. Přírůstek účelové funkce tedy je roven

    −(zj − cj) ·∆ .Poněvadž víme, při jakém ∆ se dostaneme do sousedního bázického přípustného řešení, můžeme

    tak snadno předpovědět přírůstek účelové funkce i pro Jordanovu eliminaci a to ještě před tím, nežji provedeme.

    Zejména je důležité, že podle relativní ceny lze velmi snadno poznat, zda hrana (úsečkanebo polopřímka) vede směrem k lepším (tj. větším) hodnotám účelové funkce. Toto zjištění mádalekosáhlé důsledky, kerými se budeme zabývat dále. Nejdůležitější z nich je tzv. sipmplexovámetoda.

    2.6 Základní simplexová metodaV tomto oddíle vyložíme pouze základní simplexovou metodu. Omezíme se na případ, kdy rozšířenámatice soustavy lineárních rovnic Ax = b obsahuje úplnou kanonickou bázi. Případem, kdy tentopředpoklad není splněn, se budeme zabývat v dalším oddíle 2.7

    Simplexová metoda, velmi zhruba řečeno, spočívá v opakovaném provádění Jordanovy elimi-nace, geometricky jde o pohyb po hranách mnohostěnu přípustných řešení. Přitom hranu, po kterépůjdeme dál tedy klíčový prvek pro Jordanovu eliminaci, vybíráme podle relativních cen tak, abyse účelová finkce zvětšovala.

    2.6.1 Předověď změny účelové funkce před Jordanovou eliminací. Provedením Jorda-novy eliminace získáme tabulku, která reprezentuje sousední bázické přípustné řešení (sousedníbod mnohostěnu) a do téhož bodu se dostaneme při pohybu po hraně k sousednímu řešení, jak jepopsáno v 2.5.12. Navíc, podle 2.5.13 již víme, že přírůstek účelové funkce je roven

    −(zj − cj) ·biaij

    ,

    kde (zj − cj) je tzv. relativní cena.

    2.6.2 Relativní cena pro sloupec j je definována vzorcem

    (zj − cj) =

    (m∑i=1

    cti · aij

    )− cj .

    Je-li sloupec j v bázi, je vždy (zj − cj) = 0.

    2.6.3 Přírůstek účelové funkce v příštím kroku Jordanovy eliminace při volbě klíčovéhoprvku aij bude roven

    −(zj − cj) ·biaij

    Důkaz:

    Poznámka: Z tohoto tvrzení lze velmi jednoduše odvodit řadu důležitých tvrzení. V tomtosmyslu jde o jakési “zlaté pravidlo lineárního programování”.

    2.6.4 Simplexová metoda. Pro výchozí tabulku vypočtěte relativní ceny. Dokud existujezáporná relativní cena opakujte následující:

    • Vyber klíčový sloupec l, aby zl − cl < 0.• Vyber klíčový řádek k podle pravidla 2.5.9 pro výběr klíčového prvku ve sloupci.• Jordanovou eliminací spočti novou tabulku.• Vypočti nové relativní ceny.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 24 Kapitola 2. Lineární programování

    2.6.5 Simplexová tabulka. Ruční výpočet se dělá v tzv. simplexové tabulce tohoto tvaru:

    cT max

    cB ti A b

    (z − c)T L

    Základ simplexové tabulky tvoří rozšířená matice soustavy rovnic (A |b). Nad maticí A je řádekcenových koeficientů cT. Tento řádek se (jako jediný) během výpočtu nemění, proto jej do dalšíchtabulek zpravidla neopisujeme.

    Vlevo od matice A jsou dva sloupce. Blíže k matici A je sloupec indexů ti, které ukazují nasloupce tvořící kanonickou bázi. Vlevo od něj je vektor bázických cenových koeficientů cB . Jehoi-tá složka je cenový koeficient cti .

    Pod maticí A je řádek relativních cen (z − c). Vpravo od něj, pod sloupcem pravých stran, jehodnota účelové funkce řešení, které je reprezentováno touto tabulkou. Je to skalární součin cTBb.

    2.6.6 Příklad výpočtu simplexovou metodou. Řešme příklad 2.2.2, str. 12. Převod nakanonický tvar viz 2.4.8

    2 3 0 0 0 max0 3. 1 −2 1 0 0 20 4. −2 1 0 1 0 20 5. 1 1 0 0 1 5

    −2 −3 0 0 0 00 3. −3 0 1 2 0 63 2. −2 1 0 1 0 20 5. 3 0 0 −1 1 3

    −8 0 0 3 0 60 3. 0 0 1 1 1 93 2. 0 1 0 1/3 2/3 42 1. 1 0 0 − 1/3 1/3 1

    0 0 0 1/3 22/3 14

    Prvý řádek, který obsahuje cenový vektor, se během výpočtu nemění, proto se v tabulceneopisuje.

    Poslední (třetí) simplexová tabulka reprezentuje řešení (1, 4, 9, 0, 0)T. Díky nezáporným rela-tivním cenám v této tabulce je toto řešení optimální

    2.6.7 Jak volit klíčový sloupec. Především je třeba zdůraznit, že jako klíčový sloupec můžetevolit libovolný nebázický sloupec. Jen musíte být připraveni na to, že nevhodnou volbou můžeteúčelovou funkci zhoršit. Obvykle však chceme účelovou funkci zlepšovat, k tomu je nutné volitklíčový sloupec se zápornou relativní cenou. Často však máme několik možností.

    Základní pravidla pro volbu klíčového sloupce jsou:

    1. volit sloupec s nejvíce zápornou relativní cenou,2. volit sloupec tak, aby byl přírůstek účelové funkce největší,3. volit zleva prvý sloupec se zápornou relativní cenou.

    Výběr podle pravidla 3 je nejméně pracný, ale přírůstky účelové funkce jsou v průměru horšínež u ostatních pravidel. Toto pravidlo má význam zejména jako ochrana před zacyklením výpočtuv případě tzv. degenerace, viz dále v 2.6.8.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.6. Základní simplexová metoda 25

    Pravidlo 2 naopak poskytuje v průměru nejlepší (tj. největší) přírůstky účelové funkce a tedyvýpočet s nejmenším průměrným počtem iterací. Bohužel námaha (objem výpočtů) nutná provýběr klíčového prvku není zanedbatelná a zpravidla převáží. Navíc, toto pravidlo nic nezaručuje,úspora v počtu iterací je nevýrazná a existují úlohy, kdy chamtivá snaha o co největší okamžitýzisk vede k situaci (tabulce), ze které cesta k optimu vede přes velký počet simplexových tabulek,viz příklad na obrázku 2.7

    Jako dobrý kompromis se tedy jeví pravidlo 1, tedy výběr sloupce s nejzápornější relativnícenou. Výběr minima z relativních cen je poměrně snadný a přírůstky účelové funkce jsou v průměrulepší než u pravidla 3.

    x

    y

    Obrázek 2.7: Příklad, že chamtivá snaha o co největší okamžitý přírůstek účelové funkce může véstk velmi dlouhému výpočtu (viz 2.6.7).

    2.6.8 Degenerované řešení je takové bázické řešení, v němž je některá bázická souřadnicerovna nule. V simplexové tabulce je některá pravá strana nulová.

    Proč to vadí: I když zvolíme klíčový sloupec se zápornou relativní cenou, pokud vyjde klíčovýprvek do řádku i s nulovou pravou stranou bi, bude přírůstek účelové funkce nulový. Pravděpodob-nost, že se to stane, je poměrně vysoká, neboť stačí, aby bylo aij > 0 a pravidlo 2.5.9 nemilosrdněvybere v j-tém řádku jako klíčový prvek zrovna aij .

    Možnost nulového přírůstku účelové funkce vzbuzuje obavu, zda výpočet simplexovou metodouvůbec někdy skončí. Co když se nulový přírůstek bude opakovat v každém kroku simplexovémetody?

    Ukazuje se, že tato možnost nekonečného výpočtu je reálná. Existuje (uměle vymyšlený) příkladúlohy, kde simplexová metoda s volbou klíčového sloupce podle pravidla 2.6.7(1) opravdu nikdyneskončí, neustále se opakuje táž posloupnost několika simplexových tabulek, výpočet se zacyklí.

    V literatuře se uvádí, že v praktických úlohách zacyklení nebylo zaznamenáno, údajně „díky“zaokrouhlovacím chybám, které výpočet z cyklu vyvedou. Je ovšem lepší mít jistotu. Naštěstíexistuje velmi jednoduchá pomoc. Je dokázáno, že při volbě klíčového sloupce podle pravidla2.6.7(3) se výpočet nemůže zacyklit. Praktická rada tedy je tato:

    Za normálních okolností volte klíčový sloupec podle pravidla 1 (tedy nejzápornějšírelativní cenu), ale pokud se vyskytne nulový přírůstek účelové funkce, pak, dokud jeřešení degenerované, používejte pravidlo 3 (prvý sloupec se zápornou relativní cenou).

    Další komplikace s degenerovaným řešením je ta, že ne vždy hned poznáme optimální řešení.Degenerované řešení totiž je bázickým řešením pro několik různých bází. Může se tedy stát, že řešeníreprezentované tabulkou již je de facto optimální, ale ne všechny relativní ceny jsou nezáporné.Ve výpočtu tedy je nutno pokračovat, přičemž následující simplexové tabulky reprezentují číselnětotéž řešení, ale vyjádřené v jiné bázi. Viz příklad 2.6.9.Poznámka: Je-li volba klíčového prvku ve sloupci nejednoznačná, tj. pokud se minimální podílbi/aij nabývá pro dva nebo více řádků i, není to nic závadného, klidně zvolte kterýkoli z nich.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 26 Kapitola 2. Lineární programování

    V následující simplexové tabulce pak vyjde na pravé straně aspoň jedna nula a to v řádku, kterýnení klíčový, ale týkal se jej onen minimální podíl. Řešení reprezentované touto následující tabulkoubude tedy degenerované.

    2.6.9 Příklad — degenerace.

    4x1 + x2 + 4x3 + 3x4 → max

    x1 + x2 + 2x4 5 2

    2x1 + x2 + 4x3 5 5

    x1 + 4x2 + 2x3 + 4x4 5 2

    x1, . . . , x4 = 0

    4 1 4 3 0 0 0 max0 5. 1 1 0 2 1 0 0 20 6. 2 1 4 0 0 1 0 50 7. 1 4 2 4 0 0 1 2

    −4 −1 −4 −3 0 0 0 04 1. 1 1 0 2 1 0 0 20 6. 0 −1 4 −4 −2 1 0 10 7. 0 3 2 2 −1 0 1 0

    0 3 −4 5 4 0 0 84 1. 1 1 0 2 1 0 0 20 6. 0 −7 0 −8 0 1 −2 14 3. 0 1 1/2 1 1 − 1/2 0 1/2 0

    0 9 0 9 2 0 2 8

    V první tabulce volíme prvý sloupec jako klíčový, neboť je zde nejzápornější relativní cena.Volba klíčového prvku v tomto sloupci je nejednoznačná. Tedy ještě před provedením Jordanovyeliminace víme, že příští tabulka bude obsahovat degenerované řešení. Řešení reprezentované touto(první) tabulkou ovšem degenerované není.

    Řešení reprezentované druhou tabulkou je degenerované (jak jsme již dříve předpověděli).Později se ukáže, že toto řešení již de facto je optimální, ale podle relativních cen to tak nevypadá.Chceme-li optimální řešení, musíme pokračovat volbou klíčového prvku ve třetím sloupci. Všimnětesi, že díky nule na pravé straně volíme klíčový prvek a33. Důsledkem je, že účelová funkce nevzroste.

    V další (třetí) tabulce již víme, že máme optimální řešení. Je to ovšem stejné řešení jakov předchozí tabulce, pouze je vyjádřeno v jiné bázi.

    2.6.10 Shora neomezená účelová funkce. Jde o případ znázorněný na obrázku 2.4, str. 14.Úloha má přípustné řešení, dokonce jich má mnoho, ale žádné z nich není optimální, neboť kekaždému z nich existuje přípustné řešení s lepší účelovou funkcí.

    Tuto situaci lze při výpočtu simplexovou metodou poznat poměrně snadno:

    • nebázický sloupec aj má všechny prvky nekladné, tj. aij 5 0,• příslušná relativní cena je záporná, tj. (zj − cj) < 0.

    V takovém případě, vezmeme-li polopřímku zmíněnou v 2.5.12, str. 22, pak všechny body tétopolopřímky jsou přípustnými řešeními, neboť pro rostoucí ∆ všechny rovnice zůstávají zachoványa žádná souřadnice neklesá. Hodnota účelové funkce je pro každý bod této polopřímky rovnaL(x) − (zj − cj) · ∆. To znamená, že zvolíme-li dostatečně velké ∆, můžeme na této polopřímcedostat přípustné řešení s libovolně vysokou hodnotou účelové funkce.

    V takovém případě tedy optimum neexistuje. Je-li cílem úlohy nalezení optima, nemá smyslpočítat dál, a to ani kdyby to šlo, tj. i kdyby bylo možno zvolit klíčový prvek v nějakém dalším

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.6. Základní simplexová metoda 27

    sloupci se zápornou relativní cenou. Sice bychom našli bázické přípustné řešení s lepší účelovoufunkcí, na faktu neomezenosti to ovšem nic změnit nemůže, pouze bychom se zbytečně namáhali.Poznámka: Pokud při řešení praktické úlohy zjistíte, že účelová funkce je shora neomezená,zpravidla to znamená, že v zadání úlohy chybí nějaká docela podstatná omezující podmínka.

    2.6.11 Příklad — neomezená účelová funkce. Řešme úlohu 2.2.5, str. 14. Pro pohodlíčtenáře zde zopakujeme její zadání i obrázek 2.8:

    2x1 + 3x2 → maxx1 − 2x2 5 2−2x1 + x2 5 2

    x1 = 0

    x2 = 0

    2 3 0 0 max0 3. 1 −2 1 0 20 4. −2 1 0 1 2

    −2 −3 0 0 00 3. −3 0 1 2 63 2. −2 1 0 1 2

    −8 0 0 3 6

    Druhá tabulka reprezentuje řešení (0, 2, 6, 0)T. Díky relativní ceně (z1 − c1) = −8 toto řešenínelze pokládat za optimální, ale ve výpočtu simplexovou metodou pokračovat nelze, protožev prvém sloupci není prvek, který by mohl být použit jako klíčový.

    Relativní cena (z1 − c1) = −8 naznačuje, že by bylo vhodné zvyšovat prvou souřadnici.Vyjděme tedy z bodu (0, 2, 6, 0)T a pohybujme se po hraně podle 2.5.12. Všechny body polopřímky(0, 2, 6, 0)T + ∆(1, 2, 3, 0)T jsou přípustnými řešeními. Pro bod polopřímky daný parametrem ∆ jepodle 2.6.1 hodnota účelové funkce rovna −(z1 − c1) · ∆ = −(−8)∆ = 8∆. Účelová funkce můženabývat libovolně vysokých hodnot, stačí zvolit vhodné ∆ > 0.

    Žádné řešení tedy není optimální, ke každému přípustnému řešení existuje (na naší polopřímce)bod s lepší hodnotou účelové funkce.

    x1

    x2 −2x1 + x2 ≤ 2

    x1 − 2x2 ≤ 2

    2x1 + 3x2 → max

    Obrázek 2.8: Neomezená účelová funkce, úloha nemá optimální řešení.

    Jako cvičení ověřte, že i kdybychom v prvé simplexové tabulce zvolili klíčový prvek v prvnímsloupci, dostali bychom sice jiný bod a jinou polopřímku, ale závěr, že účelová funkce je shoraneomezená, by byl stejný. Najděte obě polopřímky na obrázku 2.8.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 28 Kapitola 2. Lineární programování

    2.6.12 (Ne)jednoznačnost optimálního řešení. Jsou-li relativní ceny všech nebázickýchsloupců kladné, pak řešení reprezentované touto simplexovou tabulkou je jediným optimálnímřešením. Je totiž nejen optimální, ale navíc všechny směry k sousedním bázickým přípustnýmřešením vedou ve směru k ostře horším řešením.

    V ostatních případech optimálního řešení, tj. když

    • řešení reprezentované tabulkou je optimální,• existuje nebázický sloupec s nulovou relativní cenou,

    pak (až na výjimku degenerovaného případu) existuje další optimální řešení. Toto řešení zpravidladostaneme jako sousední bázické přípustné řešení, které má stejnou hodnotu účelové funkce a jetedy také optimální.

    Může se také stát, že v patřičném směru sousední řešení neexistuje, z bodu reprezentovanéhotabulkou vychází polopřímka zmíněná v 2.5.12 a poněvadž (zj − cj) = 0, mají všechny bodypolopřímky stejnou účelovou funkci. A poněvadž počáteční bod polopřímky je optimálním řešením,jsou optimálními řešeními všechny body polopřímky.

    Připomeňme, že množina optimálních řešení je vždy konvexní. Máme-li tedy dvě různá opti-mální řešení, pak všechny body úsečky, která tato dvě řešení spojuje, jsou optimálními řešeními.

    Chceme-li získat všechna optimální řešení, je třeba nejprve najít všechny krajní body, které jsouoptimálními řešeními (dělá se to podobně jako hledání všech BPŘ). Dále je třeba najít všechnypřípadné krajní směry, které z těchto bodů vycházejí. Množina všech optimálních řešení pak jekonvexním obalem všech těchto bodů.

    2.6.13 Příklad — více optimálních řešení. Řešme úlohu z příkladu 2.2.3, str. 13. Tato úlohase od příkladu 2.6.6 liší pouze v účelové funkci. Pro pohodlí čtenáře zde zopakujeme celé zadání iobrázek 2.9:

    2x1 + 2x2 → maxx1 − 2x2 5 2−2x1 + x2 5 2x1 + x2 5 5

    x1, x2 = 0

    Po převodu na kanonický tvar dostaneme tyto simplexvé tabulky:

    2 2 0 0 0 max0 3. 1 −2 1 0 0 20 4. −2 1 0 1 0 20 5. 1 1 0 0 1 5

    −2 −2 0 0 0 00 3. −3 0 1 2 0 62 2. −2 1 0 1 0 20 5. 3 0 0 −1 1 3

    −6 0 0 2 0 40 3. 0 0 1 1 1 92 2. 0 1 0 1/3 2/3 42 1. 1 0 0 − 1/3 1/3 1

    0 0 0 0 2 10

    Všimněte si, že tyto simplexové tabulky obsahují stejné rozšířené matice soustavy rovnic, jakov příkladu 2.6.6, str. 24. Liší se pouze cenový vektor, vektory bázických cenových koeficientů ařádky relativních cen.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.6. Základní simplexová metoda 29

    Třetí simplexová tabulka reprezentuje optimální řešení (1, 4, 9, 0, 0)T. Nulová relativní cena(z4−c4) v nebázickém sloupci ovšem signalizuje, že sousední BPŘ bude mít stejnou hodnotu účelovéfunkce a bude tedy také optimální. Vskutku, zvolíme-li klíčový prvek ve 4. sloupci, dostaneme dalšísimplexovou tabulku

    2 2 0 0 0 max0 4. 0 0 1 1 1 92 2. 0 1 − 1/3 0 1/3 12 1. 1 0 1/3 0 2/3 4

    0 0 0 0 2 10

    která reprezentuje další optimální řešení (4, 1, 0, 9, 0)T. Na obrázku 2.9 je množina optimálníchřešení nakreslena tlustě.

    x1

    x2

    2x1 + 2x2 → max

    −2x1 + x2 ≤ 2

    x1 − 2x2 ≤ 2

    x1 + x2 ≤ 5

    Obrázek 2.9: Více optimálních řešení (příklad 2.2.3).

    2.6.14 Příklad — neomezená množina optimálních řešení. Řešme úlohu 2.2.6, str. 15.Pro pohodlí čtenáře opět zopakujeme její zadání i obrázek 2.10:

    −2x1 + x2 → maxx1 − 2x2 5 2−2x1 + x2 5 2

    x1 = 0

    x2 = 0

    −2 1 0 0 max0 3. 1 −2 1 0 20 4. −2 1 0 1 2

    2 −1 0 0 00 3. −3 0 1 2 61 2. −2 1 0 1 2

    0 0 0 1 2

    Druhá tabulka reprezentuje řešení (0, 2, 6, 0)T. Všechny relativní ceny jsou nezáporné, totořešení je tedy optimální. Relativní cena (z1 − c1) = 0 signalizuje, že by úloha mohla mít dalšíoptimální řešení. Tentokrát však v prvém sloupci nelze volit klíčový prvek. Co teď?

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 30 Kapitola 2. Lineární programování

    Nulová relativní cena naznačuje, že při pohybu po hraně podle 2.5.12 z bodu (0, 2, 6, 0)T sehodnota účelové funkce nebude měnit. Vskutku, vezměme polopřímku tvořenou body (0, 2, 6, 0) ++ ∆(1, 2, 3, 0) pro ∆ = 0. Všechny body této polopřímky jsou přípustnými řešeními (podobně jakov příkladu 2.6.11), ale navíc zde všechny body polopřímky mají stejnou hodnotu účelové funkcejako její počátek, všechny body polopřímky jsou tedy také optimálními řešeními.

    x1

    x2−2x1 + x2 ≤ 2

    x1 − 2x2 ≤ 2

    −2x1 + x2 → max

    Obrázek 2.10: Neomezená množina optimálních řešení (příklad ??).

    2.7 Umělé proměnné

    2.7.1 Existence přípustného řešení. Máme-li úlohu LP v kanonickém tvaru a její simplexovátabulka obsahuje úplnou kanonickou bázi, pak tato úloha má přípustné řešení. Konkrétně totiž např.řešení reprezentované touto simplexovou tabulkou je bázickým přípustným řešením.

    Pokud úplnou kanonickou bázi v simplexové tabulce nemáme, přípustné řešení dané úlohy můžea nemusí existovat. A právě o tom pojednává tato sekce.

    2.7.2 Umělé proměnné a M-úloha. Jestliže výchozí simplexová tabulka neobsahuje úplnoukanonickou bázi, úvahy uvedené v předchozím oddíle 2.6 neplatí, neboť tyto úvahy závisely napředpokladu, že úplnou kanonickou bázi v tabulce máme. Lze si však snadno pomoci:

    Chybějící bázické sloupce zcela formálně do simplexové tabulky přidáme. Proměnné odpoví-dající těmto sloupcům nazýváme umělými proměnnými. Aby výsledná úloha byla v kanonickémtvaru, požadujeme i pro umělé proměnné jejich nezápornost.

    Trik je založen na této úvaze: Pokud se při výpočtu podaří všechny umělé proměnné vynulovat,bude je možno ze simplexové tabulky odstranit, a to, co zbude, bude přípustným řešením původníúlohy. K vynulování umělých proměnných použijeme již známou simplexovou metodu a vhodnou„cenovou politiku“ .

    Cenové koeficienty umělých proměnných proto volíme rovny −M , kde M � 0. Zápornéceny volíme proto, aby maximalizace účelové funkce měla za následek zmenšení hodnot umělýchproměnných, hodnoty umělých proměnných jsou zápornými cenami „tlačeny k nule“ . Zároveň tytoceny potřebujeme „velmi záporné“ (a tedy hodnotu M � 0), aby vliv těchto cenových koeficientů−M zaručeně převážil nad cenami původních, tj. ne-umělých proměnných.

    Takto vzniklou rozšířenou úlohu LP nazýváme M -úlohou.Umělé proměnné byly do M -úlohy přidány ze zcela formálních důvodů, reálný význam od nich

    nebyl požadován (jsou umělé), lze je však chápat i tak, že vyjadřují míru nesplnění omezujícíchpodmínek. Pokud umělé proměnné vynulujete, máte přípustné řešení.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.7. Umělé proměnné 31

    2.7.3 Konstanta M . Konstantu M je třeba volit tak, aby její vliv v cenových koeficientechpřevážil nad vlivem jiných cenových koeficientů. Hodnota M nemusí být nekonečná (s tou by sešpatně počítalo). Stačí, aby M > m · (max |cj |) · (max |xj |)/(min |xj |), kde max |xj |) a (min |xj |)jsou maximální a minimální absolutní hodnota nenulové souřadnice některého BPŘ a (max |cj |) jemaximum absolutních hodnot všech cenových koeficientů původní úlohy.

    Samozřejmě lze zvolit i konstantu větší, předem se však obtížně odhaduje jak velkou. Navícvýpočet s tak velkými čísly by byl zatížen značnými zaokrouhlovacími chybami.

    Proto se konstanta M používá jen v teoretických úvahách. Při praktickém výpočtu konstantuM používáme jen formálně: Všechny relativní ceny a všechny vybrané cenové koeficienty cBchápeme jako výrazy tvaru p + qM , kde p, q jsou reálná čísla. Výraz p + qM lze zaznamenatjako uspořádanou dvojici čísel (p, q). Tyto dvojice lze po složkách sečítat, lze je po složkách násobitčíslem. Potřebujeme-li tyto výrazy porovnávat, řídíme se nejprve podle koeficientů u M a teprvekdyž ty nerozhodnou, porovnáme absolutní členy výrazů. Tedy

    p+ qM < p′ + q′M ⇐⇒ (q < q′) nebo [(q = q′) a (p < p′)]

    Pokud chcete mít v simplexové tabulce jen obyčejná čísla a ne výrazy typu p+qM , lze to vyřešittak, že řádek relativních cen nahradíte dvěma řádky, z nichž jeden bude obsahovat koeficienty uMa druhý bude obsahovat absolutní členy. Dobrá zpráva je, že Jordanovu eliminaci lze dělat s oběmatěmito řádkami samostatně.

    2.7.4 M-úloha má vždy přípustné řešení, neboť je to úloha v kanonickém tvaru a má úplnoukanonickou bázi. Tím nic neříkáme o existenci přípustného řešení původní úlohy.

    2.7.5 Neexistence přípustného řešení. Pokud optimální řešení M -úlohy má alespoň jednuumělou proměnnou nenulovou (tedy kladnou), tj. pokud účelová funkce tohoto řešení je p − qMpro nějaké nenulové q > 0, pak původní úloha nemá žádné přípustné řešení.

    Důkaz: Kdyby totiž nějaké přípustné řešení měla, pak by toto řešení, doplněné o nulové uměléproměnné, bylo lepším řešením M -úlohy, než nalezené optimální řešení, neboť hodnota účelovéfunkce by měla nulovou složku q. To je ovšem spor, protože žádné řešení memůže být lepší nežoptimální. Původní úloha tedy nemá žádné přípustné řešení.

    2.7.6 Existence přípustného řešení. Když nějaké přípustné řešení M -úlohy má všechnyumělé proměnné nulové, pak vynecháním umělých proměnných dostaneme přípustné řešení původníúlohy.

    2.7.7 Optimální řešení M-úlohy. Je-li řešení M -úlohy optimální a má všechny umělé pro-měnné rovny nule, pak vynecháním umělých proměnných dostaneme řešení, které je nejen přípust-ným, ale dokonce optimálním řešením původní úlohy.

    2.7.8 Příklad – neexistence přípustného řešení. Řešme tuto úlohu (viz obr. 2.11):

    2x1 + 3x2 → max2x1 − x2 = 2−x1 + 2x2 = 2x1 + x2 5 3

    x1, x2 = 0

    Po převodu na kanonický tvar dostaneme úlohu s touto simplexovou tabulkou:

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 32 Kapitola 2. Lineární programování

    2 3 0 0 0 max. 2 −1 −1 0 0 2. −1 2 0 −1 0 2

    0 5. 1 1 0 0 1 3

    Tato tabulka neobsahuje kanonickou bázi, proto ani nemá smysl počítat relativní ceny zj − cj .Po doplnění dvou umělých proměnných dostaneme simplexovou tabulku:

    2 3 0 0 0 −M −M max−M 6. 2 −1 −1 0 0 1 0 2−M 7. −1 2 0 −1 0 0 1 2

    0 5. 1 1 0 0 1 0 0 3−2 −3 0 0 0 0 0 0−M −M M M 0 0 0 −4M

    Řádek relativních cen zj − cj je zde rozdělen na dvě části. V horní je složka „bez M “ a v dolnípolovině řádky je složka „s násobky M “ . Tedy např. pro prvý sloupec je z1 − c1 = −2−M .

    2 3 0 0 0 −M −M max−M 6. 2 −1 −1 0 0 1 0 2−M 7. −1 2 0 −1 0 0 1 2

    0 5. 1 1 0 0 1 0 0 3−2 −3 0 0 0 0 0 0−M −M M M 0 0 0 −4M

    −M 6. 1 + 1/2 0 −1 − 1/2 0 1 1/2 33 2. −1/2 1 0 − 1/2 0 0 1/2 10 5. 1 + 1/2 0 0 1/2 1 0 − 1/2 2

    −3− 1/2 0 0 −1 1/2 0 0 1 1/2 3−M − 1/2M 0 M 1/2M 0 0 1/2M −3M

    −M 6. 0 0 −1 −1 −1 1 1 13 2. 0 1 0 − 1/3 1/3 0 1/3 1 2/32 1. 1 0 0 1/3 2/3 0 − 1/3 1 1/3

    0 0 0 − 1/3 2 1/3 0 1/3 7 2/30 0 M M M 0 0 −M

    M -úloha má optimální řešení (1 1/3, 1 2/3, 0, 0, 0, 1, 0)T. V tomto řešení je nenulová umělá pro-měnná x6 = 1. Že je některá umělá proměnná nenulová, je na první pohled vidět z hodnoty účelovéfunkce L = −M+7 2/3, konkrétně z nenulové složky −M . Původní úloha tedy nemá žádné přípustnéřešení.

    2.7.9 Příklad – optimální řešení. Řešme úlohu (viz obr. 2.12), která se od úlohy 2.7.8 jennepatrně liší na pravé straně třetí strukturní podmínky:

    2x1 + 3x2 → max2x1 − x2 = 2−x1 + 2x2 = 2x1 + x2 5 5

    x1, x2 = 0

    Podobně jako v úloze 2.7.8 je třeba přidat dvě umělé proměnné.

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 2.7. Umělé proměnné 33

    x1

    x2

    2x1 − x2 ≥ 2

    −x1 + 2x2 ≥ 2

    x1 + x2 ≤ 3

    Obrázek 2.11: Příklad k M -úloze — nemá přípustné řešení (viz 2.7.8).

    2 3 0 0 0 −M −M max−M 6. 2 −1 −1 0 0 1 0 2−M 7. −1 2 0 −1 0 0 1 2

    0 5. 1 1 0 0 1 0 0 5−2 −3 0 0 0 0 0 0−m −M M M 0 0 0 −4M

    −M 6. 1 + 1/2 0 −1 − 1/2 0 1 1/2 33 2. −1/2 1 0 − 1/2 0 0 1/2 10 5. 1 + 1/2 0 0 1/2 1 0 − 1/2 4

    −3− 1/2 0 0 −1 1/2 0 0 1 1/2 3−M − 1/2M 0 M 1/2M 0 0 1/2M −3M

    2 1. 1 0 − 2/3 − 1/3 0 2/3 1/3 23 2. 0 1 − 1/3 − 2/3 0 1/3 2/3 20 5. 0 0 1 1 1 −1 −1 1

    0 0 −2 1/3 −2 2/3 0 2 1/3 2 2/3 100 0 0 0 0 M M 0

    2 1. 1 0 − 1/3 0 1/3 1/3 0 2 1/33 2. 0 1 1/3 0 2/3 − 1/3 0 2 2/30 4. 0 0 1 1 1 −1 −1 1

    0 0 1/3 0 22/3 − 1/3 0 12 2/3

    0 0 0 0 0 M M 0

    Zde optimální řešení M -úlohy je (2 1/3, 2 2/3, 0, 1, 0, 0, 0)T. Obě umělé proměnné jsou zde nulové,tedy vektor (2 1/3, 2 2/3, 0, 1, 0)T je optimálním (a přípustným) řešením úlohy v kanonickém tvaru avektor (2 1/3, 2 2/3)T je optimálním řešením původní úlohy.

    Poznámka: Všimněte si, že již ve 3. simplexové tabulce bylo jasné, že původní úloha mápřípustné řešení, neboť všechny (obě) umělé proměnné byly nulové. Všimněte si také, že kdyžse umělé proměnné dostaly ven z báze, jejich kladné a velmi vysoké relativní ceny brání tomu, abyse do báze znovu dostaly.

    2.7.10 Vylučovat umělé proměnné? Pokud je umělá proměnná vyloučena z báze, pak se díkyrelativním cenám nemůže znovu do báze vrátit. Je tedy možné celý sloupec této proměnné odstranitze simplexové tabulky a dále počítat bez něj. Jde-li nám pouze o optimální řešení a nechceme dělatdalší výpočty, můžeme si vynecháváním umělých proměnných trochu usnadnit výpočet.

    Pro řešení některých složitějších otázek však potřebujeme ve výsledné simplexové tabulce znát,

    Jiří Demel: Operační výzkum 16. prosince 2020, 11:06

  • 34 Kapitola 2. Lineární programování

    2x1 + 3x2 → max

    x1

    x2

    2x1 − x2 ≥ 2

    −x1 + 2x2 ≥ 2

    x1 + x2 ≤ 5

    Obrázek 2.12: Příklad k M -úloze — má optimální řešení (viz 2.7.9).

    jak vypadá sloupec, který byl členem původní báze. Pak samozřejmě musíme sloupce všech umělýchproměnných v simplexové tabulce ponechat a provádět výpočet i s nimi.

    2.7.11 Dvoufázová simplexová metoda.

    1. fáze: Cílem prvé fáze je transformovat původní úlohu tak, aby simplexová tabulka obsahovalaúplnou kanonickou bázi.

    Do úlohy zavedeme umělé proměnné a jejich ceny zvolíme −1, ceny ostatních proměnnýchvolíme v 1. fázi nulové. Tuto pomocnou úlohu řešíme běžnou simplexovou metodou a najdemejejí optimální řešení (zaručeně existuje).

    Pokud optimální řešení prvé fáze má nenulovou umělou proměnnou (a tedy i nenulovouhodnotu účelové funkce), pak původní úloha nemá žádné přípustné řešení (z podobnýchdůvodů jako v 2.7.5). Výpočet v tomto případě končí.

    2. fáze: Pokud výpočet neskončil v 1. fázi, odstraníme všechny umělé proměnné (jsou totižnulové), vrátíme se k cenovým koeficientům z původní úlohy a úlohu vyřešíme běžnousimplexovou metodou.

    Dvoufázová simplexová metoda má proti M -úloze jednu výhodu a dvě nevýhody.Výhodou dvoufázové metody je, že se v ní používá zcela standardní simplexová metoda, kde

    všechny cenové koeficienty i relativní ceny jsou obyčejná reálná čísla a ne výrazy typu p+ qM .Dvoufázová metoda je však jednodušší pouze zdánlivě, je totiž komplikována následující mož-

    ností: výsledkem prvé fáze může být degenerované řešení, ve kterém umělá proměnná sice mánulovou hodnotu, ale je součástí kanonické báze. Pokud k tomu dojde, nelze všechny umělé pro-měnné jednoduše odstranit, protože bychom tak přišli o kanonickou bázi. Způsob, jak postupovatv takové situaci sice existuje, ale není zcela triviální (zvolíme záporný klíčový prvek podle 2.9.7,bod 2.).

    Hlavní nevýhodou dvoufázové metody je nižší efektivnost. V prvé fázi se totiž hledá jakékolipřípustné řešení bez ohledu na účelovou funkci původní ú