Úvod do systémové a operační analysy
Transkript
UČEBNÍ TEXTY VYSOKÝCH ŠKOL Vysoké učenı́ technické v Brně Fakulta strojnı́ho inženýrstvı́ Úvod do operačnı́ a systémové analysy Doc. RNDr. Jindřich Klapka, CSc., RNDr. Jiřı́ Dvořák, CSc. 2002 c Jindřich Klapka, 2002 Předmluva Tyto učebnı́ texty jsou určeny pro posluchače kombinované formy bakalářského studia oboru Aplikovaná informatika a řı́zenı́. K jejich studiu stačı́ čtenáři znalost základů matematické analysy a algebry, základnı́ch pojmů teorie množin a teorie pravděpodobnosti. Cı́lem textů, kromě poskytnutı́ základnı́ho přehledu o dané problematice, je naučit čtenáře samostatně přistupovat k formulaci a k řešenı́ vybraných důležitých matematisovatených problémů operačnı́ho výzkumu. Je v nich obsažen systematický výklad základů lineárnı́ho, celočı́selného a dynamického programovánı́ a stručný přehled historie operačnı́ho výzkumu a systémové analysy. Kromě samostatného studia těchto textů jsou pro studenty tohoto předmětu důležité též ústnı́ konsultace, individuálnı́ a kolektivnı́, s lektory. Ty jim pomohou lépe se orientovat v textu a odlišı́ jim základnı́ znalosti, nutně požadované od absolventů bakalářského studia, od informacı́ doplňkových, určených pro speciálnı́ zájemce, které nenı́ třeba si na tomto stupni studia zcela nutně pamatovat. Konsultace poskytnou, v souladu s osnovami předmětu, též informace o základnı́ch metodách sı́t’ové analysy a lineárnı́m lomeném programovánı́. Autoři děkujı́ za podporu z Projektu rozvoje bakalářských programů na Fakultě strojnı́ho inženýrstvı́ VUT v Brně a za možnost začlenit do textu odborné poznatky zı́skané při řešenı́ výzkumného záměru CEZ: J22/98: 261100009 Netradičnı́ metody studia komplexnı́ch a neurči” tých systémů“. Autoři děkujı́ Ing. Vı́tězslavu Ševčı́kovi, Ing. Vlastimilu Martinkovi a Ing. Jaroslavu Hodálovi za počı́tačové zpracovánı́ textů. Jednotlivı́ autoři se na těchto textech podı́leli takto: Předmluva, kap. 1, § 2.1–2.6 a kap. 4 § 2.7, § 2.8, kap. 3 Doc. RNDr. Jindřich Klapka, CSc. RNDr. Jiřı́ Dvořák, CSc. i Obsah 1 Úvod 1 2 Lineárnı́ programovánı́ 2.1 Stručná historie . . . . . . . . . . . . . . . . . . . 2.2 Formulace typických úloh LP . . . . . . . . . . . 2.3 Grafické řešenı́ úloh lineárnı́ho programovánı́ . . 2.4 Obecná formulace úlohy lineárnı́ho programovánı́ 2.5 Vlastnosti úlohy lineárnı́ho programovánı́ a jejı́ho 2.6 Simplexová metoda . . . . . . . . . . . . . . . . . 2.6.1 Základnı́ myšlenka simplexové metody . . 2.6.2 Řešenı́ úlohy v simplexové tabulce . . . . 2.6.3 Sestrojenı́ počátečnı́ simplexové tabulky . 2.6.4 Maticový zápis simplexové metody . . . . 2.6.5 Poznámky k simplexové metodě . . . . . 2.7 Dualita . . . . . . . . . . . . . . . . . . . . . . . 2.7.1 Formulace a význam duálnı́ho problému . 2.7.2 Věty o dualitě . . . . . . . . . . . . . . . 2.7.3 Řešenı́ duálnı́ úlohy a jeho interpretace . 2.7.4 Duálně simplexová metoda . . . . . . . . 2.8 Analýza citlivosti . . . . . . . . . . . . . . . . . . 3 Celočı́selné programovánı́ 3.1 Formulace úloh celočı́selného programovánı́ 3.2 Metody celočı́selného programovánı́ . . . . . 3.2.1 Metody sečných nadrovin . . . . . . 3.2.2 Metoda větvı́ a mezı́ . . . . . . . . . . . . . . . . . . . . . . . . . řešenı́ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 6 6 12 13 18 21 21 28 31 37 39 40 41 44 45 49 52 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 57 60 62 65 4 Dynamické programovánı́ 4.1 Vı́ceetapový proces . . . . . . . . . . . . . . . . . . 4.2 Vı́ceetapové rozhodovacı́ procesy . . . . . . . . . . 4.3 Princip optimality a funkcionálnı́ rovnice . . . . . . 4.4 Optimalizace spojitých rozhodovacı́ch procesů . . . 4.5 Optimalizace diskrétnı́ch stochastických procesů . 4.6 Numerické aspekty dynamického programovánı́ . . 4.7 Optimalizace diskrétnı́ch deterministických procesů 4.8 Závěr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 72 75 76 78 80 81 84 87 Literatura . . . . . . . . . . . . 88 ii Kapitola 1 Úvod Operačnı́ výzkum je vědecká disciplina, zabývajı́cı́ se analýzou operacı́ spjatých s řı́zenı́m, fungovánı́m a navrhovánı́m složitých společensko-ekonomicko-technických systémů, tj. organizačnı́ch jednotek, v nichž jsou organicky spjati lidé a technická zařı́zenı́, a v nichž existujı́ ekonomické, sociálnı́, technické, materiálové a psychologické vazby. Jako přı́klad takového systému může sloužit průmyslový podnik, kterýkoliv jeho provoz, systém veřejné dopravy, systém zdravotnı́ch služeb apod. Prvnı́ práce, zabývajı́cı́ se úlohami, metodami a modely, které bychom dnes zařadili do operačnı́ho výzkumu, se vyskytly v roce 1909 a pocházely od dánského matematika Erlanga. Byly zaměřeny na teorii hromadné obsluhy. Na ně navazovaly ve dvacátých letech práce různých autorů, kteřı́ aplikovali matematiku na oblast řı́zenı́ zásob. Ve třicátých letech se začı́ná rozvı́jet matematické programovánı́ jako ucelený soubor optimalizačnı́ch metod, zaměřený na hledánı́ vázaných extrémů funkcı́ vı́ce proměnných (von Neumann (USA) 1937, Kantorovič (SSSR) 1939). Na ně vzápětı́ navazovala tvorba dalšı́ch metod. Mnohé z těchto pracı́ došly uplatněnı́ ve vojenském výzkumu britské armády, který pod vlivem hrozby blı́žı́cı́ho se válečného nebezpečı́ založil Robert Watson-Watt ze skupiny vědců a technologů, zabývajı́cı́ch se rozvojem radaru. Tato skupina poprvé v roce 1940 použila pro svou činnost název Operačnı́ výzkum. Prvnı́ výsledky operačnı́ho výzkumu byly tehdy uplatněny při plánovánı́ britských odvetných náletů na Německo, plánovánı́ protivzdušné obrany Anglie, při výpočtech optimálnı́ho rozdělenı́ ponorkového lod’stva k ochraně lodnı́ch konvojů, optimálnı́ velikosti ochranného doprovodu železničnı́ch transportů, a optimálnı́ho sledu pracı́ při kladenı́ min. Souběžně s tı́m se rozvı́jel operačnı́ výzkum též v USA a v Kanadě, po druhé světové válce i v SSSR. Z universit a vědeckých pracovišt’ těchto států se šı́řil do dalšı́ch zemı́. V poválečném rozvoji byl použı́ván předevšı́m uhelnými, ocelářskými, plynárenskými, elektroenergetickými, železničnı́mi, silničnı́mi a leteckými společnostmi. V současné době se operačnı́ho výzkumu použı́vá napřı́klad i v řı́zenı́ státnı́ správy, k řešenı́ vztahu mezi ekonomickým růstem a kvalitou životnı́ho prostředı́, a při pomoci rozvojovým zemı́m. Dostupnost metod operačnı́ho výzkumu roste zvláště v poslednı́m desetiletı́ s intenzivnı́m zaváděnı́m osobnı́ch počı́tačů, což je spojeno s tvorbou systémů na podporu rozhodovánı́ (viz např. [STEWART 1991]). Ty se napřı́klad v průmyslových podnicı́ch použı́vajı́ při plánovánı́ strategickém i operativnı́m, ve všech fázı́ch projektového řı́zenı́, při řı́zenı́ výrobnı́ch procesů, v prognózovánı́ i při navrhovánı́ organizačnı́ch struktur a informačnı́ch systémů. Operačnı́ výzkum modeluje matematickými prostředky úlohy, vznikajı́cı́ při řı́zenı́ systémů. Použı́vá k tomu systémového přı́stupu a komplexnı́ho týmu specialistů. Nejčastějšı́ složenı́ takového týmu bývá: Vedoucı́ týmu, operačnı́ analytik (tj. specialista na operačnı́ výzkum), matematik (nebo statistik, dle povahy řešeného problému), ekonom, programátor, ekolog (nebo právnı́k), zástupce 1 uživatele, přı́padně též psycholog nebo sociolog. Každá z těchto profesı́ bývá zastoupena potřebným počtem pracovnı́ků. Struktura týmu se může v čase měnit. Každý z členů týmu by měl mı́t alespoň elementárnı́ znalosti z oborů svých kolegů – ostatnı́ch členů týmu – k usnadněnı́ komunikace. Výsledky analýzy operacı́, tj. výsledky činnosti týmu, sloužı́ jako podklad pro rozhodovánı́. Operačnı́ výzkum velmi ovlivnil rozvoj různých jiných disciplin, jako teorie systémů a kybernetiky [ASHBY 1960], [FORRESTER 1961], [WIENER 1961], [ZADEH, POLAK 1969], [ZADEH, DESOER 1963]. Teorie systémů zpětně ovlivnila metodiku operačnı́ho výzkumu. Je to patrno i z toho, že mnoho modelů operačnı́ho výzkumu má charakter optimalizace procesu, probı́hajı́cı́ho na systému, jehož stav se měnı́ v čase. Systém zde chápeme jako celistvou část objektivnı́ reality, která reaguje na vstupy svými výstupy a změnou svého vnitřnı́ho stavu. Napřı́klad je-li systémem strojı́renský podnik, mohou být jako vstupy interpretovány požadavky po výrobcı́ch, výstupy jsou množstvı́ prodaných výrobků jednotlivých druhů. Jako vnitřnı́ stav pak můžeme chápat napřı́klad úroveň zisku podniku. Stejně jako teorie systémů, chápe i operačnı́ výzkum strukturu systému jako množinu jeho prvků a vazeb. Napřı́klad ve struktuře informačnı́ho systému úlohu prvků zastávajı́ mı́sta uloženı́ a transformace informacı́, vazbami jsou informačnı́ vazby mezi těmito mı́sty. Modely operačnı́ho výzkumu jsou systémy, které jsou zjednodušeným obrazem reality. Majı́ matematický charakter – obsahujı́ rovnice, nerovnosti, funkce. Modelovánı́ prostřednictvı́m operačnı́ho výzkumu lze tedy zařadit do matematického modelovánı́. Matematické modely, s nimiž pracuje operačnı́ výzkum, mohou z hlediska způsobu výskytu neurčitých veličin patřit napřı́klad do některé z těchto kategoriı́: a) deterministické modely jsou takové modely, v nichž vystupujı́ pouze deterministické (pevně dané) veličiny a vztahy, b) stochastické modely, v nichž se vyskytuje alespoň jedna veličina, která je náhodnou proměnnou, přičemž rozdělenı́ pravděpodobnosti všech náhodných proměnných v modelu je známé, c) strategické modely (modely s nestochastickými neurčitostmi), v nichž se vyskytuje alespoň jedna veličina, jejı́ž rozdělenı́ pravděpodobnosti nenı́ známé, známe pouze dolnı́ a hornı́ mez jejı́ hodnoty d) adaptivnı́ modely, u nichž o rozdělenı́ pravděpodobnosti některých veličin máme pouze neúplné informace, které se postupně zpřesňujı́ učenı́m se z průběhu reálného procesu [BELLMAN 1967], e) fuzzy modely, v nichž se vyskytujı́ veličiny, jejichž hodnoty jsou tzv. fuzzy množiny nebo prvky fuzzy množin [KAUFMANN 1977]. Mı́rou zhodnocenı́ stupně dosaženı́ cı́le, který systému vytýčil člověk, je v modelech operačnı́ho výzkumu kriteriálnı́ (účelová) funkce. Řešenı́ problému, definovaného na modelu operačnı́ho výzkumu, často spočı́vá v nalezenı́ extrému této funkce. V nejjednoduššı́m přı́padě se jedná o maximalizaci zisku (výnosu) ze systému, nebo o minimalizaci nákladů na systém. Omezujı́cı́ podmı́nky, které musı́ systém při dosahovánı́ cı́le respektovat, jsou v modelech vyjádřeny nejčastěji pomocı́ nerovnostı́ nebo rovnic. Někdy v jediném problému vystupuje současně vı́ce kriteriálnı́ch funkcı́ (vı́cekriteriálnı́ problémy [KLAPKA, PIŇOS 2002]). Napřı́klad v § 2.2 v přı́kladech 2.4 a 2.5 se přesvědčı́me, že na jediném modelu operačnı́ho výzkumu (soustavě matematických vztahů) mohou být definovány i dva nebo vı́ce problémů (úloh) operačnı́ho výzkumu podle toho, kterou veličinu modelu chceme považovat za kriteriálnı́ funkci. 2 Mezi matematické metody, schopné řešit problémy operačnı́ho výzkumu, patřı́ napřı́klad: - Metody klasické matematické analýzy, založené na diferenciálnı́m a integrálnı́m počtu; použı́vajı́ se většinou k řešenı́ problémů malého rozsahu (tj. v nichž je zpracováván malý počet údajů), a k výpočtu mezı́, uvnitř nichž ležı́ řešenı́ problémů velkého rozsahu. - Metody matematického programovánı́ (viz např. kapitoly 2, 3), jejichž vznik byl vyvolán výskytem optimalizačnı́ch problémů velkého rozsahu. - Metody založené na matematické teorii procesů (dynamické programovánı́, viz kap. 4). - Metody založené na teorii her , použı́vajı́cı́ maticové algebry, sloužı́ k řešenı́ konfliktnı́ch situacı́ [MAŇAS 1988]. - Simulačnı́ metody (tzv. metody Monte Carlo), využı́vajı́cı́ generovánı́ náhodných čı́sel k dosaženı́ žádoucı́ho rozdělenı́ pravděpodobnosti vstupnı́ch veličin modelu [LITTLECHILD, SHUTLER 1991]. - Teorie front, generujı́cı́ soubor metod pro tvorbu časových rozvrhů hromadné obsluhy, nebo výrobnı́ch procesů při omezených zdrojı́ch [LITTLECHILD, SHUTLER 1991]. - Metody sı́t’ové analýzy, využı́vajı́cı́ topologie a teorie grafů k tvorbě časových rozvrhů projektů [WALTER, VEJMOLA, FIALA 1989]. - Statistické metody, napřı́klad regresnı́ analýza – provádı́ statistickou analýzu tvaru vzájemné závislosti veličin, korelačnı́ analýza – provádı́ statistickou analýzu významnosti (těsnosti) této závislosti. Pomocı́ těchto metod se obvykle připravujı́ a zpracovávajı́ vstupnı́ údaje pro ostatnı́ zde uvedené metody a hodnotı́ se vlastnosti metod a modelů operačnı́ho výzkumu. Současnými možnostmi realizace paralelnı́ch výpočtů v počı́tačových sı́tı́ch bylo vyvoláno i využı́vánı́ některých modernı́ch matematických přı́stupů, které vznikly na základě studia biologických systémů, jako jsou napřı́klad genetické algoritmy a neuronové sı́tě, k tvorbě metod operačnı́ho výzkumu. Metodologii operačnı́ho výzkumu, vedoucı́ od formulace (strukturovánı́) problému, přes modelovánı́ (tvorbu matematického modelu) k implementaci nalezeného řešenı́, zpracovala řada autorů. Od implementace vede zpětná vazba k formulaci (zpřesněnı́ formulace) problému, přičemž se tento cyklus obvykle několikrát opakuje. Do formulace (věcného) problému operačnı́ho výzkumu kromě jeho identifikace, definice a zhodnocenı́ jeho významu, náležı́ též zjištěnı́, zda se jedná o problém standardnı́, tj. takový, který byl již vyřešen a k jehož řešenı́ je známa metoda, přı́padně i počı́tačový program, nebo nestandardnı́, k jehož řešenı́ metoda dosud nenı́ vytvořena. Kromě toho je třeba klasifikovat jeho typ (napřı́klad problém řı́zenı́ zásob, kdy nás zajı́má, jaké množstvı́ zbožı́ ve kterém okamžiku máme objednat, aby celkové náklady firmy, ovlivněné skladovánı́m, byly minimálnı́; nebo problém, jak předpovědět chovánı́ nějakého systému za daných podmı́nek, atd.). Tvorba matematického modelu zahrnuje převedenı́ věcného problému do matematické formulace. Jsou přitom identifikovány závislé a nezávislé proměnné modelu a relace, popisujı́cı́ jejich vzájemný vztah. Závislé proměnné jsou ty, které závisejı́ na jiných proměnných, vystupujı́cı́ch v modelu. Některé z nich jsou výsledkovými proměnnými, které charakterizujı́ napřı́klad úroveň efektivnosti systému, nebo zisk vyplývajı́cı́ ze systému. Kriteriálnı́ funkce vyjadřuje pomocı́ matematických vztahů výsledkovou proměnnou pomocı́ nezávislých proměnných. Nezávislé proměnné nezávisejı́ na ostatnı́ch proměnných modelu. Některé z nich mohou být řiditelné (nazývajı́ se též rozhodovacı́). Ty popisujı́ prvky modelu, ovlivnitelné řešitelem modelu (napřı́klad úroveň 3 výroby jednotlivých výrobků průmyslového podniku). Ostatnı́ nezávislé proměnné jsou neřiditelné. Jejich hodnotu nemůže řešitel ovlivnit (napřı́klad ceny dodávek zbožı́ nebo kvalitu zeminy při stavebnı́ch pracı́ch). Je-li to nutné, provede se zjednodušenı́ modelu zavedenı́m vhodných předpokladů (napřı́klad předpokladu linearity některých vztahů). Zjednodušenı́ však nesmı́ být takové, aby modelu znemožňovalo reprezentovat ty aspekty reality, které jsou pro řešenı́ problému podstatné. Je-li model sestaven a je-li ověřena jeho logická a věcná správnost, lze na něm definovat jednotlivé matematické problémy a zabývat se otázkami existence a počtu jejich řešenı́ a výběrem metody jejich řešenı́. Řešenı́ matematického problému, definovaného na matematickém modelu, spočı́vá v nalezenı́ takových hodnot rozhodovacı́ch proměnných, které poskytujı́ požadovanou úroveň výsledkových proměnných. S různými typy metod řešenı́ problémů operačnı́ho výzkumu se čtenář seznámı́ v těchto textech. Některá řešenı́ lze napřı́klad vyjádřit ve tvaru matematických vzorců, některá lze zı́skat numericky pomocı́ počı́tače. S tı́m souvisejı́cı́ algoritmizace a tvorba programu samozřejmě odpadá v přı́padě standardnı́ho problému pro jehož řešenı́ je k dispozici standardnı́ program. Po vytvořenı́ metody je třeba uskutečnit jejı́ ověřenı́, při němž se zjistı́, do jaké mı́ry metoda splňuje požadavky, které jsou na ni kladeny. Poté je účelné provést analýzu citlivosti , která sloužı́ ke zjištěnı́ účinků změn nezávislých proměnných modelu na závislé proměnné. Pak následuje interpretace, při nı́ž se popisuje význam doporučeného řešenı́ v terminologii daného věcného problému včetně věcného významu jednotlivých proměnných modelu a jejich hodnot. Při interpretaci je třeba brát v úvahu všechny předpoklady a všechna zjednodušenı́, z nichž se vycházelo při konstrukci modelu. Teprve po provedenı́ interpretačnı́ analýzy lze přikročit k implementaci řešenı́, tj. k jeho využitı́ ve zkoumaném systému. Je třeba si uvědomit, že řešenı́ problému obvykle nenı́ totožné s rozhodnutı́m, ale pouze poskytuje uživateli doporučenı́ k rozhodovánı́. Do implementačnı́ etapy také náležı́ přı́padné zavedenı́ vytvořeného modelu (metody, systému na podporu rozhodovánı́) do užı́vánı́. Implementace může vyžadovat organizačnı́ nebo technologická opatřenı́, která je nutno plánovat již při formulaci problému. A konečně poslednı́m prvkem metodologie operačnı́ho výzkumu je rutinnı́ provoz a údržba modelu (systému na podporu rozhodovánı́). Ukažme si velmi jednoduchý přı́klad matematického modelu a současně i problému operačnı́ho výzkumu: Přı́klad 1.1 Předpokládejme, že náklady na dopravu množstvı́ Q zbožı́ na vzdálenost d jsou dány funkcı́ A + c Q d2 , kde A, c jsou konstanty. Necht’ spotřebitel i (i = 1, 2, . . . , n) se nacházı́ v mı́stě o kartézských souřadnicı́ch (hi , ki ), a necht’ tento spotřebitel přijme za dané obdobı́ množstvı́ Qi tohoto zbožı́. Pak celkové náklady na převezenı́ zbožı́ ze skladu o souřadnicı́ch (H, K) ke všem n spotřebitelům (po přı́mé spojnici) budou z= n X (A + c Qi d2i ) , i=1 kde d2i = (H − hi )2 + (K − ki )2 . Chceme-li tyto náklady minimalizovat, minimalizujeme z vzhledem ke dvěma proměnným H, K. Po dosazenı́ za di obdržı́me X z= A + c Qi [(H − hi )2 + (K − ki )2 ] . Derivujeme-li podle H a podle K a hledáme-li minima, pak dostáváme X X [Qi (H − hi )] = 0; [Qi (K − ki )] = 0 . 4 Tabulka 1.1: Spotřebitel i 1 2 3 4 Jeho souřadnice (hi , ki ) (1; 1) (8; 2) (7; 8) (2; 5) Objednávka Qi 10 7 3 6 Z toho plyne P hi Qi H= P ; Qi P ki Qi K= P . Qi Bude-li tedy sklad zbožı́ umı́stěn v mı́stě o těchto hodnotách souřadnic H, K, pak náklady na rozvoz zbožı́ z tohoto mı́sta ke všem odběratelům s respektovánı́m množstvı́ Qi (i = 1, 2, . . . , n) objednaného zbožı́ budou minimálnı́. Jako přı́klad předpokládejme nynı́, že n = 4, že tedy existujı́ čtyři odběratelé, jak ukazuje tabulka 1.1: Dosadı́me-li nynı́ do rovnic, které jsme výše odvodili, údaje z tabulky 1.1, vidı́me, že sklad zbožı́ by měl být umı́stěn v mı́stě o souřadnicı́ch H = 3, 8; K = 3, 0. Tı́m je úloha vyřešena. Téhož modelu lze použı́t i když počet odběratelů bude roven napřı́klad několika tisı́cům. Umožňuje i zkoumánı́ citlivosti prostorové polohy skladu vůči kolı́sánı́ poptávky. Tato vlastnost je důležitá proto, že jednı́m z požadavků současného operačnı́ho výzkumu je, aby doporučovaná řešenı́ byla dostatečně robustnı́“, tj. stabilnı́ vůči předpokládaným změnám v okolı́. ” Metodám, vhodným k řešenı́ problémů operačnı́ho výzkumu, jsou věnovány tyto učebnı́ texty. Celkový přehled problematiky operačnı́ho výzkumu může čtenář zı́skat v knize [COHEN 1995]. Jeho metodám, zvláště z hlediska jejich využitı́ v ekonomickém řı́zenı́, jsou věnovány knihy [TURBAN, MEREDITH 1991] a [LITTLECHILD, SHUTLER 1991]. O optimalizačnı́ch metodách, které tvořı́ nosnou kostru operačnı́ho výzkumu, podrobně pojednává práce [BOMZE, GROSSMANN 1993]. O využitı́ operačnı́ho výzkumu v řı́zenı́ a plánovánı́ výroby se lze dočı́st v knize [MOORE, PESSEMIER 1993]. O současném stavu teorie a praxe operačnı́ho výzkumu v oblasti manažerského rozhodovánı́ pojednává práce [AHMAD 1992]. 5 Kapitola 2 Lineárnı́ programovánı́ 2.1 Stručná historie Lineárnı́ programovánı́ (LP) se zabývá problémy souvisejı́cı́mi s hledánı́m vázaných extrémů lineárnı́ch funkcı́ vı́ce proměnných, jejichž omezujı́cı́ podmı́nky majı́ tvar lineárnı́ch rovnic a nerovnostı́. Tyto problémy řešil nejprve teoretický fyzik J. B. J. Fourier [FOURIER 1888] v letech 1826-1888 v souvislosti s analytickou mechanikou a teoriı́ pravděpodobnosti. Jeho myšlenky dále rozpracoval Farkas [FARKAS 1902] počátkem 20. stoletı́. Ve třicátých letech našeho stoletı́ byly řešeny kombinatorickým způsobem lineárnı́ optimalizačnı́ problémy v ekonomice, např. přiřazovacı́ problém (König a Egerváry), ve třicátých a čtyřicátých letech dopravnı́ problém (např. [HITCHCOCK 1941]). Rozvoj efektivnı́ch metod LP v jeho nynějšı́ podobě (J. von Neumann 1937, Kantorovič 1939) dovršil G. B. Dantzig ([DANTZIG 1949]), který syntézou myšlenek předchozı́ch autorů, včetně již zmı́něného Fouriera, vytvořil tzv. simplexovou metodu. Poněvadž je to universálnı́ nástroj k řešenı́ problémů LP, popisujeme ji v těchto textech. V současné době neustává snaha o dalšı́ zefektivněnı́ řešenı́ úloh LP (elipsoidová metoda, navazujı́cı́ na práce Chačijanovy 1979), Karmarkarova metoda ([KARMARKAR 1984]). S rozvojem vyššı́ch generacı́ osobnı́ch počı́tačů se zkoumajı́ možnosti využitı́ paralelnı́ch výpočtů při řešenı́ úloh LP (Mangasarian O. L., De Leone R. 1986). Poněvadž největšı́ počet typických aplikacı́ LP se dosud uskutečnil v řešenı́ ekonomických problémů nebo v řešenı́ ekonomických aspektů technických problémů, uvádı́me v dalšı́m několik formulacı́ typických praktických úloh právě z těchto oblastı́, které jsou pro absolventy vysokoškolského inženýrského studia důležité. Lineárnı́ optimalizačnı́ problémy o stejné matematické formulaci se však vyskytujı́ i v ryze technických aplikacı́ch (viz např. práce [PRAGER 1962] z oblasti technické mechaniky, zaměřená na problémy pevnosti), a v matematické statistice (optimálnı́ výběrové šetřenı́ a regresnı́ analýza [PLESNÍK, DUPAČOVÁ, VLACH 1990]). 2.2 Formulace typických úloh LP Přı́klad 2.1 Čokoládovna vyrábı́ 5 druhů výrobků. Jsou to výrobky V1 , V2 , V3 , V4 , V5 . Spotřebovává k tomu 3 základnı́ suroviny: tuk, kakao, cukr. Tyto suroviny jsou k dispozici v omezených množstvı́ch, v uvedeném pořadı́ 1500 kg, 300 kg a 450 kg na 1 den. Kapacita strojnı́ho zařı́zenı́ je dostatečná. Totéž se týká energie a pracovnı́ch sil. I dalšı́ zdroje jsou k dispozici v dostatečném množstvı́. Spotřeba surovin v kilogramech na 1 kg výrobku je dána tabulkou 2.1. Úkolem je stanovit takový dennı́ výrobnı́ program, aby hodnota výroby byla maximálnı́. Odbytové ceny jednotlivých výrobků v uvedeném pořadı́ jsou: 20,-; 120,-; 100,-; 140,-; 40,- Kč/kg. 6 Tabulka 2.1: tuk kakao cukr V1 — 0,05 0,1 V2 0,4 0,2 0,2 V3 0,3 0,1 0,2 V4 0,6 0,1 0,1 V5 0,6 — 0,2 Výrobky jsou vyráběny technologicky nezávisle na sobě navzájem. Výroba se tedy uskutečňuje ve formě pěti výrobnı́ch procesů, které však nejsou navzájem zcela izolované, nebot’ společně spotřebovávajı́ výrobnı́ zdroje, jeden proces na úkor druhého. Pro účely matematické formulace zaved’me 5 nezávisle proměnných: xj . . . množstvı́ výrobku Vj v kg, jež bude vyráběno za den, kde j = 1, 2, . . . , 5. Hledáme tedy nezáporné hodnoty proměnných tem 0, 4x2 + 0, 3x3 + 0, 05x1 + 0, 2x2 + 0, 1x3 + 0, 1x1 + 0, 2x2 + 0, 2x3 + xj ≥ 0 (j = 1, 2, . . . , 5), vyhovujı́cı́ nerovnos0, 6x4 + 0, 6x5 ≤ 1500 0, 1x4 ≤ 300 0, 1x4 + 0, 2x5 ≤ 450 a maximalizujı́cı́ účelovou (kriteriálnı́) funkci z = 20x1 + 120x2 + 100x3 + 140x4 + 40x5 . Optimálnı́ řešenı́ tohoto problému sestává jednak z informace o optimálnı́ch množstvı́ch výrobků, vyhovujı́cı́ch uvedeným podmı́nkám, x1 = 0, x2 = 0, x3 = 1000, x4 = 2000, x5 = 0 , jednak z informace o maximálnı́ hodnotě kriteriálnı́ funkce, která je těmito množstvı́mi výrobků určena, z ∗ = 380 000,- Kč, vyjadřujı́cı́ optimálnı́ hodnotu výroby. Přı́klad 2.2 Necht’ výrobnı́ program čokoládovny z předchozı́ho přı́kladu při nezměněných podmı́nkách musı́ navı́c vyhovovat požadavkům odbytu, které stanovı́, že výrobku V1 musı́ být vyrobeno alespoň 100 kg a výrobku V5 alespoň 200 kg. Pak nezměněná matematická formulace bude navı́c obohacena dvěma nerovnostmi x1 ≥ 100 x5 ≥ 200 . Ostatnı́ nerovnosti i kriteriálnı́ funkce zůstávajı́ stejné, jako u přı́kladu 2.1. Přı́klad 2.3 Motocyklový závod vyrábı́ 3 typy vozidel. Jsou to typy A, B, C. Při stanovenı́ výrobnı́ho programu se musı́ vzı́t v úvahu kapacita šesti provozů, jež je omezena. Kapacita jednotlivých provozů je v tabulce 2.2 udána počtem kusů každého typu, který by provoz mohl vyrobit, kdyby vyráběl pouze vozidla jediného typu: Necht’ dále cena jednoho kusu vozidla cena jednoho kusu vozidla cena jednoho kusu vozidla typu A typu B typu C je je je 4 500,- Kč 4 000,- Kč 6 000,- Kč Je třeba stanovit takový výrobnı́ program, který by přinesl maximálnı́ hodnotu produkce v Kč. 7 Tabulka 2.2: Provoz slévárna úpravna odlitků lisovna montáž typu A montáž typu B montáž typu C Dennı́ kapacita provozu v kusech, vyrábı́-li pouze typ A typ B typ C 100 125 75 150 125 100 125 100 100 75 — — — 80 — — — 80 Pro účely matematické formulace zaved’me 3 nezávisle proměnné: x1 x2 x3 ... ... ... počet kusů vozidel počet kusů vozidel počet kusů vozidel typu A, vyráběných za den typu B, vyráběných za den typu C, vyráběných za den x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, celočı́selné. Pomocı́ tabulky 2.2 sestrojme nynı́ nerovnosti, vyjadřujı́cı́ omezenı́ kapacit jednotlivých provozů. Koeficienty levých stran těchto nerovnostı́ budou vyjadřovat, kolik procent kapacity daného provozu spotřebuje výroba jednoho kusu vozidla daného typu. Dělı́me-li tedy 100% kapacity daného provozu odpovı́dajı́cı́m čı́slem z tabulky 2.2, obdržı́me přı́slušný koeficient levé strany nerovnosti. Napřı́klad koeficient u proměnné x2 v prvnı́ nerovnosti zı́skáme takto: 100% 4 = %, 125 5 což značı́, že výroba jednoho kusu vozidla typu B spotřebuje 4 5 % kapacity slévárny. Řešenı́ matematického modelu tedy spočı́vá v nalezenı́ takových hodnot proměnných x1 , x2 , x3 , splňujı́cı́ch výše uvedené podmı́nky, které vyhovujı́ nerovnostem x1 2 3 x1 4 5 x1 x1 + + + 4 5 x2 4 5 x2 x2 + + + 4 3 x3 x3 x3 x2 x3 ≤ ≤ ≤ ≤ ≤ ≤ 100 100 100 75 80 80 (slévárna) (úpravna odlitků) (lisovna) (montáž typu A) (montáž typu B) (montáž typu C) a které maximalizujı́ funkci z = 4 500x1 + 4 000x2 + 6 000x3 . Přı́klad 2.4 Chemický závod vyrábı́ 4 typy výrobků. Jsou to typy V1 , V2 , V3 , V4 . Zařı́zenı́ Z, které se k jejich výrobě použı́vá, má omezenou kapacitu, která je rovna 1 200 hodinám čtvrtletně. K výrobě těchto výrobků je využı́vána surovina S, jejı́ž kapacita je omezena 1 400 tunami čtvrtletně. Výrobky V1 a V2 jsou polotovary potřebné pro výrobu výrobků V2 , V3 , V4 , mohou však být též samostatně prodávány. Odbytová cena výrobku V1 je 300 Kč/t, odbytová cena výrobku V2 je 600 Kč/t, 8 odbytová cena výrobku V3 je 1 000 Kč/t, odbytová cena výrobku V4 je 3 000 Kč/t. Tabulka 2.3 udává spotřebu strojového času zařı́zenı́ Z v hodinách na jednu tunu výrobku V1 , V2 , V3 , V4 , a spotřebu suroviny S a výrobků V1 a V2 v tunách, vztaženou na jednu tunu výrobků V1 , V2 , V3 , V4 . Tabulka 2.3: V1 1,5 2 — — zařı́zenı́ Z surovina S výrobek V1 výrobek V2 V2 — 1,5 0,5 — V3 2 2 — 0,5 V4 2,5 — 1 2 Formulace matematického modelu: Zaved’me proměnné xi . . . množstvı́ výrobku Vi v tunách, vyrobené za čtvrtletı́, kde i = 1, 2, 3, 4. Zkonstruujme nynı́ 4 omezujı́cı́ podmı́nky ve tvaru nerovnostı́. Prvnı́ dvě vyplývajı́ přı́mo z prvnı́ch dvou řádků tabulky 2.3 a z uvedených kapacitnı́ch omezenı́: 1, 5x1 2x1 + + + 1, 5x2 2x3 2x3 + 2, 5x4 ≤ ≤ 1 200 1 400 Třetı́ nerovnost vyplývá ze skutečnosti, že množstvı́ výrobku V1 , použité k výrobě výrobků V2 a V4 je menšı́ nebo rovno celkovému vyrobenému množstvı́ výrobku V1 . Platı́ tedy 0, 5x2 + x4 ≤ x1 ⇒ −x1 + 0, 5x2 + x4 ≤ 0 . Analogicky čtvrtá nerovnost vyplývá z toho, že množstvı́ výrobku V2 , použité k výrobě výrobků V3 a V4 musı́ být menšı́ nebo rovno celkovému vyrobenému množstvı́ výrobku V2 . To znamená, že 0, 5x3 + 2x4 ≤ x2 ⇒ −x2 + 0, 5x3 + 2x4 ≤ 0 . Kriteriálnı́ funkci z, kterou chceme maximalizovat, sestrojı́me takto: z = 300x01 + 600x02 + 1 000x03 + 3 000x04 , kde x01 , x02 , x03 , x04 jsou ta množstvı́ výrobků V1 , V2 , V3 , V4 v uvedeném pořadı́, chápaných jako finálnı́ výrobky, která za čtvrtletı́ vycházejı́ ze závodu ven. Vzhledem k tabulce 2.3 tedy platı́ x01 x02 x03 x04 = = = = x1 − 0, 5x2 − x4 x2 − 0, 5x3 − 2x4 x3 x4 Je tedy třeba maximalizovat kriteriálnı́ funkci z = 300x1 + 450x2 + 700x3 + 1500x4 9 (2.1) při splněnı́ omezujı́cı́ch podmı́nek 1, 5x1 + 2x3 + 2, 5x4 2x1 + 1, 5x2 + 2x3 −x1 + 0, 5x2 + x4 − x2 + 0, 5x3 + 2x4 ≤ ≤ ≤ ≤ 1 200 1 400 0 0 (2.2) přes všechna x1 ≥ 0, x2 ≥ 0, x3 ≥ 0, x4 ≥ 0 . Toto vyjádřenı́ kriteriálnı́ funkce z lze však zdůvodnit i jiným způsobem: Všimněme si napřı́klad výpočtu koeficientu u proměnné x2 . V každé tuně výrobku V2 je obsaženo 1/2 tuny výrobku V1 . Zisk z jedné tuny výrobku V2 tedy obdržı́me, když od odbytové ceny za 1t výrobku V2 odečteme jednu polovinu ceny jedné tuny výrobku V1 , tedy 600 − 21 · 300 = 450. Analogicky probı́há výpočet koeficientů u proměnných x3 , x4 s přihlédnutı́m k tabulce 2.3. Vidı́me přitom, že oba způsoby vyjádřenı́ kriteriálnı́ funkce z zde vedou ke stejnému výsledku. Přı́klad 2.5 Modifikace téhož problému: Je třeba minimalizovat spotřebu suroviny S a zajistit zisk závodu (hodnotu odbytu) alespoň 540 000,- Kč při ostatnı́ch podmı́nkách nezměněných. Formulace problému pak bude následujı́cı́: Je třeba minimalizovat kriteriálnı́ funkci, vyjadřujı́cı́ spotřebu suroviny S: z = 2x1 + 1, 5x2 + 2x3 → min (tato kriteriálnı́ funkce vznikla ze druhé nerovnosti v (2.2)). Mı́sto druhé nerovnosti v (2.2) bude v tomto modifikovaném problému zařazena nerovnost 300x1 + 450x2 + 700x3 + 1 500x4 ≥ 540 000 . Tato nerovnost vznikla z původnı́ kriteriálnı́ funkce (2.1). Původnı́ druhou nerovnost v (2.2) je možno vypustit, nebot’ existuje-li výrobnı́ program se spotřebou suroviny S nižšı́ než 1 400 t, pak jej nalezneme řešenı́m tohoto minimalizačnı́ho problému. Přı́klad 2.6 formuluje úlohu, která konkretizuje tzv. dopravnı́ problém“: Ze třı́ mlýnů jsou ” zásobovány moukou čtyři pekárny. Kapacity mlýnů jsou 24, 18, 8 t. Požadavky pekáren jsou 10, 14, 16, 10 t. Vzdálenosti od každého mlýna ke každé pekárně jsou dány v kilometrech v tabulce 2.4. Tabulka 2.4: Mlýny 1 2 3 1 35 20 40 Pekárny 2 3 4 85 80 105 35 50 60 55 15 40 Je třeba stanovit dopravnı́ program takový, aby celkový objem dopravy byl minimálnı́. Jednotkou objemu dopravy budou tunokilometry. Necht’ xij je dopravované množstvı́ v tunách z i-tého mlýna do j-té pekárny (i = 1, 2, 3; j = 1, 2, 3, 4). Protože součet kapacit je roven součtu požadavků (50 t), mohou být podmı́nky splněny pouze jako rovnice. Matematický model, odpovı́dajı́cı́ formulovanému problému, je pak následujı́cı́: 10 Hledáme nezáporné hodnoty proměnných x11 , x12 , x13 , x14 , x21 , x22 , x23 , x24 , x31 , x32 , x33 , x34 , vyhovujı́cı́ podmı́nkám x11 +x12 +x13 +x14 x21 +x22 +x23 +x24 x31 +x32 +x33 +x34 x11 +x21 x12 +x31 +x22 x13 +x32 x23 x14 x33 x24 x34 = 24 = 18 =8 = 10 = 14 = 16 = 10 a minimalizujı́cı́ kriteriálnı́ funkci z = 35x11 + 85x12 + 80x13 + 105x14 + 20x21 + 35x22 + +50x23 + 60x24 + 40x31 + 55x32 + 15x33 + 40x34 . Prvnı́ tři rovnice omezujı́cı́ch podmı́nek vyjadřujı́ kapacity mlýnů, poslednı́ čtyři vyjadřujı́ požadavky pekáren. Koeficienty kriteriálnı́ funkce z čteme přitom z tabulky 2.4. Přı́klad 2.7 Služby zřı́zenců jsou na daném nádražı́ osmihodinové s nástupem o půlnoci, ve čtyři hodiny, atd. vždy po čtyřech hodinách. K tomu, aby byl udržen hladký provoz, musı́ být ve službě minimálně tento počet zřı́zenců (viz tabulka 2.5): Tabulka 2.5: Hodiny 0–4 4–8 8 – 12 Počet zřı́zenců 3 8 10 Hodiny 12 – 16 16 – 20 20 – 24 Počet zřı́zenců 8 14 5 Kolik zřı́zenců má nastoupit do služby v každou nástupnı́ dobu, aby nutné služby byly zajištěny s celkově minimálnı́m počtem osob ? K vyřešenı́ tohoto problému označme x1 x2 x3 .. . ... ... ... počet zřı́zenců, kteřı́ nastoupı́ službu počet zřı́zenců, kteřı́ nastoupı́ službu počet zřı́zenců, kteřı́ nastoupı́ službu v ve v 0 hod 4 hod 8 hod x6 ... počet zřı́zenců, kteřı́ nastoupı́ službu ve 20 hod Napřı́klad v hodinách 0 až 4 budou sloužit zřı́zenci, kteřı́ nastoupili ve 20 hodin a zřı́zenci, kteřı́ nastoupili o půlnoci. Hledáme tedy nezáporné celočı́selné hodnoty proměnných xi (i = 1, 2, . . . , 6), vyhovujı́cı́ podmı́nkám x1 +x6 ≥ 3 x1 +x2 ≥ 8 x2 +x3 ≥ 10 x3 +x4 ≥ 8 x4 +x5 ≥ 14 x5 +x6 ≥ 5 11 a minimalizujı́cı́ funkci z = x1 + x2 + x3 + x4 + x5 + x6 . 2.3 Grafické řešenı́ úloh lineárnı́ho programovánı́ Uved’me jednoduché přı́klady, na nichž graficky znázornı́me řešenı́ úloh lineárnı́ho programovánı́. Pro názornost se omezı́me na optimalizaci kriteriálnı́ch funkcı́ dvou proměnných. Přı́klad 2.8 Hledejme minimum funkce z = x1 − x2 na množině nezáporných řešenı́ soustavy 2x1 + x2 ≥ 2 −3x1 + 2x2 ≤ 6 x1 + x2 ≤ 4 . Množinu M řešenı́ této soustavy představuje v souřadnicové rovině pětiúhelnı́k s vrcholy [1,0], [4,0], [ 52 , 18 5 ], [0,3], [0,2] (viz Obr. 2.1). Znázornı́me-li soustavu rovnoběžek x1 − x2 = k pro k reálné, zjistı́me, že funkce z = x1 − x2 nabývá své nejmenšı́ hodnoty na množině M ve vrcholu [ 52 , 18 5 ]. Na jednoduchých přı́kladech lze však ukázat, že množina řešenı́ soustavy lineárnı́ch nerovnostı́ může být i prázdná, jako v přı́padě soustavy 2x1 + x2 ≥ 2 −3x1 + 2x2 ≤ 6 −x1 − x2 ≥ 1 x1 ≥ 0, x2 ≥ 0, nebo může být neomezená a lineárnı́ funkce v nı́ nemusı́ nabývat svého maxima nebo minima. Přı́klad 2.9 Množina M řešenı́ soustavy nerovnostı́ 2x1 + x2 ≥ 2 −3x1 + 2x2 ≤ 6 x1 ≥ 0, x2 ≥ 0, je neomezená (viz Obr.2.2) a lineárnı́ funkce z = x1 − x2 na nı́ konečného maxima ani minima nenabývá. Zato však lineárnı́ funkce z1 = 2x1 − x2 na nı́ nabývá konečného minima −3 v bodě [0,3] a konečného maxima na nı́ nenabývá. Lineárnı́ funkce může nabývat svého minima nebo maxima na množině řešenı́ soustavy lineárnı́ch rovnic a nerovnostı́ i v nespočetně mnoha bodech: Přı́klad 2.10 Na množině řešenı́ soustavy lineárnı́ch nerovnostı́ z přı́kladu 2.8 hledejme maximum lineárnı́ funkce z2 = −3x1 + 2x2 . Z grafického znázorněnı́ na Obr. 2.1 je zřejmé, že z2 nabývá stejné maximálnı́ hodnoty, rovné +6, pro všechna x1 , x2 ve tvaru 2 x1 = λ2 , 5 x2 = 3λ1 + 18 λ2 , 5 kde λ1 ≥ 0, λ2 ≥ 0, λ1 + λ2 = 1. Je to patrno z toho, že jedna hrana množiny M je rovnoběžná s přı́mkami 3x1 − 2x2 = k, kde k je reálné čı́slo. Podobná situace nastává i v úloze maximalizace funkce z2 = −3x1 + 2x2 na množině řešenı́ soustavy lineárnı́ch rovnic a nerovnostı́ z přı́kladu 2.9. 12 Obrázek 2.1: Řešenı́ přı́kladu 2.8 2.4 Obecná formulace úlohy lineárnı́ho programovánı́ Necht’ aij , bi , cj (i = 1, 2, . . . , m; j = 1, 2, . . . , n) jsou daná reálná čı́sla a necht’ I1 ⊂ I = {1, 2, . . . , m}, J1 ⊂ J = {1, 2, . . . , n}. Úlohu maximalizace funkce n X cj xj (2.3) j=1 na množině řešenı́ soustavy lineárnı́ch rovnic a nerovnostı́ n X aij xj ≤ bi (i ∈ I1 ) (2.4) aij xj = bi (i ∈ I − I1 ) (2.5) (j ∈ J1 ) (2.6) j=1 n X j=1 xj ≥ 0 nazveme maximalizačnı́ úlohou lineárnı́ho programovánı́ ve smı́šeném tvaru, jestliže I1 6= ∅, I1 6= I nebo J1 6= J. Úlohu lineárnı́ho programovánı́ (2.3) až (2.6), kde I1 = ∅ a J1 = J, tedy úlohu 13 Obrázek 2.2: Řešenı́ přı́kladu 2.9 maximalizovat n X cj xj j=1 na množině řešenı́ soustavy lineárnı́ch rovnic n X aij xj = bi (i = 1, 2, . . . , m) (2.7) j=1 a nerovnostı́ xj ≥ 0, (j = 1, 2, . . . , n) nazveme maximalizačnı́ úlohou lineárnı́ho programovánı́ v rovnicovém tvaru, a úlohu (2.3) až (2.6), kde I1 = I, J1 = J, tj. úlohu maximalizovat n X j=1 14 cj xj na množině řešenı́ soustavy lineárnı́ch nerovnostı́ n X aij xj ≤ bi (i = 1, 2, . . . , m) (2.8) j=1 xj ≥ 0 (j = 1, 2, . . . , n) nazveme maximalizačnı́ úlohou lineárnı́ho programovánı́ ve tvaru nerovnostı́. Koeficienty aij v uvedených soustavách nerovnostı́ a rovnic nazýváme obvykle strukturálnı́ koeficienty. Koeficienty bi nazýváme kapacitnı́ limity. Poněvadž, jak jsme již viděli v § 2.2, má v některých aplikacı́ch lineárnı́ho programovánı́ koeficient cj (j = 1, 2, . . . , n) význam ceny jednotky j-tého výrobku, bývá často zvykem i v obecné formulaci problémů LP nazývat koeficienty cj cenovými koeficienty, nebo též cenami. Zajı́máme se nejen o existenci a stanovenı́ maximálnı́ hodnoty účelové (kriteriálnı́) funkce na dané množině, ale i o existenci, vlastnosti a výpočet hodnot vektorů xT = (x1 , x2 , . . . , xn ), v nichž maximum nastává. Vzhledem k tomu, že pro libovolnou množinu M ⊂ Rn , kde Rn je n-dimenzionálnı́ vektorový prostor, a libovolnou funkci z : M → R1 platı́ min z(x) = − max (−z(x)), x∈M x∈M pokud jeden z extrémů existuje, lze na některý z uvedených tvarů převést také minimalizačnı́ úlohy lineárnı́ho programovánı́. Přı́padné nerovnosti typu n X aij xj ≥ bi j=1 přitom upravı́me vynásobenı́m čı́slem −1. Každou úlohu lineárnı́ho programovánı́ ve smı́šeném tvaru nebo ve tvaru nerovnostı́ můžeme převést na úlohu v rovnicovém tvaru těmito úpravami: 1. Podmı́nky n X aij xj ≤ bi , i ∈ I1 j=1 a n X aij xj + xn+i = bi , xn+i ≥ 0, i ∈ I1 j=1 vymezujı́ stejnou množinu n-rozměrných vektorů o složkách x1 , x2 , . . . , xn . Zavedeme tedy proměnné xn+i pro všechny nerovnosti (2.4); nazýváme je doplňkové (nebo též přı́datné) proměnné. Doplňkové proměnné majı́ v kriteriálnı́ funkci (2.3) koeficienty cn+i = 0, i ∈ I1 . Doplňkové proměnné lze interpretovat napřı́klad jako rezervu ve zdrojı́ch surovin apod. 2. Každou proměnnou xj pro j 6∈ J1 můžeme zapsat ve tvaru − xj = x+ j − xj , − kde x+ j ≥ 0, xj ≥ 0. Pro j 6∈ J1 dosadı́me za proměnnou xj rozdı́l dvou nezáporných + proměnných xj − x− j do podmı́nek (2.4), (2.5) i do kriteriálnı́ funkce (2.3). I když v tomto − přı́padě nenı́ vztah mezi původnı́ proměnnou xj a proměnnými x+ j , xj vzájemně jednoznačný, nenı́ to na překážku řešenı́ úlohy. 15 Podobně můžeme proměnnou xj v přı́padě I 6= I1 vyjádřit pomocı́ jedné z rovnic (2.5) a toto jejı́ vyjádřenı́ dosadit do všech ostatnı́ch podmı́nek i do účelové funkce. Dostaneme tak úlohu lineárnı́ho programovánı́ s n − 1 proměnnými a m − 1 omezenı́mi (nepočı́táme-li do nich podmı́nky nezápornosti). Přı́pad, kdy jedna z proměnných nenı́ podřı́zena podmı́nce nezápornosti, ilustrujeme na přı́kladě: Přı́klad 2.11 Maximalizovat za podmı́nek x1 + 3x2 + 4x3 x1 + 2x2 + x3 =5 2x1 + 3x2 + x3 =6 x2 ≥ 0, x3 ≥ 0, V tomto přı́padě můžeme postupovat dvěma způsoby: a) Proměnnou x1 , která nenı́ podřı́zena podmı́nce nezápornosti, vyjádřı́me ve tvaru x1 = − + − x+ 1 − x1 , kde x1 ≥ 0, x1 ≥ 0, a dosadı́me. Výsledkem je úloha lineárnı́ho programovánı́ v rovnicovém tvaru: − x+ 1 − x1 + 3x2 + 4x3 maximalizovat za podmı́nek x+ − x− + 2x2 + x3 = 5 1 1 + − 2x1 − 2x1 + 3x2 + x3 = 6 − x+ 1 ≥ 0, x1 ≥ 0, x2 ≥ 0, x3 ≥ 0 b) Proměnnou x1 vyjádřı́me z prvnı́ podmı́nky x1 = 5 − 2x2 − x3 (2.9) a dosadı́me. Dostaneme úlohu maximalizovat x2 + 3x3 + 5 za podmı́nek x2 + x3 = 4 x2 ≥ 0, x3 ≥ 0 kterou lze snadno řešit: maximum nastává pro x2 = 0, x3 = 4. Odpovı́dajı́cı́ hodnotu x1 = 1 vypočteme z (2.9). Úlohu lineárnı́ho programovánı́ ve smı́šeném nebo rovnicovém tvaru můžeme naopak převést na úlohu lineárnı́ho programovánı́ ve tvaru nerovnostı́, a to tı́mto postupem: Každou rovnici tvaru h(x) = α, kde α je reálné čı́slo, lze vyjádřit jako soustavu dvou nerovnostı́ h(x) ≤ α −h(x) ≤ −α Uvedenými úpravami úlohy se většinou zvětšı́ jejı́ dimenze. Budeme se většinou zabývat maximalizačnı́ úlohou lineárnı́ho programovánı́ v rovnicovém tvaru. Uvedeme proto jejı́ různé zápisy: 16 Matici soustavy (2.7) typu (m, n) označme A = (aij ), b = (bi ) je m-složkový sloupcový vektor pravých stran. Dále c = (cj ), x = (xj ) jsou n-složkové sloupcové vektory koeficientů v kriteriálnı́ funkci (2.3) a odpovı́dajı́cı́ch proměnných. Maximalizačnı́ úlohu lineárnı́ho programovánı́ v rovnicovém tvaru zapı́šeme maticově takto: maximalizovat cT x (2.10) za podmı́nek A x = b, x ≥ 0, (2.11) nebo stručněji max{cT x A x = b, x ≥ 0} . Někdy je výhodné použı́t vektorového zápisu: maximalizovat n X (2.12) cj xj (2.13) xj aj = b, (2.14) j=1 za podmı́nek n X j=1 xj ≥ 0, (j = 1, 2, . . . , n) kde aj je j-tý sloupec matice A, tj. a1j aj = ... , amj (j = 1, 2, . . . , n) . Než se budeme zabývat vlastnostmi úlohy lineárnı́ho programovánı́ a jejı́ho řešenı́, definujme přı́pustné a optimálnı́ řešenı́ úlohy. Definice 2.1 Množinu M = {x ∈ Rn Ax = b, x ≥ 0} nazveme množinou přı́pustných řešenı́, jejı́ prvky pak přı́pustnými řešenı́mi úlohy (2.12). Definice 2.2 Přı́pustné řešenı́ x∗ ∈ M nazveme optimálnı́m řešenı́m úlohy (2.12), jestliže c T x∗ ≥ c T x ∀ x∈M. V souvislosti s úlohou lineárnı́ho programovánı́ jsou zajı́mavé napřı́klad tyto dı́lčı́ problémy: 1. Jaká je množina M přı́pustných řešenı́. Kdy je M 6= ∅. 2. Ve kterých bodech množiny M nabývá funkce z = n P cj xj svého maxima. Za jakých j=1 podmı́nek funkce z na množině M nenabývá maxima. 3. Odvodit efektivnı́ způsob, jak na množině M nalézt maximum kriteriálnı́ funkce z a alespoň jeden bod, v němž toto maximum nastává. 17 2.5 Vlastnosti úlohy lineárnı́ho programovánı́ a jejı́ho řešenı́ V dosud uváděných přı́kladech byla množina přı́pustných řešenı́ M vždy průnikem konečného počtu poloprostorů. Názorně je to patrno na obrázcı́ch 2.1 a 2.2 k přı́kladům 2.8 a 2.9. Nynı́ si všimneme vlastnostı́ této množiny i množiny optimálnı́ch řešenı́ úloh lineárnı́ho programovánı́. Tak, jako dosud, využijeme k formalisaci sledovaných vlastnostı́ konečnědimenzionálnı́ vektorový prostor Rn , jehož prvky o složkách x1 , x2 , . . . , xn nazýváme body a chápeme je jako√n-rozměrné sloupcové vektory. Za normu prostoru můžeme použı́t euklidovskou normu kxk = xT x. V dalšı́m uvedeme bez důkazu některé vlastnosti řešenı́ problému lineárnı́ho programovánı́, které poskytuje teorie. Důkazy nalezne čtenář napřı́klad v knize [PLESNÍK, DUPAČOVÁ, VLACH 1990]. Věta 2.1 Množina přı́pustných řešenı́ úlohy lineárnı́ho programovánı́ ve tvaru nerovnostı́ i ve smı́šeném nebo rovnicovém tvaru je konvexnı́ polyedrická množina. Význam tohoto pojmu osvětlı́ nebo připomene následujı́cı́ definice: Definice 2.3 Konvexnı́ polyedrická množina M ⊂ Rn je taková množina, kterou lze vyjádřit jako průnik konečného počtu uzavřených poloprostorů. (Napřı́klad na Obr. 2.1 a Obr. 2.2 jsou tyto poloprostory polorovinami, zobrazujı́cı́mi omezujı́cı́ podmı́nky přı́slušného optimalizačnı́ho problému.) Hraničnı́ množiny těchto poloprostorů se nazývajı́ vytvářejı́cı́ nadroviny množiny M . Napřı́klad na Obr. 2.3 jsou vytvářejı́cı́mi nadrovinami množiny M čtyři přı́mky, definované dvojicemi bodů OA, AB, BC, OC. Konvexnı́ polyedrická množina je speciálnı́m přı́padem konvexnı́ množiny: Definice 2.4 Množinu S ⊂ Rn nazveme konvexnı́ množinou, jestliže pro libovolné dva body x, y ∈ S a pro libovolné α ∈ (0, 1) platı́ αx + (1 − α)y ∈ S Konvexnı́ množina tedy s každými dvěma svými body obsahuje i celou úsečku, která je spojuje. Následujı́cı́ věta charakterizuje vlastnosti optimálnı́ho řešenı́ problému lineárnı́ho programovánı́: Věta 2.2 Množina M ∗ optimálnı́ch řešenı́ úlohy max{cT x A x = b, x ≥ 0} je (rovněž) konvexnı́ polyedrická množina. Přı́klad 2.12 Řešme graficky úlohu (viz Obr. 2.3) Maximalizovat −x1 − x2 za podmı́nek x1 + x2 2x1 + x2 ≥1 ≥ 3 2 x1 ≥ 0, x2 ≥ 0 . Množinou optimálnı́ch řešenı́ je úsečka 1 BC = {x1 , x2 x1 + x2 = 1, ≤ x1 ≤ 1} . 2 18 Maximálnı́ hodnota účelové funkce −x1 − x2 na množině M se rovná −1 pro všechny body úsečky BC. Tato úsečka je tedy konvexnı́ polyedrickou množinou, nebot’ jako každou úsečku ji lze vyjádřit jako průnik dvou polopřı́mek, které jsou speciálnı́mi přı́pady uzavřených poloprostorů o dimenzi 1. Obrázek 2.3: Řešenı́ přı́kladu 2.12 Zaved’me nynı́ pojem krajnı́ho bodu množiny: Definice 2.5 Necht’ S ⊂ Rn je libovolná množina. Bod s ∈ S nazveme krajnı́m bodem množiny S, jestliže neexistujı́ body x, y ∈ S a čı́slo α ∈ (0, 1) tak, že x 6= y a s = αx + (1 − α)y. Otevřená množina zřejmě nemá krajnı́ body. Hraničnı́ bod množiny může nebo nemusı́ být jejı́m krajnı́m bodem. Krajnı́mi body množiny M na Obr. 2.1 jsou všechny vrcholy pětiúhelnı́ka, zobrazujı́cı́ho množinu M . Krajnı́mi body množiny M na Obr. 2.3 jsou body A, B, C. Věta 2.3 Konvexnı́ polyedrická množina má konečný počet krajnı́ch bodů. Definice 2.6 Necht’ M ⊂ Rn je konvexnı́ polyedrická množina a S ⊂ M je neprázdná množina. Jestliže lze S vyjádřit jako průnik množiny M a těch jejı́ch vytvářejı́cı́ch nadrovin, které S obsahujı́, je S stěna množiny M . Definice 2.7 Jednorozměrná stěna se nazývá hrana. Napřı́klad hranami množiny M na Obr. 2.3 jsou úsečky AB, BC, polopřı́mka určená bodem C a kladným směrem osy x1 , a polopřı́mka určená bodem A a kladným směrem osy x2 . Definice 2.8 Necht’ x1 , x2 jsou dva krajnı́ body konvexnı́ polyedrické množiny M . Řekneme, že x1 , x2 jsou sousednı́ krajnı́ body, jestliže ležı́ na téže hraně množiny M . 19 Všimněme si dále speciálnı́ho typu přı́pustného řešenı́ úlohy lineárnı́ho programovánı́. Poněvadž v matici A soustavy (2.7) bývá v praxi často n > m, můžeme v takových přı́padech hodnoty některých složek vektoru x přı́pustného řešenı́ zvolit. Největšı́ho zjednodušenı́ procesu hledánı́ přı́pustného řešenı́ obvykle dosáhneme, když tyto hodnoty položı́me rovny nule. Vzniká pak otázka, kterým složkám vektoru tuto nulovou hodnotu přisoudı́me. Výhodné je zı́skat touto cestou tzv. základnı́ (bázické) řešenı́, které je důležitým nástrojem pro nalezenı́ optimálnı́ho řešenı́. Definice 2.9 Přı́pustné řešenı́ x ∈ M = {x ∈ Rn A x = b, x ≥ 0} nazveme základnı́m řešenı́m úlohy lineárnı́ho programovánı́ v rovnicovém tvaru, jestliže jsou sloupce matice A s indexy odpovı́dajı́cı́mi nenulovým složkám x lineárně nezávislé. Následujı́cı́ věta, která byla odvozena z definic 2.5 a 2.9, vyjadřuje důležitý vztah mezi základnı́mi řešenı́mi a krajnı́mi body: Věta 2.4 Bod x ∈ M = {x ∈ Rn A x = b, x ≥ 0} je krajnı́m bodem množiny M právě tehdy, je-li základnı́m řešenı́m. Z uvedených pojmů a skutečnostı́ vyplývá následujı́cı́ důsledek, platný pro neprázdnou množinu přı́pustných řešenı́, tj. pro přı́pad, kdy soustava omezujı́cı́ch podmı́nek má řešenı́: Důsledek 2.1 Necht’ M = {x ∈ Rn A x = b, x ≥ 0} = 6 ∅. Pak platı́: a) Existuje krajnı́ bod množiny M ; b) Každý krajnı́ bod množiny M má nanejvýš m kladných složek; n c) Množina M má nejvýše krajnı́ch bodů. = n(n−1)(n−2)...(n−m+1) 1.2.3.....m m Nechceme-li se zabývat triviálnı́mi přı́pady, kdy soustava lineárnı́ch algebraických rovnic A x = b nemá vı́ce než jedno řešenı́, nebo kdy obsahuje rovnici závislou na rovnicı́ch zbývajı́cı́ch, budeme předpokládat, že A je matice typu (m, n), kde m < n, a že pro hodnost h(A) matice A platı́ h(A) = m. Než přistoupı́me k formulaci základnı́ věty lineárnı́ho programovánı́, definujme ještě jeden pojem, který se v praxi lineárnı́ho programovánı́ často použı́vá: Definice 2.10 Necht’ h(A) = m. Základnı́ řešenı́ úlohy lineárnı́ho programovánı́ v rovnicovém tvaru nazveme nedegenerované, jestliže má právě m kladných složek (tj. ne méně, tzn. že nemá vı́ce než n − m nulových složek). Řekneme, že úloha lineárnı́ho programovánı́ v rovnicovém tvaru je nedegenerovaná, jsou-li nedegenerovaná všechna jejı́ základnı́ řešenı́. Nenı́-li základnı́ řešenı́ úlohy lineárnı́ho programovánı́ v rovnicovém tvaru nedegenerované, pak řı́káme, že je degenerované. Úloha majı́cı́ takové základnı́ řešenı́ se nazývá degenerovaná. Z vlastnostı́ řešenı́ problému lineárnı́ho programovánı́, které jsme zde uvedli, byla v teorii lineárnı́ho programovánı́ odvozena následujı́cı́ věta, která je jejich zobecněnı́m: Věta 2.5 (Základnı́ věta lineárnı́ho programovánı́) Pro úlohu lineárnı́ho programovánı́ maximalizovat cT x na množině M = {x ∈ Rn Ax = b, x ≥ 0} platı́ jedna za třı́ možnostı́: a) M = ∅ , b) M 6= ∅ ∧ sup cT x = +∞ x∈M (tj. M ∗ = {x∗ ∈ M cT x∗ = max cT x} = ∅), x∈M c) M ∗ 6= ∅. 20 Kromě toho platı́: 1. Je-li M 6= ∅, pak existuje základnı́ přı́pustné řešenı́, 2. Je-li M ∗ 6= ∅, pak existuje základnı́ optimálnı́ řešenı́. Poznámka. Pro optimálnı́ řešenı́ z této věty plyne, že má-li problém lineárnı́ho programovánı́ optimálnı́ řešenı́, pak lze jeho optimálnı́ řešenı́ najı́t mezi základnı́mi řešenı́mi. Uvedené skutečnosti nám nynı́ umožňujı́ zkonstruovat metodu řešenı́ problému lineárnı́ho programovánı́. 2.6 2.6.1 Simplexová metoda Základnı́ myšlenka simplexové metody Tuto metodu odvodil Dantzig s využitı́m myšlenek Jordanovy modifikace Gaussovy eliminačnı́ metody pro řešenı́ soustav lineárnı́ch algebraických rovnic. Lze ji snadno popsat geometricky: Předpokládejme, že známe krajnı́ bod x0 množiny přı́pustných řešenı́ M . Z tohoto krajnı́ho bodu vycházı́ konečné množstvı́ hran množiny M , z nichž každá bud’ obsahuje jediný dalšı́ krajnı́ bod množiny M , nebo je neomezená. Jestliže na některé neomezené hraně existuje bod, pro který je hodnota účelové funkce většı́ než cT x0 , nemá úloha optimálnı́ řešenı́ a postup končı́. V opačném přı́padě hledáme sousednı́ krajnı́ bod, pro který je hodnota kriteriálnı́ funkce většı́ než cT x0 . Necht’ je to krajnı́ bod x1 . Pak stejný postup, který jsme dosud aplikovali na bod x0 , aplikujeme nynı́ na bod x1 . Pokud neexistuje sousednı́ krajnı́ bod s vlastnostı́ cT x > cT x0 , je x0 hledaným optimálnı́m řešenı́m. Popsaný postup v přı́padě nedegenerované úlohy končı́ po konečném počtu kroků bud’ nalezenı́m optimálnı́ho řešenı́, nebo zjištěnı́m, že optimálnı́ řešenı́ neexistuje. Tato vlastnost – finitnost – je zaručena tı́m, že existuje pouze konečné množstvı́ krajnı́ch bodů, které vyšetřujeme v takovém pořadı́, že hodnoty kriteriálnı́ funkce rostou; každý tedy nejvýše jednou. I když lze zkonstruovat přı́klad, kdy se musı́ vyšetřovat všechny krajnı́ body, je jejich počet většinou relativně malý a pohybuje se mezi m a 3m. V § 2.4 jsme ukázali, že každou maximalizačnı́ úlohu lineárnı́ho programovánı́ lze převést na úlohu v rovnicovém tvaru. Algoritmus simplexové metody zkonstruujeme pro speciálnı́ přı́pad úlohy lineárnı́ho programovánı́ v rovnicovém tvaru, kterému budeme řı́kat úloha lineárnı́ho programovánı́ v kanonickém tvaru: Hledejme maximum kriteriálnı́ funkce z = c1 x1 + c2 x2 + · · · + cn xn (2.15) při splněnı́ omezujı́cı́ch podmı́nek (vzájemně lineárně nezávislých) x1 x2 +a1,m+1 xm+1 + · · · + a1,k xk + · · · + a1,n xn +a2,m+1 xm+1 + · · · + a2,k xk + · · · + a2,n xn .. . = b1 = b2 .. . xm +am,m+1 xm+1 + · · · + am,k xk + · · · + am,n xn = bm a při splněnı́ podmı́nek nezápornosti x1 ≥ 0, x2 ≥ 0, . . . , xn ≥ 0 . 21 (2.16) Přitom cj (j = 1, 2, . . . , n), aij (i = 1, 2, . . . , m; j = 1, 2, . . . , n), bi (i = 1, 2, . . . , m) jsou daná reálná čı́sla. Pokud nebude uvedeno jinak, budeme zatı́m předpokládat, že bi ≥ 0 pro všechna i = 1, 2, . . . , m. Připomeňme, že jak vyplývá z § 2.4, lze napřı́klad každou maximalizačnı́ úlohu lineárnı́ho programovánı́ ve tvaru nerovnostı́ převést na kanonický tvar zavedenı́m doplňkových (přı́datných) proměnných. Jiné přı́pady převodu úlohy na kanonický tvar uvedeme později. Dosadı́me-li za každou z proměnných xm+1 , xm+2 , . . . , xn hodnotu rovnou nule, zı́skáme výchozı́ základnı́ řešenı́ xT0 = (b1 , b2 , . . . , bm , 0, 0, . . . , 0) , (2.17) kde poslednı́ch n − m složek tohoto vektoru má hodnotu 0. To je v souladu s definicı́ 2.9, v nı́ž žádáme, aby pro přı́pustné základnı́ řešenı́ byla soustava sloupců ai matice A, odpovı́dajı́cı́ch nenulovým xi , lineárně nezávislá. Právě tehdy lze tyto proměnné eliminovat (vyjádřit pomocı́ pravých stran). Eliminované proměnné v soustavě lineárně nezávislých rovnic Ax = b nazýváme bázické proměnné. Jejich počet je roven m. Ostatnı́ proměnné xi se nazývajı́ nebázické proměnné. Ty jsou zde rovny nule. Hledánı́ optimálnı́ho řešenı́ tedy v přı́padě nedegenerované úlohy proběhne ve formě konečného počtu iteracı́. Každá iterace znamená přechod od jednoho základnı́ho řešenı́, které je ekvivalentnı́ některému krajnı́mu bodu množiny přı́pustných řešenı́, k základnı́mu řešenı́ odpovı́dajı́cı́mu sousednı́mu krajnı́mu bodu, v němž se zvětšuje hodnota kriteriálnı́ funkce. Každá iterace současně znamená takovou transformaci soustavy lineárnı́ch algebraických rovnic (2.16) na ekvivalentnı́ soustavu, která je rovněž v kanonickém tvaru, při nı́ž jedna nebázická proměnná se stane bázickou ( vstoupı́ do báze“), a jedna dosavadnı́ bázická proměnná se stane nebázickou ” ( vystoupı́ z báze“) a anuluje se, takže počet m bázických proměnných zůstává v každé iteraci ” zachován. Jsou-li bázické proměnné x1 , x2 , . . . , xm doplňkovými proměnnými maximalizačnı́ho problému, vyjádřeného původně ve tvaru nerovnostı́, je hodnota kriteriálnı́ funkce (2.15), odpovı́dajı́cı́ výchozı́mu základnı́mu řešenı́ rovna z(x0 ) = 0 · b1 + 0 · b2 + · · · + 0 · bm + cm+1 · 0 + · · · + cn · 0 = 0 . Zatı́mco tedy ve výchozı́m řešenı́ jsou obecně nenulové proměnné u nulových koeficientů a nulové proměnné u nenulových koeficientů, očekáváme, že ve výsledné iteraci bude mı́t co největšı́ hodnotu výraz cm+1 xm+1 + · · · + cn xn . Toto výchozı́ základnı́ řešenı́ je jednı́m přı́pustným řešenı́m našı́ úlohy. Vytvořme nynı́ jiné přı́pustné základnı́ řešenı́: Změňme řešenı́ tak, že za některé dosud nebázické xk mı́sto dosavadnı́ nuly dosadı́me hodnotu λ, pro nı́ž platı́ λ > 0. V této iteraci je tedy index k roven některému z čı́sel m + 1, m + 2, . . . , n. Po této změně dostaneme nový vektor řešenı́, který vyplývá ze soustavy (2.16): xT1 = (b1 − λa1k , b2 − λa2k , . . . , bm − λamk , 0, . . . , 0, λ, 0, . . . , 0) , kde hodnota λ odpovı́dá k-té složce vektoru xT1 . Dosadı́me-li toto řešenı́ do kriteriálnı́ funkce (2.15), dostaneme z(x1 ) = c1 (b1 − λa1k ) + c2 (b2 − λa2k ) + · · · + cm (bm − λamk ) + ck λ . Po jednoduché úpravě dostaneme z(x1 ) = c1 b1 + c2 b2 + · · · + cm bm − λ(c1 a1k + c2 a2k + · · · + cm amk − ck ) = = c1 b1 + c2 b2 + · · · + cm bm + ck λ − c0k λ , kde c0k = c1 a1k + c2 a2k + · · · + cm amk 22 (2.18) Pokud napřı́klad interpretujeme hodnotu xi (i = 1, 2, . . . , n) jako úroveň i-tého procesu“, pro” cesy vztažené k bázickým proměnným jako základnı́ procesy“, a hodnotu kriteriálnı́ funkce z ” (2.15) jako zisk z procesů x1 , x2 , . . . , xn při splněnı́ omezujı́cı́ch podmı́nek (2.16), které můžeme interpretovat jako zdrojová omezenı́“, pak ck je zvýšenı́ zisku způsobené zavedenı́m jednotkové ” úrovně procesu xk . Současně c0k je snı́ženı́ zisku ze základnı́ch procesů (tj. v této prvnı́ iteraci z procesů x1 , x2 , . . . , xm ), způsobené tı́mto zavedenı́m, při dodrženı́ zdrojových omezenı́. Celkový přı́růstek kriteriálnı́ funkce, způsobený zvýšenı́m hodnoty původně nebázické proměnné xk o λ, při respektovánı́ zdrojových omezenı́, je roven z(x1 ) − z(x0 ) = −λ∆k , (2.19) ∆k = c0k − ck (2.20) kde je úbytek kriteriálnı́ funkce z, způsobený zvýšenı́m hodnoty proměnné xk z 0 na 1 při respektovánı́ omezujı́cı́ch podmı́nek. Pokud je úbytek záporný, má samozřejmě význam přı́růstku. Podle hodnoty veličiny ∆k snadno zjistı́me, které nebázické proměnné by bylo účelné zvýšit hodnotu, abychom při respektovánı́ zdrojových omezenı́ zvýšili hodnotu kriteriálnı́ funkce. Uvažujeme-li o zařazenı́ do báze u proměnné xk , pak vzhledem k tomu, že λ > 0, pro potenciálnı́ přı́růstek kriteriálnı́ funkce platı́: z(x1 ) − z(x0 ) > 0, je − li ∆k < 0 z(x1 ) − z(x0 ) = 0, je − li ∆k = 0 z(x1 ) − z(x0 ) < 0, je − li ∆k > 0 (2.21) Vztah (2.21) bývá označován jako kriterium optimality. Je z toho patrno, že v přı́padě řešenı́ maximalizačnı́ho problému je x0 optimálnı́m řešenı́m právě tehdy, když platı́ ∆j ≥ 0 pro kterékoliv j = 1, 2, . . . , n. Výběrem jiného bázického řešenı́ x1 by se hodnota kriteriálnı́ funkce nezlepšila, nebot’ dle (2.21) by pro každé k = 1, 2, . . . , n platilo z(x1 ) − z(x0 ) ≤ 0. Znamená to, že již nelze nalézt proměnnou xk , jejı́ž zařazenı́ do bázického řešenı́ by zvýšilo hodnotu kriteriálnı́ funkce. Naopak, minimalizačnı́ úloha má optimálnı́ řešenı́ právě tehdy, platı́-li ∆j ≤ 0 pro všechna j = 1, 2, . . . , n. Dále se zabývejme pouze maximalizačnı́m problémem. Jestliže pro některé j platı́ ∆j < 0, pak tı́m, že zařadı́me proměnnou xj do základnı́ho řešenı́, dosáhneme zvýšenı́ hodnoty kriteriálnı́ funkce. Intuice nám řı́ká, že chceme-li k optimu dojı́t co nejrychleji, je asi vhodné jako novou bázickou proměnnou vybrat tu, pro kterou je záporná hodnota ∆j nejmenšı́. Proměnná takto vybraná se obvykle nazývá vstupujı́cı́ proměnná. Vstupujı́cı́ proměnnou xk určı́me tedy podle vztahu min j=1,2,...,n ∆j = ∆k (2.22) za podmı́nky, že ∆k je záporné. k-tý sloupec matice strukturálnı́ch koeficientů A, jehož index je roven indexu vstupujı́cı́ proměnné, nazýváme klı́čový sloupec. Přı́klad 2.13 Firma vyrábı́ dva druhy výrobků, oba majı́ stejnou prodejnı́ cenu za 1 kg. K jejich výrobě se užı́vá dvou zdrojů: Zdroj A je k disposici v omezeném dennı́m množstvı́ 24 kg, zdroj B je k disposici v omezeném dennı́m množstvı́ 12 kg. K výrobě 1 kg prvnı́ho výrobku je zapotřebı́ 4 kg zdroje A a 4 kg zdroje B. K výrobě 1 kg druhého výrobku je zapotřebı́ 6 kg zdroje A a 2 kg zdroje B. Hledáme optimálnı́ dennı́ plán výroby obou výrobků, který by maximalizoval dennı́ výtěžek z prodeje obou výrobků. 23 Matematická formulace: Nalezněte max {x1 + x2 } za podmı́nek 4x1 + 6x2 ≤ 24 , 4x1 + 2x2 ≤ 12 , x1 ≥ 0 x2 ≥ 0 . Převed’me soustavu nerovnostı́ zavedenı́m nových doplňkových proměnných x3 , x4 na rovnice (tj. na kanonický tvar): x1 ≥ 0, x3 + 4x1 + 6x2 = 24 (2.23) x4 + 4x1 + 2x2 = 12 (2.24) x2 ≥ 0, x3 ≥ 0, x4 ≥ 0 Kriteriálnı́ funkce má tvar z = c3 x3 + c4 x4 + c1 x1 + c2 x2 , kde c1 = 1, c2 = 1, c3 = 0, c4 = 0. Vyjdeme ze základnı́ho řešenı́ x3 = 24, x4 = 12, x1 = 0, x2 = 0 . Vypočteme nynı́ výraz ∆j = c0j − cj pro obě nebázické proměnné (tj. chceme za vstupnı́ proměnnou zvolit x1 nebo x2 ) a dostaneme: ∆1 = ∆2 = c01 − c1 c02 − c2 =0·4+0·4−1 =0·6+0·2−1 = −1 = −1 Vzhledem k tomu, že jde o maximalizačnı́ úlohu, vidı́me, že řešenı́ nenı́ optimálnı́, nebot’ hodnoty ∆1 , ∆2 jsou záporné. Zlepšenı́ lze dosáhnout zařazenı́m proměnné x1 nebo x2 do báze. V našem přı́padě můžeme dát přednost kterékoliv z těchto dvou proměnných, nebot’ zde platı́ ∆1 = ∆2 . Zvolme tedy x1 . V řešenı́ přı́kladu budeme pokračovat v rámci přı́kladu 2.14 poté, co provedeme dalšı́ výklad postupu simplexové metody. Nedospějeme-li v dané iteraci k optimálnı́mu řešenı́, vybereme podle (2.22) vhodnou proměnnou do nového základnı́ho řešenı́. Dále je třeba vybrat proměnnou, kterou ze základnı́ho řešenı́ vyřadı́me, a určit hodnotu nové bázické proměnné. Všimněme si nového základnı́ho řešenı́ pro přı́pad, že za proměnnou xk dosadı́me hodnotu λ > 0. Původnı́ bázické proměnné v (2.16) nabývajı́ pak hodnot x1 = b1 − λa1,k , x2 = b2 − λa2,k , . . . , xm = bm − λam,k . Poněvadž nechceme porušit podmı́nky nezápornosti, je třeba, aby platilo b1 − λa1,k b2 − λa2,k ≥ 0 ≥ 0 .. . (2.25) bm − λam,k ≥ 0 . Vzhledem k tomu, že (b1 , b2 , . . . , bm )T ≥ 0T , je v přı́padě, že všechna aik ≤ 0, omezenı́ (2.25) splněno pro libovolné λ > 0. Znamená to, že za xk můžeme dosadit hodnotu rostoucı́ nade všechny meze. Je-li však aik > 0, dostaneme úpravou (2.25) λ≤ bi aik (i = 1, 2, . . . , m; 24 aik > 0) . (2.26) Nechceme-li tedy porušit podmı́nky nezápornosti, nesmı́ veličina λ (tj. hodnota proměnné, nově zaváděné do báze) překročit hodnotu tohoto podı́lu. Aby to platilo pro všechna i, musı́ to platit i pro takové i, pro něž je bi /aik minimálnı́. Při transformaci řešenı́ nesmı́ hodnota λ překročit minimálnı́ z kladných podı́lů bi /aik , takže λ ≤ min i bl bi = aik alk (2.27) pro aik > 0, i ∈ {1, 2, . . . , m}. Vybereme-li za hodnotu vstupujı́cı́ proměnné xk právě λ= bl , alk (2.28) pak ta bázická proměnná, jejı́ž strukturálnı́ koeficient v l-tém řádku je nenulový a roven jedné, nabývá hodnoty nulové a tedy přestává být bázickou proměnnou, nebot’ podle vztahů před (2.25) platı́ bl xl = bl − alk = 0 . (2.29) alk Jejı́ původnı́ hodnota, rovná bl , se tedy anulovala. Proměnnou xl považujeme proto za vyloučenou ze základnı́ho řešenı́ a nazýváme ji proměnnou vystupujı́cı́. V základnı́m řešenı́ tuto proměnnou nahradı́me vstupujı́cı́ proměnnou xk . l-tý řádek matice strukturálnı́ch koeficientů A a vektoru kapacitnı́ch limitů b, který jsme vybrali minimalizacı́ dle (2.27), nazýváme klı́čový řádek . k-tý sloupec a l-tý řádek definujı́ tzv. klı́čový prvek alk , který je důležitým činitelem při transformaci soustavy rovnic (2.16) na ekvivalentnı́ soustavu s cı́lem přechodu k lepšı́mu základnı́mu řešenı́. Transformaci provedeme tak, aby tato ekvivalentnı́ soustava byla rovněž v kanonickém tvaru, tj. aby po anulovánı́ nebázických proměnných byla každá bázická proměnná přı́mo vyjádřena pomocı́ pravé strany soustavy rovnic. Vzhledem k tomu, že pořadı́ sčı́tanců na levé straně rovnic (2.16) je libovolně zaměnitelné, je patrno, že bázické proměnné po transformaci soustavy nemusı́ být umı́stěny v prvnı́ch m sloupcı́ch matice A tak, jak je tomu ve speciálnı́m přı́padě ve vztahu (2.16), ale mohou být umı́stěny v libovolných m sloupcı́ch matice A. Můžeme pak řı́ci, že bázická proměnná xli (i = 1, 2, . . . , m) přı́slušı́ li -tému sloupci matice A, jestliže vyjádřenı́ jejı́ hodnoty pomocı́ pravé strany, tj. xli = bi , je umožněno rovnicı́, která vznikne z i-tého řádku vztahu Ax = b. Řı́káme proto, že bázická proměnná xli přı́slušı́ i-tému řádku a li -tému sloupci soustavy Ax = b. Přı́klad 2.14 Pokračujme v řešenı́ přı́kladu 2.13. Jako klı́čový sloupec jsme zvolili sloupec č. 1. Hledáme-li nejvyššı́ možnou hodnotu λ proměnné x1 , která má vstoupit do báze, vypočteme podı́ly 24 b1 = = 6; a11 4 b2 12 = = 3. a21 4 Minimum z kladných podı́lů určuje hornı́ mez nové hodnoty proměnné x1 = λ ≤ min{6; 3} = 3. Zvolı́me proto λ = x1 = 3. Původnı́ bázické proměnné byly x3 , x4 . Nynı́ vstupuje do báze proměnná x1 a proto musı́ jedna z obou dosavadnı́ch bázických proměnných vystoupit z báze, aby celkový počet bázických proměnných zůstal nezměněn, tedy aby zůstal roven počtu lineárně nezávislých rovnic, vyjadřujı́cı́ch omezujı́cı́ podmı́nky, v tomto přı́padě m = 2. Ze vztahu (2.29) a dalšı́ho výkladu vyplývá, že z báze vystupuje ta bázická proměnná, která je násobena nenulovým P strukturálnı́m koeficientem v rovnici nj=1 alj xj = bl , odpovı́dajı́cı́ klı́čovému řádku matice A. V tomto přı́padě jsme zvolili klı́čový sloupec č. 1 a klı́čový řádek č. 2, tedy klı́čový prvek matice A je a21 = 4. Proto z báze musı́ vystoupit proměnná x4 . Očekáváme proto, že po transformaci budou bázickými proměnnými x1 , x3 . Proved’me tedy takovou transformaci soustavy (2.23), 25 (2.24) na ekvivalentnı́ tvar, která by tuto změnu báze uskutečnila. Transformovaná soustava necht’ vznikne takto: Bude to soustava (2.30), (2.31), ve které rovnice (2.30) vznikne odečtenı́m rovnice (2.24) od rovnice (2.23), kdežto rovnice (2.31) vznikne násobenı́m rovnice (2.24) čı́slem 1/4: x3 − x4 + 4x2 = 12 1 1 x4 + x1 + x2 = 3 4 2 (2.30) (2.31) Řešenı́ ekvivalentnı́ soustavy (2.30), (2.31) při zachovánı́ podmı́nek nezápornosti proměnných je samozřejmě i řešenı́m původnı́ soustavy (2.23), (2.24) rovněž při zachovánı́ podmı́nek nezápornosti proměnných. Transformaci jsme provedli proto, abychom uměli vyjádřit základnı́ řešenı́, které je lepšı́ než původnı́ základnı́ řešenı́, jehož kriteriálnı́ funkce byla rovna x1 + x2 = 0. V transformované soustavě (2.30), (2.31) položı́me rovnými nule nebázické proměnné x2 , x4 . Odtud ihned dostáváme x1 = 3, x3 = 12. Hodnota kriteriálnı́ funkce se zvýšila, nebot’ nynı́ je x1 + x2 = 3 + 0 = 3. Aplikacı́ kriteria optimality nynı́ zjišt’ujeme , zda toto řešenı́ je optimálnı́, nebo zda je možno je dále zlepšit. Vypočteme ∆1 = 0, ∆2 = − 12 , ∆3 = 0, ∆4 = 14 . Poněvadž ∆2 je záporné, dosud zı́skané řešenı́ nenı́ optimálnı́. Klı́čovým prvkem soustavy (2.30), (2.31) je a12 = 4. Dalšı́ transformacı́ tedy vstoupı́ do báze proměnná x2 a vystoupı́ z nı́ x3 , nebot’ je bázickou proměnnou, explicitně vyjádřitelnou klı́čovým řádkem. Transformacı́, analogickou jako v předchozı́ iteraci, obdržı́me ekvivalentnı́ soustavu x2 + 41 x3 − 14 x4 = 3 − 18 x3 + 38 x4 = 1, 5 x1 s bázickými proměnnými x1 , x2 . Položı́me-li nebázické proměnné jako obvykle rovny nule, zı́skáme řešenı́ x1 = 1, 5; x2 = 3, takže hodnota kriteriálnı́ funkce x1 + x2 = 1, 5 + 3 = 4, 5 . Poněvadž ∆1 = 0, ∆2 = 0, ∆3 = 14 − 18 = 18 , ∆4 = − 14 + 38 = 18 , platı́ ∆j ≥ 0 pro všechna j = 1, 2, 3, 4, takže zı́skané řešenı́ je optimálnı́. Optimálnı́ dennı́ plán výroby tedy spočı́vá v tom, že budeme denně vyrábět 1,5 kg prvnı́ho výrobku a 3 kg druhého výrobku. Tı́m je přı́klad vyřešen. Zobecněme nynı́ dosavadnı́ úvahy. Simplexová metoda řešenı́ problému max{cT xAx = b, x ≥ 0} sestává z konstruovánı́ konečné posloupnosti simplexových“ iteracı́. Počátečnı́ (prvnı́) sim” plexová iterace pracuje s rovnicı́ Ax = b ve tvaru (2.16). Označı́me-li tento tvar vztahem A(1) x = b(1) se zřejmým významem symbolů, pak s-tá simplexová iterace (s = 2, 3, . . . ) pracuje se soustavou A(s) x = b(s) ekvivalentnı́ soustavě (2.16) v tom smyslu, že má stejnou množinu přı́pustných řešenı́, jako soustava (2.16). Jestliže soustavu lineárnı́ch algebraických rovnic A(s) x = b(s) , kde (s) (s) (s) (s) a11 a12 . . . a1n b (s) 1(s) (s) (s) a21 a22 . . . a2n b , b(s) = 2. (2.32) A(s) = .. . . . (s) (s) am1 am2 . . . (s) amn (s) bm transformujeme tak, že libovolný jejı́ řádek násobı́me libovolnou nenulovou reálnou konstantou, nebo libovolný jejı́ řádek upravı́me tak, že k němu přičteme kterýkoliv jiný řádek této soustavy, 26 násobený libovolnou reálnou konstantou, přı́padně provedeme libovolné množstvı́ úprav tohoto druhu v libovolném pořadı́, pak podle teorie lineárnı́ch algebraických rovnic obdržı́me touto transformacı́ ekvivalentnı́ soustavu A(s+1) x = b(s+1) . Vycházejı́ce z s-té simplexové iterace (s = 1, 2, . . . ) v kanonickém tvaru, použijeme takovou transformaci soustavy A(s) x = b(s) , která zajišt’uje, že transformovaná soustava A(s+1) x = (s) b(s+1) bude rovněž v kanonickém tvaru. K tomu využijeme klı́čového prvku alk . Klı́čový řádek matice (A|b) tvořené strukturálnı́mi koeficienty a prvky vektoru kapacitnı́ch limitů transformujeme pomocı́ vztahů (s+1) alj (s) (s) = alj /alk , (j = 1, 2, . . . , n; i = l) (2.33) (s+1) bl = (s) (s) bl /alk (i = l) . Neklı́čové řádky transformujeme pomocı́ vztahů (s+1) aij (s) (s) (s) (s) = aij − alj aik /alk (i = 1, 2, . . . , m; i 6= l; j = 1, 2, . . . , n) (2.34) (s+1) bi = (s) bi − (s) (s) (s) bl aik /alk (i = 1, 2, . . . , m; i 6= l) . (s) Vidı́me, že klı́čový řádek soustavy při této transformaci upravı́me násobenı́m konstantou 1/alk , kdežto každý neklı́čový řádek upravı́me tak, že k němu přičteme klı́čový řádek, násobený kon(s) (s) stantou − aik alk . Protože tyto vlastnosti transformace odpovı́dajı́ zásadám ekvivalence, je transformovaná soustava A(s+1) x = b(s+1) ekvivalentnı́ soustavě A(s) x = b(s) . Hodnoty bázických proměnných v základnı́m řešenı́ odpovı́dajı́cı́ s-té simplexové iteraci jsou (s) xli = bi (i = 1, 2, . . . , m) (2.35) (viz text konce odstavce před Přı́kladem 2.14). Z definice kriteriálnı́ funkce pak plyne jejı́ hodnota pro tuto iteraci, rovná m X (s) z (s) = (2.36) cli bi , i=1 nebot’ hodnoty n − m nebázických proměnných jsou rovny nule. Existuje-li optimálnı́ hodnota z ∗ této kriteriálnı́ funkce, lze z (s) chápat jako s-tou aproximaci této optimálnı́ hodnoty. Abychom mohli kriterium optimality (2.21), v němž ∆k je definováno v (2.20), použı́t v kterékoliv simplexové iteraci ke zjištěnı́, zda jsme již dosáhli optimálnı́ho řešenı́ z (s) = z ∗ , nebo zda má následovat dalšı́ iterace se změnou báze, musı́me zobecnit definičnı́ vztah pro c0k , který je v (2.18) uveden ve tvaru vhodném pouze pro potřeby prvnı́ iterace, v nı́ž bázické proměnné jsou umı́stěny ve sloupcı́ch 1, 2, . . . , m. V obecném přı́padě musı́ platit c0k = cl1 a1k + cl2 a2k + · · · + clm amk , (2.37) kde cli je koeficient kriteriálnı́ funkce u bázické proměnné xli , která přı́slušı́ li -tému sloupci matice A (i = 1, 2, . . . , m). Takto stanovené c0k dosadı́me do (2.20) při výpočtu hodnoty ∆k , která je rozhodujı́cı́ při aplikaci kriteria optimality (2.21). Se znalostı́ základnı́ myšlenky simplexové metody můžeme nynı́ přistoupit k popisu jejı́ho využitı́ v tabulkové formě k řešenı́ lineárnı́ho optimalizačnı́ho problému. 27 2.6.2 Řešenı́ úlohy v simplexové tabulce Každou simplexovou iteraci vyjádřı́me pomocı́ tabulky, která se běžně nazývá simplexová tabulka. Jejı́mi vstupnı́mi údaji jsou strukturálnı́ koeficienty aij (i = 1, 2, . . . , m; j = 1, 2, . . . , n), kapacitnı́ limity bi (i = 1, 2, . . . , m) a koeficienty kriteriálnı́ funkce cj (j = 1, 2, . . . , n). Z těchto údajů se v tabulce vypočtou hodnoty ∆j (j = 1, 2, . . . , n) ze vztahů (2.20), (2.37), které jsou kriteriem pro stanovenı́ klı́čového sloupce k a pro přı́padné zastavenı́ (ukončenı́) iteračnı́ho procesu. Připomeňme, že ∆j je potenciálnı́ úbytek kriteriálnı́ funkce, způsobený vzrůstem hodnoty proměnné xj o 1 (pokud tento vzrůst je umožněn danými omezujı́cı́mi podmı́nkami úlohy). Dále se v tabulce vypočtou poměry bi aik (i = 1, 2, . . . , m) potřebné ke stanovenı́ klı́čového řádku. Může se zde vypočı́st hodnota kriteriálnı́ funkce ze vztahu (2.36). Jejı́ výpočet je nutný v přı́padě poslednı́ simplexové tabulky, má-li úloha řešenı́, čı́mž zı́skáme optimálnı́ hodnotu kriteriálnı́ funkce. Simplexová tabulka pro s-tou simplexovou iteraci má formálnı́ uspořádánı́ popsané v tab.2.6. Formálnı́mi záhlavı́mi v této tabulce jsou: B . . . záhlavı́ sloupce indexů li bázických proměnných xli , cB . . . koeficienty u bázických proměnných v kriteriálnı́ funkci, xi (i = 1, 2, . . . , n) . . . označenı́ proměnných, (s) (s) (s) (s) bi , bi aik , ∆j se zřejmým významem symbolů, bude v běžném záhlavı́ psáno zjednodušeně jako b, b/a, ∆j . Tabulka 2.6: B cB x1 c1 l1 cl1 a11 (s) l2 .. . cl2 .. . a21 .. . (s) lm clm am1 (s) (s) ∆j (s) ∆1 x2 c2 (s) bi (s) b1 (s) b2 .. . bm (s) (s) (s) bm amk z (s) — ... ... xn cn a12 (s) ... a1n (s) b1 a22 (s) ... a2n (s) b2 .. . am2 (s) ... amn (s) (s) ... ∆n ∆2 (s) bi (s) (s) aik (s) (s) a1k (s) (s) a2k Ostatnı́ položky v tabulce se vypisujı́ čı́selně. Pokud bychom chtěli zápis simplexové metody učinit zcela rigorosnı́m, museli bychom v něm vyjádřit i skutečnost, že index li bázické proměnné přı́slušné k i-tému řádku simplexové tabulky je též funkcı́ simplexové iterace s. Měli bychom tedy (s) tuto veličinu správně psát li . Poněvadž je však sama též indexem, mohl by tento způsob zápisu při některé velikosti pı́sma komplikovat srozumitelnost tištěného textu, a proto zde budeme závislost na s brát pouze implicitně v úvahu. Přı́klad 2.15 Nalezněme max z, kde z = 3x1 + 2x2 , za podmı́nek x1 −x2 ≤ 1 x1 +x2 ≤ 3 2x1 +x2 ≤ 5 28 (2.38) x1 ≥ 0, x2 ≥ 0 . Soustavu nerovnostı́ upravı́me na kanonický tvar zavedenı́m doplňkových proměnných x3 , x4 , x5 (x3 ≥ 0, x4 ≥ 0, x5 ≥ 0): x1 − x2 x1 + x2 2x1 + x2 +x3 +x4 =1 =3 +x5 = 5 z = 3x1 +2x2 +0 · x3 +0 · x4 +0 · x5 takže c1 = 3, c2 = 2, c3 = 0, c4 = 0, c5 = 0, n = 5, m = 3. Tabulka 2.7: B cB x1 x2 x3 x4 x5 3 2 0 0 0 b b/a 3 0 1 −1 1 0 0 1 1 4 0 1 1 0 1 0 3 3 5 0 2 1 0 0 1 5 2, 5 −3 −2 0 0 0 0 — ∆j Prvnı́ simplexová tabulka se nacházı́ v tab.2.7. Poznamenejme, že prvnı́ dva sloupce (B, cB ) simplexové tabulky vyplňujeme až po vyplněnı́ hornı́ho řádku s koeficienty kriteriálnı́ funkce cj (j = 1, 2, . . . , n), matice strukturálnı́ch koeficientů aij (i = 1, 2, . . . , m; j = 1, 2, . . . , n) a vektoru pravých stran bi (i = 1, 2, . . . , m). Pohledem na matici strukturálnı́ch koeficientů v tabulce identifikujeme bázické proměnné podle tohoto pravidla: Bázická proměnná je proměnná přı́slušná k tomu sloupci strukturálnı́ch koeficientů, jehož jeden prvek je roven jedničce, a jehož všechny ostatnı́ prvky jsou rovny nule. Ve sloupci B do jeho řádku, odpovı́dajı́cı́ho této jedničce, zapı́šeme index li této bázické proměnné xli . V sousednı́m sloupci cB do téhož řádku zapı́šeme koeficient cli , který je u této proměnné v kriteriálnı́ funkci (opı́šeme jej z hornı́ho řádku cj (j = 1, 2, . . . , n) ze sloupce, obsahujı́cı́ho tuto jedničku). Toto provedeme pro každou bázickou proměnnou, jichž je v tabulce m. Po vyplněnı́ sloupců B, cB vypočteme a vyplnı́me prvky řádku ∆j (z nich můžeme zjistit, zda tato tabulka je nebo nenı́ poslednı́) a prvky sloupce bi aik . Po stanovenı́ klı́čového prvku provedeme transformaci prvků aij , bi (i = 1, 2, . . . , m; j = 1, 2, . . . , n) pomocı́ vztahů (2.33), (2.34). Transformované prvky zapı́šeme do nové tabulky, ve které budou v řádku cj (j = 1, 2, . . . , n) stejné koeficienty jako u tabulky dosavadnı́. Z tabulky 2.7 vyplývá: Bázické proměnné x3 = 1, x4 = 3, x5 = 5; nebázické proměnné x1 = 0, x2 = 0, klı́čový prvek a11 = 1, hodnota kriteriálnı́ funkce z (1) = 0. Ze druhé simplexové tabulky (viz tab.2.8) vyplývá: Bázické proměnné x1 = 1, x4 = 2, x5 = 3; nebázické proměnné x2 = 0, x3 = 0, klı́čový prvek a22 = 2, hodnota kriteriálnı́ funkce z (2) = 3. Třetı́ simplexovou tabulku najdeme v tab.2.9. Poněvadž v této tabulce je ∆j ≥ 0 pro j = 1, 2, . . . , 5, dosáhli jsme optimálnı́ho řešenı́. Nemusı́me proto určovat klı́čový prvek a v souvislosti 29 Tabulka 2.8: B cB x1 x2 x3 x4 x5 b b/a 3 2 0 0 0 1 0 0 1 — 1 3 1 −1 4 0 0 2 −1 1 0 2 1 5 0 0 3 −2 0 1 3 1 0 −5 3 0 0 3 — b ∆j Tabulka 2.9: B cB x1 x2 x3 x4 x5 3 2 0 0 0 1 3 1 0 0, 5 0, 5 0 2 2 2 0 1 −0, 5 0, 5 0 1 5 0 0 0 −0, 5 −1, 5 1 0 0 0 0, 5 2, 5 0 8 ∆j s tı́m odpadá i konstrukce sloupce bi aik . Bázické proměnné jsou x∗1 = 2, x∗2 = 1, x∗5 = 0; nebázické proměnné jsou x∗3 = 0, x∗4 = 0. Těmito hodnotami proměnných je dáno optimálnı́ řešenı́ přı́kladu 2.15. Z nich nás předevšı́m zajı́má, že x∗1 = 2, x∗2 = 1. Hodnoty doplňkových proměnných, které jsou všechny nulové, nás informujı́ o tom, že omezujı́cı́ nerovnosti (2.38) jsou všechny tři splněny jako rovnice. Chápeme-li kapacitnı́ limity jako kapacity zdrojů, pak to znamená, že zdroje jsou tı́mto optimálnı́m řešenı́m vyčerpány beze zbytku. Optimálnı́ hodnotu z ∗ kriteriálnı́ funkce zı́skáme v této poslednı́ simplexové tabulce skalárnı́m součinem sloupcových vektorů, označených v záhlavı́ tabulky 2.9 symboly cB , b. Je rovna (3) (3) (3) (3) (3) (3) z (3) = z ∗ = cl1 b1 + cl2 b2 + cl3 b3 = c1 b1 + c2 b2 + c5 b3 = 3 · 2 + 2 · 1 + 0 · 0 = 6 + 2 = 8 , o čemž se můžeme přesvědčit též jejı́m výpočtem z definice z ∗ = c1 x∗1 + c2 x∗2 + c3 x∗3 + c4 x∗4 + c5 x∗5 = 3 · 2 + 2 · 1 + 0 · 0 + 0 · 0 + 0 · 0 = 8 . Tı́m je přı́klad 2.15 vyřešen. Bude-li mı́t kriteriálnı́ funkce obecnějšı́ tvar z = c0 + n P ci xi , bude-li se tedy od tvaru i=1 (2.15), který jsme při tomto výkladu použili, lišit o absolutnı́ člen“ — danou libovolnou reálnou ” konstantu c0 , bude optimálnı́ řešenı́ x∗ odpovı́dajı́cı́ optimalizačnı́ úlohy stejné jako optimálnı́ 30 řešenı́ úlohy pro c0 = 0. Optimálnı́ hodnota kriteriálnı́ funkce z se však bude lišit o konstantu c0 . Pokud tedy v průběhu celého výpočtu optima použı́váme pouze jedinou kriteriálnı́ funkci , stačı́ použı́t simplexovou metodu pro c0 = 0, a zı́skanou optimálnı́ hodnotu kriteriálnı́ funkce upravit přičtenı́m absolutnı́ho členu c0 . Poznámka. Lze dokázat, že prvky ∆j a z v poslednı́m řádku simplexové tabulky se transformujı́ formálně stejně jako prvky aij a bi libovolného neklı́čového řádku, a že tedy platı́ (s+1) (s) (s) (s) (s) ∆j = ∆j − alj ∆k /alk z (s+1) = z (s) − bl ∆k /alk , (s) (s) (j = 1, 2, . . . , n) , (s) kde l je index klı́čového řádku, k je index klı́čového sloupce. Čtenář se může lehce přesvědčit, že důkaz plyne z definičnı́ch vztahů veličin ∆j (2.20), (2.37), ze vztahu (2.36) a z transformačnı́ch vztahů (2.34) pro koeficienty aij , bi . U problémů velkého rozsahu lze tı́mto způsobem podstatně zkrátit dobu výpočtu hodnot ∆j , uchováváme-li ovšem v paměti i předchozı́ simplexovou tabulku. 2.6.3 Sestrojenı́ počátečnı́ simplexové tabulky Simplexovou metodu jsme odvodili pro přı́pad řešenı́ úlohy lineárnı́ho programovánı́ v kanonickém tvaru, tj. maximalizace kriteriálnı́ funkce (2.15) při splněnı́ omezujı́cı́ch podmı́nek (2.16) a při splněnı́ podmı́nek nezápornosti proměnných. Z § 2.4 vyplývá, že každou úlohu lineárnı́ho programovánı́ ve tvaru nerovnostı́ lze zavedenı́m doplňkových proměnných převést na kanonický tvar. Dosud však nevı́me, jak převést na kanonický tvar úlohu lineárnı́ho programovánı́, v nı́ž některé nebo všechny omezujı́cı́ podmı́nky jsou vyjádřeny ve tvaru rovnic, avšak úloha nenı́ v kanonickém tvaru. Takovou úlohu převádı́me na kanonický tvar zavedenı́m tak zvaných pomocných proměnných, které umožňujı́ v matici strukturálnı́ch koeficientů A o hodnosti m vyjádřit jednotkovou submatici řádu m, a tı́m zı́skat kanonický tvar problému. Tyto nezáporné pomocné proměnné nemajı́ žádný věcný (např. ekonomický nebo fysikálnı́) význam. Jsou formálně zavedeny pouze z důvodu nalezenı́ výchozı́ho základnı́ho řešenı́, ale pro optimálnı́ řešenı́ majı́ hodnotu nulovou. Součtem těchto pomocných proměnných je tvořena tzv. pomocná kriteriálnı́ funkce . Řešenı́ úlohy pak spočı́vá ve dvou fázı́ch. V prvnı́ fázi se minimalizuje, tj. anuluje, pomocná kriteriálnı́ funkce. To je nutná a postačujı́cı́ podmı́nka, aby původnı́ optimalizačnı́ problém měl přı́pustné řešenı́. Touto prvnı́ fázı́ převedeme úlohu na kanonický tvar. Ve druhé fázi už pomocné proměnné nepotřebujeme a optimalizujeme původnı́ kriteriálnı́ funkci. Tento postup si ukážeme na přı́kladě, v němž vystupujı́ současně doplňkové i pomocné proměnné. Přı́klad 2.16 Strojı́renský závod vyrábı́ čtyři výrobky Vi (i = 1, 2, 3, 4), které postupně procházejı́ třemi zařı́zenı́mi Z1 , Z2 , Z3 . Kapacita prvnı́ch dvou zařı́zenı́ je 400 hod, třetı́ho 430 hod. Čas v hodinách, po který procházı́ 1 tuna výrobků zařı́zenı́m, je uveden v tabulce 2.10. Tabulka 2.10: Z1 Z2 Z3 V1 1 3 V2 2 2 V3 2 1 2 V4 2 3 Zařı́zenı́ Z2 a Z3 musı́ být plně využito. Ceny za 1 tunu výrobku jsou c1 = 200, c2 = 250, c3 = 250, c4 = 300, kde cj je cena jedné tuny j-tého výrobku. 31 Úkolem je stanovit výrobnı́ program, kterým závod dosáhne maximálnı́ hodnoty produkce. Označme symbolem xj množstvı́ výrobku Vj v tunách, kde j = 1, 2, 3, 4. Vektor x = (x1 , x2 , x3 , x4 )T ≥ 0, musı́ vyhovovat podmı́nkám x1 +2x3 +2x4 ≤ 400 3x1 +2x2 +x3 = 400 2x2 +2x3 +3x4 = 430 (2.39) z = 200x1 + 250x2 + 250x3 + 300x4 . (2.40) a musı́ maximalizovat funkci Při obvyklém způsobu zaváděnı́ doplňkových proměnných upravı́me tuto úlohu zavedenı́m nezáporné doplňkové proměnné x5 na tvar: Maximalizovat kriteriálnı́ funkci (2.40) za podmı́nek x1 +2x3 +2x4 +x5 = 400 3x1 +2x2 +x3 = 400 2x2 +2x3 +3x4 = 430 (2.41) a podmı́nek xj ≥ 0 (j = 1, 2, . . . , 5). Tato úloha nenı́ v kanonickém tvaru, nedovedeme proto pro ni nalézt výchozı́ základnı́ řešenı́. Proměnná x5 by mohla sloužit jako bázická proměnná. Pro nalezenı́ výchozı́ho základnı́ho řešenı́ však potřebujeme tři bázické proměnné, nebot’ v (2.41) máme tři lineárně nezávislé rovnice omezujı́cı́ch podmı́nek. Dalšı́ dvě proto zavedeme ve formě nezáporných pomocných proměnných x6 , x7 , o které rozšı́řı́me druhou a třetı́ rovnici. Jejich součtem dále utvořı́me pomocnou kriteriálnı́ funkci z 0 = x6 + x7 , (2.42) kterou budeme minimalizovat, tj. maximalizujeme výraz −x6 − x7 . Dostáváme tak tuto rozšı́řenou úlohu: Nalézt vektor x = (x1 , x2 , x3 , x4 , x5 , x6 , x7 , z)T ≥ 0 , (2.43) který vyhovuje soustavě x1 3x1 −200x1 +2x2 2x2 −250x2 +2x3 +2x4 +x5 +x3 +x6 +2x3 +3x4 +x7 −250x3 −300x4 +z = 400 = 400 = 430 = 0 (2.44) a minimalizuje z 0 , vyjádřené v (2.42). Ke třem rovnicı́m ze soustavy (2.41) zde přibyla čtvrtá, vytvořená ze vztahu (2.40). Jakmile se nám podařı́ nalézt takové přı́pustné řešenı́ této rozšı́řené úlohy, pro něž x6 = x7 = 0, dostaneme z něho (po vynechánı́ pomocných proměnných) vektor, který je přı́pustným řešenı́m původnı́ úlohy, tj. úlohy maximalizace (2.40). Přejeme si, aby na konci prvnı́ fáze simplexové metody pomocné proměnné x6 , x7 nebyly bázickými, abychom je mohli v přı́padě jejich anulace vynechat ze simplexové tabulky, aniž bychom narušili kanonický tvar úlohy. Proto je v kriteriálnı́ funkci z 0 vyjádřı́me pomocı́ nebázických proměnných x1 , x2 , x3 , x4 . Učinı́me tak tı́m způsobem, že k rovnici (2.42) psané ve tvaru −x6 − x7 + z 0 = 0 (2.45) přičteme druhou a třetı́ rovnici soustavy (2.44). Obdržı́me tı́m 3x1 + 4x2 + 3x3 + 3x4 + z 0 = 830 , 32 (2.46) kde z 0 → min, tj. −z 0 → max, čili hledáme max {3x1 + 4x2 + 3x3 + 3x4 − 830} . Tato úloha je z hlediska výběru x1 , x2 , x3 , x4 ekvivalentnı́ úloze nalézt max {3x1 + 4x2 + 3x3 + 3x4 } = max {−z 0 + 830}. (2.47) Nalezenı́m tohoto maxima anulujeme pomocnou kriteriálnı́ funkci z 0 , což nastane tehdy, když platı́ 3x1 + 4x2 + 3x3 + 3x4 = 830. Tuto maximalizaci provádı́me simplexovou metodou až do okamžiku, kdy z 0 = 0, tj. x6 = x7 = 0. Pak přejdeme na původnı́ kriteriálnı́ funkci z. Abychom pro funkci z nemuseli na konci prvnı́ fáze výpočtu přepočı́távat jejı́ koeficienty v nové bázi, připojili jsme k podmı́nkovým rovnicı́m (2.44) jako čtvrtou rovnici jejı́ definičnı́ rovnici, která se v průběhu celé prvnı́ fáze výpočtu transformuje podle stejných pravidel jako ostatnı́ rovnice soustavy (2.44). Ve druhé fázi výpočtu již můžeme samozřejmě tuto rovnici vypustit, nebot’ maximalizujeme původnı́ kriteriálnı́ funkci. Za bázické proměnné prvnı́ iterace v prvnı́ fázi řešenı́ můžeme zvolit x5 , x6 , x7 , z. Čtvrtá rovnice soustavy (2.44) má však některé specifické rysy, které při použı́vánı́ pomocných proměnných platı́ i obecně pro tu rovnici dané soustavy, která obsahuje původnı́ kriteriálnı́ funkci: • z lze chápat jako bázickou proměnnou, kterou chceme stále ponechat v bázi, abychom ji na konci prvnı́ fáze simplexové metody mohli explicitně vyjádřit. • z vstupuje do pomocné kriteriálnı́ funkce s nulovým koeficientem. Proto koeficient bázické proměnné (ve sloupci cB ) pro tento řádek je roven nule. Proto také tento řádek poskytuje nulové přı́spěvky do řádku ∆j . • Proto v řádku, obsahujı́cı́m z, nehledáme klı́čový prvek, nevyplňujeme v něm tedy položku b/a. Tento řádek tedy zůstává při všech transformacı́ch neklı́čovým. • Poněvadž ve sloupci strukturálnı́ch koeficientů matice A nad z jsou pouze koeficienty, jejichž hodnota je rovna nule, neměnı́ se při transformaci koeficient u z (zůstává stále roven jedné), a proto nemusı́me sloupec, obsahujı́cı́ z, vůbec do simplexové tabulky zapisovat. Přikročme nynı́ k zápisu simplexových tabulek prvnı́ fáze výpočtu. Prvnı́ simplexová tabulka 1. fáze se nacházı́ v tab.2.11. Koeficienty pomocné kriteriálnı́ funkce jsou uvedeny v druhém hornı́m řádku této tabulky podle (2.47) a klı́čový prvek je a22 = 2. Druhou simplexovou tabulkou 1. fáze je tab.2.12. a klı́čovým prvkem je a34 = 3. Pro zvýšenı́ přehlednosti sloupce B indexů bázických proměnných zaved’me označenı́ x0 = z. Ve třetı́ simplexové tabulce 1. fáze (viz tab.2.13) vidı́me, že žádné ∆j nynı́ již nenı́ záporné, a proto tato tabulka je v prvnı́ výpočtové fázi tabulkou poslednı́. O tom, že tabulka odpovı́dá přı́pustnému řešenı́ původnı́ho problému, se přesvědčı́me takto: Kriteriálnı́ funkce ekvivalentnı́ úlohy (2.47), (2.44) zde nabývá maximálnı́ hodnoty rovné 830, z čehož plyne, že z 0 = 0, takže x6 = x7 = 0. Z tabulky 2.13 je patrno, že transformovaná kriteriálnı́ funkce z je dána rovnicı́ −125x1 − 25x3 + 25x6 + 100x7 + z = 53000 , z čehož plyne z = 125x1 + 25x3 + 53000 . (2.48) Tı́m jsme skončili prvnı́ fázi výpočtu. Druhá fáze bude spočı́vat v maximalizaci funkce 125x1 + 25x3 , 33 (2.49) Tabulka 2.11: B cB x1 x2 x3 x4 x5 x6 x7 3 4 3 3 0 0 0 b b/a 5 0 1 0 2 2 1 0 0 400 ∞ 6 0 3 2 1 0 0 1 0 400 200 7 0 0 2 2 3 0 0 1 430 215 0 0 −200 −250 −250 −300 0 0 0 0 — −3 −4 −3 −3 0 0 0 −z 0 + 830 = 0 — ∆j Tabulka 2.12: B cB x1 x2 x3 x4 x5 x6 x7 3 4 3 3 0 0 0 b b/a 5 0 1 0 2 2 1 0 0 400 200 2 4 3/2 1 1/2 0 0 1/2 0 200 ∞ 7 0 −3 0 1 3 0 −1 1 30 10 0 0 175 0 −125 −300 0 125 0 50000 — 3 0 −1 −3 0 2 0 800 — ∆j která vznikne z (2.48) vynechánı́m absolutnı́ho členu. Prvnı́ simplexová tabulka druhé fáze vznikne z tabulky 2.13 vynechánı́m sloupců pro x6 , x7 a řádku pro z, a nahrazenı́m cenových koeficientů kriteriálnı́ funkce těmi, které vyplývajı́ z (2.49): Prvnı́ simplexová tabulka 2. fáze je uvedena v tab.2.14 a klı́čovým prvkem je a11 = 3. Poněvadž ve druhé simplexové tabulce 2.fáze (viz tab.2.15) žádné ∆j již nenı́ záporné, je tato tabulka poslednı́ a poskytuje konečné řešenı́ přı́kladu. Optimálnı́ hodnota z ∗ kriteriálnı́ funkce z je z ∗ = 15833, 3 + 53000 = 68833, 3. Optimálnı́ výrobnı́ program závodu je: Závod vyrábı́ x1 = 380/3=126, ˙ 6 t výrobku V1 , x2 = 10 t výrobku V2 , a x4 = 410/3=136, ˙ 6 t výrobku V4 . Zisk z produkce je 68833, 3 Kč. Výrobek V3 se nevyrábı́ (x3 = 0). Využilo se plně kapacit všech zařı́zenı́. Poznámka 1. Prohibitivnı́ ceny. Pomocné proměnné, které byly zavedeny jako uměle vytvořené bázické proměnné, jsme dosud anulovali extremalizacı́ uměle vytvořené kriteriálnı́ funkce. Existuje však i jiný způsob anulovánı́ pomocných proměnných. Spočı́vá ve využitı́ tzv. prohibitivnı́ ceny. Je to záporná cena −M , kde M je vhodně zvolené velké kladné čı́slo. Simplexová metoda pracuje tak, že pokud má problém 34 Tabulka 2.13: B cB x1 x2 x3 x4 x5 x6 x7 3 4 3 3 0 0 0 b 5 0 3 0 4/3 0 1 2/3 −2/3 380 2 4 3/2 1 1/2 0 0 1/2 0 200 4 3 −1 0 1/3 1 0 −1/3 1/3 10 0 0 −125 0 −25 0 0 25 100 53000 0 0 0 0 0 1 1 −z 0 + 830 = 830 ∆j Tabulka 2.14: B cB x1 x2 x3 x4 x5 125 0 25 0 0 b b/a 5 0 3 0 4/3 0 1 380 126, 6 2 0 3/2 1 1/2 0 0 200 133, 3 4 0 −1 0 1/3 1 0 10 — −125 0 −25 0 0 0 — ∆j přı́pustné řešenı́, pak pomocná proměnná, která je v kriteriálnı́ funkci oceněná dostatečně velkou zápornou cenou, nebude na konci výpočtu bázickou proměnnou. Jako nebázická proměnná je pak anulována automaticky. Poznámka 2. Přı́pad záporných pravých stran. Úlohu tvaru max{cT x Ax ≤ b, x ≥ 0} (2.50) dovedeme řešit zatı́m pouze za předpokladu b ≥ 0. Ukažme, jak lze využı́t zmı́něné myšlenky dvoufázového výpočtu tak, abychom v něm zı́skali výchozı́ přı́pustné základnı́ řešenı́ v přı́padě, kdy pro některá bi (i = 1, 2, . . . , m) platı́ bi < 0. Necht’ A = (aij ) je matice typu (m, n). Zavedenı́m doplňkových proměnných v (2.50) dostáváme úlohu maximalizovat c1 x1 + · · · + cn xn za podmı́nek a11 x1 + · · · + a1n xn + xn+1 = b1 ... ... ... ... ... (2.51) am1 x1 + · · · + amn xn + xn+m = bm x1 , . . . , xn+m ≥ 0 K úloze (2.51) přiřadı́me následujı́cı́ pomocnou úlohu, ve které minimalizujeme nezápornou pomocnou proměnnou y, snažı́me se tedy o jejı́ anulovánı́: 35 Tabulka 2.15: B cB x1 x2 x3 x4 x5 125 0 25 0 0 b 1 125 1 0 4/9 0 1/3 380 3 2 0 0 1 − 16 0 − 12 10 4 0 0 0 7/9 1 1 3 410 3 0 0 30, 5 0 41, 6 z ∗ − 53000 = 15833, 3 ∆j z 0 = −y Maximalizovat za podmı́nek a11 x1 + ... ap1 x1 + ... am1 x1 + ... ... ... ... ... +a1n xn +xn+1 −y = b1 ... ... ... ... ... +apn xn +xn+p −y = bp ... ... ... ... ... +amn xn +xn+m −y = bm (2.52) x1 , . . . , xn , xn+1 , . . . , xn+m , y ≥ 0 Úloha (2.51) má přı́pustné řešenı́ právě tehdy, jestliže pomocná úloha (2.52) má optimálnı́ řešenı́, ve kterém y = 0. Pro úlohu (2.52) lehce nalezneme přı́pustné řešenı́ (např. x1 = · · · = xn = 0, y dostatečně velké a xn+i = bi + y pro každé i). Potřebujeme však takovou simplexovou tabulku, ve které všechny pravé strany omezujı́cı́ch podmı́nkových rovnic jsou nezáporné, abychom k řešenı́ mohli použı́t těch postupů, které jsme dosud odvodili. Proto provedeme následujı́cı́ transformaci: Necht’ p je takové, že bp = min{bi 1 ≤ i ≤ m} . (2.53) Znamená to, že bp < 0, přičemž bp je pravá strana o největšı́ absolutnı́ hodnotě ze všech záporných pravých stran soustavy rovnic v (2.52). Úlohu (2.52) lze zapsat do simplexové tabulky s bázickými proměnnými xn+1 , . . . , xn+m . Násobme p-tou rovnici soustavy podmı́nkových rovnic v (2.52) čı́slem −1, a takto transformovanou p-tou rovnici přičteme ke každé z ostatnı́ch rovnic této soustavy. Tı́m dosáhneme toho, že a) pomocná proměnná y se bude vyskytovat pouze v p-té rovnici, b) všechny pravé strany takto vzniklé soustavy budou nezáporné. Nynı́ můžeme za bázické proměnné zvolit xn+1 , . . . , xn+p−1 , y, xn+p+1 , . . . , xn+m . Na takto sestavenou simplexovou tabulku aplikujeme dvoufázovou simplexovou metodu, kterou jsme již v tomto paragrafu popsali. V prvnı́ fázi se snažı́me anulovat pomocnou proměnnou y. Podařı́-li se nám to, nastane druhá fáze výpočtu, ve které maximalizujeme původnı́ kriteriálnı́ funkci c1 x1 + c2 x2 + · · · + cn xn . Čtenář necht’ se pokusı́ procvičit tento postup na přı́kladě: Přı́klad 2.17 Nalezněte za podmı́nek max{3x1 + x2 } 2x1 −x3 ≤ −2 −x1 −2x2 +3x3 ≤ −1 36 x1 , x2 , x3 ≥ 0 Výsledek: Kriteriálnı́ funkce nenı́ na množině přı́pustných řešenı́ shora omezená. 2.6.4 Maticový zápis simplexové metody Poté, co jsme popsali simplexovou metodu jako algoritmus pro řešenı́ velmi obecných lineárnı́ch optimalizačnı́ch problémů, uved’me nynı́ maticový zápis simplexové tabulky, který umožnı́ čtenáři hlubšı́ pohled na tuto problematiku, užitečný i při výkladu jiných optimalizačnı́ch metod. Úplnou eliminaci umı́me provést pro libovolný systém lineárně nezávislých rovnic A x= b. Tı́m je dána množina bázických indexů (tj. indexů bázických proměnných) B, a množina nebázických indexů N = {1, 2, . . . , n} − B. Je-li dáno B, je simplexová tabulka určena až na pořadı́ řádků. Dále pro uspořádanou množinu bázických indexů B označuje xB sloupcový vektor proměnných xl1 , xl2 , . . . , xlm s indexy, které jsou prvky množiny B v uvedeném pořadı́. Analogicky definujeme i vektor cenových koeficientů cB . Matici vytvořenou ze sloupců matice A s indexy v B, v uvedeném pořadı́, označujeme symbolem AB nebo jednoduše jen B. Zcela analogicky definujeme symboly AN , xN a cN . Symbol AN však nenahrazujeme jednoduššı́m, nebot’ se vyskytuje řidčeji. Označujeme tedy B B cTB = {l1 , l2 , . . . , lm }, = AB = al1 , .. . , alm , = cl1 , . . . , clm , xB xl1 = ... , xlm N AN cTN = {j1 , j2 , . . . jn−m} , = aj1 , . . . , ajn−m , = cj1 , . . . , cjn−m , xN xj1 = ... . xjn−m (2.54) Pro zjednodušenı́ se řı́ká, že B, nebo i B, je báze. Simplexová tabulka se nazývá (primárně) přı́pustná, jestliže v nı́ platı́ b ≥ 0, kde bT = (b1 , . . . , bm ), tj. jestliže vektor x o složkách xi = bi pro i ∈ B a xi = 0 pro i ∈ N je přı́pustným řešenı́m dané úlohy LP. Řešme nynı́ úlohu max z kde z = c1 x1 + · · · + cn xn (2.55) za podmı́nek n X aij xj ≤ bi , bi > 0 . (2.56) j=1 Soustava omezenı́ úlohy rozšı́řené o m doplňkových proměnných bude tvaru b1 a11 a12 . . . a1n 1 0 . . . 0 x1 a21 a22 . . . a2n 0 1 . . . 0 b2 .. · . .. = .. , . . xn+m bm am1 am2 . . . amn 0 0 . . . 1 tj. Ax = b. 37 (2.57) K soustavě omezenı́ (2.57) připojı́me nynı́ koeficienty kriteriálnı́ funkce, které označı́me symbolem dm+1,j = −cj , přičemž koeficienty matice A označı́me aij = dij . Matici takto rozšı́řené soustavy omezenı́ pak označı́me symbolem D: d11 d12 . . . d1n 0 d21 d22 . . . d2n 0 ... ... ... ... D = ... = d1 , d2 , . . . , dn , em+1 = dm1 dm2 . . . dmn 0 dm+1,1 dm+1,2 . . . dm+1,n 1 = A −cT 0 1 ! a1 −c1 = a2 −c2 ... ... an −cn 0 1 ! , kde em+1 je m + 1-nı́ sloupec jednotkové matice a odpovı́dá proměnné z. Vektor pravých stran pak bude d0 = (b1 , b2 , . . . , bm , 0)T = (d10 , d20 , . . . , dm+1,0 )T . Problém pak lze zapsat takto: Maximalizovat z = x0 při omezenı́ch x D = d0 , x≥0 x0 (2.58) Proměnnou x0 budeme v této formulaci považovat za bázickou proměnnou, která nesmı́ být v průběhu výpočtu vyloučena z báze. Necht’ BD je maticı́ báze takto upravené úlohy ! B 0 BD = , −cTB 1 kde B je matice báze nerozšı́řené úlohy, cTB je vektor cen bázických proměnných. Řešenı́ úlohy (2.58) můžeme vyjádřit pro bázi BD , pokud je regulárnı́, ze soustavy x −1 BD D = B−1 D d0 , x0 kde B−1 D = B −cTB 0 1 !−1 = B−1 cTB B−1 0 1 ! . Necht’ je úloha uspořádána tak, že poslednı́ch m + 1 sloupců matice D odpovı́dá bázi BD . Tento předpoklad nenı́ na úkor obecnosti. Výchozı́ simplexovou tabulku lze znázornit maticı́ ! B 0 b AN , (2.59) −cTN −cTB 1 0 kde AN je matice nebázických sloupcových vektorů, cTN vektor cen nebázických proměnných, cTB vektor cen bázických proměnných, b vektor pravých stran. Vynásobı́me-li výchozı́ simplexovou tabulku (2.59) maticı́ B−1 D , obdržı́me ! B−1 AN E 0 B−1 b . cTB B−1 AN − cTN 0 1 cTB B−1 b 38 Z takto upravené tabulky lze snadno zı́skat bázické řešenı́ xB = B−1 b , xN = 0 , z = x0 = cTB B−1 b . Simplexová tabulka bude pouze výjimečně uspořádána tak, aby bázické proměnné byly v poslednı́ch sloupcı́ch levých stran. Necht’ má výchozı́ simplexová tabulka tvar (2.59). Jsou-li výchozı́ bázické proměnné doplňkovými proměnnými, pak B = E, kde E je jednotková matice řádu m a platı́ cTB = 0. Výchozı́ simplexová tabulka má pak tvar ! AN E 0 b . −cTN 0 1 0 Zvolı́me-li nějakou bázi Bs , můžeme při znalosti inversnı́ matice ! 0 B−1 s −1 BD = cTBs B−1 1 s zapsat simplexovou tabulku pro tuto bázi B−1 s AN B−1 s 0 B−1 s b T cTBs B−1 s A N − cN cTBs B−1 s 1 cTBs B−1 s b ! . (2.60) Čtenář se může rozepsánı́m jednotlivých výrazů, z nichž sestává matice (2.60), přesvědčit, že tato maticová forma zápisu simplexové tabulky obsahuje všechny základnı́ informace, potřebné k řešenı́ problému, jako tabulka 2.6. Napřı́klad výraz cTBs B−1 s b v poslednı́m řádku vpravo je hodnotou kriteriálnı́ funkce z bázického řešenı́, odpovı́dajı́cı́ho bázi Bs . Složky vektoru T T −1 T cTBs B−1 = cTBs B−1 (2.61) s A N − cN c B s B s s A−c jsou rovny veličinám ∆j (j = 1, 2, . . . , n), podle nichž na základě vztahu (2.21) posuzujeme optimalitu zı́skanéhořešenı́. −1 Matice B−1 A B je maticı́ strukturálnı́ch koeficientů levých stran omezujı́cı́ch podmı́ N s s nek, sloupec B−1 s b je sloupcem pravých stran omezujı́cı́ch podmı́nek, a tedy i sloupcem hodnot bázických proměnných v bázi Bs . 2.6.5 Poznámky k simplexové metodě Degenerace a tvorba cyklů. Jak jsme již uvedli v § 2.6.1, pro nedegenerované úlohy je základnı́ simplexová procedura konečná. V přı́padě degenerovaných úloh může nastat tzv. zacyklenı́, tj. po několika simplexových iteracı́ch se dostaneme k původnı́ simplexové tabulce. Poprvé takový přı́klad sestrojil Hoffman [HOFFMAN et al. 1953]. Proto byly vyvinuty tzv. anticyklické metody, které modifikujı́ problém pomocı́ malé změny pravé strany (perturbačnı́ metoda) [CHARNES 1952], nebo modifikujı́ v simplexové metodě volbu klı́čového řádku (lexikografická metoda [DANTZIG, ORDEN, WOLFE 1955]) nebo přı́mo klı́čového prvku (metoda nejmenšı́ch indexů [BLAND 1977]) tak, že zaručujı́, že k zacyklenı́ nedojde. V praktických úlohách se však zacyklenı́ málokdy vyskytuje, nebot’ při strojových výpočtech zaokrouhlovacı́ chyby způsobı́ změnu problému a tı́m únik z ideálnı́ho cyklu. 39 Nalezenı́ všech optimálnı́ch řešenı́. Problém lineárnı́ho programovánı́ se obvykle považuje za vyřešený, jestliže se bud’to nalezne jeho optimálnı́ řešenı́, nebo se zjistı́, že optimálnı́ řešenı́ neexistuje. Ve druhém přı́padě se někdy ještě zjišt’uje, zda neexistence optimálnı́ho řešenı́ je způsobena neexistencı́ přı́pustného řešenı́ nebo neomezenostı́ kriteriálnı́ funkce. Přesto je někdy užitečné i hledánı́ dalšı́ch, alternativnı́ch, optimálnı́ch řešenı́. V § 2.6.1 jsme odvodili kriterium optimality, podle něhož jakmile jsme v simplexové metodě dosáhli poprvé stavu, kdy ∆j ≥ 0 pro všechna j = 1, 2, . . . , n, dosáhli jsme optimálnı́ho řešenı́ a iteračnı́ proces jsme již považovali za skončený. Pokud však v této simplexové iteraci pro některé j = k platı́ ∆k = 0, můžeme provést ještě dalšı́ iteraci, při nı́ž zvolı́me k-tý sloupce za klı́čový sloupec a dále obvyklým způsobem vypočteme druhé optimálnı́ řešenı́ (pokud existuje), pro které samozřejmě hodnota kriteriálnı́ funkce bude stejná jako pro prvnı́ vypočtené optimálnı́ řešenı́. K nalezenı́ všech optimálnı́ch řešenı́ problému LP je třeba nalézt všechny krajnı́ body množiny přı́pustných řešenı́. Pro úlohu ve tvaru nerovnostı́ (2.8) je hornı́ hranice jejich počtu podle [McMULLEN 1970] rovna m−α m−β + , m−n m−n kde n+1 α= , 2 n+2 β= . 2 Proceduru pro nalezenı́ všech sousednı́ch krajnı́ch bodů k danému krajnı́mu bodu, který je representován nedegenerovaným základnı́m řešenı́m, uvádı́ [PLESNÍK, DUPAČOVÁ, VLACH 1990]. V přı́padě degenerace jsou výpočty poněkud složitějšı́. Jejich popis je uveden v knize [MURTY 1983]. Rozměry matice A. Všimněme si znovu rozměrů matice A typu (m, n), vystupujı́cı́ v kanonickém tvaru úlohy LP (2.12). Dosavadnı́ výklad jsme zaměřili na přı́pad m < n. Necht’ Ar = (A | b). Kdyby platilo m ≥ n, h(Ar ) > h(A), pak podle Frobeniovy věty lineárnı́ algebry by soustava A x = b neměla žádné řešenı́, a tedy též úloha (2.12) by neměla řešenı́ (množina M přı́pustných řešenı́ by byla prázdná). Jestliže by při m ≥ n platilo h(Ar ) = h(A) = n, pak by soustava Ax = b měla právě jedno řešenı́, a v přı́padě jeho nezápornosti by byla úloha LP triviálnı́ (maximalizace funkce na jednobodové množině). Jestliže by při m ≥ n platilo h(Ar ) = h(A) = p < n, lze m − p rovnic vynechat (jsou lineárně závislé), čı́mž máme přı́pad převeden na ten, jehož řešenı́ jsme studovali. Vidı́me, že pro řešenı́ problému lineárnı́ho programovánı́, zformulovaného v § 2.4, máme nynı́ vytvořenou metodu, použitelnou pro všechny situace, které se v praxi mohou vyskytnout. Dalšı́ existujı́cı́ varianty simplexové metody jsou zaměřeny na zrychlenı́ výpočtů, resp. úsporu paměti počı́tače. Některé verze byly vytvořeny pro speciálnı́ tvary úloh LP. 2.7 Dualita S každou úlohou lineárnı́ho programovánı́ je jistým způsobem úzce spojena jiná úloha, která je rovněž lineárnı́, a která je původnı́ úlohou jednoznačně určena. Přitom maximalizačnı́ úloze odpovı́dá úloha minimalizačnı́ a naopak. Úlohy lineárnı́ho programovánı́ se tedy vlastně vyskytujı́ ve dvojicı́ch (hovořı́me o dvojicı́ch duálně sdružených úloh). Původnı́ úlohu v této dvojici nazýváme primárnı́, kdežto úlohu s nı́ sdruženou označujeme jako duálnı́. Mezi duálně sdruženými úlohami existuje řada zajı́mavých vztahů, které jsou užitečné jak z teoretického, tak i z praktického hlediska. Poznamenejme ještě, že dualita nenı́ omezena pouze na lineárnı́ programovánı́, ale je obecnějšı́m jevem. 40 2.7.1 Formulace a význam duálnı́ho problému Konstrukce duálnı́ho problému k danému problému lineárnı́ho programovánı́ je formálnı́ záležitostı́, danou systémem jistých pravidel. Dřı́ve než se s těmito pravidly seznámı́me, ukažme si na následujı́cı́m přı́kladě, že tuto konstrukci a vzniklý duálnı́ problém lze ekonomicky interpretovat. Přı́klad 2.18 Jako primárnı́ uvažujme tento problém lineárnı́ho programovánı́: Maximalizovat f (x) = n X cj xj (2.62) j=1 za podmı́nek n X aij xj ≤ bi , i = 1, 2, ..., m, (2.63) j=1 xj ≥ 0, j = 1, 2, ..., n. (2.64) Tuto úlohu můžeme interpretovat např. jako úlohu optimalizace výrobnı́ho programu, kde aij bi cj xj ... ... ... ... spotřeba i-tého zdroje na jednotku j-tého výrobku, zásoba i-tého zdroje, cena za jednotku j-tého výrobku, vyrobené množstvı́ j-tého výrobku. Představme si, že bychom mı́sto výroby a prodeje výrobků chtěli prodávat přı́mo zdroje. Pro bližšı́ ilustraci této představy uvažujme následujı́cı́ situaci. Na firmu vyrábějı́cı́ počı́tače se obrátila společnost, vlastnı́cı́ řetězec obchodnı́ch domů, s objednávkou výroby počı́tačů, které by se prodávaly nikoli pod značkou počı́tačové firmy, ale pod značkou řetězce obchodnı́ch domů. Z hlediska počı́tačové firmy se vlastně jedná o prodej jejı́ch výrobnı́ch zdrojů. PmOznačme symbolem ui cenu jednotky i-tého zdroje, za niž chceme prodávat. Pak výraz i=1 aij ui představuje cenu zdrojů, které by se při výrobě spotřebovaly na výrobu jednotky j-tého výrobku. Aby byl prodej zdrojů výhodnějšı́ než výroba a prodej výrobků, musejı́ platit podmı́nky m X aij ui ≥ cj , j = 1, 2, ..., n. i=1 P Celkovou cenu prodaných zdrojů pak představuje výraz m i=1 bi ui . Zajı́má-li nás, jaká může být nejnižšı́ hodnota tohoto výrazu a jaké ceny zdrojů jı́ odpovı́dajı́, musı́me řešit následujı́cı́ problém: Minimalizovat g(u) = m X bi u i (2.65) i=1 za podmı́nek m X aij ui ≥ cj , j = 1, 2, ..., n, (2.66) ui ≥ 0, i = 1, 2, ..., m. (2.67) i=1 Úloha (2.65) – (2.67) se nazývá duálnı́ úlohou k úloze (2.62) – (2.64). Ačkoli jsme ji zde odvodili pro určitou interpretaci primárnı́ úlohy, je nutno zdůraznit, že jejı́ tvar na této interpretaci vůbec nezávisı́. Vidı́me, že duálnı́ úloha je vytvořena výlučně z koeficientů primárnı́ 41 úlohy. V účelové funkci duálnı́ úlohy se objevujı́ veličiny bi , pravé strany duálnı́ch omezenı́ obsahujı́ veličiny cj a levé strany duálnı́ch omezenı́ jsou tvořeny pomocı́ sloupců matice A. Rovněž si všimněme, že proměnné xj primárnı́ úlohy odpovı́dajı́ omezenı́m duálnı́ úlohy a primárnı́ omezenı́ odpovı́dajı́ duálnı́m proměnným. Dále v tomto přı́padě majı́ primárnı́ omezenı́ tvar nerovnostı́ typu ≤, duálnı́ omezenı́ jsou nerovnosti typu ≥ a primárnı́ i duálnı́ proměnné jsou vázány podmı́nkami nezápornosti (jak uvidı́me později, vždy tomu tak být nemusı́). Úloha (2.65) – (2.67) je tedy jakýmsi zrcadlovým obrazem“ úlohy (2.62) – (2.64) a proto zde hovořı́me o dvo” jici symetricky duálně sdružených úloh. Maticový zápis této dvojice úloh vypadá takto: f (x) = cT x → max Ax ≤ b x≥0 g(u) = bT u → min AT u ≥ c u≥0 (2.68) Je třeba si uvědomit, že dualita je vztah vzájemný, a že tedy duálnı́ úlohou k úloze (2.65) – (2.67) je úloha (2.62) – (2.64). Přı́klad 2.19 f (x) = 5x1 + 3x2 + 7x3 → max g(u) = 12u1 + 20u2 → min 2x1 − x2 + 4x3 ≤ 12 x1 + 6x2 − 2x3 ≤ 20 2u1 + u2 ≥ 5 −u1 + 6u2 ≥ 3 4u1 − 2u2 ≥ 7 u1 , u 2 ≥ 0 x1 , x2 , x3 ≥ 0 Na začátku této podkapitoly jsme uvedli, že ke každé úloze lineárnı́ho programovánı́ existuje úloha duálnı́. Otázkou ted’ je, jak se sestavı́ duálnı́ úloha v přı́padech, kdy výchozı́ maximalizačnı́ resp. minimalizačnı́ úloha vypadá jinak, než ukazujı́ výše uvedené vztahy. Např. v maximalizačnı́ úloze se mohou vyskytnout rovnice nebo nerovnosti typu ≥ a některé proměnné mohou být nekladné nebo neomezené co do znaménka. Tvar duálnı́ úlohy lze v takovém přı́padě odvodit tı́mto způsobem: výchozı́ maximalizačnı́ úloha se nejprve transformuje do tvaru (2.62) – (2.64) a odpovı́dajı́cı́ duálnı́ úloha se pak zrcadlově převrácenými“ zpětnými úpravami zjednodušı́ do ” výsledného tvaru. Ukažme si tento postup na přı́padě úlohy v rovnicovém tvaru: Maximalizovat f (x) = n X cj xj (2.69) j=1 za podmı́nek n X aij xj = bi , i = 1, 2, ..., m, (2.70) j=1 xj ≥ 0, j = 1, 2, ..., n. (2.71) Každou rovnici nahradı́me dvojicı́ nerovnostı́ typu ≤ a ≥ a pak nerovnosti typu ≥ vynásobı́me −1. Tak převedeme omezenı́ (2.70) do tvaru n X aij xj ≤ bi , j=1 n X (−aij )xj ≤ −bi , i = 1, 2, ..., m. j=1 Označı́me-li odpovı́dajı́cı́ nezáporné duálnı́ proměnné u0i , u00i , budou duálnı́ omezenı́ vypadat takto: m X (aij u0i − aij u00i ) ≥ cj , j = 1, 2, ..., n. i=1 42 Položı́me-li ui = u0i − u00i , i = 1, 2, ..., m, budou proměnné ui neomezené co do znaménka a duálnı́ úloha k úloze (2.69) – (2.71) bude mı́t tvar: Minimalizovat g(u) = m X bi u i (2.72) i=1 za podmı́nek m X aij ui ≥ cj , j = 1, 2, ..., n. (2.73) i=1 V maticovém zápisu vypadá tato dvojice duálně sdružených úloh takto: f (x) = cT x → max Ax = b x≥0 g(u) = bT u → min AT u ≥ c (2.74) Z uvedeného vidı́me, že má-li primárnı́ omezenı́ tvar rovnice, pak odpovı́dajı́cı́ duálnı́ proměnná nenı́ omezena co do znaménka. Pravidla pro konstrukci duálnı́ch úloh. Strukturnı́ vztahy mezi duálně sdruženými úlohami jsou v úplné podobě zachyceny v následujı́cı́ tabulce: maximalizačnı́ úloha primárnı́ duálnı́ omezenı́ typu ≤ omezenı́ typu ≥ omezenı́ typu rovnice nezáporná proměnná nekladná proměnná proměnná neomezená minimalizačnı́ úloha duálnı́ primárnı́ nezáporná proměnná nekladná proměnná proměnná neomezená omezenı́ typu ≥ omezenı́ typu ≤ omezenı́ typu rovnice S pomocı́ této tabulky lze zkonstruovat duálnı́ úlohu k libovolné úloze lineárnı́ho programovánı́. Přı́klad 2.20 f (x) = 3x1 + 4x2 − 2x3 → max g(u) = 40u1 + 50u2 + 30u3 → min x1 + 2x2 − 3x1 + 5x2 + 3x2 + x1 ≥ 0, x3 u1 + 3u2 ≥ 3 2u1 + 5u2 + 3u3 = 4 −3u1 + u2 + 2u3 ≤ −2 u1 ≤ 0, u2 ≥ 0 Význam duality. 3x3 ≥ 40 x3 ≤ 50 2x3 = 30 ≤0 Dualita hraje důležitou roli z následujı́cı́ch důvodů: 1. Duálnı́ problém má důležitou ekonomickou interpretaci . To už naznačil úvodnı́ přı́klad a podrobněji bude tato otázka rozebrána v § 2.7.3. Řešenı́ duálnı́ho problému lze rovněž využı́t v analýze citlivosti (viz podkapitola 2.8). 2. Na výsledcı́ch teorie duality jsou založeny různé metody pro řešenı́ úloh lineárnı́ho programovánı́, které jsou za určitých okolnostı́ výhodnějšı́, než simplexová metoda. Jedná se např. o duálně simplexovou metodu, primárně duálnı́ metodu a metodu MODI (ta se využı́vá pro řešenı́ lineárnı́ch dopravnı́ch úloh). 43 3. V některých přı́padech můžeme snı́žit časovou a pamět’ovou náročnost řešenı́ tı́m, že mı́sto primárnı́ úlohy řešı́me úlohu duálnı́ (jak uvidı́me dále, lze řešenı́m jedné úlohy z dvojice duálně sdružených úloh zı́skat i řešenı́ úlohy druhé). Výhodné je to zejména v přı́padě, že primárnı́ úloha má omezenı́ tvaru nerovnostı́, jejichž počet je mnohem většı́, než počet proměnných (jedná se o úlohy s vysokou“ maticı́). ” 2.7.2 Věty o dualitě Pro dvojice duálně sdružených úloh platı́ řada užitečných tvrzenı́, z nichž si zde některá bez důkazu uved’me. Důkazy pro přı́pad symetricky duálně sdružených úloh je možno najı́t např. v knize [PLESNÍK, DUPAČOVÁ, VLACH 1990], kde jsou také popsány dalšı́ zajı́mavé vlastnosti těchto úloh. Věta 2.6 (Slabá věta o dualitě) Necht’ primárnı́ úloha je maximalizačnı́ s účelovou funkcı́ f (x) a duálnı́ úloha je minimalizačnı́ s účelovou funkcı́ g(u), a necht’ x je libovolné přı́pustné řešenı́ primárnı́ úlohy a u je libovolné přı́pustné řešenı́ duálnı́ úlohy. Pak platı́ f (x) ≤ g(u). Tedy hodnota účelové funkce minimalizačnı́ úlohy v kterémkoli přı́pustném řešenı́ je hornı́ mezı́ hodnot účelové funkce duálně sdružené maximalizačnı́ úlohy na množině všech jejı́ch přı́pustných řešenı́ a obdobně hodnota účelové funkce maximalizačnı́ úlohy v kterémkoli přı́pustném řešenı́ je dolnı́ mezı́ hodnot účelové funkce duálně sdružené minimalizačnı́ úlohy na množině všech jejı́ch přı́pustných řešenı́. Tato věta má následujı́cı́ důsledky: Důsledek 2.2 Platı́-li pro přı́pustné řešenı́ x primárnı́ úlohy a přı́pustné řešenı́ u duálnı́ úlohy rovnost f(x) = g(u), pak x a u jsou optimálnı́. Důsledek 2.3 Je-li množina přı́pustných řešenı́ maximalizačnı́ úlohy neprázdná a je-li účelová funkce této úlohy shora neomezená, pak duálně sdružená úloha nemá žádné přı́pustné řešenı́. Důsledek 2.4 Je-li množina přı́pustných řešenı́ minimalizačnı́ úlohy neprázdná a je-li účelová funkce této úlohy zdola neomezená, pak duálně sdružená úloha nemá žádné přı́pustné řešenı́. Vedle poslednı́ch dvou důsledků platı́ i opačné implikace, shrnuté v následujı́cı́ větě. Věta 2.7 Nemá-li jedna z dvojice duálně sdružených úloh přı́pustné řešenı́, pak druhá úloha nemá optimálnı́ řešenı́. Věta 2.8 (Silná věta o dualitě) Má-li jedna z duálně sdružených úloh optimálnı́ řešenı́, má optimálnı́ řešenı́ i úloha druhá, přičemž optimálnı́ hodnoty účelových funkcı́ si jsou rovny. Následujı́cı́ tvrzenı́ je sice pro jednoduchost zformulováno pro přı́pad symetricky duálně sdružených úloh, ale platı́ i v nesymetrických přı́padech. Věta 2.9 (Věta o komplementaritě) Přı́pustná řešenı́ primárnı́ úlohy (2.62) – (2.64) a duálnı́ úlohy (2.65) – (2.67) jsou optimálnı́ právě tehdy, když platı́ m X xj ( aij ui − cj ) = 0 pro všechna j = 1, 2, ..., n, i=1 n X ui ( aij xj − bi ) = 0 pro všechna i = 1, 2, ..., m. j=1 44 Výše uvedené vztahy pro přı́pad symetricky duálně sdružených úloh znamenajı́, že nabývá-li nějaká proměnná kladnou hodnotu, pak odpovı́dajı́cı́ duálně sdružené omezenı́ musı́ být splněno jako rovnice (tj. přı́slušná doplňková proměnná musı́ být nulová) a naopak je-li nějaké omezenı́ splněno jako ostrá nerovnost (tj. přı́slušná doplňková proměnná je nenulová), pak odpovı́dajı́cı́ duálně sdružená proměnná musı́ být nulová. Jak uvidı́me dále, tato věta má zajı́mavou ekonomickou interpretaci. 2.7.3 Řešenı́ duálnı́ úlohy a jeho interpretace Řešenı́ duálnı́ úlohy. Duálnı́ úloha je úlohou lineárnı́ho programovánı́ a tedy může být řešena např. simplexovou metodou. To ale nenı́ nutné tehdy, kdy jsme už vyřešili primárnı́ úlohu pomocı́ simplexové metody nebo jiného obdobného postupu. Jak ukážeme dále, v takovém přı́padě je totiž současně nalezeno řešenı́ duálnı́ úlohy. Platı́ to i naopak — řešenı́m duálnı́ úlohy zı́skáváme současně řešenı́ úlohy primárnı́. Uvažujme nynı́ primárnı́ úlohu v rovnicovém tvaru (2.69) – (2.71) a předpokládejme, že má optimálnı́ řešenı́ xo . Pak podle silné věty o dualitě (věta 2.8) má i duálnı́ úloha optimálnı́ řešenı́ (označme je uo ) a platı́ cT xo = bT uo . (2.75) Necht’ dále je Bo xBo cB o ... ... ... báze optimálnı́ho řešenı́ xo , vektor bázických složek optimálnı́ho řešenı́, vektor cen bázických proměnných. Jelikož nebázické složky v bázickém řešenı́ jsou nulové, můžeme v (2.75) výraz cT xo nahradit výrazem cTBo xBo . Dále mı́sto bT uo můžeme psát uTo b. Z maticového vyjádřenı́ simplexové tabulky plyne, že xBo = B−1 o b. Můžeme tedy vztah (2.75) vyjádřit ve tvaru T cTBo B−1 o b = uo b. Odtud pak pro optimálnı́ řešenı́ duálnı́ úlohy plyne uTo = cTBo B−1 o . (2.76) Chceme-li tedy po vyřešenı́ primárnı́ úlohy zı́skat odpovı́dajı́cı́ řešenı́ úlohy duálnı́, můžeme provést inverzi optimálnı́ báze a dosadit do předchozı́ho vztahu. Z následujı́cı́ho však vyplyne, že ani tento výpočet nenı́ nutný, a že optimálnı́ řešenı́ duálnı́ úlohy můžeme najı́t přı́mo v optimálnı́ simplexové tabulce primárnı́ úlohy (tj. v simplexové tabulce, která dává optimálnı́ řešenı́). Uvažujme přı́pad, kdy primárnı́ úloha má tvar (2.62) – (2.64), kde pravé strany omezenı́ jsou nezáporné. Po přidánı́ vektoru xD doplňkových proměnných dostáváme v maticovém vyjádřenı́ úlohu f (x) = cT x → max Ax + ExD = b x ≥ 0, xD ≥ 0 a výchozı́ simplexová tabulka má tvar A −cT E 0T 45 b 0 ! . Výchozı́ bázı́ je matice E a výchozı́mi bázickými proměnnými jsou zde tedy doplňkové proměnné. Předpokládejme, že úloha má optimálnı́ řešenı́ s bázı́ Bo . Matici výchozı́ simplexové tabulky vynásobı́me zleva maticı́ ! B−1 0 o , cTBo B−1 1 o čı́mž dostaneme maticové vyjádřenı́ simplexové tabulky, odpovı́dajı́cı́ bázi Bo : ! B−1 B−1 B−1 o A o o b . T cT B−1 cT B−1 b cTBo B−1 o A−c Bo o Bo o Vidı́me, že vektor cTBo B−1 o , určujı́cı́ podle vztahu (2.76) optimálnı́ řešenı́ duálnı́ úlohy, se nacházı́ v poslednı́m řádku simplexové tabulky na pozicı́ch proměnných, odpovı́dajı́cı́ch výchozı́ bázi. Toto však platı́ nejen pro uvažovaný typ primárnı́ úlohy, ale zcela obecně (ovšem za předpokladu, že v průběhu řešenı́ nevyškrtáváme ze simplexové tabulky sloupce přı́slušejı́cı́ pomocným proměnným). Výchozı́ báze je totiž vždy tvořena jednotkovými sloupci odpovı́dajı́cı́mi doplňkovým nebo pomocným proměnným, přičemž koeficienty těchto proměnných v účelové funkci jsou nulové. Jestliže v počátečnı́ simplexové tabulce se v i-tém omezenı́ nacházı́ bázická proměnná xj , pak v závěrečné (optimálnı́) simplexové tabulce najdeme v poslednı́m řádku na pozici proměnné xj optimálnı́ hodnotu i-té duálnı́ proměnné. Hodnoty duálnı́ch proměnných, odpovı́dajı́cı́ch nerovnostem typu ≥ s nezápornou pravou stranou, můžeme v poslednı́m řádku simplexové tabulky najı́t také na pozicı́ch přı́slušných doplňkových proměnných, ovšem s opačným znaménkem (viz přı́klad 2.24). Přı́klad 2.21 Uvažujme zde následujı́cı́ konkretizaci úlohy o výrobnı́m programu, jejı́ž obecná podoba byla popsána v přı́kladě 2.18. Podnik může vyrábět dva druhy výrobků, V1 a V2 , přičemž při výrobě využı́vá tři druhy surovin, S1 , S2 a S3 , jejichž zásoby pro dané obdobı́ jsou omezené. Předpokládáme, že ostatnı́ výrobnı́ zdroje jsou k dispozici v natolik dostatečném množstvı́, že nemusejı́ být v modelu uvažovány. Je třeba pro uvažované obdobı́ najı́t takový výrobnı́ program, který zajistı́ maximálnı́ hodnotu produkce. Údaje potřebné k sestavenı́ modelu se nacházejı́ v tabulce 2.16. Označı́me-li množstvı́ j-tého výrobku v kg symbolem xj a celkovou hodnotu produkce Tabulka 2.16: Spotřeba suroviny na výrobu 1 kg výrobku S1 S2 S3 Cena v Kč za 1 kg výrobku V1 2 2 3 500 V2 3 1 0 300 Zásoba suroviny v kg 180 100 120 v Kč symbolem z, můžeme daný problém matematicky vyjádřit takto (jedná se o kvantifikaci modelu (2.62) – (2.64)): z = 500x1 + 300x2 → max 2x1 + 3x2 ≤ 180 2x1 + x2 ≤ 100 3x1 ≤ 120 x1 , x2 , x3 ≥ 0. 46 Přidánı́m nezáporných doplňkových proměnných x3 , x4 a x5 upravı́me omezenı́ do tvaru 2x1 + 3x2 + x3 = 180 2x1 + x2 + x4 = 100 3x1 + x5 = 120 Řešenı́ tohoto problému simplexovou metodou ponechme na čtenáři a uved’me zde pouze poslednı́ simplexovou tabulku dávajı́cı́ optimálnı́ řešenı́ (viz tabulka 2.17). Z tabulky vyplývá, že optimálnı́ Tabulka 2.17: x5 x2 x1 ∆j x1 x2 x3 x4 x5 0 0 3/4 −9/4 1 30 0 1 1/2 −1/2 0 40 1 0 −1/4 3/4 0 30 0 0 25 225 0 27000 je v daném obdobı́ vyrábět 30 kg výrobku V1 a 40 kg výrobku V2 , což dává celkovou hodnotu produkce 27000 Kč. Při tomto výrobnı́m programu se zcela využijı́ zásoby surovin S1 a S2 (doplňkové proměnné x3 a x4 jsou nulové) a nevyužito zůstane 30 kg suroviny S3 (x5 = 30). Zajı́má-li nás optimálnı́ řešenı́ úlohy duálně sdružené s danou úlohou, můžeme je najı́t v poslednı́m řádku simplexové tabulky na pozicı́ch doplňkových proměnných x3 , x4 a x5 (byla-li doplňková proměnná zavedena do i-tého omezenı́, najdeme na jejı́ pozici hodnotu i-té duálnı́ proměnné). Optimálnı́m řešenı́m duálnı́ úlohy je tedy vektor uTo = (25, 225, 0) (ponecháváme na čtenáři, aby si sestavil přı́slušnou duálnı́ úlohu a na základě důsledku 2.2 slabé věty o dualitě ověřil, že se skutečně jedná o řešenı́ optimálnı́). Význam duálnı́ch proměnných. vodit ze vztahu Význam optimálnı́ho řešenı́ uo duálnı́ úlohy můžeme odfopt = m X bi uoi , i=1 kde fopt je optimálnı́ hodnota účelové funkce primárnı́ úlohy. Jestliže se pravá strana k-tého primárnı́ho omezenı́ změnı́ z hodnoty bk na hodnotu bk + δbk , pak nová optimálnı́ hodnota primárnı́ účelové funkce bude dána výrazem fopt + δbk uok (jak uvidı́me dále v podkapitole 2.8, toto platı́ pouze v určitém rozsahu změn, v jehož rámci se neměnı́ optimálnı́ báze). Budeme-li na fopt pohlı́žet jako na funkci veličin bi , pak ∂fopt = uoi , ∂bi a vidı́me tedy, že optimálnı́ hodnoty duálnı́ch proměnných vyjadřujı́ citlivost optimálnı́ hodnoty primárnı́ účelové funkce na změny pravých stran primárnı́ch omezenı́. Duálnı́ proměnné tudı́ž hrajı́ důležitou roli v analýze citlivosti (viz podkapitolu 2.8). Kromě výše uvedeného využitı́ lze ještě optimálnı́ hodnoty duálnı́ch proměnných interpretovat v souladu s věcným obsahem dané úlohy. Uvažujme např. opět úlohu optimalizace výrobnı́ho 47 programu, zmı́něnou v přı́kladě 2.18. Jestli zde zvýšı́me zásobu i-tého zdroje o jednotku (předp. pro jednoduchost, že tato změna nevede ke změně optimálnı́ báze), pak se optimálnı́ hodnota účelové funkce (tj. celková hodnota produkce) zvýšı́ o hodnotu uoi . Ke zvýšenı́ optimálnı́ hodnoty účelové funkce ovšem dojde pouze v přı́padě, že tento zdroj je v optimálnı́m řešenı́ plně využit. Pokud tomu tak nenı́ (tj. přı́slušné omezenı́ je splněno jako ostrá nerovnost), pak z věty o komplementaritě plyne, že odpovı́dajı́cı́ duálnı́ proměnná je nulová. Optimálnı́ hodnoty duálnı́ch proměnných zde tedy představujı́ oceněnı́ zdrojů z hlediska jejich omezenosti a proto se také nazývajı́ stı́novými cenami . Tyto ceny mohou podnikovému managementu pomoci rozhodnout, zda zvýšit výrobu dodatečným zı́skánı́m omezených zdrojů. Jestliže stı́nová cena jednotky některého zdroje nenı́ vyššı́ než cena, kterou by bylo nutno vynaložit na dodatečné zı́skánı́ jednotky tohoto zdroje, tak se nevyplatı́ zásobu tohoto zdroje zvyšovat. Přı́klad 2.22 V přı́kladě 2.21 jsme zjistili, že optimálnı́ řešenı́ duálnı́ úlohy je uTo = (25, 225, 0). Tedy stı́nová cena suroviny S1 je 25 Kč, stı́nová cena suroviny S2 je 225 Kč a stı́nová cena suroviny S3 je nulová. To je v souladu se skutečnostı́, že vypočtený výrobnı́ program plně využı́vá zásoby surovin S1 a S2 , kdežto zásoba suroviny S3 zůstává zčásti nevyužita. Dodatečným zvýšenı́m zásoby suroviny S1 nebo S2 můžeme zvýšit výrobu a tı́m zvýšit hodnotu účelové funkce, kdežto zvýšenı́ zásoby suroviny S3 neznamená žádný přı́nos. Stı́nové ceny také mohou pomoci při rozhodnutı́, zda rozšı́řit výrobnı́ program o dalšı́ výrobek. Předpokládejme, že cena jednotky tohoto výrobku je cn+1 a zdrojové požadavky na jednotku výrobku jsou ai,n+1 . Nové proměnné odpovı́dá duálnı́ omezenı́ m X ai,n+1 ui ≥ cn+1 . (2.77) i=1 Pokud vypočtené stı́nové ceny tuto nerovnost splňujı́, pak nový výrobek nenı́ výhodné zavádět do výroby, nebot’ celková stı́nová cena zdrojů nárokovaných jednotkou tohoto výrobku (levá strana nerovnosti) nenı́ menšı́ než cena tohoto výrobku. Původnı́ řešenı́ tedy zůstává optimálnı́. Nesplněnı́ této nerovnosti znamená, že novou proměnnou by bylo vhodné zařadit do báze a určit nové optimálnı́ řešenı́ (toto opět souvisı́ s analýzou citlivosti). Tento přı́klad ukazuje, jak lze s pomocı́ stı́nových cen interpretovat kritérium optimality primárnı́ho řešenı́. Přı́klad 2.23 Vrat’me se znovu k přı́kladu 2.21 a uvažujme o možnosti zavést do výroby dva dalšı́ výrobky V3 a V4 , charakterizované údaji v tabulce 2.18. Musı́me ověřit, zda pro tyto Tabulka 2.18: Spotřeba suroviny na výrobu 1 kg výrobku V3 V4 S1 1 5 S2 4 1 S3 2 2 Cena v Kč za 1 kg výrobku 700 600 výrobky splňuje vektor stı́nových cen uTo = (25, 225, 0) podmı́nku (2.77). Pro výrobek V3 je tato podmı́nka splněna, nebot’ 1 · 25 + 4 · 225 + 2 · 0 = 925 > 700. Tento výrobek tedy nemá smysl zařazovat do výrobnı́ho programu. Pro výrobek V4 je 5 · 25 + 1 · 225 + 2 · 0 = 350 < 600, 48 takže podmı́nka (2.77) splněna nenı́ a výrobek V4 by měl být do výrobnı́ho programu zařazen. Je tedy nutno vypočı́tat nové optimálnı́ řešenı́. Přitom nenı́ nutno řešit problém od počátku, ale je možno navázat na tabulku 2.17, k nı́ž přidáme sloupec nové proměnné, upravený pomocı́ inverznı́ matice k matici báze této tabulky. 2.7.4 Duálně simplexová metoda Navážeme-li na předchozı́ úvahy, dospějeme ke zjištěnı́, že podmı́nka optimality primárnı́ho řešenı́ je ekvivalentnı́ s podmı́nkou přı́pustnosti duálnı́ho řešenı́. Ukažme si platnost tohoto tvrzenı́ pro dvojici duálně sdružených úloh (2.74). Podmı́nka optimality pro primárnı́ úlohu vypadá v maticovém vyjádřenı́ takto: cTB B−1 A − cT ≥ 0T . S pomocı́ vztahu (2.76) ji můžeme vyjádřit ve tvaru uT A − cT ≥ 0T . Odtud po úpravě dostaneme vztah AT u ≥ c, což je podmı́nka přı́pustnosti řešenı́ duálně sdružené úlohy, jak si můžeme ověřit srovnánı́m se vztahy (2.74). Jestliže bázické řešenı́ určené bázı́ B splňuje podmı́nku B−1 b ≥ 0, řekneme, že tato báze je primárně přı́pustná. Jestliže toto řešenı́ splňuje rovněž podmı́nku optimality, řekneme, že báze B je také duálně přı́pustná. V této souvislosti někdy také hovořı́me o primárně a duálně přı́pustném řešenı́. V simplexové metodě vycházı́me z bázického řešenı́, jehož báze je primárně přı́pustná, ale obvykle nenı́ přı́pustná duálně. V dalšı́m postupu zachováváme primárnı́ přı́pustnost a snažı́me se odstranit duálnı́ nepřı́pustnost. Pokud má úloha optimálnı́ řešenı́, končı́me v okamžiku, kdy aktuálnı́ báze je primárně i duálně přı́pustná. Někdy ale bývá výhodné tento postup upravit tak, že vycházı́me z bázického řešenı́, jehož báze je přı́pustná duálně, ale nenı́ přı́pustná primárně, a v dalšı́m průběhu výpočtu zachováváme duálnı́ přı́pustnost a snažı́me se odstranit primárnı́ nepřı́pustnost. Na tomto principu je založena duálně simplexová metoda, která je podrobněji popsána v následujı́cı́m textu. Pro výraznějšı́ odlišenı́ můžeme pro původnı́ simplexovou metodu použı́vat název primárně simplexová metoda. Uvažujme maximalizačnı́ úlohu a předpokládejme, že báze B je duálně přı́pustná. Označme β = B−1 b, αij = prvek matice B−1 A. Je-li některé βi < 0, můžeme řešenı́ zlepšit tak, že z báze vyloučı́me vektor i-té bázické proměnné. Předpokládejme, že jsme vybrali βr = min βi . (2.78) βi <0 Tedy klı́čovým řádkem bude řádek r-tý. Aby byla v tomto řádku odstraněna primárnı́ nepřı́pustnost, musı́ být klı́čový prvek αrs zvolen tak, aby byl záporný. Po transformaci se na pozici prvku ∆s musı́ objevit nula, a tudı́ž musı́me k řádku ∆T přičı́st λ-násobek klı́čového řádku, kde λ = −∆s /αrs (λ ≥ 0, nebot’ vzhledem k duálnı́ přı́pustnosti báze B je ∆s ≥ 0). Řešenı́ však musı́ zůstat duálně přı́pustné, tj. musı́ platit ∆j + λαrj ≥ 0, j = 1, 2, ..., n. 49 Je-li αrj ≥ 0, je nerovnost splněna pro všechna λ ≥ 0. Pro αrj < 0 musı́ platit λ≤ −∆j . αrj Zatı́m jsme se zabývali maximalizačnı́ úlohou. U minimalizačnı́ úlohy bychom obdobně dospěli k podmı́nce ∆j , −λ ≤ αrj kde ∆j ≤ 0 a αrj < 0. Společné vyjádřenı́ této podmı́nky pro oba typy úloh je ∆j |λ| ≤ αrj a tedy |λ| určı́me jako ∆s ∆j . |λ| = = min αrs αrj <0 αrj (2.79) Tı́mto vztahem je určeno, že klı́čovým sloupcem bude s-tý sloupec, a že tedy proměnná xs vstoupı́ do báze. Následuje transformace simplexové tabulky, která se provádı́ stejně jako v primárnı́ simplexové metodě. Pokud nelze určit klı́čový sloupec (tj. v klı́čovém řádku je αrj ≥ 0 pro všechna j), pak to znamená, že duálnı́ úloha nemá optimálnı́ řešenı́ (jejı́ účelová funkce nenı́ omezená) a tudı́ž primárnı́ úloha nemá žádné přı́pustné řešenı́. Algoritmus duálně simplexové metody. Mějme výchozı́ bázi, která je duálně přı́pustná. 1. Kritérium optimality. Platı́-li pro aktuálnı́ bázi B, že β = B−1 b ≥ 0, je tato báze primárně přı́pustná a postup končı́, nebot’ odpovı́dajı́cı́ bázické řešenı́ je optimálnı́. 2. Nalezenı́ klı́čového prvku podle vztahů (2.78) a (2.79). Tento prvek určuje, že r-tá bázická proměnná bude v bázi nahrazena proměnnou xs (tj. r-tý sloupec matice B bude nahrazen s-tým sloupcem matice A). Jestliže klı́čový prvek nelze určit, postup končı́, nebot’ primárnı́ úloha nemá žádné přı́pustné řešenı́. 3. Transformace simplexové tabulky. Provede se stejně jako v primárnı́ simplexové metodě. Postup se opakuje od bodu 1. Tento algoritmus lze jednoduše použı́t např. pro minimalizačnı́ úlohy s nezápornými koeficenty v účelové funkci a s omezenı́mi ve tvaru nerovnostı́, z nichž alespoň jedna je typu ≥ a má nezápornou pravou stranu. Zavedenı́m doplňkových proměnných a jejich volbou za proměnné bázické zı́skáme bázi, která je duálně přı́pustná. Přı́klad 2.24 Je dána úloha minimalizovat z = 3x1 + 4x2 za podmı́nek 4x1 + 8x2 ≥ 240 x1 ≤ 40 x2 ≤ 20 x1 ≥ 0, x2 ≥ 0. 50 Přidánı́m nezáporných doplňkových proměnných do nerovnostı́ dostaneme soustavu rovnic 4x1 + 8x2 − x3 = 240 x1 + x4 = 40 x2 + x5 = 20 Prvou rovnici vynásobı́me −1 a za výchozı́ bázi B zvolı́me matici tvořenou poslednı́mi třemi sloupci matice soustavy. Výpočet pomocı́ duálně simplexové metody je proveden v tabulce 2.19. V úvodnı́ simplexové tabulce vidı́me, že je splněno primárnı́ kritérium optimality minimalizačnı́ho problému, a že tedy zvolená výchozı́ báze je duálně přı́pustná. V pravé straně prvého řádku se vyskytuje záporné čı́slo a tudı́ž tato báze nenı́ primárně přı́pustná. Volı́me prvý řádek jako klı́čový. −4 −3 −4 |λ| = min , = −4 −8 −8 a klı́čovým sloupcem je tedy sloupec druhý. Duálnı́ přı́pustnost bázı́ je pak dodržována i v dalšı́ch tabulkách. Primárnı́ nepřı́pustnost je odstraněna až třetı́ simplexovou tabulkou, která nám dává optimálnı́ řešenı́ xTo = (20, 20, 0, 20, 0), zo = 140. Optimálnı́ řešenı́ duálně sdružené úlohy můžeme najı́t v poslednı́m řádku simplexové tabulky na pozicı́ch doplňkových proměnných. Ve sloupcı́ch x4 a x5 jsou uvedeny přı́mo přı́slušné hodnoty druhé a třetı́ duálnı́ proměnné, kdežto hodnota prvé duálnı́ proměnné se nacházı́ ve sloupci x3 s opačným znaménkem (v rovnicovém tvaru primárnı́ úlohy je u proměnné x3 znaménko minus). Optimálnı́m řešenı́m duálně sdružené úlohy je tedy vektor uTo = (3/4, 0, −2). Snadno si můžeme ověřit, že tomu tak je. Dosazenı́m do duálnı́ úlohy w = 240u1 + 40u2 + 20u3 → max 4u1 + u2 ≤ 3 8u1 + u3 ≤ 4 u1 ≥ 0, u2 ≤ 0, u3 ≤ 0, zjistı́me, že se jedná o přı́pustné řešenı́ s hodnotou účelové funkce rovnou 140. Podle důsledku 2.2 slabé věty o dualitě se tedy jedna o řešenı́ optimálnı́. Uvedené výsledky mohou posloužit také jako ilustrace věty o komplementaritě (věta 2.9). Optimálnı́ hodnoty proměnných x1 a x2 jsou nenulové a tedy odpovı́dajı́cı́ duálnı́ omezenı́ jsou splněna jako rovnice. Druhé omezenı́ primárnı́ úlohy je splněno jako ostrá nerovnost a tudı́ž optimálnı́ hodnota proměnné u2 je nulová. V předchozı́m jsme popsali jednoduššı́ podobu duálně simplexové metody, která předpokládá, že na počátku máme k dispozici duálně přı́pustnou bázi. Situaci, kdy tomu tak nenı́, řešı́ obecná varianta duálně simplexové metody (viz např. [PLESNÍK, DUPAČOVÁ, VLACH 1990]) přidánı́m umělého omezenı́. V praxi se upřednostňuje primárnı́ simplexová metoda. Duálnı́ metoda má tu nevýhodu, že ji nemůžeme předčasně ukončit a spokojit se s posledně zı́skaným řešenı́m, protože průběžná bázická řešenı́ nejsou primárně přı́pustná a přı́pustné řešenı́ (pokud existuje) zı́skáme až v poslednı́m kroku. Proto se duálně simplexová metoda použı́vá spı́še na dodatečné výpočty při změně vektoru b, při přidánı́ dalšı́ho omezenı́, v parametrickém programovánı́ apod. 51 Tabulka 2.19: x3 x4 x5 ∆j x2 x4 x5 ∆j x2 x4 x1 ∆j 2.8 x1 x2 −4 1 0 −3 1/2 1 –1/2 −1 0 0 1 0 –8 0 1 −4 1 0 0 0 1 0 0 0 x3 x4 1 0 0 0 −1/8 0 1/8 −1/2 0 1/4 −1/4 −3/4 x5 0 0 −240 1 0 40 0 1 20 0 0 0 0 0 30 1 0 40 0 1 −10 0 0 120 0 1 20 1 2 20 0 −2 20 0 −2 140 Analýza citlivosti Až dosud jsme předpokládali, že v úloze lineárnı́ho programovánı́ jsou všechny prvky matice A i vektorů b a c známé konstanty, a že pevně dán je i počet proměnných a omezenı́. Toto ovšem ne vždy odpovı́dá skutečnosti. Často se zpočátku zabýváme zjednodušenou úlohou, v nı́ž neuvažujeme všechna omezenı́ a všechny proměnné. Dodatečně pak chceme zjistit, zda to, co jsme vynechali, skutečně nemá na optimálnı́ řešenı́ vliv. Rovněž koeficienty v zadánı́ úlohy se často mohou měnit nebo mohou být pouhými odhady a potřebujeme zjistit, jak přı́padné změny těchto koeficientů ovlivňujı́ optimálnı́ řešenı́ úlohy. Těmito otázkami se zabývá analýza citlivosti , která také bývá nazývána postoptimalizačnı́ analýzou. Někdy lze popsat změnu zadánı́ úlohy jako závislost koeficientů úlohy na parametrech, které nabývajı́ hodnot z dané množiny. Sledujeme pak závislost optimálnı́ho řešenı́ na těchto parametrech a hovořı́me o úloze parametrického programovánı́ (viz [DINKELBACH 1973], [PLESNÍK, DUPAČOVÁ, VLACH 1990]). Při změně zadánı́ se řešenı́ úlohy může změnit různými způsoby: může se změnit pouze optimálnı́ hodnota účelové funkce, mohou se změnit optimálnı́ hodnoty proměnných při zachovánı́ optimálnosti dosavadnı́ báze, může se změnit optimálnı́ báze a také se může stát, že úloha nebude mı́t vůbec přı́pustné řešenı́. K analýze citlivosti optimálnı́ho řešenı́ na změny zadánı́ úlohy existujı́ dva základnı́ přı́stupy. Prvý přı́stup můžeme označit jako experimentálnı́, druhý přı́stup je analytický. Experimentálnı́ přı́stup spočı́vá v tom, že provedeme v zadánı́ úlohy přı́slušné změny a zkoumáme jejich důsledky. Neznamená to ovšem, že bychom vždy museli řešit změněnou úlohu od počátku. V některých přı́padech můžeme navázat na optimálnı́ simplexovou tabulku původnı́ úlohy a využı́t přitom jejı́ maticové vyjádřenı́ ! B−1 A B−1 b , cTB B−1 A − cT cTB B−1 b kde A je matice zadané úlohy po jejı́m převodu do rovnicového tvaru a B je optimálnı́ báze. Je třeba poznamenat, že pro účely dále popsané analýzy nenı́ nutno počı́tat inverznı́ matici B−1 , protože tuto matici můžeme najı́t v poslednı́ simplexové tabulce na pozicı́ch sloupců jednotkové matice z úvodnı́ tabulky (za podmı́nky, že použijeme primárně simplexovou metodu a sloupce přı́slušné pomocným proměnným se po prvé fázi výpočtu z tabulky nevyškrtávajı́). 52 Změna účelové funkce. V maticovém vyjádřenı́ simplexové tabulky vidı́me, že změna vektoru c způsobı́ změny pouze v poslednı́m řádku této tabulky. Stačı́ tedy pro nový vektor ĉ vypočı́tat ˆ T = ĉTB B−1 A − ĉT ∆ (2.80) ˆ ≥ 0 pro maximalizačnı́ úlohu, ∆ ˆ ≤ 0 pro minia prověřit platnost kritéria optimality (∆ malizačnı́ úlohu). Zůstává-li toto kritérium v platnosti, je báze B nadále optimálnı́, neměnı́ se optimálnı́ hodnoty bázických proměnných a optimálnı́ hodnota účelové funkce je ĉTB B−1 b. V opačném přı́padě musı́me pokračovat dále ve výpočtu pomocı́ primárně simplexového algoritmu. Přı́klad 2.25 Budeme analyzovat dopady změn koeficientů účelové funkce na optimálnı́ řešenı́ primárnı́ úlohy z přı́kladu 2.21. Z tabulky 2.17 zı́skáme matici 0 0 3/4 −9/4 1 1/2 −1/2 0 B−1 A = 0 1 1 0 −1/4 3/4 0 a) Necht’ se cena výrobku V1 snı́žı́ o 50 Kč a cena výrobku V2 zvýšı́ o 100 Kč. To znamená, že vektor nových cen ĉT = (450, 400, 0, 0, 0) a vektor nových cen bázických proměnných ĉTB = (0, 400, 450) (pořadı́ bázických proměnných musı́ být stejné jako v tabulce 2.17). Pak dosazenı́m do vztahu 2.80 dostaneme ˆ T = (450, 400, 175/2, 275/2, 0) − (450, 400, 0, 0, 0) ∆ = (0, 0, 175/2, 275/2, 0) ≥ 0T . Kritérium optimality tedy zůstává splněno a optimálnı́ řešenı́ se neměnı́. b) Uvažujme nynı́ tento vektor cenových koeficientů: ĉT = (600, 250, 0, 0, 0). Pak ˆ T = (0, 0, −25, 325, 0). ∆ Kritérium optimality v tomto přı́padě už neplatı́ a je nutno vypočı́tat nové optimálnı́ řešenı́. Změna pravé strany omezenı́. Změna vektoru b neovlivnı́ kritérium optimality, ale může ovlivnit platnost podmı́nky nezápornosti řešenı́. Platı́-li pro nový vektor b̂ , že B−1 b̂ ≥ 0, je dosavadnı́ báze primárně přı́pustná a tedy i optimálnı́, přičemž B−1 b̂ je vektor nových optimálnı́ch hodnot bázických proměnných a cTB B−1 b̂ je nová optimálnı́ hodnota účelové funkce. V opačném přı́padě je nutno pokračovat dále ve výpočtu, ovšem tentokrát pomocı́ duálně simplexového algoritmu, protože aktuálnı́ báze nenı́ primárně přı́pustná, ale je duálně přı́pustná. Přı́klad 2.26 Vrat’me se znovu k primárnı́ úloze deno v tabulce 2.17. V této tabulce se na pozicı́ch matice 3/4 −1 1/2 B = −1/4 53 z přı́kladu 2.21, jejı́ž optimálnı́ řešenı́ je uvedoplňkových proměnných x3 , x4 a x5 nacházı́ −9/4 1 −1/2 0 3/4 0 a) Necht’ se zásoba suroviny S1 zvýšı́ o 20 kg a zásoba suroviny S2 snı́žı́ o 10 kg. Pak nový vektor pravých stran b̂T = (200, 90, 120) a B−1 b̂ = (135/2, 55, 35/2)T ≥ 0. Báze B tedy zůstává primárně přı́pustná a tedy i optimálnı́. b) Jestliže nový vektor pravých stran b̂ = (150, 150, 100)T , pak B−1 b̂ = (−125, 0, 75)T a báze B už nenı́ primárně přı́pustná a tedy ani optimálnı́. Analytický přı́stup. Při tomto přı́stupu se zkoumá vždy vliv změn jediného koeficientu a zjišt’uje se, v jakém rozmezı́ se tento koeficient může měnit, aniž by se měnila optimálnı́ báze. Ukažme si uplatněnı́ tohoto přı́stupu při studiu důsledků změn koeficientů účelové funkce maximalizačnı́ho problému a pravých stran omezujı́cı́ch podmı́nek. Změna koeficientu účelové funkce maximalizačnı́ úlohy. Např. v úloze optimalizace výrobnı́ho programu (viz přı́klad 2.18) jde při tomto zkoumánı́ o zodpovězenı́ následujı́cı́ch otázek: • Jak velký pokles ceny výrobku způsobı́ jeho vyřazenı́ z optimálnı́ho výrobnı́ho programu? • Jak velký vzrůst ceny výrobku způsobı́ jeho zařazenı́ do optimálnı́ho výrobnı́ho programu? Necht’ B je optimálnı́ báze a označme αij prvky matice B−1 A. Pak ∆j = c0j − cj = m X αij cBi − cj , j = 1, 2, ..., n, i=1 kde cBi je koeficient u i-té bázické proměnné (tj. u bázické proměnné vyskytujı́cı́ se v poslednı́ simplexové tabulce v i-tém řádku). Necht’ se k-tý koeficient účelové funkce změnı́ z hodnoty ck na hodnotu ĉk = ck + δck . Musı́me zde rozlišovat, zda se jedná o koeficient u bázické nebo nebázické proměnné. Je-li proměnná xk nebázickou proměnnou, je analýza tohoto přı́padu jednoduchá. Pokud je δck ≤ c0k − ck , zůstává kritérium optimality v platnosti a proměnná xk tedy nevstoupı́ do báze. ˆ j ≥ 0 pro Je-li proměnná xk bázickou proměnnou, musı́me zkoumat platnost podmı́nky ∆ všechna j. Předpokládejme, že tato bázická proměnná vystupuje v simplexové tabulce v i-tém řádku. Pak po změně koeficientu ck bude ˆ k = 0, ∆ ˆ j = ∆j + αij δck , ∆ j = 1, 2, ..., n, j 6= k. Meze, v nichž se δck může pohybovat, aniž by došlo ke změně optimálnı́ báze, najdeme řešenı́m soustavy nerovnostı́ ∆j + αij δck ≥ 0, j = 1, 2, ..., n, j 6= k. Je-li αij ≥ 0, je j-tá nerovnost splněna pro všechna δck ≥ 0. Je-li αij < 0, musı́ být δck ≤ −∆j . αij 54 Je-li αij ≤ 0, je j-tá nerovnost splněna pro všechna δck ≤ 0. Je-li αij > 0, musı́ být δck ≥ −∆j . αij Aby tedy dosavadnı́ báze zůstala optimálnı́, musı́ δck splňovat vztahy min{−∆j /αij } pro αij < 0, δck ≤ +∞ jsou-li všechna αij ≥ 0, max{−∆j /αij } pro αij > 0, j 6= k, δck ≥ −∞ jsou-li všechna αij ≤ 0, j 6= k, (2.81) (2.82) kde i je čı́slo řádku, ve kterém se vyskytuje proměnná xk . Přı́klad 2.27 Mějme úlohu z přı́kladu 2.21 a zkoumejme, v jakém rozsahu se může měnit cena určitého výrobku, aniž by to vedlo ke změně optimálnı́ho výrobnı́ho programu. Optimálnı́ řešenı́ uvažované úlohy se nacházı́ v tabulce 2.17. a) Rozsah změn c1 : Proměnná x1 se nacházı́ v optimálnı́ bázi, takže využijeme vztahy (2.81) – (2.82). V tabulce je ∆T = (0, 0, 25, 225, 0) a koeficienty αij ve třetı́m řádku, v němž se x1 nacházı́, majı́ hodnoty 1, 0, −1/4, 3/4, 0. Dosazenı́m do vztahů (2.81) – (2.82) zjistı́me, že −300 ≤ δc1 ≤ 100. Cena výrobku V1 se tedy může pohybovat od 200 Kč do 600 Kč, aniž by se změnil optimálnı́ výrobnı́ program. b) Rozsah změn c2 : Proměnná x2 je bázická a nacházı́ se ve druhém řádku. Koeficienty α2j majı́ hodnoty 0, 1, 1/2, −1/2, 0, a tedy musı́ být −50 ≤ δc2 ≤ 450. Cena výrobku V2 se může měnit od 250 Kč do 750 Kč. Změna pravé strany omezenı́. Uvažujme nynı́ změnu pravé strany k-tého omezenı́ z hodnoty bk na hodnotu bk + δbk . Necht’ B je optimálnı́ báze a necht’ k-tý sloupec matice B−1 je tvořen prvky α1j , α2j , ..., αmj j-tého sloupce poslednı́ simplexové tabulky (tj. předpokládáme, že v počátečnı́ simplexové tabulce byl tento sloupec jednotkový s jedničkou v k-tém řádku). Označme dále β = B−1 b. Řešenı́m soustavy nerovnostı́ βi + αij δbk ≥ 0, i = 1, 2, ..., m zjistı́me, že aby zůstala báze δbk ≤ δbk ≥ B optimálnı́, musı́ δbk splňovat vztahy min{−βi /αij } pro αij < 0, +∞ jsou-li všechna αij ≥ 0, (2.83) max{−βi /αij } pro αij > 0, −∞ jsou-li všechna αij ≤ 0. (2.84) Přı́klad 2.28 Uvažujme ještě jednou úlohu z přı́kladu 2.21 a zkoumejme, v jakém rozsahu se může měnit zásoba určité suroviny, aniž by to vedlo ke změně optimálnı́ báze (tj. ke změně zařazenı́ výrobků do výrobnı́ho programu). Potřebné údaje najdeme opět v tabulce 2.17. Sloupce matice B−1 se nacházejı́ u proměnných x3 , x4 a x5 a β T = (30, 40, 30). 55 a) Rozsah změn b1 : Při dosazenı́ do vzorců (2.83) – (2.84) použijeme prvý sloupec matice B−1 , jı́mž je vektor (3/4, 1/2, −1/4)T . Zjistı́me, že −40 ≤ δb1 ≤ 120, a že tedy ke změně zařazenı́ výrobků do výrobnı́ho programu nedojde, když se zásoba suroviny S1 bude měnit v rozmezı́ od 140 kg do 300 kg. b) Rozsah změn b2 : Druhým sloupcem matice B−1 je vektor (−9/4, −1/2, 3/4)T a pro δb2 musı́ platit −40 ≤ δb2 ≤ 40/3. Zásoba suroviny S2 se tedy může měnit v rozmezı́ od 60 kg do 113,3̄ kg. c) Rozsah změn b3 : Třetı́m sloupcem matice B−1 je vektor (1, 0, 0)T a pro δb3 musı́ platit δb3 ≥ −30. Zásoba suroviny S3 tedy nesmı́ klesnout pod 90 kg. 56 Kapitola 3 Celočı́selné programovánı́ Dosud jsme se zabývali úlohami matematického programovánı́, v nichž rozhodovacı́ proměnné mohly v optimálnı́m řešenı́ nabývat libovolných reálných hodnot. Pokud do těchto úloh přidáme požadavky na celočı́selnost některých nebo všech rozhodovacı́ch proměnných, dostáváme úlohy celočı́selného programovánı́. V řadě praktických situacı́ skutečně potřebujeme celočı́selné hodnoty rozhodovacı́ch proměnných. Např. nemůžeme dodat na trh 120,3 auta, mı́t v budově 2,7 výtahu nebo přijmout ke studiu 52,6 studenta. Je možno namı́tnout, že v takových přı́padech snadno zı́skáme celočı́selné hodnoty zaokrouhlenı́m nebo odseknutı́m desetinné části. V mnoha přı́padech se skutečně tento postup použı́vá a přinášı́ uspokojivé výsledky. Existujı́ však situace, kde tento přı́stup vede bud’ k velkým chybám ve srovnánı́ s hodnotou účelové funkce v celočı́selném optimálnı́m řešenı́, nebo dává nepřı́pustná řešenı́. Ve zmı́něných přı́kladech se jedná o rozhodovacı́ proměnné, jejichž základnı́ jednotky jsou fyzicky nedělitelné. Proto se úlohám s takovými proměnnými řı́ká úlohy s nedělitelnostmi. S tı́mto typem úloh jsme se již setkali v kapitole 2. Jedná se např. o úlohu optimalizace výrobnı́ho programu, kde jednotkami množstvı́ produkce jsou kusy (viz př. 2.3), nebo o přı́klad 2.7. Ovšem celočı́selné programovánı́ je důležité nejen proto, že dovoluje řešit úlohy s nedělitelnostmi, ale také proto, že může být užito jako výpočetnı́ nástroj při řešenı́ různých komplikovaných problémů, které nemohou být jinak řešeny (nebo nemohou být jinak řešeny efektivně). Mezi ně patřı́ zejména kombinatorické problémy, v nichž jde o nalezenı́ takového řešenı́ z konečné množiny přı́pustných řešenı́ (obvykle velmi rozsáhlé), které optimalizuje danou účelovou funkci. Jako přı́klady kombinatorických úloh můžeme uvést úlohu obchodnı́ho cestujı́cı́ho, přiřazovacı́ úlohy a úlohy rozvrhovánı́. Pomocı́ celočı́selného programovánı́ mohou být řešeny také některé složité úlohy nelineárnı́ho programovánı́ patřı́cı́ např. k úlohám na nekonvexnı́ch a nesouvislých oblastech, k úlohám s nespojitou účelovou funkcı́ nebo k úlohám s vı́ce extrémy. Problematikou celočı́selného programovánı́ se zabývajı́ např. knihy [KORBUT, FINKEL’ŠTEJN 1972], [ALEXEJEV 1987], [NEMHAUSER, WOLSEY 1988], [WOLSEY 1998]. 3.1 Formulace úloh celočı́selného programovánı́ Úloha celočı́selného programovánı́ může být obecně formulována takto: minimalizovat f (x1 , x2 , ..., xn ) (3.1) za podmı́nek gi (x1 , x2 , ..., xn ) ≤ 0, i = 1, 2, ..., m, xj ∈ Mj ⊆ Z, 57 j ∈ J, (3.2) (3.3) kde J 6= ∅, J ⊆ {1, 2, ..., n} a Z je množina celých čı́sel. Úlohy celočı́selného programovánı́ dělı́me podle charakteru funkcı́ f, g1 , g2 , ..., gm na lineárnı́ a nelineárnı́. Pokud jsou podmı́nkou celočı́selnosti vázány všechny proměnné (tj. J = {1, 2, ..., n}), jedná se o úplně (ryze) celočı́selnou úlohu. Jestliže se podmı́nka celočı́selnosti týká pouze některých proměnných (tj. J ⊂ {1, 2, ..., n}), hovořı́me o částečně (smı́šeně) celočı́selné úloze. V rámci úloh celočı́selného programovánı́ tvořı́ zvláštnı́ skupinu úlohy bivalentnı́ho (nebo také nula-jedničkového) programovánı́, vyznačujı́cı́ se tı́m, že Mj = {0, 1}, j = 1, 2, . . . , n. Přı́klad 3.1 Optimalizace spolehlivosti zařı́zenı́. Uvažujme určité zařı́zenı́, u kterého je důležitá bezporuchová činnost. Zařı́zenı́ se skládá z n typů součástı́, které je možno pro zvýšenı́ spolehlivosti zařı́zenı́ zabudovat v paralelnı́m zapojenı́ vı́cenásobně. Máme za úkol navrhnout zařı́zenı́ tak, aby při daných omezenı́ch ceny a hmotnosti zařı́zenı́ byla maximalizována jeho spolehlivost (tj. pravděpodobnost, že u každého typu součásti vydržı́ během provozu alespoň jedna ze zabudovaných součástı́ bez poruchy). Necht’ je a1j a2j b1 b2 pj xj ... ... ... ... ... ... cena jedné součásti j-tého typu, hmotnost jedné součásti j-tého typu, limit ceny zařı́zenı́, limit hmotnosti zařı́zenı́, pravděpodobnost, že se součást j-tého typu během provozu porouchá, počet zabudovaných součástı́ j-tého typu. Předpokládejme, že poruchy jednotlivých součástı́ jsou navzájem nezávislé. Pak danou úlohu můžeme matematicky formulovat takto: maximalizovat f (x) = n Y x (1 − pj j ) j=1 za podmı́nek n X aij xj ≤ bi , i = 1, 2, j=1 xj ∈ {1, 2, ...}, j = 1, 2, ..., n. Přı́klad 3.2 Úloha o batohu. Mějme n předmětů, pro něž jsou zadány veličiny aj cj ... ... hmotnost j-tého předmětu, užitečnost (cena) j-tého předmětu. Batoh je třeba naplnit tak, abychom maximalizovali celkovou užitečnost nákladu a nepřekročili přitom limit b jeho hmotnosti. Zavedeme proměnné xj (j = 1, 2, ..., n) s tı́mto významem: 1 jestli naložı́me j-tý předmět, xj = 0 v opačném přı́padě. Matematická formulace této úlohy pak vypadá takto: maximalizovat f (x) = n X cj xj (3.4) j=1 za podmı́nek n X aj xj ≤ b, (3.5) j=1 xj ∈ {0, 1}, j = 1, 2, ..., n. 58 (3.6) V jiných variantách výše uvedeného modelu může vystupovat vı́ce omezenı́ typu (3.5) (např. se může omezit nejen celková hmotnost předmětů, ale také jejich celkový objem). Takové úlohy je pak přirozené nazvat vı́cerozměrnými úlohami o batohu. Jestliže budeme předpokládat, že každý předmět se může naložit ne v jednom, ale několika exemplářı́ch, změnı́ se omezenı́ (3.6) na obvyklou podmı́nku nezápornosti a celočı́selnosti všech proměnných. Takový model lze v praxi uplatnit např. při určovánı́ optimálnı́ho nákladu kamiónů nebo přepravnı́ch kontejnerů. Přı́klad 3.3 Úloha obchodnı́ho cestujı́cı́ho. Je dáno n + 1 měst a je známa matice C = (cij ) vzdálenostı́ mezi těmito městy. Obchodnı́ cestujı́cı́, který vycestuje z výchozı́ho města (označme je čı́slem 0), musı́ navštı́vit všechna ostatnı́ města právě jednou a vrátit se zpět do města 0. Je třeba stanovit pořadı́, ve kterém musı́ navštı́vit jednotlivá města, tak, aby celková překonaná vzdálenost byla minimálnı́. Tento problém lze matematicky formulovat např. takto: minimalizovat f (X) = n X n X cij xij (3.7) xij = 1, i = 0, 1, ..., n, (3.8) xij = 1, j = 0, 1, ..., n, (3.9) i=0 j=0 za podmı́nek n X j=0 n X i=0 kde xij = ui − uj + nxij ≤ n − 1, i, j = 1, 2, ..., n, (3.10) xij ∈ {0, 1}, i, j = 0, 1, ..., n, (3.11) 1 když obchodnı́ cestujı́cı́ cestuje z města i do města j, 0 v opačném přı́padě. Podmı́nky (3.8) znamenajı́, že obchodnı́ cestujı́cı́ opouštı́ každé město právě jednou a analogicky podmı́nky (3.9) znamenajı́, že obchodnı́ cestujı́cı́ vstupuje do každého města právě jednou. Podmı́nky (3.10) zabezpečujı́, že se trasa obchodnı́ho cestujı́cı́ho nerozpadne na několik navzájem nesouvisejı́cı́ch podcyklů. Skutečně, pokud bychom měli nějaký cyklus neobsahujı́cı́ město 0, pak sčı́tánı́m všech nerovnostı́ (3.10), odpovı́dajı́cı́ch dvojicı́m (i, j) patřı́cı́m do tohoto cyklu, (v těchto nerovnostech je xij = 1 a při sčı́tánı́ se všechna ui navzájem vyrušı́) bychom dostali nesmyslný vztah nk ≤ (n − 1)k (k je počet měst, nacházejı́cı́ch se v uvedeném cyklu). Odtud vyplývá, že cykly neobsahujı́cı́ město 0 nemohou být součástı́ přı́pustných řešenı́. Proměnné ui v podmı́nkách (3.10) mohou nabývat libovolné reálné hodnoty a máme zde tedy přı́klad částečně celočı́selné úlohy. Pro nějakou přı́pustnou trasu obchodnı́ho cestujı́cı́ho lze najı́t přı́pustné hodnoty proměnných ui tak, že položı́me ui = k tehdy, když obchodnı́ cestujı́cı́ navštı́vı́ i-té město na k-tém kroku trasy (k = 1, 2, ..., n). Můžeme tedy problém obchodnı́ho cestujı́cı́ho formulovat také jako plně celočı́selný problém s podmı́nkami ui ∈ {1, 2, ..., n} pro i = 1, 2, ..., n. Předchozı́ model může být v praxi aplikován v různých situacı́ch, např. při plánovánı́ trasy auta svážejı́cı́ho odpad, při stanovenı́ trasy rozvozu nějakého zbožı́ do obchodů, a může být zobecněn na přı́pad vı́ce obchodnı́ch cestujı́cı́ch. Přı́klad 3.4 Problém rozvrhovánı́ zakázkové výroby (job shop scheduling). Je dáno m strojů a n pracı́ (jobů). Každá práce se skládá z posloupnosti operacı́, přičemž každé operaci je jednoznačně přiřazen určitý stroj. V každém okamžiku se na každém stroji může provádět nejvýše jedna 59 operace a operace jsou nepřerušitelné. Cı́lem je určit pořadı́ pracı́ na jednotlivých strojı́ch tak, aby byla minimalizována daná kriteriálnı́ funkce. Často se jako kritérium použı́vá celková doba trvánı́ všech pracı́ (makespan). Zaved’me následujı́cı́ označenı́: n ni ... ... N m Jk pj tj T Cmax xjr ... ... ... ... ... ... ... ... počet pracı́ (jobů, výrobků); počet operacı́ v práci i; operace majı́ indexy Ni−1 + 1,...,Ni , kde P N0 = 0, Ni = ir=1 nr , i = 1, n; P..., n celkový počet operacı́; N = r=1 nr ; počet strojů; množina operacı́ přiřazených stroji k; doba prováděnı́ operace j; termı́n zahájenı́ operace j; hornı́ mez celkové doby trvánı́ všech pracı́; celková doba trvánı́ všech pracı́; Cmax = maxi (tNi + pNi ) proměnná popisujı́cı́ precedenčnı́ vztah mezi operacemi j, r ∈ Jk ; 1 operace j se provede před operacı́ r, xjr = 0 operace r se provede před operacı́ j. Problém optimalizace výrobnı́ho rozvrhu pak můžeme matematicky formulovat takto: minimalizovat F (3.12) za podmı́nek F ≥ tN i + pN i (3.13) tj+1 ≥ tj + pj (3.14) i = 1, ..., n; j = Ni−1 + 1, ..., Ni − 1; tr ≥ tj + pj − T (1 − xjr ) tj xjr (3.15) ≥ tr + pr − T xjr (3.16) ∈ {0, 1}, (3.17) k = 1, ..., m; j, r ∈ Jk ; F ≥ 0, tj ≥ 0, j = 1, ..., N ; (3.18) Podmı́nky (3.14) zajišt’ujı́, že operace na každé práci se provádějı́ v předem určeném pořadı́. Omezenı́ (3.15) a (3.16) požadujı́, aby v každém okamžiku byla na každém stroji prováděna nejvýše jedna operace. Jakékoli přı́pustné řešenı́ soustavy omezenı́ (3.13) – (3.18) se nazývá rozvrh. Protože proměnné ti mohou nabývat nezáporných reálných hodnot, jedná se o částečně celočı́selnou úlohu. Pořadı́ strojů u jednotlivých pracı́ v rozvrhovánı́ zakázkové výroby mohou být obecně různá. Jednoduššı́ přı́pad představuje rozvrhovánı́ proudové výroby (flow shop scheduling), kde pořadı́ strojů je pro každou práci stejné. V obou těchto přı́padech mohou být pořadı́ pracı́ na jednotlivých strojı́ch různá. Zvláštnı́m přı́padem je tzv. permutačnı́ rozvrhovánı́ proudové výroby, kde je požadováno stejné pořadı́ pracı́ na každém stroji. 3.2 Metody celočı́selného programovánı́ Při rozhodovánı́ o volbě vhodného přı́stupu k řešenı́ úlohy celočı́selného programovánı́ je třeba brát v úvahu rozsah množiny přı́pustných řešenı́. Jelikož většina úplně celočı́selných úloh má 60 konečný počet přı́pustných řešenı́, je u nich možné zvažovat použitı́ metody úplné enumerace, která spočı́vá v sestavenı́ všech možných kombinacı́ hodnot jednotlivých proměnných, vyloučenı́ kombinacı́ narušujı́cı́ch omezenı́ a výběru nejlepšı́ho řešenı́ na základě srovnánı́ hodnot účelové funkce. U úloh s malým počtem proměnných a malým počtem možných kombinacı́ je tato metoda účinná. V mnoha praktických problémech je však počet přı́pustných řešenı́ velmi velký a je nutno použı́t jiný přı́stup. Jak již bylo zmı́něno v úvodu této kapitoly, je praktický přı́stup k celočı́selnému problému v některých přı́padech takový, že se tento problém řešı́ při zanedbánı́ podmı́nek celočı́selnosti a pak se zı́skané optimálnı́ hodnoty rozhodovacı́ch proměnných upravı́ na celá čı́sla zaokrouhlenı́m nebo odseknutı́m desetinné části. Hlavnı́ přednostı́ takového přı́stupu je úspora času a nákladů, které by bylo třeba vynaložit na formulaci a řešenı́ celočı́selného modelu. Hlavnı́ nevýhodou tohoto přı́stupu je to, že výsledné řešenı́ se může významně lišit od optimálnı́ho řešenı́ a navı́c může být dokonce nepřı́pustné. Poznamenejme, že u některých lineárnı́ch problémů, jako je např. přiřazovacı́ problém nebo dopravnı́ problém s celočı́selnými hodnotami pravých stran omezenı́, je při zanedbánı́ podmı́nek celočı́selnosti a použitı́ simplexové metody teoreticky zaručeno zı́skánı́ celočı́selného optimálnı́ho řešenı́. Přı́klad 3.5 Uvažujme úlohu maximalizace z = x1 − 3x2 + 3x3 za podmı́nek 2x1 + x2 − x3 ≤ 4 4x1 − 3x2 ≤ 2 −3x1 + 2x2 + x3 ≤ 3 xj ≥ 0, xj ∈ Z, j = 1, 2, 3. Abstrahujeme-li od podmı́nek celočı́selnosti, je optimálnı́m řešenı́m odpovı́dajı́cı́ úlohy lineárnı́ho programovánı́ vektor xTo = ( 12 , 0, 92 ). Snadno se můžeme přesvědčit o tom, že žádná kombinace úprav na nejbližšı́ nižšı́ či vyššı́ celé čı́slo neposkytne přı́pustné řešenı́ celočı́selné úlohy. Optimálnı́m celočı́selným řešenı́m zkoumané úlohy je vektor xToc = (2, 2, 5). Předchozı́ přı́klad tedy ukazuje, že při úpravě optimálnı́ch celočı́selných hodnot na neceločı́selné nesmı́me zapomenout na ověřenı́ přı́pustnosti takto zı́skaného řešenı́. V přı́padě neúspěchu můžeme tento přı́stup zkombinovat s metodou náhodného hledánı́ v širšı́m okolı́ neceločı́selného optimálnı́ho řešenı́. Pokud jde o chybu, které se popsanou aproximacı́ optimálnı́ho celočı́selného řešenı́ dopouštı́me, pak hornı́m odhadem této chyby je absolutnı́ hodnota rozdı́lu mezi hodnotami účelové funkce v optimálnı́m neceločı́selném řešenı́ a v celočı́selném řešenı́ zı́skaném jeho úpravou. Nenı́-li tento rozdı́l v absolutnı́ hodnotě velký, pak nemá smysl investovat čas a penı́ze do zı́skánı́ optimálnı́ho celočı́selného řešenı́. V opačném přı́padě je nutno zvolit některou z řady metod, které nabı́zı́ aparát celočı́selného programovánı́. Velmi často je pro řešenı́ úloh celočı́selného programovánı́ použı́vána metoda větvı́ a mezı́, která spočı́vá v rozkladu množiny přı́pustných řešenı́ a poté jejı́ch vybraných podmnožin, přičemž výběr podmnožiny pro rozklad se provádı́ na základě mezı́ hodnot účelové funkce stanovených pro každou podmnožinu. Metody sečných nadrovin vycházejı́ z problému vzniklého zanedbánı́m podmı́nek celočı́selnosti a k němu postupně přidávajı́ dalšı́ lineárnı́ omezenı́, která od množiny 61 přı́pustných řešenı́ tohoto problému odsekávajı́“ neceločı́selná optimálnı́ řešenı́. Některé pro” blémy celočı́selného programovánı́ mohou být také řešeny pomocı́ dynamického programovánı́ (viz kap. 4). Pokud netrváme na nalezenı́ globálně optimálnı́ho řešenı́ a jsme ochotni se spokojit s nějakým dobrým“ řešenı́m zı́skaným v rozumném čase, můžeme se obrátit k rozsáhlému ” repertoáru heuristických metod. To je nezbytné např. v přı́padě, že máme nějakou rozsáhlou úlohu patřı́cı́ k tzv. NP-těžkým úlohám (NP znamená nedeterministicky polynomiálnı́). To jsou úlohy, pro něž zatı́m nenı́ znám polynomiálnı́ algoritmus, tj. algoritmus, jehož dobu trvánı́ lze pro úlohy o rozsahu L > L0 shora omezit nějakou polynomiálnı́ funkcı́ argumentu L. Mezi NP-těžké úlohy patřı́ např. úlohy rozvrhovánı́, úloha obchodnı́ho cestujı́cı́ho a úloha binárnı́ho lineárnı́ho programovánı́. 3.2.1 Metody sečných nadrovin Pro metody sečných nadrovin (metody řezů) je charakteristická počátečnı́ úprava dané celočı́selné úlohy, která spočı́vá ve vnořenı́“ množiny přı́pustných řešenı́ do nějaké souvislé nadmnožiny ” (jinými slovy jde o dočasné zanedbánı́ podmı́nek celočı́selnosti). Na takto zı́skanou spojitou úlohu se pak aplikuje nějaká vhodná optimalizačnı́ metoda. Jestliže optimálnı́ řešenı́ upravené úlohy vyhovuje požadovaným podmı́nkám celočı́selnosti, je vyřešena i původnı́ úloha. V opačném přı́padě se do spojité úlohy doplnı́ dodatečné lineárnı́ omezenı́, které má tyto vlastnosti: • nenı́ splněno pro optimálnı́ neceločı́selné řešenı́, • je splněno pro libovolné přı́pustné řešenı́ původnı́ho celočı́selného problému. Přidánı́ tohoto omezenı́ odpovı́dá geometricky zavedenı́ nadroviny, která od množiny přı́pustných řešenı́ spojitého problému odřı́zne“ optimálnı́ neceločı́selné řešenı́, přičemž nedojde ke ztrátě ” žádného přı́pustného řešenı́ celočı́selného problému. Postup se opakuje, tj. doplněný spojitý problém se znovu řešı́ a splňuje-li zı́skané optimálnı́ řešenı́ podmı́nky celočı́selnosti, je výpočet ukončen, kdežto v opačném přı́padě se přidá dalšı́ omezenı́ atd. Původně byly metody sečných nadrovin konstruovány pouze pro lineárnı́ úlohy. Z nich nejznámějšı́ jsou Gomoryho metody (viz [KORBUT, FINKEL’ŠTEJN 1972]). Později došlo k rozvoji těchto metod ve směru jejich rozšı́řenı́ na některé obecnějšı́ úlohy. Použitı́ metod sečných nadrovin může v některých přı́padech narazit na problémy spojené s nadměrným růstem rozměrnosti úlohy při přidávánı́ dodatečných omezenı́ a s pomalou konvergencı́. Pro ilustraci těchto metod zde popı́šeme jednoduchou variantu metody řezů pro lineárnı́ úlohy. Uvažujme následujı́cı́ úlohu celočı́selného lineárnı́ho programovánı́: maximalizovat z = n X cj xj (3.19) aij xj = bi , i = 1, 2, ..., m, (3.20) xj ≥ 0, j = 1, 2, ..., n, (3.21) xj ∈ Z, (3.22) j=1 za podmı́nek n X j=1 j = 1, 2, ..., n. Předpokládejme, že úloha (3.19) – (3.21) má optimálnı́ řešenı́, které nevyhovuje podmı́nkám celočı́selnosti (3.22). Ukažme si, jak je možno zkonstruovat dodatečné omezenı́, které toto řešenı́ oddělı́ od množiny přı́pustných řešenı́ úlohy (3.19) – (3.21). Necht’ B je báze optimálnı́ho řešenı́. Označme αij = prvek matice B−1 A, 62 β = B−1 b a necht’ k-tá složka vektoru β nenı́ celočı́selná. Dále budeme symbolem [x] označovat celou část x, tj. největšı́ celé čı́slo menšı́ nebo rovné čı́slu x. Jestliže libovolný vektor x, splňujı́cı́ podmı́nky (3.21) – (3.22), vyhovuje rovnici n X αkj xj = βk , (3.23) j=1 pak také vyhovuje nerovnosti n X [αkj ]xj ≤ [βk ]. j=1 Tuto nerovnost můžeme upravit přidánı́m celočı́selné nezáporné proměnné xn+1 na rovnici n X [αkj ]xj + xn+1 = [βk ]. (3.24) j=1 Označme nynı́ rkj = αkj − [αkj ] (j = 1, 2, ..., n), Rk = βk − [βk ]. Odečtenı́m (3.23) od (3.24) dostaneme rovnici n X (−rkj )xj + xn+1 = −Rk . (3.25) j=1 Z předchozı́ch úvah plyne, že libovolné přı́pustné řešenı́ celočı́selné úlohy (3.19) – (3.22) vyhovuje také podmı́nce (3.25). Zbývá prokázat, že neceločı́selné bázické optimálnı́ řešenı́ úlohy (3.19) – (3.21) této podmı́nce nevyhovuje. Označme symbolem N množinu indexů nebázických proměnných. Pak rovnici (3.23) můžeme psát ve tvaru X xp + αkj xj = βk , j∈N kde xp je bázická proměnná vyskytujı́cı́ se v tomto řádku. Odtud plyne, že podmı́nka (3.25) má tvar X (−rkj )xj + xn+1 = −Rk , (3.26) j∈N nebot’ αkp = 1 a tudı́ž rkp = 0. V optimálnı́m bázickém řešenı́ přı́slušném k bázi B jsou složky xj pro j ∈ N nulové. Dosadı́me-li tedy toto řešenı́ do rovnice (3.26), dostaneme, že xn+1 = −Rk < 0. To je ale ve sporu s požadavkem, že proměnná xn+1 má nabývat celočı́selných nezáporných hodnot. To znamená, že dodatečné omezenı́ (3.25) spolu s podmı́nkou nezápornosti proměnné xn+1 odřı́zne toto optimálnı́ řešenı́ od množiny přı́pustných řešenı́ úlohy (3.19) – (3.21). Postup řešenı́ celočı́selné úlohy (3.19) – (3.22) může být tedy popsán takto: 1. Řešı́me úlohu (3.19) – (3.21) simplexovou metodou. Je-li optimálnı́ řešenı́ celočı́selné, znamená to konec výpočtu. V opačném přı́padě položı́me s = 1 a pokračujeme bodem 2. 2. K soustavě rovnic z poslednı́ simplexové tabulky připojı́me rovnici n+s−1 X (−rkj )xj + xn+s = −Rk , j=1 kde k je určeno vztahem Rk = max Ri a proměnná xn+s je vázána podmı́nkou nezápornosti. 63 3. V rozšı́řené simplexové tabulce považujeme nově připojený řádek za klı́čový a řešı́me ji dále duálně simplexovou metodou. Jestliže je optimálnı́ řešenı́ celočı́selné, postup končı́. V opačném přı́padě zvětšı́me s o jedničku a postup opakujeme od bodu 2. Přı́klad 3.6 Je dána úloha maximalizovat z = x1 + 2x2 za podmı́nek −3x1 + 4x2 ≤ 6 4x1 + 3x2 ≤ 12 xj ≥ 0, xj ∈ Z, j = 1, 2. Tuto úlohu upravı́me přidánı́m nezáporných doplňkových proměnných do rovnicového tvaru maximalizovat z = x1 + 2x2 za podmı́nek −3x1 + 4x2 + x3 = 6 4x1 + 3x2 + x4 = 12 xj ≥ 0, xj ∈ Z, j = 1, ..., 4, (i doplňkové proměnné musejı́ splňovat podmı́nku celočı́selnosti, protože všechny koeficienty v omezujı́cı́ch podmı́nkách jsou celočı́selné). Tuto úlohu řešı́me simplexovou metodou při zanedbánı́ podmı́nek celočı́selnosti. Dostaneme optimálnı́ řešenı́ xT1 = ( 65 , 12 5 , 0, 0), kterému odpovı́dá soustava rovnic z poslednı́ho kroku simplexové metody x2 + − x1 z + 4 25 x3 3 25 x3 1 5 x3 + + + 3 25 x4 4 25 x4 2 5 x4 = 12 5 6 5 = 6 = Tabulka 3.1: x2 x1 x5 z x2 x1 x3 z x1 x2 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 x3 x4 x5 4/25 3/25 0 12/5 −3/25 4/25 0 6/5 –4/25 −3/25 1 −2/5 1/5 2/5 0 6 0 0 1 2 0 1/4 −3/4 3/2 1 3/4 −25/4 5/2 0 1/4 5/4 11/2 Optimálnı́ řešenı́ nenı́ celočı́selné ve složkách x1 a x2 . R1 = 52 , R2 = rovnice zkonstruujeme dodatečné omezenı́ 4 − 25 x3 − 3 25 x4 64 + x5 = − 25 , 1 5 a tedy pomocı́ prvnı́ kde x5 ≥ 0. Rozšı́řenou úlohu řešı́me v tabulce 3.1 pomocı́ duálně simplexové metody. Zı́skané optimálnı́ řešenı́ xT2 = ( 32 , 2, 52 , 0, 0), nenı́ celočı́selné ve složkách x1 a x3 . Přidáme tedy dalšı́ dodatečné omezenı́, vytvořené tentokrát pomocı́ druhého řádku, a vzniklou soustavu řešı́me v tabulce 3.2. Optimálnı́ řešenı́ této úlohy xT3 = (1, 2, 1, 2, 0, 0) je celočı́selné ve všech složkách, a tedy vektor xTo = (1, 2, 1, 2) je optimálnı́m celočı́selným řešenı́m původnı́ úlohy. Tabulka 3.2: x2 x1 x3 x6 z x2 x1 x3 x4 z x1 x2 x3 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 x4 x5 x6 0 1 0 2 1/4 −3/4 0 3/2 3/4 −25/4 0 5/2 –1/4 −1/4 1 −1/2 1/4 5/4 0 11/2 0 1 0 2 0 −1 1 1 0 −7 3 1 1 1 −4 2 0 1 1 5 K popsané metodě řezů ještě na závěr poznamenejme, že růstu rozměrnosti rozšı́řené úlohy můžeme zabránit tı́m, že po vyloučenı́ dodatečné proměnné xn+s z báze vypustı́me z řešené soustavy i přı́slušné dodatečné omezenı́. 3.2.2 Metoda větvı́ a mezı́ Metoda větvı́ a mezı́ (branch and bound) je iteračnı́ metoda pro nalezenı́ globálnı́ho extrému funkce f (x1 , x2 , ..., xn ) na množině přı́pustných řešenı́ M . Tato metoda je založena na opakovánı́ následujı́cı́ch dvou operacı́: • větvenı́, při němž se zprvu množina M a později jejı́ vybraná podmnožina rozkládá na po dvou disjunktnı́ podmnožiny (postup rozkladu množiny M je možno znázornit stromovým grafem, jehož uzly odpovı́dajı́ jednotlivým podmnožinám), • omezovánı́, při němž se pro každou podmnožinu zı́skanou předchozı́ operacı́ určuje dolnı́ (při minimalizaci) resp. hornı́ (při maximalizaci) mez hodnot funkce f (x) na této podmnožině. Pro dalšı́ rozklad se volı́ podmnožina s nejnižšı́ dolnı́ resp. nejvyššı́ hornı́ mezı́. Cı́lem je najı́t takové přı́pustné řešenı́, pro něž hodnota účelové funkce nenı́ většı́ než dolnı́ meze resp. nenı́ menšı́ než hornı́ meze u všech dosud nerozložených podmnožin, nebot’ takové řešenı́ je optimálnı́. Poprvé metodu tohoto typu popsali Land a Doig v roce 1960. Velmi blı́zkou myšlenku použili o tři roky později Little et al. na řešenı́ problému obchodnı́ho cestujı́cı́ho. Uvažujme úlohu max {f (x) | x ∈ M }, (3.27) kde množina M může být dána systémem nějakých omezujı́cı́ch podmı́nek (to je obvyklý přı́pad). Postup řešenı́ této úlohy metodou větvı́ a mezı́ lze popsat zhruba takto (vznikajı́cı́ podmnožiny budeme pro jednoduchost postupně čı́slovat přirozenými čı́sly): 65 1. Množinu M rozdělı́me na r po dvou disjunktnı́ch podmnožin M1 , M2 , ..., Mr , jejichž sjednocenı́m je množina M . Položı́me i = 1, p = r a N = {1, 2, ..., r} (i je pořadı́ iterace, p je poslednı́ hodnota použitá k očı́slovánı́ podmnožiny a N je množina indexů dosud nerozložených podmnožin; poznamenejme, že během celého postupu platı́ M = ∪k∈N Mk ). 2. Určı́me hornı́ meze h(Mk ) hodnot funkce f (x) na každé z podmnožin vzniklých v poslednı́m rozkladu (tj. pro k = p − r + 1, p − r + 2, ..., p). Zjistı́me-li přitom, že nějaká množina Ml je prázdná, vyřadı́me jejı́ index z množiny N . 3. Lze-li nalézt takové přı́pustné řešenı́ xo ∈ Mj (j ∈ N ), že platı́ f (xo ) = h(Mj ) ≥ h(Mk ) pro všechna k ∈ N, (3.28) je xo optimálnı́m řešenı́m a postup končı́. V opačném přı́padě se pokračuje následujı́cı́m krokem. 4. Z dosud nerozložených množin vybereme množinu s největšı́ hornı́ mezı́: h(Ms ) = max {h(Mk ) | k ∈ N }. Zvětšı́me i o jedničku a množinu Ms rozdělı́me na r po dvou disjunktnı́ch podmnožin Mp+1 , Mp+2 , ..., Mp+r , jejichž sjednocenı́m je množina Ms . Z množiny N odstranı́me index s a přidáme do nı́ indexy p + 1, p + 2, ..., p + r, zvětšı́me p o hodnotu r a postup opakujeme od kroku 2. V přı́padech, kdy daná úloha nemá žádné přı́pustné řešenı́, postup skončı́ se zjištěnı́m, že dále už nenı́ co rozkládat. Je-li množina M konečná, je metoda větvı́ a mezı́ finitnı́, tj. po konečném počtu kroků dostaneme bud’ hledané optimálnı́ řešenı́, nebo informaci, že toto řešenı́ neexistuje. Je možno se také spokojit s nalezenı́m přibližného řešenı́ xa , splňujı́cı́ho podmı́nku f (xa ) ≥ h(Mk ) − ε pro všechna k ∈ N, (3.29) kde ε > 0 je daná konstanta. Výpočet je rovněž možno předčasně ukončit vyčerpánı́m dané časové kvóty nebo daného počtu iteracı́. Poznámky: • V popisu metody větvı́ a mezı́ se vůbec neobjevila zmı́nka o celočı́selnosti proměnných. Znamená to, že použitelnost metody nenı́ omezena pouze na úlohy celočı́selného programovánı́. • V přı́sném slova smyslu uvedený postup nenı́ metodou, ale spı́še rámcem pro tvorbu konkrétnı́ch metod, v nichž jsou přesně specifikovány způsoby rozkladu množin a výpočtu mezı́. Metoda větvı́ a mezı́ je vhodná pro řešenı́ úloh, ve kterých struktura množiny M umožňuje jednoduchý postup rozkladu a funkce f (x) dovoluje odvodit přı́slušné dolnı́ nebo hornı́ meze. Efektivnost postupu závisı́ na stanovenı́ mezı́ h(Mk ). Přı́liš hrubé meze mohou způsobit to, že se strom úlohy přı́liš rozroste“. Přesnějšı́ meze sice vedou k redukci stromu úlohy, ale z toho ” plynoucı́ úspora může být na druhé straně negována náročnostı́ výpočtu těchto mezı́. Obecně mohou být meze hodnot účelové funkce určeny pomocı́ nějaké heuristické metody. V přı́padě, že metodu větvı́ a mezı́ aplikujeme na problém celočı́selného programovánı́, je možno přı́slušné meze zı́skat zanedbánı́m podmı́nek celočı́selnosti a použitı́m nějaké metody neceločı́selné“ op” timalizace. Často se ve spojenı́ s metodou větvı́ a mezı́ použı́vá Lagrangeovská relaxačnı́ metoda (viz např. [REEVES 1993]). 66 Řešenı́ úlohy celočı́selného lineárnı́ho programovánı́. Uvažujme zde znovu úlohu (3.19) – (3.22) z předchozı́ podkapitoly. Stejně jako v metodě řezů začneme tı́m, že zanedbáme podmı́nky celočı́selnosti a takto zı́skanou úlohu max {f (x) = cT x | Ax = b, x ≥ 0} (3.30) řešı́me simplexovou metodou. Pokud tato úloha nemá optimálnı́ řešenı́, nemá je ani úloha celočı́selná. Jestliže zı́skáme optimálnı́ řešenı́, které nenı́ celočı́selné, musı́me pokračovat ve výpočtu. Necht’ β je vektor optimálnı́ch hodnot bázických proměnných. Vybereme nějakou neceločı́selnou složku tohoto vektoru. Necht’ je to např. složka βr , které odpovı́dá bázická proměnná xk . Množinu M přı́pustných řešenı́ celočı́selné úlohy rozdělı́me na dvě podmnožiny dané takto: M1 = M ∩ {x | xk ≤ [βr ]}, M2 = M ∩ {x | xk ≥ [βr ] + 1}. Je zřejmé, že tyto množiny jsou disjunktnı́ a jejich sjednocenı́m je množina M . Abychom nynı́ zı́skali hornı́ meze hodnot účelové funkce na těchto množinách, vytvořı́me k úloze (3.30) dvě dalšı́ úlohy tak, že k nı́ přidáme po prvé podmı́nku xk ≤ [βr ] a po druhé podmı́nku xk ≥ [βr ] + 1. Dostaneme tedy úlohy f (x) = cT x → max Ax = b xk ≤ [βr ] x≥0 f (x) = cT x → max Ax = b xk ≥ [βr ] + 1 x≥0 (3.31) a řešı́me je simplexovou metodou. Zı́skané optimálnı́ hodnoty funkce f (x) jsou hornı́mi mezemi hodnot této funkce na množinách M1 a M2 (to vyplývá z toho, že množina M1 je podmnožinou množiny přı́pustných řešenı́ prvé z těchto úloh a množina M2 je podmnožinou množiny přı́pustných řešenı́ druhé z těchto úloh). Nemá-li některá z uvedených úloh přı́pustné řešenı́, je i odpovı́dajı́cı́ množina Mk prázdná. Jestliže optimálnı́ řešenı́ některé z těchto úloh je celočı́selné a splňuje podmı́nku (3.28), je optimálnı́m řešenı́m původnı́ celočı́selné úlohy a postup končı́. V opačném přı́padě vybereme množinu s nejvyššı́ hodnotou hornı́ meze a na základě neceločı́selného optimálnı́ho řešenı́ odpovı́dajı́cı́ úlohy provedeme dalšı́ rozklad. Přı́klad 3.7 Uvažujme opět úlohu maximalizovat f (x) = x1 + 2x2 za podmı́nek −3x1 + 4x2 ≤ 6 4x1 + 3x2 ≤ 12 xj ≥ 0, xj ∈ Z, j = 1, 2, kterou jsme se zabývali v přı́kladu 3.6. Řešı́me-li tuto úlohu při zanedbánı́ podmı́nek celočı́selnosti, dostaneme optimálnı́ řešenı́ xT0 = ( 65 , 12 5 ), které nenı́ celočı́selné. Provedeme rozklad množiny M přı́pustných celočı́selných řešenı́ do dvou podmnožin podle prvé proměnné tak, že k dané úloze přidáme po prvé omezenı́ x1 ≤ 1 a po druhé omezenı́ x1 ≥ 2, čı́mž dostaneme dvojici úloh 67 Úloha 1: f (x) = x1 + 2x2 → max −3x1 + 4x2 4x1 + 3x2 x1 xj ≥ 0, xj ∈ Z, j Úloha 2: f (x) = x1 + 2x2 → max −3x1 + 4x2 4x1 + 3x2 x1 xj ≥ 0, xj ∈ Z, j ≤ 6 ≤ 12 ≤ 1 = 1, 2, 3, ≤ 6 ≤ 12 ≥ 2 = 1, 2, 3, jejichž množiny přı́pustných řešenı́ označme M1 a M2 . Řešenı́m těchto úloh při zanedbánı́ podmı́nek celočı́selnosti dostaneme optimálnı́ řešenı́ xT1 = (1, 94 ), xT2 = (2, 43 ). Odpovı́dajı́cı́ hodnoty účelové funkce představujı́ hornı́ hranice hodnot funkce f (x) na množinách M1 a M2 : 11 2 h(M1 ) = f (x1 ) = a h(M2 ) = f (x2 ) = 14 3 . Žádné ze zı́skaných řešenı́ nenı́ celočı́selné a tudı́ž musı́me pokračovat dále ve výpočtu rozkladem množiny s největšı́ hornı́ mezı́. Rozkládáme tedy množinu M1 do dvou podmnožin podle proměnné x2 . K úloze 1 přidáme po prvé omezenı́ x2 ≤ 2, po druhé omezenı́ x2 ≥ 3 a dostaneme dvojici úloh s množinami přı́pustných řešenı́ M3 a M4 . Tyto úlohy opět řešı́me při zanedbánı́ podmı́nek celočı́selnosti a zjistı́me, že 4.úloha nemá žádné přı́pustné řešenı́ a 3.úloha má bez podmı́nek celočı́selnosti optimálnı́ řešenı́ xT3 = (1, 2). Toto řešenı́ je celočı́selné, přičemž f (x3 ) = h(M3 ) = 5. Jediná dalšı́ dosud nerozložená množina je M2 s hornı́ mezı́ h(M2 ) = 14 3 , která je menšı́ než h(M3 ). Je tedy splněna podmı́nka (3.28) a optimálnı́m řešenı́m výchozı́ celočı́selné úlohy je vektor xTopt = (1, 2). Postup výpočtu ilustruje obrázek 3.1. Řešenı́ úlohy o batohu. Úloha o batohu, formulovaná v přı́kladě 3.2, má tvar max {f (x) = n X j=1 cj xj | n X aj xj ≤ b, xj ∈ {0, 1}, j = 1, 2, ..., n}. j=1 Označme opět množinu přı́pustných řešenı́ symbolem M . Vzhledem k charakteru úlohy se jako nejpřirozenějšı́ jevı́ takový způsob rozkladu této množiny, při němž zvolı́me nějakou proměnnou xr a položı́me po prvé xr = 0 a po druhé xr = 1. Takto rozložı́me množinu M do dvou podmnožin M1 a M2 určených vztahy M1 = {x| x ∈ M, xr = 0}, M2 = {x| x ∈ M, xr = 1}. Analogicky při rozkladu některé podmnožiny množiny M zvolı́me nějakou proměnnou, jejı́ž hodnota ještě nebyla fixována, a přiřadı́me jı́ po prvé hodnotu 0 a po druhé hodnotu 1. V dalšı́m 68 ' $ M xT0 = (6/5, 12/5) & % S S S x1 ≤ 1 x1 ≥ 2 S S S / w S ' $ ' M1 xT1 = (1, 9/4) h(M1 ) = 11/2 M2 xT2 = (2, 4/3) h(M2 ) = 14/3 & % & S S S x2 ≤ 2 x2 ≥ 3 S S S $ ' $ ' / w S M3 xT3 = (1, 2) h(M3 ) = 5 & $ % M4 ∅ % & % Obrázek 3.1: Postup řešenı́ úlohy celočı́selného LP budeme předpokládat, že proměnné jsou takto fixovány postupně počı́naje proměnnou x1 (to nenı́ na úkor obecnosti, nebot’ před zahájenı́m výpočtu můžeme proměnné libovolným způsobem přečı́slovat). Mějme nynı́ nějakou podmnožinu Mk a necht’ byla zı́skána určitým fixovánı́m prvých p proměnných, tj. Mk = {x| x ∈ M, xj = ξj , j = 1, ..., p}, kde ξj jsou nuly nebo jedničky. Označme symbolem b(Mk ) kapacitu batohu, která zbývá po uvedené volbě hodnot prvých p proměnných. Je tedy b(Mk ) = b − p X aj ξj . j=1 Ukažme nynı́ několik způsobů určenı́ hornı́ meze hodnot funkce f (x) na množině Mk . a) h(Mk ) = p X j=1 cj ξj + n X cj , j=p+1 což odpovı́dá tomu, že bychom vzali všechny zbývajı́cı́ věci bez ohledu na omezenou kapacitu batohu. Tato hornı́ mez se sice určı́ jednoduše, ale je přı́liš hrubá a může tedy způsobit, že se strom úlohy přı́liš rozroste. 69 b) Hornı́ mez může být také určena řešenı́m úlohy lineárnı́ho programovánı́: h(Mk ) = p X cj ξj + max n n X j=1 cj xj | j=p+1 n X aj xj ≤ b(Mk ), j=p+1 o 0 ≤ xj ≤ 1, j = p + 1, ..., n . Takto určené meze jsou velice přesné a vedou tudı́ž k velké redukci rozhodovacı́ho stromu. Na druhé straně ale použitı́ simplexové metody zvyšuje náročnost jejich výpočtu. c) Dostatečně přesná hornı́ mez však může být zı́skána jednoduššı́m způsobem. Označme dj = cj aj (tj. dj je cena jednotky hmotnosti j-té věci). Předpokládejme, že proměnné xp+1 , ..., xn jsou očı́slovány tak, že platı́ dp+1 ≥ dp+2 ≥ ... ≥ dn . Necht’ q (p < q ≤ n) je takové, že platı́ q−1 X aj ≤ b(Mk ), j=p+1 q X aj > b(Mk ), j=p+1 což znamená, že (q −1)-vou věc je možno ještě do batohu zařadit, ale q-tou už ne. Označme q−1 X ∆kq = b(Mk ) − aj j=p+1 (tj. ∆kq je zbývajı́cı́ kapacita batohu po vloženı́ (q − 1)-vé věci). Pak hornı́ mez může být určena takto: p q−1 X X h(Mk ) = cj ξj + cj + dq ∆kq . (3.32) j=1 j=p+1 Tedy tato hornı́ mez odpovı́dá tomu, že bychom do batohu kromě dosud vložených věcı́ vložili dále věci (p + 1)-vou až (q − 1)-vou a z q-té věci pouze část o hmotnosti ∆kq . Přı́klad 3.8 Řešme nynı́ úlohu o batohu pro hodnoty uvedené v následujı́cı́ tabulce: j cj aj dj 1 9 3 3 2 4 2 2 3 b 6 6 6 1 kde hmotnosti věcı́ aj a kapacita batohu b jsou udány v kilogramech. Vidı́me, že proměnné jsou už uspořádány podle klesajı́cı́ch hodnot dj . Provedeme rozklad množiny přı́pustných řešenı́ M podle proměnné x1 na podmnožiny M1 (pro x1 = 0) a M2 (pro x1 = 1). Volba x1 = 0 (prvou věc nebereme) znamená, že zbývajı́cı́ kapacita batohu je 6 kg. Do batohu tedy můžeme vložit celou druhou věc a část třetı́ věci o hmotnosti 4 kg a tudı́ž h(M1 ) = 9 · 0 + 4 + 1 · 4 = 8. 70 '$ M &% A A x1 = 0 A x1 = 1 A '$ '$ AU M1 h=8 M2 h = 14 &% &% A A x2 = 0 A x2 = 1 A '$ '$ AU M3 h = 12 M4 h = 14 &% &% A A x3 = 0 A x3 = 1 A '$ '$ AU M5 h = 13 M6 ∅ &% &% Obrázek 3.2: Postup řešenı́ úlohy o batohu Při volbě x1 = 1 je zbývajı́cı́ kapacita batohu 3 kg a tedy můžeme vzı́t celou druhou věc a část třetı́ věci o hmotnosti 1 kg. Pak je h(M2 ) = 9 · 1 + 4 + 1 · 1 = 14. Dále tedy rozložı́me množinu M2 podle proměnné x2 na podmnožiny M3 (pro x2 = 0) a M4 (pro x2 = 1) a analogicky určı́me hornı́ meze h(M3 ) = 9 · 1 + 4 · 0 + 1 · 3 = 12, h(M4 ) = 9 · 1 + 4 · 1 + 1 · 1 = 14. Ve třetı́m kroku rozložı́me množinu M4 na podmnožiny M5 (x3 = 0) a M6 (x3 = 1). Množina M6 je prázdná a množina M5 obsahuje jediný bod xT5 = (1, 1, 0) s hodnotou účelové funkce f (x5 ) = h(M5 ) = 13. Tato hornı́ mez je většı́ než hornı́ meze u dosud nerozložených množin M1 a M3 a tedy optimálnı́m řešenı́m dané úlohy je vektor xTopt = (1, 1, 0). Postup výpočtu je možno sledovat v obrázku 3.2. 71 Kapitola 4 Dynamické programovánı́ Tato kapitola seznamuje čtenáře s jistým matematickým přı́stupem k řešenı́ optimalizačnı́ch úloh, vystupujı́cı́ch v souvislosti s potřebou řı́zenı́ (regulace) tzv. vı́ceetapových rozhodovacı́ch procesů, který je založen na použitı́ rekurentnı́ch vztahů. Tento přı́stup, opı́rajı́cı́ se o tzv. princip optimality, se nazývá dynamické programovánı́ a jeho zakladatelem je Richard Bellman [BELLMAN 1957]. Přı́vlastek dynamické“ vznikl zde na základě zkoumánı́ vı́ceetapových roz” hodovacı́ch procesů, u nichž jednotlivé etapy následujı́ za sebou v čase. Uvedený přı́stup je však použitelný i k řešenı́ problémů, v nichž čas explicitně nevystupuje a lze jej do nich zavést uměle. Může se jednat o řešenı́ numerické, řešenı́ ve tvaru analytického vyjádřenı́, řešenı́ ve tvaru posloupnosti postupných aproximacı́ apod. Dynamického programovánı́ bývá použı́váno k řešenı́ široké třı́dy nelineárnı́ch optimalizačnı́ch problémů deterministických i stochastických, vystupujı́cı́ch např. v ekonomii, fyzice, technice, chemii, i v samotné matematice. U mnohých z nich lze takto zı́skat přesné řešenı́ i za okolnostı́, kdy jiné metody selhávajı́ (to se týká hlavně některých celočı́selných a stochastických úloh). Zvláště efektivnı́ bývá dynamické programovánı́ u některých úloh se silnými omezujı́cı́mi podmı́nkami. Velký počet etap regulovaného procesu nečinı́ podstatných obtı́žı́. Proces o velkém počtu etap lze často aproximovat procesem nekonečněetapovým a tı́m zjednodušit řešenı́ (viz § 4.6). Aplikace dynamického programovánı́ vyžaduje zpravidla náročnějšı́ matematickou přı́pravu než např. aplikace metod lineárnı́ho programovánı́, nebot’ zde předkládaný problém nemusı́ být charakterizován systémem rovnic resp. nerovnostı́ speciálnı́ho tvaru, takže neexistuje ani žádný dostatečně obecný algoritmus k řešenı́ některé třı́dy problémů dynamického programovánı́. Dynamické programovánı́ v sobě tedy zahrnuje pro každý problém, který je jı́m numericky řešitelný, i jeho algoritmizaci ve smyslu vytvořenı́ výpočtové procedury k jeho řešenı́. Nalezený algoritmus přitom podstatně závisı́ na struktuře řešeného problému. 4.1 Vı́ceetapový proces Předpokládejme, že stav systému, který studujeme (může to být např. systém fyzikálnı́, ekonomický nebo biologický), je v okamžiku t z matematického hlediska popsán stavovým vektorem x(t) = [x1 (t), x2 (t), . . . , xM (t)] . (4.1) Každá složka tohoto vektoru určuje některou vlastnost systému. Čı́slo M nazýváme dimenzı́ systému. Pro jednoduchost se zde budeme zabývat pouze systémy s konečnou dimenzı́. Je důležité zdůraznit, že to, co zde nazýváme stavem systému, nenı́ jednoznačně určeno fyzikálnı́mi vlastnostmi odpovı́dajı́cı́ho reálného systému. Nelze to považovat za jeho vnitřnı́ charakteristiku. Naopak to silně závisı́ na různých postrannı́ch prvcı́ch, zavedených do matematické formulace. Závisı́ to např. na tom, co chceme vědět o zkoumaném procesu, co můžeme 72 pozorovat nebo měřit, na přesnosti těchto pozorovánı́ a úplnosti informacı́ o procesu. Nahrad’me nynı́ symbol x(t) symbolem p a předpokládejme, že p je prvkem nějaké množiny R přı́pustných stavů systému. V dalšı́m se zaměřı́me hlavně na přı́pady, kdy R je některá množina M -rozměrných vektorů, ačkoliv nevylučujeme obecnějšı́ definici stavu ve složitějšı́ch situacı́ch (viz např. (4.15)). Uvažujme funkci T (p), kterou nazveme transformace, a která má tu vlastnost, že transformovaný vektor p1 = T (p) patřı́ do R, tj. p1 ∈ R, pro všechna p ∈ R. Pak p představuje počátečnı́ stav systému, p1 = T (p) stav o jednu časovou jednotku pozdějšı́ a obecně, posloupnost vektorů {p, p1 , p2 , . . . , pn , . . . } , (4.2) kde p0 = p, pn+1 = T (pn ), n = 0, 1, 2, . . . , představuje stavy systému, pozorované v diskrétnı́ch časových okamžicı́ch n = 0, 1, 2, . . . . Časový interval [n, n + 1) nazveme n-tou etapou procesu. Můžeme též psát pn = T n (p), čı́mž označujeme n-tou aplikaci transformace T . Někdy se též setkáváme s operátorovým označenı́m pn+1 = T pn , pn = T n p. Posloupnost vektorů (4.2) nazýváme vı́ceetapovým procesem. Tento proces je určen počátečnı́m stavem p a transformacı́ T . V uvedeném přı́padě se jedná o stacionárnı́ vı́ceetapový proces diskrétnı́ho deterministického typu. Význam těchto adjektiv bude patrný z dalšı́ho výkladu po zavedenı́ jiných typů procesů. Posloupnost vektorů {p, p1 , . . . , pN } , (4.3) kde pk+1 = T (pk ), k = 0, 1, 2, . . . , N − 1, nazýváme N -etapovým procesem. Poznámka. Determinismus diskrétnı́ho procesu. Pro proces zkoumaného druhu je typické, že k vyjádřenı́ stavů, které v čase následujı́ po pk , vystačı́me pouze se znalostı́ pk a nepotřebujeme k tomu znát stavy, které tomuto stavu předcházely. K určenı́ budoucnosti systému nám zde stačı́ pouze informace o jeho přı́tomnosti. Nepotřebujeme k tomu tedy žádnou informaci o jeho minulosti. Libovolný stav pN lze vyjádřit bud’to jako N -tý stav N -etapového procesu, jehož počátečnı́ stav je p, nebo jako (N − k)-tý stav (N − k)-etapového procesu, jehož počátečnı́ stav je pk . Symbolicky to lze vyjádřit vztahem T N = T N −k (T k ) . (4.4) To je analytické vyjádřenı́ kauzality, tj. skutečnosti, že budoucnost je jednoznačně určena přı́tomnostı́. N -etapový proces (4.3), kde N je konečné, nazýváme procesem konečným, nebo též konečněetapovým. Je-li stav systému počı́naje určitým okamžikem popsán veličinou pN , řı́káme, že se proces v tomto okamžiku zastavı́. Nenı́-li N konečné, nazýváme proces nekonečným (nekonečněetapovým) a můžeme jej vyjádřit posloupnostı́ (4.2). V mnoha důležitých situacı́ch máme co činit s konečnými procesy, jejichž počet etap nenı́ předem dán, ale závisı́ na počátečnı́m stavu, tj. N = N (p). Těmto procesům řı́káme neohraničené. Takový proces se zastavı́, jakmile splňuje stav systému nějakou předem danou podmı́nku. Přı́kladem může být proces, u něhož stav systému je definován množstvı́m zásob ve skladu, a transformace spočı́vá v odčerpánı́ části zásob z tohoto skladu. Proces se zastavı́, jestliže je množstvı́ zásob rovno nule. Jiným přı́kladem je proces pohybu po trajektorii. Objekt pokračuje v pohybu tak dlouho, dokud jeho vzdálenost od daného pevného objektu je většı́ než dané čı́slo. Je-li např. stavem pn vektor [xn , yn , zn ] souřadnic pohybujı́cı́ho se bodu v euklidovském prostoru a je dán pevný bod q = [ξ, η, ζ] tohoto prostoru, může platit podmı́nka, že proces se zastavı́, jakmile d(pn , q) = d(T n (p), q) ≤ ε , 73 kde d(pn , q) = p (xn − ξ)2 + (yn − η)2 + (zn − ζ)2 je vzdálenost pohybujı́cı́ho se bodu od pevného bodu q a ε ≥ 0 je předem dané čı́slo. Dosud jsme se zabývali přı́pady, kdy tvar transformace nezávisel na etapě procesu, takže platilo pn+1 = T (pn ) . (4.5) Procesy tohoto typu se nazývajı́ stacionárnı́. Nynı́ si všimněme obecnějšı́ situace, kdy platı́ pn+1 = Tn (pn ) , (4.6) takže tvar transformace závisı́ na etapě procesu (na čase). Tyto procesy se nazývajı́ nestacionárnı́. V tomto přı́padě vztah (4.4) neplatı́. Obecný nestacionárnı́ proces má tvar {pm , pm+1 , . . . , pn , . . . } , (4.7) kde pm+1 = Tm (pm ), pm+2 = Tm+1 (pm+1 ), . . . (4.8) Jsou-li časové intervaly mezi jednotlivými pozorovánı́mi stavu systému malé a jejich velikost se blı́žı́ k nule, dostáváme se v limitě k pojmu spojitý proces, u něhož předpokládáme pozorovatelnost systému ve všech okamžicı́ch. Počet etap takového procesu uvnitř daného časového intervalu pak roste nade všechny meze. Dosud jsme předpokládali, že transformace T převádı́ stavový vektor p na stavový vektor p1 , kde p1 je jednoznačně určeno pomocı́ p. V mnoha přı́padech však T nenı́ úplně známo, takže jednoduché deterministické modely musı́me nahradit složitějšı́mi. K tomu užijeme teorie pravděpodobnosti. Předpokládejme, že T je stochastická transformace, která určuje náhodný vektor p1 . Posloupnost vektorů {p, p1 , p2 , . . . } nynı́ definuje stochastický proces, tj. diskrétnı́ vı́ceetapový proces stochastického typu. pk je pak určeno napřı́klad vztahem pk = T (pk−1 , rk ), k = 1, 2, . . . , (4.9) kde p0 = p a kde rk jsou vzájemně nezávislé náhodné proměnné. Z hlediska filosofického determinismu je každý reálný proces procesem deterministickým. Stochastický proces je pak pouze matematickým popisem, který bývá účelný v určitých přı́padech, když nejsme schopni přesně poznat všechny vlivy, které působı́ na transformaci, anebo když sice jsme v principu schopni je poznat, ale jejich zavedenı́ do deterministické formulace by bylo neefektivnı́. Poznámka 1. Obecnějšı́ stochastické procesy. Při různých způsobech zavedenı́ neurčitostı́ můžeme obdržet různé nové typy procesů a odpovı́dajı́cı́ch rekurentnı́ch vztahů. Časový interval mezi jednotlivými transformacemi např. může být rovněž náhodnou proměnnou. V některých přı́padech může být každé etapě procesu přiřazena určitá pravděpodobnost, že skutečný stav systému nemůže být pozorován. Poznámka 2. Markovovy řetězce. Speciálnı́m typem stochastického procesu je Markovův řetězec. Necht’ systém v každé z diskrétnı́ch etap 0, 1, 2, . . . se nacházı́ v jednom z konečného počtu N různých stavů, přičemž pravděpodobnost Pij , že systém přejde ze stavu i, v němž se nacházı́ v etapě n, do stavu j v etapě n + 1, nezávisı́ na n ani na stavech, kterými soustava v etapách 0, 1, 2, . . . , n − 1 prošla. Přitom platı́ Pij ≥ 0, N X Pij = 1, j=1 74 i, j = 1, 2, . . . , N . Matici (Pij ) nazveme matice přechodu. Markovův řetězec je definován maticı́ přechodu (Pij ) a N P rozloženı́m Pi (i = 1, 2, . . . , N ) pravděpodobnosti, že v etapě 0 je systém ve stavu i; Pi = i=1 1. Takto definovaný Markovův řetězec se nazývá homogennı́ Markovův řetězec s diskrétnı́m parametrem. Podrobnějšı́ rozbor této tematiky nalezne čtenář napřı́klad v práci [CHUNG 1960]. 4.2 Vı́ceetapové rozhodovacı́ procesy Vı́ceetapové rozhodovacı́ procesy zaujı́majı́ význačné postavenı́ v modernı́ teorii řı́zenı́. Vyjděme z vı́ceetapového procesu diskrétnı́ho deterministického typu (4.2). Předpokládejme, že můžeme tento proces natolik ovlivnit, že jeho i-té etapě pro i = 0, 1, 2, . . . můžeme přiřadit vektor qi , přı́slušný dané množině S(pi ) přı́pustných vektorů, a tı́m ovlivnit tvar transformace, která se k této etapě vztahuje a která se takto stává funkcı́ dvou proměnných, takže platı́ p1 = T (p, q) , p2 = T (p1 , q1 ) , pn+1 = T (pn , qn ) , (4.10) kde q = q0 ∈ S(p), q1 ∈ S(p1 ), . . . , qn ∈ S (pn ), . . . . Vektor qi se nazývá rozhodovacı́ vektor nebo rozhodovacı́ proměnná. Volbu qi nazveme rozhodnutı́m. Budeme se zabývat procesy, v nichž veličiny qi jsou vybrány tak, aby maximalizovaly předepsanou skalárnı́ funkci stavových a rozhodovacı́ch proměnných F (p, p1 , p2 , . . . , q, q1 , . . . ) . (4.11) Je to tzv. účelová funkce, nebo též kriteriálnı́ funkce (angl. return function, criterion function). N -etapovým rozhodovacı́m procesem diskrétnı́ho deterministického typu nazveme množinu vektorů {p, p1 , p2 , . . . , pN , q, q1 , . . . , qN } , (4.12) kde pn+1 = T (pn , qn ) pro n = 0, 1, 2, . . . , N − 1. Poznámka. Je patrno, že problém hledánı́ maxima funkce F je ekvivalentnı́ problému hledánı́ minima funkce −F . V praxi se většinou účelová funkce procesu definuje tak, že platı́-li v celé oblasti přı́pustných hodnot argumentů vztah F ≥ 0, pak funkce F vyjadřuje nějaký zisk, způsobený procesem, kdežto je-li v této oblasti −F ≥ 0, pak funkce −F vyjadřuje nějaké ztráty, způsobené procesem. Má-li pro k = 0, 1, 2, . . . , N rozhodovacı́ funkce tvar qk = qk (p, p1 , p2 , . . . , pk , q, q1 , . . . , qk−1 ) , (4.13) tj. je-li funkcı́ přı́tomného a minulých stavů systému a minulých rozhodnutı́, nazýváme posloupnost {q, q1 , . . . , qN } strategiı́ procesu (4.12). Strategie, která maximalizuje funkci F se nazývá optimálnı́ strategie. Základnı́ úlohou dynamického programovánı́ je hledánı́ optimálnı́ strategie rozhodovacı́ch procesů, čili prováděnı́ optimalizace těchto procesů. V dalšı́m se zaměřı́me na rozhodovacı́ funkce, které majı́ jednoduššı́ tvar qk = qk (pk ) , (4.14) závisejı́ tedy na přı́tomném stavu a na etapě procesu. Toto dodatečné zjednodušenı́ bude důsledkem dalšı́ specializace struktury účelové funkce F . V obecnějšı́m přı́padě lze vždy problém přeformulovat a stavem v k-té etapě procesu nazvat posloupnost πk = {pk , pk−1 , . . . , p1 , p} . 75 (4.15) Pak lze vždy psát qk = qk (πk ) . (4.16) Toto zobecněnı́ pojmu stav“ můžeme provést, nebot’, jak bylo již dřı́ve poznamenáno, stav ” systému nenı́ vnitřnı́ vlastnostı́, ale pouze matematickým popisem. Přı́kladem účelových funkcı́, které přı́mo umožňujı́ užı́t strategie tvaru (4.14), mohou sloužit funkce N X g(pk , qk ) , (4.17) k=0 N Y g(pk , qk ) , (4.18) g(pN ) , (4.19) max g(pk , qk ) , (4.20) k=0 0≤k≤N N X k=0 N Y gk (pk , qk ) , (4.21) gk (pk , qk ) , (4.22) k=0 kde g(x, y), gk (x, y), g(x) jsou dané skalárnı́ funkce vektorů. 4.3 Princip optimality a funkcionálnı́ rovnice Zkoumejme problém maximalizace účelové funkce F (p, p1 , . . . , q, q1 , . . . ) = N X g(pk , qk ) . (4.23) k=0 Přitom předpokládejme, že maximum existuje, že funkce g(x, y) je omezená, a že veličiny pi , qi mohou nabývat pouze konečného množstvı́ hodnot. Poslednı́ požadavek nenı́ podstatným omezenı́m, nebot’ je v souladu např. s podmı́nkami, za nichž se řešı́ úlohy na čı́slicovém počı́tači. Otázky existence optimálnı́ch strategiı́ zde nebudeme řešit a omezı́me se na formálnı́ stránku věci. Označme maximálnı́ hodnotu funkce F pro daný počátečnı́ stav p a pro počet etap N symbolem fN (p). Je tedy fN (p) účelová funkce N -etapového procesu, jehož počátečnı́ stav je p a u něhož je použito optimálnı́ strategie. Pro N ≥ 1 platı́ max {q,q1 ,...,qN } F = max q max {q1 ,q2 ,...,qN } F. Odtud fN (p) = max {q,q1 ,...,qN } [g(p, q) + g(p1 , q1 ) + · · · + g(pN , qN )] = = max q = max g(p, q) + q max max {q1 ,q2 ,...,qN } {q1 ,q2 ,...,qN } [g(p, q) + . . . ] = [g(p1 , q1 ) + q(p2 , q2 ) + · · · + g(pN , qN )] . 76 Z toho dostáváme základnı́ funkcionálnı́ rovnici dynamického programovánı́ N -etapového diskrétnı́ho deterministického procesu s účelovou funkcı́ (4.17): fN (p) = max g(p, q) + fN −1 T (p, q) . (4.24) q K této rovnici přı́slušı́ podmı́nka f0 (p) = max g(p, q) . q (4.25) Přı́vlastek funkcionálnı́“ je převzat z terminologie funkcionálnı́ analýzy, která se mimo jiné ” zabývá třı́dou rovnic, do nı́ž náležı́ též rovnice (4.24). Výklad našı́ problematiky z hlediska této matematické discipliny by však přesahoval elementárnı́ rámec těchto textů. Funkcionálnı́ rovnici (4.24) lze zı́skat také na základě Bellmanova principu optimality. Tento intuitivnı́ princip lze formulovat takto: Je-li {q, q1 , . . . , qN } optimálnı́ strategie N -etapového procesu s počátečnı́m stavem p, kde funkce qk (k = 0, 1, . . . , N ) jsou tvaru (4.14), pak posloupnost {q1 , q2 , . . . , qN } tvořı́ optimálnı́ strategii (N − 1)-etapového procesu, jehož počátečnı́ stav je p1 = T (p, q) . Má-li tedy účelová funkce tvar (4.23) a je-li {q, q1 , . . . , qN } optimálnı́ strategie, pak platı́ g(p, q) + g(p1 , q1 ) + · · · + g(pN , qN ) = g(p, q) + fN −1 T (p, q) . (4.26) Poněvadž strategie {q, q1 , . . . , qN } je optimálnı́, je q vybráno tak, aby účelová funkce N -etapového procesu nabývala maximálnı́ hodnoty, tj. fN (p) = max g(p, q) + fN −1 T (p, q) , q kde maximalizace probı́há přes všechna q ∈ S(p), čı́mž dostáváme opět vztah (4.24). Podobným způsobem dostáváme např. pro účelovou funkci tvaru (4.18) fN (p) = max{g(p, q)fN −1 T (p, q) } , q f0 (p) = max g(p, q) . (4.27) q Tato funkce, stejně jako funkce (4.22), má významné aplikace napřı́klad v teorii spolehlivosti. Funkce (4.19) se uplatňuje v teorii automatického řı́zenı́. Ostatnı́ uvedené funkce jsou důležité napřı́klad při optimalizaci ekonomických procesů. Pro všechny z nich lze analogickým způsobem odvodit odpovı́dajı́cı́ rekurentnı́ vztah. Na základě téhož principu lze odvodit odpovı́dajı́cı́ funkcionálnı́ rovnice i pro nestacionárnı́ rozhodovacı́ proces, jehož transformačnı́ zákon má tvar pi+1 = Ti (pi , qi ). Zobecněnı́ Bellmanova výsledku provedl L. G. Mitten [MITTEN 1964], který dokázal, že dynamickým programovánı́m lze řešit úlohu, kde kriteriálnı́ funkce má tyto dvě vlastnosti: Je a) tvaru F (p, p1 , p2 , . . . , pN , q, q1 , q2 , . . . , qN ) = QN (p, q, HN −1 (p1 , p2 , . . . , pN , q1 , q2 , . . . , qN )) pro N ≥ 1, F (p, q) = Q0 (p, q), kde pi+1 = T (pi , qi ) , přičemž Qj (x, y, z) (j = 1, 2, . . . , N ), Q0 (x, y), Hj (j = 0, 1, . . . , N − 1) jsou reálné skalárnı́ funkce, b) rostoucı́ vzhledem ke třetı́mu argumentu funkce QN pro N = 1, 2, . . . . 77 Pak platı́ fi (p) max QN p, q, fN −1 T (p, q) , q∈S(p) = max Qi p, q, fi−1 T (p, q) (i = 1, 2, . . . , N − 1) f0 (p) = max F = fN (p) = q∈S(p) max Q0 (p, q) . q∈S(p) Výsledky byly zobecněny i pro T závisejı́cı́ na etapě procesu. Zobecněnı́ na přı́pad, že F je vektorová funkce (multikriteriálnı́ optimalizace Paretovského typu), provedl [KLÖTZLER 1978]. Tı́m jsme převedli problém určenı́ posloupnosti rozhodovánı́, která maximalizuje účelovou funkci, na problém řešenı́ funkcionálnı́ rovnice. Všimněme si např. vztahů (4.24), (4.25). Jejich řešenı́ může být dáno bud’to ve tvaru posloupnosti {fN (p)} optimálnı́ch účelových funkcı́, nebo posloupnosti {q̄N (p)}, kde q̄N (p) je rozhodovacı́ funkce, odpovı́dajı́cı́ optimálnı́mu počátečnı́mu rozhodnutı́ u N -etapového procesu, jehož počátečnı́ stav je p. Existuje-li posloupnost {fN (p)}, pak je pouze jediná, zatı́mco může existovat vı́ce optimálnı́ch strategiı́, které vedou k téže maximálnı́ účelové funkci. Důkaz jednoznačnosti posloupnosti {fN (p)} je třeba provést v každém konkrétnı́m přı́padě zvlášt’. Je patrno, že nahradı́me-li problém maximalizace účelové funkce problémem jejı́ minimalizace, můžeme rovněž použı́t odvozených funkcionálnı́ch vztahů, v nichž však symbol max nahradı́me symbolem min. 4.4 Optimalizace spojitých rozhodovacı́ch procesů Budeme nynı́ postupovat od diskrétnı́ho ke spojitému rozhodovacı́mu procesu limitnı́m přechodem. Necht’ ∆ je infinitesimálnı́ a účelová funkce necht’ má tvar N X g(pk , qk )∆ . (4.28) k=0 Současně předpokládejme, že transformace je tvaru T (p, q) = p + S(p, q)∆ , (4.29) kde S(p, q) je funkce určená vlastnostmi procesu. Rozhodovánı́ necht’ jsou prováděna v okamžicı́ch 0, ∆, 2∆, . . . a necht’ N ∆ = τ je doba trvánı́ procesu. Necht’ fN (p) = f (p, τ ) značı́ maximálnı́ účelovou funkci, vztaženou k procesu, jehož počátečnı́ stav je p a jehož doba trvánı́ je τ . Podobně jako dřı́ve dojdeme k funkcionálnı́ rovnici f (p, τ ) = max [g(p, q)∆ + f (p + S(p, q)∆, τ − ∆)] . q (4.30) Provedeme-li Taylorův rozvoj a limitnı́ přechod pro ∆ → 0, docházı́me formálně k parciálnı́ diferenciálnı́ rovnici ∂f = max [g(p, q) + (∇f, S (p, q))] (4.31) q ∂τ s podmı́nkou f (p, 0) = 0 . (4.32) Účelová funkce (4.28) přecházı́ nynı́ do tvaru Z τ g(p, q) dt 0 78 a z (4.29) plyne d p(t) = S(p(t), q(t)) . dt Řı́zenı́ spojitých procesů má hodně aplikacı́ v makroekonomice a v teorii automatické regulace. Uved’me přı́klad, v němž je umožněno optimálnı́ strategii vyjádřit analyticky: Rτ Přı́klad 4.1 Nalezněme f (c, τ ) = min [p2 (t) + q 2 (t)] dt, kde q(t) 0 d p(t) = ap(t) + q(t) , dt (4.33) p(0) = c 6= 0. Na problém se lze dı́vat jako na optimalizaci spojitého rozhodovacı́ho procesu, u něhož stav p(t) a strategie q(t) jsou spojitými funkcemi času, a kde výraz (4.33) odpovı́dá funkci S(p, q) v (4.29). Analogicky jako v (4.31) dostáváme rovnici h i ∂f 2 + q 2 (0) + (ac + q(0)) ∂f = = min c ∂τ ∂c q(0) h i (4.34) ∂f ∂f 1 1 ∂f 2 2 2 = min c + ac ∂c + (q(0) + 2 ∂c ) − 4 ( ∂c ) q(0) s podmı́nkou f (c, 0) = 0 . (4.35) Je patrno, že minimum nastává pro q(0) = − 1 ∂f . 2 ∂c (4.36) Nabývá tedy rovnice (4.34) tvaru ∂f ∂f 1 = c2 + ac − ∂τ ∂c 4 ∂f ∂c 2 . (4.37) Řešenı́ této rovnice hledejme ve tvaru f (c, τ ) = c2 ϕ(τ ) . (4.38) Po dosazenı́ z (4.38) do (4.37) a po dělenı́ c2 dostáváme rovnici dϕ = 1 + 2aϕ(τ ) − ϕ2 (τ ) dτ (4.39) ϕ(0) = 0 . (4.40) s podmı́nkou Jak se lehce přesvědčı́me dosazenı́m, je řešenı́m této rovnice funkce ϕ(τ ) = a + b √ kde b = 1 + a2 , k = proměnné pro t = 0 je b+a b−a . e2bτ − k , e2bτ + k (4.41) Z (4.41), (4.38), (4.36) plyne, že optimálnı́ hodnota rozhodovacı́ q(0) = − 1 ∂f = −cϕ(τ ) . 2 ∂c Pro obecné t ∈ [0, τ ] tedy platı́ q(t) = − 1 ∂f = −p(t)ϕ(τ − t) , 2 ∂p čı́mž jsme obdrželi optimálnı́ strategii zkoumaného procesu. 79 4.5 Optimalizace diskrétnı́ch stochastických procesů Zabývejme se nynı́ stochastickými efekty, ale omezme naši diskusi pouze na procesy diskrétnı́ho typu, aby byla matematická stránka popisu dostatečně jednoduchá. Předpokládejme, že za počátečnı́ho stavu systému, popsaného vektorem p, bylo přijato rozhodnutı́ q. Na rozdı́l od deterministického přı́padu nebude tı́mto rozhodnutı́m a daným počátečnı́m stavem určen jednoznačně nový stav. Nový stav bude záviset též na hodnotě, které za počátečnı́ho stavu nabude náhodná proměnná, vyjadřujı́cı́ vliv náhodných faktorů na systém. Označme p1 = T (p, q, r0 ) stav, který vznikne následkem rozhodnutı́ q a při realizaci r0 této náhodné proměnné v počátečnı́m stavu. Poněvadž p1 závisı́ na hodnotě, které nabude náhodná proměnná, je též náhodnou proměnnou. Analogicky po provedenı́ rozhodnutı́ q1 dospějeme ke stavu p2 = T (p1 , q1 , r1 ) atd., provedenı́m rozhodnutı́ qn (n = 0, 1, 2, . . . ) dospějeme ke stavu pn+1 = T (pn , qn , rn ), kde ri (i = 0, 1, 2, . . . ) značı́ realizaci přı́slušné náhodné proměnné na počátku i-té etapy procesu (v označenı́ nebudeme rozlišovat náhodnou proměnnou a jejı́ realizaci). Předpokládejme, že náhodné proměnné ri , které představujı́ vliv náhodných faktorů na systém v jednotlivých etapách, jsou navzájem nezávislé. Stavy pi pro i = 1, 2, . . . jsou náhodnými proměnnými. Necht’ N -etapovému procesu je přiřazena účelová funkce F (p, p1 , . . . , pN , q, q1 , . . . , qN , r0 , r1 , . . . , rN ) = N X gi (pi , qi , ri ) . (4.42) i=0 Za optimálnı́ strategii {q, q1 , q2 , . . . , qN } budeme považovat takovou strategii, která maximalizuje očekávanou hodnotu účelové funkce (4.42). V každé konkrétnı́ realizaci tohoto procesu při stejném počátečnı́m stavu bude tato posloupnost obecně jiná, nebot’ hodnoty jejı́ch členů závisejı́ na tom, jakou cestou se vlivem náhodných faktorů ubı́rá uvažovaný proces. Našı́m úkolem nenı́ udat jen jistou posloupnost rozhodnutı́, ale v každé etapě nalézt pro každý přı́pustný stav (tj. stav, k němuž v důsledku působenı́ náhodných faktorů může dojı́t) vhodné optimálnı́ rozhodnutı́. Kterých hodnot funkce qi (pi ) skutečně nabudou, lze tedy (na rozdı́l od obdobného vyšetřovánı́ deterministických procesů) určit až v průběhu procesu v závislosti na náhodně vzniklé situaci. Problémy tohoto typu se nazývajı́ problémy regulace se zpětnou vazbou (zpětná vazba zde vede od skutečného stavu systému k jeho řı́zenı́), nebo též sekvenčnı́ stochastické problémy. K řešenı́ některých z nich je výhodné použı́t dynamického programovánı́, nebot’ z jeho povahy vyplývá, že v každé etapě je rozhodnutı́ určeno jako funkce stavu, přı́slušného k této etapě. Označı́me-li nynı́1 fN (p) = max Eri [F (p, p1 , . . . , pN , q, q1 , . . . , qN , r0 , r1 , . . . , rN )] , q,q1 ,...,qN (4.43) platı́ f0 (p) = max Er0 g0 (p, q, r0 ) , q (4.44) a pro N ≥ 1 dostáváme z principu optimality funkcionálnı́ vztah fN (p) = max Er0 [g0 (p, q, r0 ) + fN −1 (T (p, q, r0 ))] . q (4.45) Předpokládáme-li dále, že všechny náhodné proměnné ri majı́ stejnou distribučnı́ funkci G(r), 1 Symbol Eri značı́ očekávanou hodnotu přes všechna ri , 80 i = 0, 1, . . . , N . lze tyto vztahy uvést na tvar Z f0 (p) = max q g0 (p, q, r0 ) dG(r) , (4.46) Z fN (p) = max q [g0 (p, q, r0 ) + fN −1 (T (p, q, r0 ))] dG(r) . Jsou-li ri diskrétnı́ náhodné proměnné, z nichž každá nabývá hodnot S1 , . . . , SM s pravděpodobnostmi P1 , . . . , PM , lze tyto vztahy psát ve tvaru M X f0 (p) = max Pj g0 (p, q, Sj ) , q fN (p) = max q M X j=1 j=1 Pj [g0 (p, q, Sj ) + fN −1 (T (p, q, Sj ))] . (4.47) Po formálnı́ stránce je tedy tvar funkcionálnı́ch rovnic v podstatě stejný jak u deterministického, tak i u stochastického procesu. Užitı́m rekurentnı́ch vztahů (4.47) dostaneme optimálnı́ posloupnost {qi (pi )} rozhodovacı́ch funkcı́, jejı́ž členy jsou funkcemi náhodného stavu systému. Zı́skané řešenı́ použijeme k řı́zenı́ procesu následujı́cı́m způsobem: V nulté etapě provedeme rozhodnutı́ q a čekáme na výsledek p1 transformace, která závisı́ na hodnotě náhodné proměnné r0 . V prvnı́ etapě zjistı́me rozhodnutı́ q1 , přı́slušné ke stavu p1 , (tj. vyhledáme v tabulce hodnot funkce q1 (x) hodnotu, přı́slušnou argumentu p1 ) a vyčkáme výsledku p2 dalšı́ transformace, která závisı́ na hodnotě náhodné proměnné r1 , atd. Poznámka 1. Adaptivnı́ procesy. Dosud jsme se zabývali stochastickými procesy, u nichž jsou distribučnı́ funkce náhodných proměnných ri (i = 0, 1, . . . , N ) přesně známy. Nejsou-li tyto funkce známy, ale majı́ např. známou analytickou strukturu (vı́me-li, že se jedná o distribučnı́ funkci Poissonovu resp. Gaussovu apod.) a máme-li možnost učit se z průběhu procesu, pak se dostáváme k teorii adaptivnı́ch procesů. Přı́klady na optimalizaci adaptivnı́ch procesů dynamickým programovánı́m lze nalézt v práci [BELLMAN 1967]. Poznámka 2. Řı́zené Markovovy řetězce. Navažme na poznámku 2 v § 4.1 a předpokládejme, že v každé etapě Markovova řetězce lze provedenı́m určitého rozhodnutı́ vybrat matici přechodu z dané množiny matic. Necht’ (Pij (q)) je matice přechodu, odpovı́dajı́cı́ rozhodnutı́ q. Dále předpokládejme, že přechodu systému ze stavu i do stavu j odpovı́dá jistý zisk rij (q), který je funkcı́ počátečnı́ho stavu i, konečného stavu j a rozhodnutı́ q, a který je dán maticı́ zisku (rij (q)) (i, j = 1, 2, . . . , N ). Proces popsaného typu nazýváme řı́zeným Markovovým řetězcem. Optimalizace tohoto procesu spočı́vá v nalezenı́ takové posloupnosti rozhodnutı́, která maximalizuje očekávanou hodnotu celkového zisku při daném počátečnı́m stavu systému a daném počtu etap procesu. Úlohy tohoto typu řešil Smith [SMITH 1991] metodou, která je založena na myšlence dynamického programovánı́. 4.6 Numerické aspekty dynamického programovánı́ Ze struktury rekurentnı́ch vztahů (4.24) je patrno, že pokud nelze optimálnı́ strategii procesu vyjádřit analyticky, je vhodné jednotlivé funkce FN (p) tabelovat. Je-li však p vektor natolik vysoké dimenze, že by se to vymykalo možnostem operačnı́ paměti počı́tače, můžeme použı́t některé z metod redukce dimenze (viz např. [GLÜCKAUFOVÁ, VLACH 1968]), které umožňujı́ 81 mı́sto jedné N -dimenzionálnı́ úlohy řešit sérii úloh (N − 1)-dimenzionálnı́ch a dosáhnout tak úspory paměti. Jestliže funkce fn (x) majı́ spojité derivace do jistého řádu, pak lze s úspěchem použı́t metody tzv. aproximace polynomy, která dovoluje překonat potı́že, vznikajı́cı́ při většı́m množstvı́ tabelovaných hodnot v důsledku omezené kapacity paměti. Základnı́ myšlenka této metody spočı́vá v aproximaci funkcı́ fn (x) lineárnı́mi kombinacemi funkcı́ z určitého úplného systému funkcı́, takže mı́sto tabulky funkce fn (x) uchováváme jen koeficienty jejı́ho rozvoje pomocı́ funkcı́ uvedeného systému (viz. např. [BELLMAN, DREYFUS 1962]). V oblasti diskrétnı́ch rozhodovacı́ch procesů jsme se dosud zabývali procesy s konečným počtem etap, u nichž funkcionálnı́ rovnice měly většinou tvar nelineárnı́ho rekurentnı́ho vztahu fN (p) = max [g(p, q) + fN −1 (T (p, q))] , q N ≥1 (4.48) kde f0 (p) = maxq g(p, q) nebo je f0 (p) známá funkce. Je-li dáno f0 , určı́me f1 , pak f2 atd. Použijeme-li jako aproximace konečného rozhodovacı́ho procesu v přı́padě N 1 procesu nekonečného, dostaneme rovnici f (p) = max [g(p, q) + f (T (p, q))] , q (4.49) kterou lze chápat jako limitnı́ přı́pad vztahu (4.48) pro N → ∞, a která vystupuje při studiu různých procesů z oblasti řı́zenı́. Při řešenı́ funkcionálnı́ rovnice (4.49) metodou postupných aproximacı́ lze užı́t zpravidla dvou způsobů: a) aproximace v prostoru funkcı́ b) aproximace v prostoru strategiı́. Tyto termı́ny jsou převzaty z funkcionálnı́ analýzy. Aproximaci v prostoru funkcı́ můžeme provést při splněnı́ určitých předpokladů, týkajı́cı́ch se funkcı́ g(p, q) a T (p, q). Postup je následujı́cı́: Zvolı́me počátečnı́ aproximaci f0 (p), načež určujeme rekurentně následujı́cı́ aproximace funkce f (p), f1 (p) = max [g(p, q̄1 ) + f0 (T (p, q̄1 ))] q̄1 (4.50) fn+1 (p) = max [g(p, q̄n+1 ) + fn (T (p, q̄n+1 ))] . q̄n+1 Podmı́nky, za kterých posloupnost {fn (p)} konverguje k řešenı́ f (p) rovnice (4.49) a posloupnost {q̄n } konverguje k hodnotě q, která uděluje výrazu v (4.49) maximum, jakož i způsob této konvergence, jsou pro jistou třı́du procesů studovány v práci [BELLMAN 1957], kde jsou řešeny též otázky jednoznačnosti řešenı́. Počátečnı́ aproximaci f0 (p) je vhodné volit v souhlase s matematickým nebo fyzikálnı́m očekávánı́m. Přitom explicitnı́ analytické výsledky, zı́skané pro jednoduššı́ procesy, mohou sloužit jako počátečnı́ aproximace realističtějšı́ch modelů. Přı́klad 4.2 Uved’me formálnı́ postup při aplikaci metody aproximacı́ v prostoru funkcı́ pro √ g(p, q) = p + q − q, T (p, q) = aq + b(p − q), kde a, b jsou konstanty, pro které platı́ 0 < a < 1, 0 < b < 1 a kde množina přı́pustných rozhodnutı́ je dána vztahem 0 < q < p, tj. řešme rovnici f (p) = max [p + 0<q<p √ q − q + f (aq + b(p − q))] . (4.51) Zvolme f0 (p) = ap . 82 (4.52) Potom √ f1 (p) = max [p + 0<q<p q − q + a(aq + b(p − q))] . (4.53) Maximalizujı́cı́ hodnotu q = q̄1 dostaneme řešenı́m rovnice d √ [p + q − q + a(aq + b(p − q))] = 0 . dq Odtud plyne 1 . 4[1 − a(a − b)]2 q̄1 (p) = (4.54) Dosazenı́m do (4.53) dostaneme f1 (p) = p(1 + ab) + 1 . 4[1 − a(a − b)] (4.55) Dalšı́ krok v rekurentnı́m postupu podle (4.50) poskytuje rovnici f2 (p) = max [p + √ 0<q<p q − q + f1 (aq + b(p − q))] . Postupujeme-li takto dále a použijeme-li matematické indukce, dostaneme posloupnosti aproximacı́ {q̄k (p)}, {fk (p)}, kde q̄k (p) = 1 k−2 2 , P n 4 1− b + abk−1 (a − b) n=0 fk (p) = "k−1 X n=0 # bn + abk p + k−1 X s=0 1 s−1 , P n s 4 1− b + ab (a − b) n=0 k = 1, 2, . . . . Postupné aproximace nelze vždy vyjádřit analyticky jako v našem přı́padě. Proto je často nutno jednotlivé aproximace tabelovat. Aproximace v prostoru strategiı́ je postup, který je v mnoha přı́padech jednoduššı́ a má lepšı́ konvergenčnı́ vlastnosti, než metoda popsaná v předchozı́m odstavci. Rovnice typu (4.49) určuje dvě funkce, optimálnı́ účelovou funkci f (p) a optimálnı́ rozhodovacı́ funkci q(p). Je-li dána jedna z těchto funkcı́, můžeme prostřednictvı́m (4.49) stanovit druhou. Na rozdı́l od právě popsané metody vycházı́ metoda aproximace v prostoru strategiı́ ze zvolené výchozı́ aproximace optimálnı́ strategie. Jejı́ zdokonalená verze je uvedena v knize [SMITH 1991], kde je uvedena i aplikace v oblasti marketingového plánovánı́ výroby. Všimněme si nynı́ numerické stability dynamického programovánı́. Při řešenı́ rovnice (4.27) se vyskytujı́ numerické chyby z těchto důvodů: a) při výpočtu funkcı́ g(p, q), T (p, q) může nastat zaokrouhlovánı́, b) při výpočtu fN −1 (T (p, q)) může být použito interpolace nebo extrapolace, c) výběr hodnot q pro maximalizaci je prováděn pouze z konečného počtu přı́pustných vektorů. 83 Z toho plyne, že výpočet posloupnosti {fn (p)} generuje nový vı́ceetapový proces s posloupnostı́ odpovı́dajı́cı́ch nepřesných účelových funkcı́ {Φn (p)}, splňujı́cı́ch vztah Φn (p) = max [g(p, q) + Φn−1 (T (p, q))] + un (p) , q (4.56) kde un (p) zahrnuje výše uvedené chyby, vyskytujı́cı́ se při výpočtu Φn pomocı́ Φn−1 . Řı́káme, že výpočetnı́ proces je numericky stabilnı́, jestliže, zmenšı́me-li dostatečně numerickou chybu každého jeho kroku, můžeme učinit numerickou chybu celého procesu libovolně malou. V našem přı́padě tedy numerická stabilita znamená, že pro dostatečně malé |un (p)| je malý i výraz |fn (p) − Φn (p)| pro všechna přı́pustná p, n. Předpokládejme, že pro všechna p ∈ R platı́ |un (p)| ≤ ε, kde ε je daná konstanta. Z pracı́ Richarda Bellmana vyplývá, že platı́ max |fn (p) − Φn (p)| ≤ nε . p∈R Vidı́me tedy, že chyba celého výpočetnı́ho procesu je úměrná počtu etap původnı́ho zkoumaného procesu, a že náš výpočetnı́ proces je numericky stabilnı́. 4.7 Optimalizace diskrétnı́ch deterministických procesů Vzhledem k tomu, že aplikace dynamického programovánı́ má v dostupné literatuře největšı́ publicitu právě v optimalizaci diskrétnı́ch deterministických procesů, uvedeme zde z této oblasti vzhledem k prostorové omezenosti textů jediný přı́klad. Dalšı́ aplikace nalezne čtenář napřı́klad v knihách [SMITH 1991], [TURBAN, MEREDITH 1991]. Teoretický rozvoj byl v poslednı́ době zaměřen hlavně na zvětšenı́ efektivnosti výběru q ∈ S(p) při speciálnı́ch vlastnostech konvexnosti a konkávnosti funkce g(p, q) [GALIL, PARK 1992] při celočı́selných hodnotách p, q, včetně vyhodnocovánı́ výpočtové složitosti. Pro práci s neurčitými stavy bylo jako speciálnı́ disciplina rozvinuto fuzzy dynamické programovánı́ [ESOGBUE, BELLMAN 1984]. Přı́klad 4.3 Strategie obnovy strojového parku. Předpokládejme, že nějaký typ stroje je charakterizován nákupnı́ cenou p a ročnı́ ziskovou funkcı́ n(t), kde n(t) = zisk z provozu stroje od okamžiku, kdy je starý t roků, do okamžiku, kdy je starý t + 1 roků, t = 0, 1, 2, . . . . Tato funkce je nerostoucı́ funkcı́ argumentu t. Předpokládejme, že stroj je natolik specializovaný, že nemá žádnou prodejnı́ cenu. Na začátku každého roku se činı́ rozhodnutı́, zda se má tento stroj ponechat v provozu, nebo nahradit novým strojem téhož typu. Našı́m cı́lem je stanovit nahrazovacı́ strategii, která způsobuje maximálnı́ celkový zisk z K-letého provoznı́ho obdobı́. Jinými slovy, zjišt’ujeme, zda máme nahradit nebo ponechat stroj, který je t roků starý, má-li ještě dalšı́ch K roků tento pracovnı́ proces trvat. Problém řešı́me pro všechna K = 1, 2, . . . , t = 0, 1, 2, . . . . Zaved’me optimálnı́ účelovou funkci fK (t), která je rovna celkovému zisku z Kletého procesu, na jehož počátku je stroj t roků starý, a během něhož je použı́váno optimálnı́ nahrazovacı́ strategie. Z principu optimality dostáváme funkcionálnı́ rovnici fK (t) = max n(t) + fK−1 (t + 1) , −p + n(0) + fK−1 (1) (4.57) {z } | {z } | ponechat obnovit K = 2, 3, . . . , t = 0, 1, 2, . . . . Pro jednoletý proces máme f1 (t) = max {n(t), 84 −p + n(0)} . (4.58) Prvnı́ člen v závorce na pravé straně (4.57) představuje součet bezprostřednı́ho zisku z rozhodnutı́ ponechat stroj v provozu a maximálnı́ho zisku ze zbytku procesu, na jehož počátku je tentýž stroj o jeden rok staršı́. Druhý člen vyjadřuje zaplacenı́ nákupnı́ ceny za nový stroj, zisk z jeho provozu v nejbližšı́m roce a zisk ze zbytku procesu na jehož počátku je tento stroj starý jeden rok. Abychom se přesvědčili, že rovnice (4.57) je ekvivalentnı́ základnı́ rovnici dynamického programovánı́ (4.24), uvedeme ji na tvar fK (t) = max [n ((1 − q)t) − qp + fK−1 ((1 − q)t + 1)] , (4.59) q∈{0;1} kde q je rozhodovacı́ proměnná, která může nabývat pouze hodnot 0 nebo 1. Přitom q = 0 odpovı́dá přı́padu, kdy stroj ponecháváme v provozu, q = 1 přı́padu, kdy stroj nahrazujeme. Dosadı́me-li q = 0 resp. q = 1 do výrazu v hranaté závorce (4.59), bude tento výraz roven prvnı́mu resp. druhému členu v závorce na pravé straně v (4.57). Vidı́me, že fK (t) je maximálnı́ účelová funkce (K − 1)-etapového procesu, jehož stav je dán diskrétnı́ hodnotou času t, transformace je dána vztahem T (t, q) = (1 − q)t + 1, tj. stářı́ stroje se za jeden rok od provedenı́ rozhodnutı́ bud’to zvětšı́ o 1, nebo se stane rovným jedné. Složce g(t, q) účelové funkce zde odpovı́dá výraz n ((1 − q)t) − qp . Je-li dáno n(t) = 10 − t pro t = 0, 1, 2, . . . , 10 n(t) = 0 pro t = 11, 12, . . . , p = 10, pak rovnice (4.57), (4.58) dávajı́ fK (t) = max {n(t) + fK−1 (t + 1), fK−1 (1)} , (4.60) f1 (t) = max {n(t), 0} = n(t) . (4.61) Zkoumejme např. přı́pad K = 4, t = 3. Hledáme tedy strategii obnovy stroje, která maximalizuje zisk ze čtyřletého provoznı́ho obdobı́, je-li na počátku tohoto obdobı́ stroj 3 roky starý. Hledaný maximálnı́ zisk je f4 (3). Z předchozı́ch rovnic je patrno, že např. f4 (3) lze vyjádřit pomocı́ f3 (4), f3 (1). Tyto funkce vyjadřujeme pomocı́ dalšı́ch funkcı́. Postupným dosazovánı́m do (4.60) a (4.61) dostáváme vyjádřenı́ uvedených funkcı́: f2 (5) = max {n(5) + f1 (6), f1 (1)} = max {5 + 4, 9} = f2 (1) = max {n(1) + f1 (2), f1 (1)} = max {9 + 8, 9} = 17 f2 (2) = max {n(2) + f1 (3), f1 (1)} = max {8 + 7, 9} = 15 f3 (4) = max {n(4) + f2 (5), f2 (1)} = max {6 + 9, 17} = 17 9 (4.62) f3 (1) = max {n(1) + f2 (2), f2 (1)} = max {9 + 15, 17} = 24 f4 (3) = max {n(3) + f3 (4), f3 (1)} = max {7 + 17, 24} = 24 Hodnotu hledaného optimálnı́ho zisku f4 (3) = 24 poskytuje poslednı́ rovnice. Poněvadž oba členy, přes něž maximalizujeme, jsou v nı́ stejně velké, vidı́me, že nezáležı́ na tom, zda na počátku prvnı́ho roku provozu stroj obnovı́me, nebo nikoliv. Neobnovı́me-li ho, začı́náme na počátku druhého roku proces se strojem, který je starý 4 roky. Tento proces má trvat již jen 3 85 roky. Maximálnı́ zisk z tohoto procesu určuje funkce f3 (4), u nı́ž je maximum dle 4. řádku v (4.62) tvořeno druhým členem, takže optimálnı́ rozhodnutı́ na začátku druhého roku způsobı́ obnovenı́ stroje. Nový stroj bude na začátku třetı́ho roku 1 rok starý. Tehdy bude zbývat dvouletý proces se ziskem f2 (1), který je dle vztahu na 2. řádku maximalizován prvnı́m členem, má tedy být stroj na začátku třetı́ho roku ponechán. Ke čtvrtému, tj. poslednı́mu roku provozu se vztahuje zisk f1 (2), který dle (4.61) je maximalizován prvnı́m členem, má tedy být stroj na počátku čtvrtého roku ponechán v provozu. Spočı́vá tedy optimálnı́ strategie v tom, že stroj je obnoven až na začátku druhého roku, načež nový stroj pracuje bez obnovy až do konce zkoumaného obdobı́. Poněvadž na začátku prvnı́ho roku jsou optimálnı́ obě možná rozhodnutı́, lze stejným způsobem ukázat, že existuje ještě druhá optimálnı́ strategie, která poskytuje stejný zisk f4 (3) = 24 jako prvnı́, a která spočı́vá v tom, že stroj je obnoven již na začátku prvnı́ho roku a nový stroj pak pracuje bez obnovy do konce celého čtyřletého obdobı́. Vidı́me, že výpočet maximálnı́ho zisku z celého procesu probı́há postupným dosazovánı́m do rovnic (4.62) v pořadı́ shora dolů, načež lze určovat optimálnı́ strategii zpětným hledánı́m v těchto rovnicı́ch ve směru zdola nahoru. Přı́klad 4.4 Optimálnı́ rozdělovánı́ zdrojů. Necht’ je dáno omezené množstvı́ p jistého ekonomického zdroje (p je celé nezáporné čı́slo). Ekonomickým zdrojem může být např. surovina, pracovnı́ sı́ly, stroje, investice apod. Necht’ každá jednotka tohoto množstvı́ může být použita právě jednı́m z n různých způsobů. Je-li xi část tohoto množstvı́, použité i-tým způsobem (i = 1, 2, . . . , n), pak daná funkce gi (xi ) vyjadřuje výsledný efekt z tohoto způsobu použitı́. Celkový efekt z množstvı́ p necht’ je vyjádřen funkcı́ F (x1 , x2 , . . . , xn ) = n X gi (xi ). (4.63) i=1 Hledejme optimálnı́ rozdělenı́ množstvı́ p, tj. takové celočı́selné nezáporné hodnoty proměnných x1 , x2 , . . . , xn , které maximalizujı́ funkci (4.63) za podmı́nky n X xi ≤ p. (4.64) i=1 Zaved’me předpoklad, který bývá v praxi často splněn, že funkce gi jsou neklesajı́cı́, a že platı́ gi (0) = 0. Předpokládejme, že jednotlivé části množstvı́ p přidělujeme pro různá možná použitı́ postupně; nejprve přidělı́me jistou část pro n-tý způsob, pak pro (n − 1)-nı́ atd. Řešenı́ úlohy lze tedy chápat jako optimalizaci rozhodovacı́ho procesu, u něhož je stav systému v daném okamžiku roven největšı́ části množstvı́ p takové, že žádná jejı́ složka nebyla do tohoto okamžiku přidělena pro kterýkoliv z uvedených způsobů použitı́. Rozhodovacı́ proměnné jsou qi = xn−i a transformace je ve tvaru pi+1 = T (pi , qi ) = pi − qi (i = 0, 1, . . . , n − 1). Je-li tedy počátečnı́m stavem p, pak po provedenı́ počátečnı́ho rozhodnutı́ obdržı́me stav p1 = p − xn , kde pro rozhodovacı́ proměnnou xn platı́ podmı́nka xn ∈ S(p) = {0, 1, . . . , p}. Následujı́cı́ transformace změnı́ stav na p2 = p1 − xn−1 = p − xn − Pxnn−1 , kde analogicky xn−1 ∈ S(p1 ) = {0, 1, . . . , p1 }. Konečný stav bude pn = pn−1 − x1 = p − i=1 xi , kde x1 ∈ S(pn−1 ) = {0, 1, . . . , pn−1 }. Účelová funkce tohoto procesu je dána v (4.63). Maximálnı́ hodnotu účelové funkce, vyjadřujı́cı́ celkový efekt z množstvı́ ξ (ξ je celé nezáporné čı́slo), rozděleného pro n různých způsobů použitı́, přes všechny možné způsoby rozdělenı́, označme fn (ξ). Z principu optimality plynou rovnice fn (ξ) = max gn (xn ) + fn−1 (ξ − xn ) , n ≥ 2, xn ∈S(ξ) f1 (ξ) = max g1 (x1 ) = g1 (ξ). x1 ∈S(ξ) 86 4.8 Závěr Dynamické programovánı́ je matematický přı́stup k optimalizaci vı́ceetapových rozhodovacı́ch procesů, založený na použitı́ rekurentnı́ch funkcionálnı́ch vztahů, které plynou z Bellmanova principu optimality. Tohoto přı́stupu lze použı́t k optimalizaci procesů deterministických i stochastických, diskrétnı́ch i spojitých. Při formulaci každé konkrétnı́ úlohy je nutno nejprve stanovit, co budeme nazývat stavem systému, transformacı́ a rozhodnutı́m, stanovit množiny přı́pustných stavů a přı́pustných rozhodnutı́, a určit počet etap procesu. Pak je nutno se rozhodnout, co budeme považovat za účelovou funkci procesu, tj. dle jakého kriteria budeme chtı́t optimalizovat. Jakmile máme základnı́ veličiny definovány, můžeme sestavit přı́slušné funkcionálnı́ rovnice a provést důkaz existence a jednoznačnosti jejich řešenı́. Poté jsme postaveni před otázky, zda můžeme zı́skat jednoduchá analytická vyjádřenı́ pro optimálnı́ účelovou funkci a pro optimálnı́ strategii, nebo zda můžeme zı́skat numerické řešenı́ pomocı́ počı́tače, a můžeme-li zı́skat přesné nebo jen přibližné řešenı́. Dynamické programovánı́ má široké aplikace v oblastech ekonomie, automatické regulace, matematiky, fyziky, chemie a techniky. 87 Literatura [1] M. AHMAD. Operations Research: The Art and Science to Managerial Decisions. The Mathematical Education, Vol.26, No.2, pp.117–127, 1992. [2] O. G. ALEXEJEV. Kompleksnoje primeněnije metodov diskretnoj optimizacii. Nauka, Moskva, 1987. [3] W. R. ASHBY. Design for a Brain. Chapman and Hall 1960. [4] J. BARTOŠ. Tvorba časových rozvrhů projektů jako dvoukriteriálnı́ časově–nákladový problém. Diplomová práce. FSI VUT, Brno, 47 stran, 1998. [5] M. S. BAZARAA, H. D. SHERALI, C. M. SHETTY. Nonlinear Programming: Theory and Algorithms. John Wiley & Sons, New York, 2nd ed., 1993. [6] R. BELLMAN. Dynamic Programming. Princeton University Press, 1957. [7] R. BELLMAN. Introduction to the Mathematical Theory of Control Processes I. Academic Press, 1967. [8] R. BELLMAN, S. E. DREYFUS. Applied Dynamic Programming. Princeton, 1962. [9] U. BERTELÈ, F. BRIOSCHI. Nonserial Dynamic Programming. Academic Press, 1972. [10] D. P. BERTSEKAS, J. N. TSITSIKLIS. Parallel and Distributed Computation : Numerical Methods. Englewood Cliffs, N.J. : Prentice-Hall, 1989. [11] R. G. BLAND. New Finite Pivoting Rules for the Simplex Method. Math. Operations Res., Vol.2, pp.103–107, 1977. [12] I. M. BOMZE, W. GROSSMANN. Optimierung Theorie und Algorithmen. B.I.Wissenschaftsverlag, Mannheim, 1993. [13] J. BOUŠKA, M. ČERNÝ, D. GLÜCKAUFOVÁ. Interaktivnı́ postupy rozhodovánı́. Academia, Praha, 1984. [14] A. BROOKE, D. KENDRICK, A. MEERAUS. Release 2.25 GAMS A User’s Guide. The Scientific Press. Boyd & Fraser Publishing Company, 2nd edition, 1992. [15] J. E. G. COFMANN, J. K. LENSTRA, A. H. G. R. KAN. Computing, volume 3 of Handbooks in Operations Research and Management Science. North-Holland, 1992. [16] V. COHEN. La recherche opérationelle. Presses Universitaires de France, 1995. [17] G. B. DANTZIG. Programming of Interdependent Activities II. Mathematical Model. Econometrica, Vol.17, pp.200–211, 1949. 88 [18] G. B. DANTZIG, A. ORDEN, P. WOLFE. The Generalized Simplex Methods for Maximizing a Linear Form under Linear Inequality Restraints. Pacific J. Math., Vol.5, pp.183–195, 1955. [19] J. B. DILLWORTH. Production and Operations Management. Mc Graw-Hill, 1993. [20] W. DINKELBACH. Analýza senzitivity a parametrické programovanie. Alfa, Bratislava, 1973. [21] J. DUPAČOVÁ. Stochastické programování. MON, Praha, 1986. [22] J. DVOŘÁK. Aplikace dynamického programovánı́ na optimalizaci výroby tepla. In 2nd International Conference Control of Power Systems’96, Vol.2, pp.444–447, Bratislava, 1996. [23] J. DVOŘÁK, J. HANDLÍŘ. Cvičenı́ metod systémové a operačnı́ analýzy. Učebnı́ texty. VUT, Brno, 1991. [24] J. DVOŘÁK, J. HANDLÍŘ, J. OŠMERA, J. ŠŤASTNÝ. Metody systémové a operačnı́ analýzy. Učebnı́ texty. VUT, Brno, 1989. [25] J. DVOŘÁK, J. KLAPKA. Optimal Lot Sizes Determination for Multistage ProductionAssembly System. In the 12th International Conference on Process Control and Simulation ASRTP’96, Vol.1, pp.337–342, Košice, 1996. [26] J. DVOŘÁK, M. ŠEDA, T. VLÁČIL. Job Shop Scheduling with Transfer Batches. In R. John, and R. Birkenhead (eds.) Soft Computing Techniques and Applications, Advances in Soft Computing, Physica-Verlag, Heidelberg, pp. 105-110, 2000. [27] J. DVOŘÁK, P. MAJER. Fuzzy Due Dates and Fuzzy Processing Times in Flow Shop Scheduling. In Proceedings of the East West Fuzzy Colloquium 2000 and the 8th Zittau Fuzzy Colloquium, Zittau, Germany, pp. 268-275, 2000. [28] A. O. ESOGBUE, R. E. BELLMAN. Fuzzy Dynamic Programming and its Extensions. TIMS/Studies in the Management Sciences, Vol.20, pp.147–167, 1984. [29] J. FARKAS. Theorie der einfachen umgleichungen. J. Reine Angew. Math., pp.1–27, 1902. [30] R. FLETCHER. Practical Methods of Optimization. John Wiley & Sons, Chichester, 2nd ed., 1987. [31] J. FORRESTER. Industrial Dynamics. MIT Wiley, 1961. [32] J. B. J. FOURIER. Oeuvres. Gauthier-Villards, Paris, 1888. [33] Z. GALIL, K. PARK. Dynamic Programming with Convexity, Concavity and Sparsity. Theoretical Computer Science, Vol.92, pp. 49–76, 1992. [34] F. GLOVER, M. LAGUNA. Tabu Search. Boston, Kluwer Academic Publishers, 1997. [35] D. GLÜCKAUFOVÁ, M. VLACH. Redukce dimenzı́. Pokroky matematiky, fyziky a astronomie, Vol.13, pp. 201–224, 267–277, 1968. [36] G. HADLEY. Nonlinear and Dynamic Programming. Addison-Wesley, 1964. [37] M. HAMALA. Nelineárne programovanie. Alfa, Bratislava, 1972. [38] F. L. HITCHCOCK. The Distribution of a Product from Several Sources to Numerous Localities. J. Math. Phys. Mass. Inst. Tech., Vol.20, pp.224–230, 1941. 89 [39] A. HOFFMAN, M. MANNOS, D. SOKOLOWSKY, N. WIEGMANN. Computational Experience in Solving Linear Programs. J. Soc. Industrial Appl. Math., Vol.1, pp.17–33, 1953. [40] P. CHARAMZA, P. POPELA, P. TLUSTÝ a kol. Modelovacı́ systém GAMS. MFF UK, 1993. [41] A. CHARNES. Optimality and Degeneracy in Linear Programming. Econometrica, Vol.20, pp.160–170, 1952. [42] K. L. CHUNG. Markov Chains with Stationary Transition Probabilities. Springer, 1960. [43] P. KALL, S. W. WALLACE. Stochastic Programming. John Wiley & Sons, New York, 1994. [44] N. KARMARKAR. A New Polynomial Time Algorithm for Linear Programming. Combinatorica, Vol.4, pp.373–395, 1984. [45] A. KAUFMANN. Introduction à la Theorie des Sous-Ensembles Flous (Fuzzy Sets Theory) I. Masson, Paris, 1977. [46] J. KLAPKA. Dynamické programovánı́. Učebnı́ texty vysokých škol. SNTL, Praha, 1970. [47] J. KLAPKA. Model of the Decision Support System for Multicriterial Project Selection. In 30th Spring International Conference Modelling and System Simulation MOSIS’96, Vol.1, pp.97–102, Krnov, 1996. [48] J. KLAPKA. Optimization of Multistage Production System. Quaderno dei gruppi di ricerca matematica del C.N.R. Editrice tecnico scientifica, Università di Pisa, Pisa, 1975. [49] J. KLAPKA. Contemporary State of Mathematical Modelling in Project Management. Modelling Measurement & Control, D, AMSE Press, Vol. 9, No. 3, pp. 43–63, 1994. [50] J. KLAPKA, P. PIŇOS. Decision Support System for Multicriterial R&D and Information System Projects Selection. European Journal of Operational Research, Vol. 140, pp.434–446, 2002. [51] R. KLÖTZLER. Multiobjective Dynamic Programming. Math. Operationsforsch. Statist., Ser. Optimization, Vol.9, No.3, pp.423–426, 1978. [52] A. A. KORBUT, J. J. FINKEL’ŠTEJN. Diskrétne programovanie. Alfa, Bratislava, 1972. [53] A. KVASNIČKA, J. POSPÍCHAL, P. TIŇO. Evolučné algoritmy. STU, Bratislava, 2000. [54] L. S. LASDON. Optimization Theory for Large Systems. McMillan Publishing Co., 1970. [55] S. LITTLECHILD, M. SHUTLER. Operations Research in Management. Prentice Hall, 1991. [56] F. A. LOOTSMA. Fuzzy Logic for Planning and Decision Making. Kluwer Academic Publishers, 195 pp., 1997. [57] M. MAŇAS. Teorie her a jejı́ ekonomické aplikace. SNTL, Praha, 1988. [58] S. MARTELLO, D. PISINGER, P. TOTH. Dynamic Programming and Strong Bounds for the 0–1 Knapsack Problem. Management Science, Vol. 45, No. 3, pp. 414–424, 1999. 90 [59] P. McMULLEN. The Maximum Number of Faces of a Convex Polytope. Mathematica, Vol.17, pp.179–184, 1970. [60] Z. MICHALEWICZ. Genetic Algorithms + Data Structures = Evolution Programs. Springer–Verlag, 1994. [61] M. MINOUX. Mathematical Programming: Theory and Algorithms. John Wiley & Sons, Chichester, 1986. [62] L. G. MITTEN. Compositions Principles for Syntheses of Optimal Multistage Processes. Operations Research, pp.610–619, 1964. [63] W. L. MOORE, E. A. PESSEMIER. Product Planning and Management. Mc Graw-Hill, 1993. [64] J. J. MORÉ, S. J. WRIGHT. Optimization Software Guide. SIAM, Philadelphia, 1994. [65] G. K. MURTY. Computational Complexity of Parametric Linear Programming. Math. Programming, Vol.19, pp.213–219, 1983. [66] G. L. NEMHAUSER, L. A. WOLSEY. Integer and Combinatorial Optimization. John Wiley & Sons, New York, 1988. [67] J. PLESNÍK, J. DUPAČOVÁ, M. VLACH. Lineárne programovanie. Alfa, Bratislava, 1990. [68] W. PRAGER. Lineare umgleichungen in der baustatik. Bauzeitung, Vol.80, p.19, 1962. [69] P. POPELA. Object-Oriented System for Simulation Tests in Multi-Stage Stochastic Programming. IFIP Workshop on Stochastic Programming: Algorithms and Models, Lillehammer, 1994. [70] P. POPELA. Vı́cestupňový směšovacı́ problém s expertnı́m odhadem parametrů. Konference 3µ, Ostrava, 1995. [71] P. POPELA. A Multi-Stage Stochastic Blending Problem. 17th IFIP TC7 Conference on System Modelling and Optimization, Praha, 1995. [72] P. POPELA, J. DVOŘÁK. Global Optimization and Genetic Algorithms. In Proceedings of the 2nd International Conference on Genetic Algorithms MENDEL’96, Brno, 1996. [73] P. POPELA, J. ROUPEC. GA-Based Scenario Set Modification in Two-Stage Melt Control Problems. In Proceedings of the 5th International Conference MENDEL’99, Brno, 1999. [74] P. POPELA, S. KORSUŇ, P. SPITZ, T. VLÁČIL. The Optimization Model of the Irrigation System Pipe Network. In Proceedings of the 9th International Scientific Conference FCE TU Brno, Brno, 1999. [75] P. POPELA, Z. JEGLA, P. STEHLÍK. The Optimum Plate Heat Exchanger Design Involving Random Parameters. In Proceedings of CHISA International Conference, Prague, 2000. [76] E. L. de PORTER, K. P. ELLIS. Optimization of Project Networks with Goal Programming and Fuzzy Linear Programming. Computers Ind. Engng, Vol. 19, No. 1–4, pp. 500–504, 1990. [77] A. RAVINDRAN, D. T. PHILLIPS, J. J. SOLBERG. Operations Research: Principles and Practice. John Wiley & Sons, New York, 2nd ed., 1987. 91 [78] REA. The Operations Research Problem Solver. New York, Research and Education Association, 1989. [79] C. R. REEVES, editor. Modern Heuristic Techniques for Combinatorial Problems. Blackwell Scientific Publications, 1993. [80] I. RYCHETNÍK, J. ZELINKA, V. PELZBAUEROVÁ. Sbı́rka přı́kladů z lineárnı́ho programovánı́. SNTL/Alfa, Praha, 1968. [81] M. ŠEDA. Solving Steiner Tree Problem Using Local Search Methods. In Proceedings of the 22nd International Conference Telecommunications and Signal Processing TSP ’99, pp.102–105, Brno, 1999. [82] M. ŠEDA. A Comparison of Exact Methods and Genetic Algorithm Approach to Resource Constrained Scheduling. In Proceedings of the 3rd Nordic Workshop on Genetic Algorithms and their Applications, pp.97–108, Helsinki (Finland), 1997. [83] D. K. SMITH. Dynamic Programming. A Practical Introduction. Ellis Horwood, New York, 1991. [84] R. E. STEUER. Multiple Criteria Optimization: Theory, Computation, and Applications. John Wiley & Sons, New York, 1986. [85] T. J. STEWART. A Multi-Criteria Decision Support System for R&D Project Selection. Journal of the Operational Research Society, Vol.42, No.1, pp.17–26, 1991. [86] H. A. TAHA. Operations Research: An Introduction. New York, Macmillan, 5th ed., 1992. [87] E. TURBAN, J. MEREDITH. Fundamentals of Management Science. Irwin, Boston, 1991. [88] J. WALTER a kol. Operačnı́ výzkum. SNTL, Praha, 1973. [89] J. WALTER, S. VEJMOLA, P. FIALA. Aplikace metod sı́t’ové analýzy v řı́zenı́ a plánovánı́. SNTL, Praha, 1989. [90] N. WIENER. Cybernetics. MIT Press, 1961. [91] W. L. WINSTON. Introduction to Operations Research: Applications and Algorithms. Boston, PWS-Kent Publishing Co., 1991. [92] L. A. WOLSEY. Integer Programming. New York, John Wiley & Sons, Inc., 1998. [93] L. ZADEH, E. POLAK. System Theory. Mc Graw-Hill, 1969. [94] L. A. ZADEH, C. A. DESOER. Linear System Theory. The State Space Approach. Mc Graw-Hill, 1963. 92
Podobné dokumenty
stáhnout zde - Petr Korviny
1. do buňky B1 nenı́ třeba zadávat žádnou hodnotu, pouze informačně lze uvést o jaký druh
vstupnı́ho souboru se vlastně jedná, jestli je to soubor se vstupnı́mi daty (kriteriálnı́ matic...
A, P
Poznámka: Axiomatická definice pravděpodobnosti matematicky přesně a nerozporně vymezuje pojem pravděpodobnosti, ale
nedává návod jak ji vypočı́st.
Bakalarske statnice
Předmět lze splnit jeho úspěšným absolvovánı́m nebo uznánı́m z předchozı́ho
studia.
Ústnı́ část státnı́ závěrečné zkoušky se skládá ze dvou předmětů, jimiž
jsou Základy mat...
Support vector machine
Dvě možnosti vedou k různým řešenı́m. Obě jsou stejně přirozené,
ale druhá vede ke standardnı́m SVM, proto se jı́ budeme držet.
Opět můžeme vynechat podmı́nku na kβk, definovat C =
...
úvod do teorie čísel - Katedra algebry a geometrie
Tato skripta jsou určena zejména studentům navazujícího studia matematických oborů na PřF UP v Olomouci. Jedná se o druhé přepracované vydání původního textu „Teorie číselÿ z roku 1997. Předpokládá...
Prvoc´ısla
Skutečně existujı́ taková nehezká (nebo extrémně hezká?) složená
čı́sla N, která splňujı́, že pro libovolné a nesoudělné s N platı́
aN−1 ≡ 1 (mod N). Taková čı́sla se nazývajı́ C...