Úvod do systémové a operační analysy

Transkript

Úvod do systémové a operační analysy
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

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...

Více

A, P

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.

Více

Bakalarske statnice

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...

Více

Support vector machine

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 = ...

Více

úvod do teorie čísel - Katedra algebry a geometrie

ú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á...

Více

Prvoc´ısla

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...

Více