Lineární a Celo íselné Programování text k p edná²kám Ivan Nagy, Pavla Pecherková Obsah 1 Lineární a celo íselné programování 4 1.1 Úvod........................................... 4 1.2 Formulace LP...................................... 6 1.3 Vytvo ení algebraického modelu úlohy........................ 7 1.4 P íklad......................................... 7 1.5 Cvi ení......................................... 9 1.6 Práce v EXCELu.................................... 10 2 e²ení úlohy lineárního programování 11 2.1 Gracké e²ení dvourozm rné úlohy.......................... 11 2.2 Metoda simplexové tabulky.............................. 12 2.3 Cvi ení......................................... 14 3 Úlohy I. 18 3.1 Optimální produkce.................................. 18 3.2 Optimální produkce s omezenými zdroji....................... 22 3.3 Optimální produkce s výb rem surovin........................ 23 3.4 Optimální krmná sm s................................. 25 3.5 Optimální ezání ty í.................................. 26 4 Úlohy II. 28 4.1 Minimální tok náklad v síti............................. 28 4.2 P i azovací dopravní problém............................. 32 4.3 P i azovací dopravní problém (pomocí MCNF)................... 33 4.4 Nejkrat²í cesta grafem (pomocí MCNF)....................... 35 1
5 Celo íselné programování 37 6 Formulace úlohy celo íselného programování 40 6.1 Speciální typy omezení................................. 40 6.2 Aproximace kriteriální funkce............................. 42 7 e²ení úlohy celo íselného programování 47 7.1 Metoda v tví a mezí.................................. 47 7.2 Metoda se ných nadrovin............................... 49 8 Úlohy III. 53 8.1 Úloha o batohu..................................... 53 8.2 Výb r z mnoºiny investic............................... 54 9 Úlohy IV. 57 9.1 Problém obchodního cestujícího (travelling salesman problem TSP)........ 57 10 Úlohy V. 61 10.1 Problém pokrytí oblastí................................ 61 10.2 Kucha ka a recepty................................... 63 10.3 Výb r leteckých tras.................................. 64 11 Úlohy VI. 69 11.1 Problém rozmíst ní sklad............................... 69 11.2 Problém po²tovních box............................... 70 12 Propuknutí infek ního onemocn ní 73 13 Zobecn ní úlohy TSP 76 13.1 Nejkrat²í cesta grafem................................. 76 13.2 Nejkrat²í cesta z daného uzlu............................. 77 13.3 Nejkrat²í cesta s více náv²t vami m st........................ 79 13.4 Nejkrat²í cesta klastry uzl.............................. 80 2
14 azení 82 14.1 Obecná formulace.................................... 82 14.2 Formulace s denicí p edcházení.......................... 82 14.3 Formulace s denicí pozice.............................. 84 14.4 Formulace jako lineární t íd ní........................... 86 14.5 Hybridní formulace................................... 88 14.6 Formulace jako cesty grafem............................. 90 15 Heuristiky 93 15.1 Heuristiky ²ité na míru................................. 93 15.2 Heuristiky obecné.................................... 94 16 Metaheuristiky 99 16.1 Iterativní lokální hledání............................... 99 16.2 Prohledávání s tabu seznamem............................ 100 16.3 Simulated annealing.................................. 103 16.4 Ant colony optimization................................ 105 16.5 Genetické algoritmy.................................. 109 17 P íloha 115 17.1 Formulace - indikátor podmínky........................... 115 17.2 Formulace - realizace implikace............................ 116 17.3 k-krokové cykly v orientovaném n-grafu....................... 117 17.4 k-krokové cykly v neorientovaném n-grafu...................... 119 18 Poznámky 120 18.1 Programy v jednotlivých kapitolách.......................... 120 3
1 Lineární a celo íselné programování 1.1 Úvod Historie Prvopo átky lineárního programování sahají do období konce 19. století, zmínku o lineárním programování m ºeme nalézt v pracích Fouriera z roku 1888. Dále se t mto my²lenkám v noval ma arský matematik Farkas za átkem 20. století, který jako první vytvo il teorii soustav lineárních nerovností povaºovanou za základ teorie lineárního programování. Sm r vývoje se ubíral k e²ení speciálních úloh lineárního programování, k p i azovacímu a dopravnímu problému. V roce 1941 americký matematik Hitchcock vypracoval postup pro e²ení dopravního problému. Nejv t²í vývin teorie a aplikace lineárního programování je datován od období po druhé sv tové válce, kde hlavním d vodem byly ekonomické problémy povále ných stát. V roce 1947 Dantzig po mnohaletých diskusích podal obecnou formulaci lineárního programování v etn simplexové metody. D vodem bylo e²ení úloh lineárního programování zformulovaných pro pot eby letectva USA. Její název simplexová pochází z prvních speciálních úloh, kde mnoºina p ípustných e²ení byla simplexem, coº je konvexní obal mnoºiny nezávislých bod (jednorozm rný simplex je úse ka, dvojrozm rný trojúhelník, trojrozm rný ty st n,... ). Vývin dal²ích oblastí aplikací lineárního programování za al v letech 1950 1960. [Hana Malá, diplomová práce, Masarykova univerzita v Brn, 2005] P íklady aplikací celo íselného lineárního programování V úlohách lineárního programování, aº na nutnost splnit p edepsané omezující podmínky úlohy, mohou prom nné veli iny nabývat libovolných reálných hodnot. V úlohách celo íselného lineárního programování, jejichº p íklady následují, se poºaduje, aby (n které) neznámé veli iny, krom nutnosti splnit omezující podmínky, nabývaly pouze celo íselných hodnot. Oproti úlohám (spojitého) lineárního programování jsou úlohy celo íselného lineárního programování výrazn t º²í. Najít optimální e²ení v t²í celo íselné úlohy m ºe být nadlidský úkol (i p es pomoc soudobých po íta ). Pro velký praktický význam probíhá v této oblasti specializovaný teoretický výzkum. S pomocí d myslných teoretických výsledk se pak da í e²it i relativn velké (tedy praktické) speciální instance t chto problém. Problém obchodního cestujícího (Travelling Salesman Problem) Klasická formulace. Obchodní cestující má nav²tívit n m st, nebo v kaºdém z nich má obchodní jednání. Kaºdé m sto má nav²tívit práv jednou. Vzdálenost m sta i od m sta j je c ij pro i, j = 1, 2,..., n. Cílem je ur it, v jakém po adí má obchodní cestující m sta nav²tívit tak, aby jeho celkové cestovní výlohy byly minimální. Dopravní formulace. Firma má rozvézt zboºí n zákazník m. (Po²tovní sluºba zaji² uje pravidelné vybírání po²tovních schránek i pravidelnou p epravu zásilek z po²tovních ú ad ve m st. Svozová rma zaji² uje pravidelný odvoz odpadu z kontejner, které jsou umíst ny na n místech. Atd.) Vzdálenost mezi místy i a j, která je t eba obslouºit, je c ij pro i, j = 1, 2,..., n. Úkolem je stanovit optimální trasu tak, aby její délka byla minimální. Pr myslová aplikace. Podnik vyrábí desky (nap. desky elektronických ti²t ných spoj ). Do desek je t eba vyvrtat otvory, do nichº budou pozd ji zasunuty sou ástky. Podle technického 4
výkresu m ºeme ur it vzdálenost c ij mezi i-tým a j-tým otvorem, které je t eba vyvrtat, pro i, j = 1, 2,..., n. Desky bude automatizovan obráb t íslicov ízený (CNC) stroj. Úkolem je stanovit optimální dráhu vrta ky tak, aby její délka (a tudíº doba obráb ní jedné desky) byla minimální. Problém ínského po² áka (Chinese Postman Problem) Úlohu lze formulovat následovn. Automobil provád jící údrºbu má v zimním období o²et it posypem (v letním období pokropit, b hem noci zamést) p edepsanou sí (jednosm rných a obousm rných) silnic a ulic. Úkolem je stanovit optimální trasu automobilu tak, aby v²echny silnice a ulice byly o²et eny a celková délka trasy byla minimální. Uvedená úloha je snadno e²itelná jestliºe sí obsahuje jednosm rné i obousm rné silnice a kaºdá obousm rná silnice má být o²et ena v kaºdém sm ru zvlá² (tj. dohromady dvakrát) nebo jestliºe sí obsahuje pouze obousm rné silnice, které sta í o²et it pouze jednou (z kterékoliv strany). Pokud v²ak sí obsahuje obousm rné silnice, které sta í o²et it pouze jednou (z kterékoliv strany), i silnice jednosm rné, úloha p echází v obtíºný smí²ený problém ínského po² áka. Problém d lení materiálu (Cutting Stock Problem) Klasická (jednorozm rná) formulace. Stavební rma pro vyztuºení konstrukce pot ebuje ty e o délkách l 1, l 2,..., l m. Firma pot ebuje b 1 kus ty í délky l 1, dále pot ebuje b 2 kus ty í délky l 2,..., pot ebuje b m kus ty í délky l m. Hutní závody dodávají ty e v n kolika málo standardizovaných délkách L 1, L 2,..., L n. Jedna ty délky L j stojí c j korun pro j = 1, 2,..., n. Úkolem je ur it, kolik ty í je t eba z hutních závod objednat a jak je potom roz ezat tak, aby konstrukci bylo moºné vyztuºit a cena za nákup ty í byla minimální. Poznámka. Problém d lení materiál má celou adu variant. Krom vý²e uvedené jednorozm rné zmi me alespo dvourozm rnou: plech v klempí ství / list papíru v papírnách je t eba rozd lit na men²í obdélníkové ásti. Dal²í varianta: z daného obdélníkového plechu pot ebujeme vy ezat (vyseknout) co nejv t²í po et stejných výrobk (polotovar ). Pakovací problémy (Packing Problems) Na obdélníkovou plochu skladi²t rozmístit co nejv t²í po et palet r zných rozm r (tj. nalézt rozmíst ní palet tak, aby na danou plochu se jich ve²lo co nejvíce). Trojrozm rná varianta: do úloºného prostoru automobilu (p epravního kontejneru apod.) umístit co nejv t²í po et zásilek (balík ) r zných rozm r. P i azovací problémy (Assignment Problems) Je celá ada p i azovacích problém. Níºe uvádíme klasickou formulaci (která je snadno e²itelná, v podstat jde o variantu dopravního problému, a tedy úlohu spojitého lineárního programování). Dále pak uvádíme p íklady dvou obtíºn j²ích variant, zahrnující dal²í omezující podmínky reálné aplikace. Klasická formulace. Firma má n pracovních et (dílen apod.) a sou asn pot ebuje zajistit vykonání stejného po tu n prací. Stupe kvalikace i-té pracovní ety k provedení j-té práce je cij pro i, j = 1, 2,..., n. Firma hledá optimální p i azení pracovních et k provedení prací kaºdá eta má být p i azena k provedení práv jedné práce tak, aby celkový sou et kvalikací byl maximální. 5
Varianta 1. V p írod (na horách) po ádáme ²kolení (seminá ). Seminá sestává z n kolika dopoledních a odpoledních kurs, z nichº n které probíhají paraleln vedle sebe. Kaºdý kurs má omezenou kapacitu (kapacita místnosti). Ú astníci udávají preference pro jednotlivé kursy. Úkolem je p i adit ú astníky do jednotlivých kurs tak, aby kapacita kurs nebyla p ekro ena, v jeden as se ú astník ú astnil pouze jednoho kursu a celková spokojenost ú astník byla maximální. Varianta 2. Rozvrhá fakulty (univerzity) na základ studijních plán doporu ených a p edpokládaných specializací, a tedy pr chod studiem sestavil centrální rozvrh hodin. Daný p edm t m ºe probíhat ve více skupinách; kaºdá skupina probíhá v n kterém ase v n které místnosti. Nyní si studenti (také s ohledem na doporu ené studijní plány) vybírají, které p edm ty cht jí v daném semestru studovat; kdyº si p edm t vyberou, uvedou také preference pro jednotlivé skupiny daného p edm tu (tj., kterou by cht li nav²t vovat nejrad ji apod.). Úkolem je sestavit osobní rozvrh kaºdého studenta, tj., p i adit studenty do skupin tak, aby kaºdý student mohl studovat vybrané p edm ty (primární cíl), vyhov lo se preferencím student (sekundární cíl), aby studenti nem li v rozvrzích kolize a kapacita skupin (místností) nebyla p ekro ena. Poznámka. Otázka sestavení ²kolního rozvrhu hodin (plánu výroby, jízdního ádu apod.) je dal²í t ídou optimaliza ních úloh - Scheduling. [P íklady aplikací celo íselného lineárního programování, Portál OU, Ostrava] 1.2 Formulace LP Nalezn te hodnoty vektoru x = [x 1, x 2,, x n ], které (i) maximalizují (minimalizují) lineární kriterium J = c 1 x 1 + c 2 x 2 + + c n x n max (min), (ii) spl ují vedlej²í podmínky a 1,1 x 1 + a 1,2 x 2 + + a 1,n x n b 1, a 2,1 x 1 + a 2,2 x 2 + + a 2,n x n b 2, a m,1 x 1 + a m,2 x 2 + + a m,n x n b m, (iii) prvky vektoru x jsou nezáporné x 1 0, x 2 0, x n 0 Zápis standardní úlohy je následující J = c x max (min) Ax b x 0 6
Poznámky 1. Lineární kriterium je nadrovinou v prostoru {J, x}. Pro x = [x 1, x 2 ] je to rovina v t írozm rném prostoru {J, x 1, x 2 }. Je z ejmé, ºe pokud tato rovina není rovnob ºná s podstavou, bude, bez omezení, jak min tak i max utíkat do ±. 2. Systém omezení Ax b a x 0, který v prostoru x, pro x = [x 1, x 2 ] je to podstavná rovina, vytvá í simplex, v n mº je vázán extrém. Simplex v rovin je útvar, ohrani ený p ímkami. 3. Ve správném p ípad je simplex uzav ený, nebo alespo dává omezení ve sm ru nár stu nebo poklesu kriteria. Potom e²ení bude leºet na omezení, a to v pr se íku dvou omezujících p ímek. 4. Je-li omezení ve sm ru kriteria otev ené, potom e²ení utíká do nekone na. 5. Je-li simplex prázdná mnoºina, e²ení neexistuje. 6. Ve správném p ípad by pro nalezení e²ení posta ilo spo ítat sou adnice v²ech roh simplexu, v nich ur it hodnoty kriteria a vybrat tu nejv t²í (nejmen²í). Je to moc práce! 7. Postup e²ení pomocí simplexové tabulky realizuje tuto úlohu, ale s tím, ºe postupuje rychleji k cíli - v kaºdém kroku kriterium naroste (poklesne). 8. Praktické problémy i ve správném p ípad mohou nastat, kdyº e²ení za ne cyklovat. Ve skute nosti je p ímka omezení rovnob ºná s vrstevnici kriteria, takºe na této hran simplexu je stejné kriterium. e²ení m ºe skákat mezi konci této hrany. 1.3 Vytvo ení algebraického modelu úlohy 1. Výb r neznámých veli in x, které budeme optimalizovat. Ty mohou být spojité, celo- íselné nebo binární. P íklad: suma investovaných pen z, po et p ijatých pracovník, realizace nebo nerealizace ur itého projekt. 2. Denice kritéria které budeme maximalizovat (minimalizovat) pomocí optimalizovaných a p ípadn dal²ích veli in. Musí to být lineární funkce c i x i, kde c i se asto nazývají ceny. 3. Denice omezujících podmínek (a) omezení ve tvaru nerovnosti Ax b, (b) nezápornost, celo íselnost, binárnost x, (c) p ípadn dal²í 1.4 P íklad Ur ete hodnoty prom nné x = [x 1, x 2 ], která maximalizuje kritérium a vyhovuje podmínkám J = c 1 x 1 + c 2 x 2 7
3x 1 + 5x 2 15 2x 1 + x 2 8 x 2 2 x 1 0, x 2 0 Váhy v kriteriu volte následovn a) c = [5, 1], b) c = [1, 1], c) c = [1, 3], d) c = [ 1, 1]. a vysv tlete výsledky. e²ení Geometrická interpretace úlohy je na následujícím obrázku x 2 [0, 8] criterion 3 criterion 3 direction of maximization criterion 2 criterion 1 [0, 3] [0, 2] [5/3, 2] [6/7, 25/7] admissible solutions [4, 0] [5, 0] x 1 8
1.5 Cvi ení Vezmeme p íklad z p edná²ky a budeme ho e²it v EXCELu. e²itel lze nalézt v menu Data (pokud tam není, je t eba ho nainstalovat File - Options - Add-ins dole Go a snad tam vleze :-) ) Nastavíme ho takto Pozn. V nové verzi lze za²krtnout - prom nné x jsou nezáporné. 9
1.6 Práce v EXCELu 1. Vytvo ení bloku (a) my²í do bu ky a táhnout, (b) my²í do bu ky, Shift a klapnout my²í nebo ²ipky (souvislý blok), (c) dal²í bloky s Ctrl (nesouvislý blok), (d) my²í na písmena nebo ísla, (e) Ctrl Shift + ²ipka - blok aº na konec souboru 2. P emíst ní / kopírování bloku (a) Chytit blok za okraj a táhnout / Ctrl táhnout (b) Ctrl C a Ctrl V / Ctrl X a Ctrl V (pozor, blok mizí) 3. Zadání hodnot (a) napsat + Enter (editace 2x my²í nebo F2) (b) vytvo it blok, napsat + Ctrl Enter 4. Zadání vzorc (a) vzorec za íná = (vzorec jako text za neme mezerou nebo apostrofem) (b) odkazy na jiné bu ky nebo bloky provedeme my²í - kopíruje se adresa 5. Kopírování vzorc (a) napsaný vzorec lze rozkopírovat my²í - za malý erný tvere ek vpravo dole (b) adresy jsou relativní - p i kopírování se posouvají ve sm ru kopírování (c) absolutní adresu vytvo íme pomocí F4 - p i kopírování se neposouvá 6. Funkce (a) tabulku funkcí vyvoláme pomocí ikony f x p ed p íkazovým ádkem (b) =sum(), =count(), =if( ; ), =round( ; ), =rand() 7. Maticové vzorce (a) násobení vektor po prvcích A1:E1 a A2:E2 Vytvo íme blok pro výsledek zadáme =A1:E1 *A2:E2 (adresy zadáme my²í) Ctrl Shift Enter (vzorec se uzav e do { } a výsledek vyplní blok) (b) skalární sou in vektor A1:E1 a A2:E2 zadáme =sum(a1:e1 *A2:E2) Ctrl Shift Enter (vzorec se uzav e do { } a výsledek je v editované bu ce) (c) soustava rovnic - neznámé A1:E1, koecient A2:E2 aº A6:E6 do bu ky F2 zadáme =sum($a$1:$e$1*a2:e2) + Ctrl Shift Enter (dolary xují adresu prom nných, po zadání A2:E2 stiskneme F4) výsledek my²í rozkopírujeme do F3:F6 10
2 e²ení úlohy lineárního programování 2.1 Gracké e²ení dvourozm rné úlohy Bu jsme ukázali minule, nebo ukáºeme te : Ur íme hodnoty prom nné x = [x 1, x 2 ], která maximalizuje kritérium a vyhovuje podmínkám J = c 1 x 1 + c 2 x 2 3x 1 + 5x 2 15 2x 1 + x 2 8 x 2 2 x 1 0, x 2 0 Váhy v kriteriu volte následovn a) c = [5, 1], b) c = [1, 1], c) c = [1, 3], d) c = [ 1, 1]. Ukázat r zné výsledky. x 2 [0, 8] criterion 3 criterion 3 direction of maximization criterion 2 criterion 1 [0, 3] [0, 2] [5/3, 2] [6/7, 25/7] admissible solutions [4, 0] [5, 0] x 1 11
2.2 Metoda simplexové tabulky Uvedli jsme, ºe e²ení standardní úlohy leºí vºdy v rozích hranice omezení. Tyto body dostaneme jako e²ení p íslu²ných hranic omezení, tj. p ímek omezujících poloroviny v omezeních nerovností. Jde tedy o e²ení soustavy omezení ve tvaru rovností. To je základem simplexové metody, která navíc vybírá jednotlivé dvojice omezení tak, aby p i p echodu od minulého e²ení k sou asnému kriterium vºdy nar stalo (nebo klesalo). Pokud p estane nar stat, hledáni optima je ukon eno. Postup je následující: standardní podmínky jsou: maximalizace kriteria, nezáporné pravé strany omezení, nerovnosti typu, nezáporné prom nné x. sestavíme simplexovou tabulku standardní e²ení najdeme nejmen²í záporný koecient v ádku kriteria klí ový sloupec pro kladné prvky v klí ovém sloupci najdeme nejmen²í podíl levé strany a prvku v klí ovém sloupci klí ový ádek na pr se íku kl. sl. a kl.. leºí klí ový prvek ten vyd líme kl. prvkem tím vynulujeme ostatní prvky v kl. sloupci to d láme, dokud je v ádku kriteria n jaký záporný prvek Výsledek: bázové veli iny mají hodnoty odpovídající pravým stranám; nebázové veli iny jsou nula. Ukáºeme na úloze 2x 1 + 3x 2 max x 1 + x 2 5 x 1 + 2x 2 8 x 1, x 2 0 1. Napí²eme simplexovou tabulku a doplníme ji pomocnými prom nnými s 1, s 2 tak, aby v tabulce existovala báze. x 1 x 2 s 1 s 2 ps 2 3 0 0 0 1 1 1 0 5 1 2 0 1 8 12
1. Najdeme klí ový prvek x 1 x 2 s 1 s 2 ps 2 3 0 0 0 1 1 1 0 5 5/1 1 2 0 1 8 8/2 * * Klí ový prvek je 2 - tím redukujeme sloupec x 2. 2. Druhý krok - dal²í klí ový prvek x 1 x 2 s 1 s 2 ps 0.5 0 0 1.5 12 0.5 0 1 0.5 1 1/0.5 * 0.5 1 0 0.5 4 4/0.5 * Klí ový prvek je 0.5 (ve druhém ádku) - redukujeme sloupec x 1. 3. T etí krok x 1 x 2 s 1 s 2 ps 0 0 1 1 13 1 0 2 1 2 0 1 1 1 3 Protoºe v prvním ádku nejsou záporná ísla, kon íme. e²ení (s 1 = s 2 = 0) a tedy 1x 1 + 0x 2 = 2 x 1 = 2 0x + 1x 2 = 3 x 2 = 3 Hodnota optimálního kriteria je 13. Poznámka nestandardní e²ení záporné b a podmínka násobíme -1 záporné b a podmínka (násobíme -1) nebo kladné b a podmínka dále uvedený postup postup ode teme pomocné prom nné s a p i teme um lé prom nné x A. e²íme celý problém pro kriterium z = x A max a do e²íme aº do konce ve výsledné tabulce nahradíme ádek kriteria p vodním a vynecháme sloupec s um lé prom nné vy e²íme a to je e²ení p vodní nestandardní úlohy. 13
2.3 Cvi ení e²ení úloh LP v LiPS Alternativním programem (krom spousty dal²ích) pro e²ení úloh LP a IP je LiPS (free download http://sourceforge.net/projects/lipside/, nepot ebuje instalaci). Není tak user friendly jako EXCEL, ale zvládá mnohem v t²í úlohy neº EXCEL. Podíváme se na n j. Budeme uvaºovat stejnou úlohu jako pro demonstraci simplexové tabulky 2x 1 + 3x 2 max x 1 + x 2 5 x 1 + 2x 2 8 x 1, x 2 0 Pro zadání modelu si m ºeme vybrat bu formát tabulky nebo textu. Za neme tabulkou pokud model uloºíme a znovu otev eme, objeví se v textové podob. Podle ní pak uº m ºeme psát modely jako text. Návod k tomu, jak psát modely v textu lze získat také z jiº napsaných model v adresá i LiPSu v podadresá i Examples. Také je uºite ný Help / Model editor / algebraic model. 14
e²ení spustíme zelenou ikonkou s trojúhelní kem, a to se objeví v okn e²ení. Objeví se nejen výsledek, ale také celý postup výpo tu v simplexové tabulce Výsledky jsou shrnuty v dal²ích dvou tabulkách 15
V první tabulce je uvedeno e²ení = Value, a dále Obj. cost a Reduced cost Objective cost coº jsou zadané ceny (c i ) v kriteriu. Reduced cost udává o kolik by se musela zm nit p íslu²ná cena (koecient c i ), aby se prom nná stala efektivní (tj. aby se její zm ny za aly projevovat v hodnotách kriteria = aby se dostala na hranici omezení). Tento údaj se týká stability e²ení - o kolik se m ºe situace zm nit, neº e²ení p esko í do jiného rohu simplexu. Druhá tabulka se týká omezení. Value udává hodnotu levé strany omezené Ax, RHS hodnotu pravé strany b Dual price udává p ír stek v hodnot kriteria, kdyº k pravé stran p íslu²ného omezení p i- teme jedni ku. Tento údaj vypovídá o citlivosti e²ení. Jaky vliv na výsledné e²ení má zm na omezení o jednotku. Dal²í zkoumání Kriterium 5x 1 + 3x 2 max nebo 2x 1 + 8x 2 max Zkusit v LiPS a zd vodnit teoreticky. e²ení 16
a 17
3 Úlohy I. 3.1 Optimální produkce Máme rozhodnout o mnoºství, ve kterém budou vyráb ny produkty A a B. K jejich výrob jsou zapot ebí dva drahé stroje jejichº vyuºití je omezeno. Úloha je zadána v tabulce ƒas stroj pot ebný ƒas stroj Stroj na 1000 výrobk k vyuºití Produkt A Produkt B 1 4 6 24 2 4 2 12 Cílem je navrhnout výrobu tak, aby se dosáhlo maximální produkce. e²ení x 1 a x 2 - produkce výrobk A a B v tisících. Formulace úlohy je následující x 1 + x 2 max 4x 1 + 6x 2 24 4x 1 + 2x 2 12 x 1 0, x 2 0 18
e²ení a rozbor úlohy: 19
Pokra ování p íkladu Uvaºujme nyní ceny c 1 = 10 pro A a c 2 = 20 pro B. Chceme docílit maximálního zisku. e²ení Nové kriterium bude 10x 1 + 20x 2 max 20
Dal²í pokra ování Firma podepsala dohodu s dodavatelem, ºe minimální produkce výrobk bude 1 tis. Náklady na výrobu jednotlivých výrobk jsou n 1 = 5 a n 2 = 10. Cílem je minimalizovat výdaje. e²ení Nové kritérium a dal²í omezení jsou 5x 1 + 10x 2 min x 1 1, x 2 1 21
3.2 Optimální produkce s omezenými zdroji Továrna s dv ma provozy produkuje výrobek A, který se prodává samostatn a nebo jako sou ást pro výrobek B. Oba výrobky pot ebují ur itou surovinu (S), jejíº zdroj je omezen. Specikace úlohy je dána v tabulce Surovina + Spot eba K dispozici + výr. A pro B na jednotku produkce celkem Produkt A Produkt B S 5 2 3000 A 0 1 Cena produktu 5 10 Dále stanovíme podmínku, ºe minimální po et samostatných výrobk musí být 250 ks. Poºadujeme a) maximální produkci, b) maximální zisk. e²ení x 1 je po et kus A a x 2 pro B. Po et A k prodeji je x 1 x 2, po et B je x 2. Kriterium pro maximální produkci výrobk A a B a pro maximální zisk z prodeje A a B (x 1 x 2 ) + x 2 = x 1 max, Podmínky 5 (x 1 x 2 ) + 10x 2 max. 5x 1 + 2x 2 3000 x 1 x 2 250 x 1 0, x 2 0 Program: U1c_prodSeSurovinou.xlsx 22
3.3 Optimální produkce s výb rem surovin Továrna produkuje dva výrobky B 1 a B 2. Na jejich výrobu je pot eba ur itou látku L. Tuto látku je moºno získat ze surovin A 1, A 2, A 3 a A 4, které je t eba zakoupit. Kaºdá surovina poskytne jiné mnoºství látky. Specikace je v tabulce 23
Výrobek Surovina látka Pot ebné mnoºství A 1 A 2 A 3 A 4 látky L (pro B 1 ) 2 10 5 20 1000 L (pro B 2 ) 10 1 1 2000 Cena za surovinu 20 10 5 10 Chceme minimalizovat výdaje. e²ení x 1,1 x 1,4 jsou navrhovaná mnoºství surovin pro B 1 a x 2,1 x 2,4 pro B 2. Tedy [ ] x1,1 x x = 1,2 x 1,3 x 1,4 x 2,1 x 2,2 x 2,3 x 2,4 je matice neznámých. Úloha je formulována takto 20 (x 1,1 + x 2,1 ) + 10 (x 1,2 + x 2,2 ) + 5 (x 1,3 + x 2,3 ) + 10 (x 1,4 + x 2,4 ) min 2x 1,1 + 10x 1,2 + 5x 1,3 + 20x 1,4 1000 10x 2,1 + 5x 2,2 + x 2,3 2000 Program: U1d_prodVyberS.xlsx 24
3.4 Optimální krmná sm s Pro výkrm jednoho kusu dobytka je zapot ebí 2.5 kg krmné sm si a 240 g protein na den. Pro krmení se pouºívá píce a kuku ice. Cena jednoho kg píce je 0.50 K a kuku ice 0.40 K. Dal²í specikace jsou v tabulce Krmivo krmná sm s/kg krmiva proteiny/kg krmiva cena K /kg Píce (x 1 kg) 1 0.4 0.5 Kuku ice (x 2 kg) 1.25 0.08 0.4 Pot ebné mnoºství 2.5 0.24 Poºadujeme minimální výdaje. e²ení x 1 zna í mnoºství píce, x 2 mnoºství kuku ice. Platí 0.5x 1 + 0.4x 2 min 25
x 1 + 1.25x 2 2.5 0.4x 1 + 0.08x 2 0.24 nebo = v omezení (nechceme zbytky). Program: U1e_krmnaSmes.xlsx 3.5 Optimální ezání ty í Máme ty e dlouhé 7.4 m a chceme z nich na ezat kusy dlouhé 150, 210 a 290 cm. Jednotlivé délky pot ebujeme v mnoºství 1000 ks. Jak máme postupovat, kdyº chceme mít minimální odpad? e²ení Nejprve vybereme tzv. ezné plány (je jich víc, ale my prost chceme tyhle) Délka Plán ezání 1 2 3 4 5 6 290 1 2-1 - 1 210 - - 2 2 1 1 150 3 1 2-3 1 Odpad 0 10 20 30 80 90 26
Ozna íme x 1 x 6 jsou mnoºství ezání podle jednotlivých plán. Úloha je: 10x 2 + 20x 3 + 30x 4 + 80x 5 + 90x 6 min x 1 + 2x 2 + x 4 + x 6 = 1000 2x 2 + 2x 4 + x 5 + x 6 = 1000 3x 1 + x 2 + 2x 3 + 3x 5 + x 6 = 1000. Program: U1f_rezaniTyci.xlsx 27
4 Úlohy II. 4.1 Minimální tok náklad v síti Minimum Cost Network Flow Problem (MCNF) Je dána sí (souvislý, orientovaný, acyklický graf s jedním vstupem a jedním výstupem) s m uzly a n hranami. Písmenem b i ozna íme zásobu v uzlu i, tj. výstupní tok minus vstupní tok. Jestliºe je b i > 0 jedná se o zásobovací uzel (zdroj), pro b i < 0 jde o uzel s poºadavkem (cíl) a pro b i = 0 máme uzel pr jezdní. S kaºdou hranou je spojena dolní mez L ij a horní mez U ij toku touto hranou. Cílem je ur it velikosti tok x ij v jednotlivých hranách grafu tak, aby náklady na p epravu byly minimální, jestliºe jednotková cena transportu po hran ij je c ij. P edpokládáme, ºe platí i b i = 0 (vyrovnané zdroje a poºadavky). e²ení Pomocí LP x ij U ij, c ij x ij min ij x kj j i x ik = b k, k x ij L ij, 0 L ij U ij, i, j Poznámka c a x jsou tvercové matice kde ádky i sloupce jsou indexovány uzly. Prvky t chto matic odpovídají hranám grafu. V t²inou ne v²echny hrany existují. Neexistující hrany vyplníme nulami. Jako m nící se bu ky v Excelu zadáme jen existující hrany - nejlépe vytaºené mimo do vektoru. Pro kriterium i podmínky pr toku m ºeme pouºít cele matice (i prvky odpovídajícími neexistujícím hranám - jsou to nuly). Podmínky pr toku konstruujeme jakoby pro diagonálu matice x a d láme sum( ádek)-sum(sloupec), kde v ádcích xujeme (F4) písmenka a ve sloupcích ísla adres. Pak lze kopírovat. V²e je vid t v Excelu. P íklad 1 Máme následující graf 2 4 zdroj 1 5 7 cíl 3 6 28
Uzel 1 je zdrojový se zásobou 150 jednotek toku, uzel 7 je cílový, tj. poºadující 150 jednotek toku. Ostatní uzly jsou p epravní. Ceny za p epravu jednotky toku jsou dány v tabulce (matici) 5 21 14 18 32 9 7 12 31. 29 35 Jednotlivé toky budou 0 x 12 x 13 0 0 0 0 0 0 0 x 24 x 25 x 26 0 0 0 0 x 34 x 35 x 36 0 0 0 0 0 0 0 x 47 0 0 0 0 0 0 x 57 0 0 0 0 0 0 x 67 0 0 0 0 0 0 0 kde nepouºitým hranám jsme p i adili 0. Stejn tak doplníme 0 do matice ohodnocení. Minimální kapacitu hran zadáme jako 0, maximální 80. Potom úloha má tvar: Kritérium 7 i=1 j=1 7 c ij x ij min Podmínky konstruujeme pro kaºdý uzel. Jdeme po diagonále - to je k, a se teme k-tý sloupec a ode teme k-tý ádek. To se rovná b k, k = 1, 2,, 7. Protoºe jsme doplnili 0, m ºeme d lat sou ty vºdy od 1 do 7., x ki i j x jk = b k coº se týká uzlu k a íká, ºe to co p iteklo minus to co odteklo je to, co z stalo (ve skladu). V Excelu: jsme na k-tém prvku diagonály matice x a d láme: sou et prvk v k-tém ádku minus sou et prvku v k-tém sloupci rovná se b k. Dal²í podmínky jsou x ij L, x ij U, p ípadn x ij 0, x ij U. Pozor Bude-li zadána p íli² malá maximální kapacita hran, bude problém ne e²itelný. Program: U2a_tokMinimCesta.xlsx 29
P íklad 2 Je dáno 9 uzl podle obrázku zdroj cíl zdroj zdroj cíl zdroj se ty mi zdroji a dv ma poºadavky. Silnými ²ipkami je vyzna en výsledek. Detaily zadání jsou v programu. Program: U2b_tokMinimCesta2.xlsx 30
Poznámka Pravý sloupec prom nných propojený s tabulkou prom nných je nep íjemný, Jednak z d vodu zdvojení prom nných a v t²í náchylnosti k p epsání, jednak jeho vytaºení je dosti pracné. Jiná moºnost jak touto úlohou zacházet je nechat jen tabulku prom nných a v tabulce cen místo nul zadat velká ísla (penalizace neexistujících cest). Tím se e²ení úlohy zjednodu²í, ale 1. pracujeme se zbyte n velkým po tem prom nných, 2. kdyº bude omezení na p evoz po hranách p íli² malé, bude e²itel navrhovat p evoz i po neexistujících hranách (musí se na to dávat pozor). e²ení je v programu U2b_tokMinimCesta3.xlsx, který následuje 31
4.2 P i azovací dopravní problém Je dáno m zdrojových uzl, kaºdý s s i, i {1 m} = M jednotkami zboºí, a n cílových uzl, kaºdý s d j, j {1 n} = N jednotkami poºadavk. c ij, i M, j N je jednotková cena za p evoz zboºí po hran i, j a x ij je mnoºství zboºí p epravené po této hran. Chceme dosáhnout minima náklad za p evoz. Úloha Lze e²it p ímo pomocí LP. Program: U2c_prirazProbl.xlsx c ij x ij min ij x ij = s i, i j x ij = d j, j i x ij 0, ij 32
4.3 P i azovací dopravní problém (pomocí MCNF) Jedná se jiné e²ení úlohy dopravního problému. Ozna íme s i - zdroje, d i - poºadavky. e²ení Lze e²it pomocí MCNF kdyº p i adíme b i = s i, i M a b m+j = d j, j N. Graf je na obrázku. 33
b > 0 b < 0 1 m + 1 m m + n Program: U2d_prirazProblMCNF.xlsx Dal²í programy jsou: U2d_prirazProblMCNF_2.xlsx (tady je zachován tvar matic p esn podle MCNF - i s nadbyte nými nulami) a U2d_prirazProblMCNF_penal.xlsx (kde je vyuºita prohibitivní penaliza ní sazba). 34
4.4 Nejkrat²í cesta grafem (pomocí MCNF) Je dána ohodnocená sí, kde ohodnocení c ij interpretujeme jako délky jednotlivých hran (i, j). Úkol je najít nejkrat²í cestu ze zdrojového uzlu 1 do cílového uzlu m. e²ení Pomocí MCNF, kde uvaºujeme o p eprav jednotky toku z uzlu 1 do uzlu m. Poloºíme U ij = 1, ij a b i = 0, i. P íklad Uvaºujeme graf z obrázku 2 5 8 1 3 6 9 4 7 Hledáme nejkrat²í cestu z uzlu 1 do uzlu 7 (nebo z uzlu s b i = 1 do uzlu s b j = 1) a vyuºíváme k tomu metodu MCNF. Údaje a e²ení jsou v programu. Program: U2d_prirazProblMCNF.xlsx 35
36
5 Celo íselné programování Úloha IP je vlastn úloha LP, roz²í ená o celo íselné prom nné. Tedy cx min Ax 0 x R 0, x I I, x B {0, 1} kde x R je mnoºina reálných prom nných, x I jsou celo íselné prom nné a x B jsou celo íselné prom nné pouze s dv ma hodnotami 0 a 1. P íklad Chceme investovat $14000. Na²li jsme ty i investi ní p íleºitosti A1, A2, A3 a A4. Kaºdá z nich vyºaduje ur ité investice a slibuje výnosy. Specikace údaj (v tis. dolarech) je v následující tabulce Akce A1 A2 A3 A4 Omezení Výnosy (c) 8 11 6 4 X Investice (A) 5 7 4 3 14 Do kterých akcí bychom m li vloºit své peníze tak, aby se dosáhlo maximálního (i) p íjmu? (ii) zisku? e²ení Denujeme vektor prom nných x = [x 1, x 2, x 3, x 4 ], x i {0, 1}. Jednotlivé prom nné mají význam rozhodnutí: x i = 1 znamená akci i realizovat; x i = 0 nerealizovat. Úloha má tvar 8x 1 + 11x 2 + 6x 3 + 4x 4 max 5x 1 + 7x 2 + 4x 3 + 3x 4 14 x binární pokud bychom cht li maximalizovat istý zisk, bylo by kriterium (8 5) x 1 + (11 7) x 2 + (6 4) x 3 + (4 3) x 4 max e²ení je x 1 = 0, x 2 = x 3 = x 4 = 1 s kriteriem 21. V druhém p ípad je e²ení x 1, x 2 = 1, x 3 = x 4 = 0 s kriteriem 7. Úloha v Excelu je následující (prg. Z_vyberInvestAkce.xlsx) 37
Poznámka P itom je ale z ejmé, ºe nejvýnosn j²í akce je akce 1. Pom ry výnos / investice je 1.6, 1.57, 1.5, 1.33 M li bychom tedy sázet p edev²ím na akci 1. Kdyº zru²íme podmínku na binární veli iny, dostaneme jako e²ení x 1 = 2.8 a ostatní nula s kriteriem 22.4. e²ení pro x celo íselné (ale neomezené) je x 1 = 2, x 3 = 1, ostatní nula s kriteriem 22. Z uvedeného je patrné, ºe za e²ení IP není vhodné vzít zaokrouhlené e²ení LP. e²ení 2, 0, 0, 0 dá kriterium 16. Tento fakt, který je velmi významný, budeme demonstrovat na 2D p ípadu, který lze pozorovat gracky. Jak je to se zaokrouhlováním? Uvaºujme úlohu x 1 + 9x 2 max x 1 + 10x 2 30 3x 1 + 5x 2 25 38
kterou e²íme pro spojité x, zaokrouhlené x a celo íselné x. Výsledky jsou Spojité: x = [4, 2.6] s kriteriem 27.4 Zaokrouhlené: x = [4, 2] s kriteriem 22 Celo íselné: x = [0, 3] s kriteriem 27 Odtud je z ejmé, ºe IP e²ení je daleko blíºe LP e²ení neº zaokrouhlené. Situace je na obrázku kde plné áry jsou hranice omezení, árkované áry ukazují vrstevnice kriteria které nar stá sm rem nahoru. Programy: U0b_IP_zaokrouhleni.xlsx a IP_rounding.sce. Poznámka Krom uvedeného je moºno uvaºovat je²t dal²í podmínky: 1. Lze ud lat nejvý²e 2 investice xi 2 2. Jestliºe chceme realizovat akci 2, musíme rovn º realizovat akci 4 x 2 x 4 0 3. Jestliºe budeme realizovat akci 1, potom akci realizovat 3 nelze x 1 + x 3 1 Takovými omezeními se budeme zabývat dále. 39
6 Formulace úlohy celo íselného programování 6.1 Speciální typy omezení Pomocí celo íselných, zejména binárních, veli in je moºno modelovat daleko ²ir²í okruh omezení neº v klasickém LP. Omezení na výb r Pro binární x modelujeme: bude spln no alespo k, práv k, nejvý²e k xi k, xi = k, xi k kde x i = [1, 1,, 1] [x 1, x 2,, x n ]. Aktivace omezení Uvaºujme binární prom nnou y {0, 1} a podmínku a x b. Víme dále, ºe maximální hodnota levé strany a x této podmínky je B (pokud nevíme, zvolíme velké íslo, nap. 1000). Zkonstruujeme dal²í podmínku a x By b. Tato podmínka íká je-li y = 1, pak p vodní podmínka je vºdy spln na (deaktivace podmínky) je-li y = 0, pak p vodní podmínka z stává v platnosti (aktivace podmínky). Hodnota binární prom nné y tedy aktivuje nebo deaktivuje p vodní podmínku a x b. Výb r z mnoºiny omezení Uvaºujme dv podmínky a 1x b 1 a a 2x b 2 s maximálními hodnotami levých stran B 1 a B 2. Poºadujeme, aby alespo jedna podmínka byla vºdy aktivována. Modelujeme takto a 1x B 1 y 1 b 1 a 2x B 2 y 2 b 2 y 1 + y 2 1 Práv jedna: y 1 + y 2 = 1 a nejvý²e jedna: y 1 + y 2 1 Pokud chceme podmínku práv jedna podmínka je aktivní lze postupovat takto: y 1 = y y 2 = 1 y a a 1x B 1 y b 1 a 2x B 2 (1 y) b 2 Poznámky 40
1. Jednodu²e lze roz²í it na k podmínek. 2. V²imn me si, ºe takto lze modelovat logickou alternativu, která znamená bu jedna nebo druhá nebo ob - tedy alespo jedna, emuº odpovídá y 1 + y 2 1. Implikované omezení Máme dv omezení O 1 : A 1 x b 1 a O 2 : A 2 x b 2. Chceme aby platilo: kdyº je aktivováno první omezení, pak musí být aktivováno i druhé (kdyº se první nepoºaduje, tak nic). Jde o implikaci. Pro tu platí Odtud vidíme, ºe (O 1 O 2 ) je totéº jako odstavec. O 1 O 2 O 1 O 2 O 1 O 1 O 2 0 0 1 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 0 1 (O 1 O 2 ), p i emº alternativu umíme - viz p edchozí Pro omezení O 1 : A 1 x b 1 je O 1 : A 1 x > b 1. Tato omezení v aktiva ním tvaru jsou A 1 x + By 1 > b 1, A 2 x By 2 b 2, y 1, y 2 bin protoºe chceme-li deaktivovat podmínku A 1 x > b 1, musíme vlevo p idat velké íslo. Dále modelujeme alternativu t chto omezení. To podle p edchozího znamená nebo (n jaký kouzelnický e²ení) y 1 + y 2 1 Implikaci x 4 y 6 za podmínek 0 x 10 0 y 10 e²íme takto O 1 : x 4 + 6z O 2 : y 10 4 (1 z) z {0, 1} Je-li x 4 pak z první podmínky O 1 plyne, ºe z = 1 a tedy (1 z) = 0. Potom podmínka O 2 y 6 je aktivována. Pro x 4 m ºe být z 0 nebo 1 a tedy druhá podmínka m ºe a nemusí nastat. Pravidlo Implikaci O 1 O 2 modelujeme tak, ºe zadáme opa nou podmínku O 1 a do druhé podmínky zavedeme (1 z). Poznámka Místo 6 a -4 u prom nné z m ºeme zvolit libovolné (v absolutní hodnot ) v t²í ísla. Tato zvolená ísla jsou p esn na hranici tak, abychom dosáhli poºadovaného efektu. P íli² velká ísla se ale nedoporu ují, mohou zp sobit potíºe p i e²ení. 41
Omezení na oblasti Nech omezení tvo í k r zných oblastí (disjunktních nebo i p ekrývajících se). Jednotlivé oblasti jsou popsány pomocí lineárních omezení první oblast a 1x b 1, a 2x b 2, a 3x b 3 druhá oblast a 4x b 4, a 5x b 5 Chceme zaru it, ºe optimální bod e²ení bude leºet alespo v jedné z oblastí. Modelujeme takto první oblast a 1x B 1 y 1 b 1, a 2x B 2 y 1 b 2, a 3x B 3 y 1 b 3 druhá oblast a 4x B 4 y 2 b 4, a 5x B 5 y 2 b 5 atd., a k y j 1 j=1 kde napravo v poslední podmínce je po et oblastí z výroku aspo v jedné oblasti a y j {0, 1}. Kaºdá rovnice má svoje B i (maximální hodnota levé strany) ale spole nou veli inu y j, j = 1, 2,, k, kde k je celkový po et oblastí. 6.2 Aproximace kriteriální funkce Modelování skokové funkce V n kterých p ípadech pot ebujeme modelovat nelineární funkci (nap. skok v po átku). Nap íklad náklady na výrobu ur itého výrobku, pokud výrobu budeme realizovat, se sestává z po áte ní investice a dále z investice do kaºdého výrobku. Pokud se výroba nerealizuje, jsou v²echny náklady nula. Jde tedy o následující funkci { 0 pro x = 0 K + c x pro x 0. Modelujeme ji takto Ky + c x min 42
x By x 0 y {0, 1} Pro y = 0 dostáváme x = 0 a kriterium je také 0; pro y = 1 je x B a kriterium je K + c x. Tedy to, co jsme namodelovali je binárn lineární a kopíruje na²i formulaci úlohy (nelineární funkci náklad ). Modelování po ástech lineární funkce M jme po ástech lineární funkce - nap. tu, co je na obrázku f(x) 3 1 4 0 4 10 15 x První úse ka je na intervalu (0, 4) a má sklon 4, druhá na (4, 10) se sklonem 1 a t etí na (10, 15) se sklonem 3. Prom nnou x vyjád íme jako sou et t í len x = δ 1 + δ 2 + δ 3 tak, ºe platí 0 δ 1 4 délka prvního úseku Funkci f (x) vyjád íme takto 0 δ 2 6 délka druhého úseku 0 δ 3 5 délka t etího úseku f (x) = 4δ 1 + δ 2 + 3δ 3. Musíme ale zajistit, aby se δ i zapínala postupn a aby niº²í δ i drºely svou maximální hodnotu. Tedy, aby p i pr chodu hodnot x od 0 do 15 bylo δ 1 δ 2 δ 3 x 4 x 0 0 0 x (4, 10) 4 x 4 0 x 10 4 5 x 10 43
To zaru í následující podmínky s dv ma novými binárními prom nnými w 1 a w 2 Skute n, pro w 1 = w 2 = 0 dostaneme pro w 1 = 1 a w 2 = 0 je a nakonec pro w 1 = w 2 = 1 máme 4w 1 δ 1 4 6w 2 δ 2 6w 1 0 δ 3 5w 2 w 1, w 2 {0, 1} 0 δ 1 4, δ 2 = 0, δ 3 = 0 δ 1 = 4, 0 δ 2 6, δ 3 = 0 δ 1 = 4, δ 2 = 6, 0 δ 3 5. Poslední varianta w 1 = 0 a w 2 = 1 je nep ípustná a podmínka 6w 2 δ 2 6w 1 6 0 ji vylu uje. Stejnou konstrukci lze provést i pro více interval, pomocí podmínek kde L j je délka j-tého segmentu. L j w j δ j L j w j 1, Poznámka Aproximaci nelineární funkce lze provést jejím nahrazením po ástech lineární funkcí a postupovat podle p edchozího. Modelování sou inu v kriteriu 1. Binární veli iny Uvaºujeme kriterium, ve kterém se vyskytuje výraz x 1 x 2 x k se sou inem k binárních veli in. Linearizaci provedeme takto: Zavedeme binární veli inu w {0, 1} a omezení kw x i w x i (k 1) A skute n. Pro x 1 = 0, 1,, k 1 (kdy je alespo jeden len x i = 0) je w = 0 a pro xi = k je w = 1. To je p esn to, co ud lá sou in x 1 x 2 x k. Podrobná analýza pro dv veli iny je: Uvaºujme nejd íve jen dv binární veli iny x 1 a x 2 a kriterium J = x 1 x 2. Odpovídající podmínky pro w = x 1 x 2, w {0, 1} jsou P 1 : 2w x 1 + x 2 44
P 2 : w + 1 x 1 + x 2 Skute n : pro x 1 + x 2 = 0 je 2w 0 w 0 w + 1 0 w 1 a tedy w ( 1, 0) a pro w {0, 1} je w = 0. Pro x 1 + x 2 = 1 je 2w 1 w 0.5 w + 1 1 w 0 odkud w (0, 0.5) a tedy w = 0 Pro x 1 + x 2 = 2 je 2w 2 w 1 w + 1 2 w 1 a tedy w = 1. To p esn kopíruje sou in x 1 x 2. 2. Binární veli iny a jedna spojitá Máme x 1, x 3, x 3 - binární veli iny, y (0, u) spojitá nebo diskrétní veli ina. Kriterium: x 1 x 2 x 3 y. Zavedeme w = x 1 x 2 x 3 y, kde w je nyní spojitá veli ina a dále podmínky w ux j w 0 w y ( ) w u xi 3 + y Poznámka 1. Obecn m ºe být v sou inu k binárních prom nných. Potom poslední podmínka bude ( ) u xi k + y w 0 2. Pokud by n která binární prom nná byla umocn ná, lze mocninu vynechat, protoºe platí x k = x pro x {0, 1}. Analýza úlohy Dále budeme uvaºovat sou in binární veli iny x {0, 1} a reálné veli iny y (0, u). Kriterium bude J = xy. Op t zavedeme w = xy a podmínky w ux w 0 45
w y w u (x 1) + y Pro x = 0 bude w 0, w 0, w y, w u + y kde první dv podmínky denují w = 0 a druhé dv jsou automatiky spln ny. Pro x = 1 bude w u, w 0, w y, w y kde t etí a tvrtá podmínka dává w = 1 a první dv jsou spln ny. Nebo Pro y binární bude w 0, w x, w y, w x + y 1 po prozkoumání zjistíme, ºe skute n je w = xy. Modelování minimaxu v kriteriu Máme k pracovních tým pracujících na r zných úkolech. Chceme navrhnout podmínky práce tak, aby práce v²ech tým byla skon ena co nejd íve, p i emº kaºdý tým musí ukon it v²echny své úkoly. Hledáme tedy minimum pro nejdel²í dobu pln ní úkol - coº je úloha minimaxu. Modelujeme takto: p 1 (x), p 2 (x),, p k (x) jsou doby trvání práce jednotlivých tým (v závislosti na optimalizované veli in x). Denujeme novou prom nnou q (trvání nejdel²í práce) a zavedeme podmínky p 1 q p 2 q p k q a jako kriterium vezmeme q min 46
7 e²ení úlohy celo íselného programování 7.1 Metoda v tví a mezí Je to metoda pro e²ení celo íselného programování, zaloºená na opakovaném e²ení pomocí simplexové metody s postupným p idáváním omezení. Metoda konverguje v kone ném po tu krok. i kdyº doba konvergence m ºe být dlouhá. Metoda v tví a mezí (Branch and Bound - B&B) postupuje takto: 1. Vezme optimální LP e²ení - nap. [12.5, 7.5] a tento bod vyjme z p ípustné oblasti bu na ose x nebo y (p jdeme p es x). Tj. p idá dv nová omezení x 12 a x 13. Tím vzniknou dv nové p ípustné oblasti - podoblasti p vodní, kde jiº optimální bod LP neleºí, ale ºádné celo íselné e²ení není vyjmuto. 2. Znovu e²íme LP úlohu (simplex) pro p vodní úlohu + dv nová omezení. 3. Dostaneme optimální e²ení. Pokud je celo íselné, je konec. Pokud není, pokra ujeme stejn jako p ed tím (s necelo íselnou sloºkou optimálního e²ení). 4. Takhle stále p idáváme nová omezení, dokud nedostaneme celo íselné e²ení. e²ení budeme demonstrovat na dvou následujících p íkladech. 47
P íklad 1 x 1 + 10x 2 max 2x 1 + x 2 0 5x 1 + x 2 11 Lp e²ení dá [1.57, 3.14], J = 33 V tvíme nejd íve podle podle x 1, potom podle x 2 x 1 1 [1, 2] J = 21 x 1 2 [2, 1] J = 12 48
P íklad 2 x 1 + 10x 2 max 4x 1 + x 2 0.5 3x 1 + x 2 10 LP e²ení [1.36, 5.93] J = 60.64 x 2 4 [1, 4] J = 41 x 1 1 [1, 4.5] x 2 5 XXX x 1 2 [2, 4] J = 42 7.2 Metoda se ných nadrovin Tato metoda vychází z optimální simplexové tabulky pro LP. Tuto tabulku p epí²eme do rovnic. V nich eliminujeme zlomkové koecienty na pravou stranu a vzniklé rovnice se zlomkovými koecienty znovu e²íme simplexovou tabulkou. Kon íme, kdyº jako výsledek obdrºíme celá ísla. Poznámka (geometrická interpretace) K soustav omezení p idáváme dal²í lineární omezení, která vylou í optimální (zlomkové) LP e²ení ale zachovají v²echna p ípustná celo íselná e²ení. 49
Postup budeme ilustrovat na p íklad. J = 5x + 8y max x + y + s 1 = 6 5x + 9y + s 2 =45 x, y, s 1, s 2 0 LP e²ení tohoto problému dá simplexovou tabulku Tu p epí²eme následujícím zp sobem ( z) 5 4 s 1 3 4 s 2 = 41 1 4 x + 9 4 s 1 1 4 s 9 2 = 4 y 5 4 s 1 + 1 4 s 15 2 = 4 ( z) 2s 1 s 2 +42 = 3 4 3 4 s 1 1 4 s 2 x +2s 1 s 2 2 = 1 4 1 4 s 1 3 4 s 2 y 2s 1 3 = 3 4 3 4 s 1 1 4 s 2 a to tak, ºe Platí: vlevo jsou jen celo íselné koecienty, vpravo jdou zlomky, a to tak, ºe absolutní hodnoty jsou kladné, koecienty u prom nných jsou záporné. 1. Pro celo íselné e²ení je jsou levé strany celá ísla. 2. Pro s 1, s 2 0 jsou pravé strany men²í nebo rovny konstantám. 3. Protoºe konstanty jsou kladné zlomky, musí platit ºe pravé strany jsou 0 (a tedy i levé). M ºeme proto psát 3 4 3 4 s 1 1 4 s 2 0 3 4 3 4 s 1 1 4 s 2 + s 3 = 0 1 4 1 4 s 1 3 4 s 2 0 1 4 1 4 s 1 3 4 s 2 + s 4 = 0 poslední je stejná jako první 50
To jsou podmínky, které p idáme k p vodní úloze a op t e²íme pomocí simplexové tabulky. Celo íselné e²ení kon í výpo et, pro necelo íselné vyjdeme z nové simplexové tabulky a pokra- ujeme stejn. Program: cuts.lpx První e²ení z tabulky sestavíme nová omezení pro s 1 a s 2 a p epo ítáme na xa y. Ta jsou 2x + 3y 15 4x + 7y 35. První omezení dá rovnou výsledek [0, 5] 51
Kdyº zkusíme druhé omezení, dostaneme [ 7 3, ] 11 3 a museli bychom v hledání dál pokra ovat. 52
8 Úlohy III. 8.1 Úloha o batohu Jedná se o jednu ze základních úloh z t ídy investi ního rozhodování, viz úvod do IP. Formulace základní úlohy o batohu je následující: Jedeme na výlet stopem a balíme si s sebou v ci do batohu. Objem (nosnost) batohu je omezený hodnotou M. Jednotlivé v ci mají sv j objem (váhu) m i a d leºitost d i a celkem jich je n, tedy i = 1, 2,, n. Chceme s sebou vzít co nejvíce d leºitých v cí tak, aby nebyla p ekro ena kapacita batohu. Matematická formulace je následující: Program Excel: U3a_batoh_IP.xlsx n d i x i max i=1 n m i x i M i=1 x i {0, 1}, i nebo v LiPS: Kapsack0.lpx 53
Více v cí najednou: Kapsack1.lpx 8.2 Výb r z mnoºiny investic Máme moºnost investovat do n kolika z ²esti akcí. Kaºdá akce má n jaké nan ní nároky (investice) a p inese ur itý zisk. Máme omezené nan ní moºnosti. Specikace je dána v tabulce. 54
akce 1 2 3 4 5 6 nance k dispozici nároky 6 9 8 4 9 5 30 výnosy 15 24 25 10 25 20 X Jak akce vybrat, aby celkový zisk byl maximální a abychom nep ekro ili nance, které máme k dispozici. e²ení Ze zadání máme c = [15, 24, 25, 10, 25, 20] A = [6, 9, 8, 4, 9, 5] Zavedeme binární vektor x - x i {0, 1} p i emº 0 znamená i-tou akci nerealizujeme, 1 znamená realizujeme. Úloha potom je c x max Ax 30 x {0, 1} Excel: U3b_vyberAkci.xlsx, U3c_investicniRozhodnuti.xlsx 55
56
9 Úlohy IV. 9.1 Problém obchodního cestujícího (travelling salesman problem TSP) Asymetrický TSP Uvaºujeme n m st spojených navzájem cestami. Kaºdou cestu uvaºujeme jako jednosm rnou, obousm rné jsou dv jednosm rky tam a zp t. Kaºdá z jednosm rek má svou délku (obecn se délka cesty tam nerovná délce zp t). Cílem je najít cestu, kterou má projít obchodní cestující tak, aby kaºdé m sto nav²tívil práv jednou a vrátil se do stejného m sta, ze kterého vy²el. Celá cesta má být nejkrat²í moºná. Úlohu budeme demonstrovat pro 5 m st. 2 d 12 d 21 4 1 x 13 x 31 5 3 d ij 0 zna í délky cest, x ij {0, 1} znamená x ij = 1 cestující p jde z m sta i do m sta j ; x ij = 0 nep jde. Kriterium: Pro nejkrat²í cestu musí platit J = ij d ij x ij min Omezení 1: m sta se nesmí opakovat kaºdé m sto má jen jednu vstupní cestu a jednu výstupní, tj. x ij = 1, j výstupní i x ij = 1, i j vstupní Omezení 2: cesta se nesmí skládat z odd lených cykl. Taková cesta rovn º spl uje zmín né dv podmínky, ale není cestou, která souvisle prochází v²emi uzly. Pro detekci niº²ích cykl budeme postupovat následovn : 57
Sestavíme v²echny k-krokové cykly, k = 2, 3, 4,, n 2 1 a sou et x ij v nich musí být k 1, tedy dal²í podmínka pro k-krokové cykly je x ij k 1, N N k x ij C N k kde Ck N je N-tá mnoºina hran, které tvo í k-krokový cyklus, N k je po et v²ech moºných cykl v grafu. Cykly lze generovat podle algoritmu, uvedeného v P íloze 17.3 Program: U4b_tsp_nesymetric.xlsx Obchodní cestující - 5 měst podmínka na "každé město jednou" kritérium x 1 2 3 4 5 J = 12 1 0 0 1 0 0 1 2 1 0 0 0 0 1 3 0 0 0 1 0 1 4 0 0 0 0 1 1 5 0 1 0 0 0 1 pro sestavení kritéria 1 1 1 1 1 tady je možno zadat apriorní hodnoty x (i když to prakticky nemá význam) 12 13 14 15 21 23 24 25 31 32 34 35 41 42 43 45 51 52 53 54 x 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 d 5 1 8 4 2 9 1 1 1 8 7 6 4 9 6 1 3 1 6 5 Tady se zadávají podmínka na cykly délky cest 2 II III nemusí se hlídat vůbec 2 1 9 1 protože mohou být jen v kombinacích 9 1 4 4 1 s dvoukrokovými - a ty už se hlídají 5 8 6 1 0 1 0 1 4 1 5 0 8 7 3 5 0 1 6 6 1 3 1 0 1 dvou-krokové Hlídáme 2 a 3-krokové cykly. 2-krokové jsou OK ihned. 3-krokové bychom museli hlídat tam i zpět, ale v kombinaci s 3-krokovým by musel být 2-krokový a ty se hlídají. Takže zpět nemusíme! Dokonce 3-krokové nemusíme vůbec!!! Poznámka V podmínkách na cykly musíme hlídat, aby nenastala situace, ºe se v grafu utvo í dva (nebo více) odd lené cykly. 1-krokové cykly nemohou nastat nikdy, protoºe smy ky v grafu jsou vylou eny (prvky na diagonále inciden ní matice se neuvaºují). 2-krokové cykly jsou tam a zp t - obsahují tedy sou asn oba cykly (po sm ru i proti sm ru). 3-krokové cykly bychom museli hlídat v [ 1 Ve skute nosti sta í kontrolovat cykly od 2 do n ] 2, kde [ ] zna í celou ást ísla. Je to proto, ºe kdyº se v grafu vytvo í cyklus, musí být zbylé uzly také v cyklu - pro kaºdý uzel poºadujeme jednu vstupní a jednu výstupní hranu. Pro cyklus s k kroky, kde k > [ ] [ n 2 tedy bude v grafu je²t jeden cyklus s délkou l n ] 2, které jsme jiº kontrolovali mezi cykly 2,3, [ ] [ n 2. Vedle cyklu s délkou v t²í neº n ] 2 m ºe být také více dal²ích cykl, ty ale budou také pat it mezi jiº kontrolované. 58
obou sm rech - tedy po sm ru i proti sm ru - tj. to, co jsme vý²e uvedli nap. 1231 a je²t zp t 1321. Protoºe ale 3-krokový cyklus muºe být v kombinaci jedin s 2-krokovým (a ty jsou jiº hlídány) nemusíme je jiº v na²em p ípad (5 m st) v bec hlídat! Obecn : sta í kontrolovat cykly od 2 do [ ] n 2, kde [ ] zna í celou ást ísla. Je to proto, ºe kdyº se v grafu vytvo í cyklus, musí být zbylé uzly také v cyklu - pro kaºdý uzel poºadujeme jednu vstupní a jednu výstupní hranu. Pro cyklus s k kroky, kde k > [ ] n 2 tedy bude v grafu je²t jeden cyklus s délkou l [ ] [ n 2, který jsme jiº kontrolovali mezi cykly 2,3, n ] 2. Vedle cyklu s délkou v t²í neº [ ] n 2 m ºe být také více dal²ích cykl, ty ale budou také pat it mezi jiº kontrolované. Symetrický TSP Na rozdíl od p edchozího jsou v²echny cesty obousm rné. Inciden ní matice je horní trojúhelník. Kontrola na kaºdé m sto jednou se provádí takto: Pro kaºdý prvek inciden ní matice na diagonále (to je to m sto) se se tou prvky nad ním a vpravo od n ho. Tento sou et (po et cest ve trase, které jím prochází) musí být = 2. Kontrola cykl : 2-krokové cykly se nemusí kontrolovat v bec, protoºe x je zadáno jako binární (cyklus by vyºadoval dvojku 2, protoºe jdeme tam a zp t po stejné cest ), k-krokové cykly sta í kontrolovat jen v jednom sm ru - viz p íloha. Program: U4a_tsp_symetric.xlsx 2 Nap. cyklus 1-2-1 by dal matici x (po prvním kroku 1-2) 1 aby sou ty nad a vpravo vy²ly 2, musela by se je²t jednou zapsat vlastn tatẠhrana 2-1. To by pak dalo na pozici 1,1 dvojku. 59
x 1 2 3 4 5 J 1 0 0 1 0 1 25 2 0 0 0 1 1 3 0 0 0 1 0 4 0 0 0 0 0 5 0 0 0 0 0 na diag. a pod nejsou přípustné stavy (hrany nejsou orientované - trojúhelníky) c 1 2 3 4 5 1 5 6 8 3 2 9 8 5 3 3 7 4 6 5 Podmínka 1: každý uzel 2 hrany 2 2 2 2 2 každý uzel má právě dvě hrany (vezmu pole (i,i) a sčítám nad ním a vpravo od něj) Podmínka 2: cykly - je dána tím, že x je binární Tady se zadávají délky cest 2 8 5 5 4 8 1 9 6 3 6 3 5 7 3 Poznámky 1. Dal²í programy jsou U4a_tsp_nes_penal.xlsx a U4b_tsp_sym_penal.xlsx, kde se smy ky vylu ují velkou penalizací na diagonále penaliza ní matice. 2. Dále je program U4a_tsp_nes_nelin.xlsx, kde se cykly kontrolují pomocí mocnin inciden ní matice (v²echny diagonály musí být nulové). Tento postup je ale nelineární, a proto m ºe slouºit jen k manuálnímu lad ní úlohy. Následují zobecn ní TSP. 60
10 Úlohy V. Následující p íklady pat í do skupiny úloh o mnoºinách: Set covering, Set partitioning a Set packing. Jejich obecné formulace jsou následující: Set covering c x min Ax 1 x (0, 1) Set partitioning c x min Ax = 1 x (0, 1) Set packing c x max Ax 1 x (0, 1) Dále uvedeme p íklady na jednotlivé typy úloh. V nich obecn platí: 1. To, co optimalizujeme (vybíráme), je v matici A vodorovn. 2. To, co je omezeno, je svisle. 10.1 Problém pokrytí oblastí (Set covering) Uvaºujme m sto, které se skládá z n kolika oblastí. Ty jsou zachyceny na obrázku 2 7 1 4 6 3 5 61
Kaºdé oblasti je p i azeno íslo. Ve m st chceme vybudovat poºární stanice. Jedna stanice je schopna pokrýt oblast, ve které je postavena a v²echny sousední oblasti (tj. takové, co sousedí hranou). Jak postavit stanice, aby jich bylo co nejmén? e²ení Oblastem p i adíme binární prom nné x 1, x 2,, x 7. Tyto prom nné budou mít hodnotu 1, kdyº stanice bude, jinak 0. Kriterium: minimální sou et x Podmínky: oblast 1 a její sousedi musí mít alespo jednu stanici; a dále pro 2,, 7. Sousední oblasti jsou 1,2,3 2,1,3,4,6,7 3,1,2,4 4,2,3,5 5,4,6 6,2,5,7 7,2,6 Úloha tedy bude x i min i x 1 + x 2 + x 3 1 x 1 + x 2 + x 3 + x 4 + x 6 + x 7 1 x 1 + x 2 + x 3 + x 4 1 x 2 + x 3 + x 4 + x 5 1 x 4 + x 5 + x 6 1 x 2 + x 5 + x 6 + x 7 1 x 2 + x 6 + x 7 1 x 1 x 7 {0, 1} Matice A má v ádcích i sloupcích oblasti, jedni ky vyzna ují dvojice, které jsou sousední. Protoºe sousedství je vzájemné, je matice symetrická. Vid t ji m ºeme v programu. Program: U5a_pozarniStanice.xlsx 62
10.2 Kucha ka a recepty (Set packing) ƒekáme neohlá²enou náv²t vu a chceme ji pohostit. Ve spíºi máme 7 ingrediencí do jídla a dal²í uº nesta íme po ídit. Nevíme ale, jaké chut náv²t va má, a proto chceme p ipravit co nejv t²í po et jídel. Máme kucha ku a z ní jsme vybrali jídla, která obsahují ty ingredience, které máme k dispozici. Ingredience ale nelze d lit; kaºdou lze pouºít jen jednou. O íslujeme-li ingredience 1,2,,7, pak vybraná jídla podle kucha ky pot ebují jídlo ingredience A 1,2 B 1 C 2,5,6 D 3,7 E 2,7 F 3,5 G 4,5,6 Která z jídel m ºeme p ipravit, aby jich bylo co nejvíce? 63
Matice A bude ingredience jídla a konkrétn v následujícím programu. Program: U5b_recepty.xlsx e²ení: A, C, D. 10.3 Výb r leteckých tras (Set partitioning) Letecká doprava zaji² uje spojení mezi vybranými m sty. Tyto spoje nazveme etapy letu. Jeden let (s jednou posádkou letadla) letí po ur itá trase a na ní m ºe realizovat jednu nebo n kolik etap (pokud se mezi n vejde povinný odpo inek posádky a údrºba letadla). Tak nap íklad let 10.00 z New Yorku do Chicaga a let 18.00 z Chicaga do Los Angeles je p íkladem takových etap, které mohou tvo it jednu trasu s jednou posádkou. Kaºdá trasa má ur itou cenu (podle délky, obtíºnosti, p ípadn prostoj ). Cílem je ze v²ech moºných (p edem sestavených) tras vybrat ty, které budeme realizovat, (tj. obsadíme je posádkou) tak, aby 64
1. ºádná etapa nez stala neobsazena, 2. náklady na realizaci vybraných tras byly minimální. Nejd íve sestavíme matici a, která bude svými sloupci odpovídat jednotlivým trasám. V ádcích budou v²echny etapy. Sloupce matice a budou mít jedni ky v ádcích t ch etap, které budou trasou realizovány. Ozna íme x j {0, 1} indikuje, zda trasa j bude realizována (tj. obsazena posádkou), c j je cena za pronajatí posádky na trase j (realizaci trasy j), a i,j {0, 1} ozna uje (jedni kou), ºe etapa i je za azena do trasy j Úloha je formulována takto n c j x j min j=1 n a i,j x j = 1, i = 1, 2,, m j=1 x j {0, 1}, j = 1, 2,, n kde kriterium vyjad uje minimalizaci náklad, a první podmínka vyjad uje skute nost, ºe kaºdá etapa má práv jednu posádku. Poznámka Jestliºe p ipustíme, ºe lenové n které posádky mohou ur itou trasu let t jako pasaºé i (p eváºí se na místo svého letu na dal²í etap ), bude mít tato podmínka tvar n a i,j x j 1, i j=1 P íklad 1 Uvaºujeme 4 m sta: A, B, C, D a lety mezi t mito m sty podle následujícího obrázku 65
B 1 4 6 A 3 2 5 7 D C Jednotlivé ²ipky na obrázku zna í etapy. Jde o to, jak z nich sestavit trasy (obsazené posádkou) tak, aby pronájem posádek by minimální a v²echny etapy byly obslouºeny. Trasy jsou p edem denovány bu jako samostatné lety nebo jsou sestaveny z navazujících etap a jsou denovány maticí a. Zde vezmeme trasy podle grafu a zapí²eme je do sloupc matice a a = kde ádky a sloupce jsou takto 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 etapy trasy Nejd íve uvaºujeme v²echny etapy jako samostatné lety, potom n které trasy sestavené z vhodných etap. Ceny posádek vezmeme p ibliºn rovny po tu etap v p íslu²né trase a trochu p ihodíme na samostatné lety, protoºe tam musí posádka dojet z domova. Ceny tedy budou c = [15, 12, 16, 14, 18, 12, 16, 22, 25, 24, 27, 26] Stavový vektor bude mít 12 prvk (jako je tras), které budou bu 0 nebo 1 - trasu nerealizujeme nebo ano. Úloha má tvar n c j x j min j=1 n a j x j = 1 j=1 66
x j {0, 1} e²ení úlohy je x = [0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0] tedy budou realizovány lety (podle matice a) trasa 1 etapa 2 trasa 2 etapa 1, etapa 4, etapa 7 trasa 3 etapa 3, etapa 5, etapa 6 Tedy, v²echny etapy jsou obsazeny, poletí 3 posádky a doufejme, ºe cena za posádky je minimální. P íklad 2 Jiný p íklad je realizován v programu: U5c_planovaniLetu.xlsx 67
68
11 Úlohy VI. 11.1 Problém rozmíst ní sklad V n kterých úlohách se m ºe vyskytovat více optimalizovaných vektor. V následující úloze se pouºije kombinace spojité optimalizace s výb rem. Máme m sklad a n zákazník. Máme obstarat a dovézt zboºí, které poºadují zákazníci. Jde o to, rozhodnout, ze kterého skladu a kolik daného zboºí nakoupit a p evézt jednotlivým zákazník m tak, aby cena za nákup a p evoz byla minimální. Ty sklady, pro které se rozhodneme, musíme pronajmout, a to n co stojí. y i ozna uje, zda sklad i je pronajatý (y i = 1) nebo není (y i = 0). f i je cena pronájmu i-tého skladu. x i,j je mnoºství zboºí, zakoupeného ve skladu i a p evezeného zákazníkovi j. c i,j je cena za nákup jednotky zboºí x i,j. d j poºadavek j-tého zákazníka. Úlohu formulujeme takto m n m c i,j x i,j + f i y i min i=1 j=1 i=1 m x i,j = d j, j = 1 n i=1 n n x i,j y i j=1 j=1 d j 0, i = 1 m x i,j 0, i, j y i {0, 1}, i Vysv tlení: kriterium: celková cena za zboºí a dovoz + poplatky za pronájem sklad ; spln ní poºadavk zákazník ; odb r jen z pronajatých sklad - podmínka je n n x i,j y i d j, i j=1 j=1 tedy, pro i takové, ºe y i = 0 dostaneme n x i,j 0 j=1 69
a protoºe x i,j jsou nezáporné, znamená to, ºe k ºádnému odb ru z t chto sklad nedo²lo, pro y i = 1 máme n x i,j j=1 tedy celkové mnoºství zboºí, odebrané ze skladu i je men²í nebo rovno celkovému poºadavku v²ech zákazník (rovno, kdyby se bralo v²echno z jednoho skladu). 3 Programy v Excelu jsou U6a_SkladyAZakaznici.xlsx a U6b_SkladyAZakACesty.xlsx n j=1 d j 11.2 Problém po²tovních box V této úloze budou gurovat dva binární optimalizované vektory. Firma dostává platby od zákazník. Tyto platby jdou ze 4 míst: západu - 70tis., st edozápadu - 50tis., východu - 60tis. a jihu - 40tis. v pr m ru za den. Pro výb r t chto plateb chce otev ít pobo ky (po²tovní boxy). Pro tyto boxy p ichází v úvahu následující místa: Los Angeles, Chicago, New York a Atlanta. Za otev ení boxu v kaºdém z t chto míst zaplatí stejnou ástku 50tis. Po et dní, ve kterých budou platby realizovány, je dán v tabulce z / do L.A. Chicago New York Atlanta západ 2 6 8 8 st edo západ 6 2 5 5 východ 8 5 2 5 jih 8 5 5 2 3 d j je z ejm to nejmen²í velké íslo, aby se podmínka vºdy splnila. 70
Po dobu, kdy je platba uskute n na ale není proplacena jsou peníze pro rmu nedostupné a rma ztrácí úrok 20% z jejich p ípadné investice. Které z pobo ek má rma otev ít, aby co nejvíce u²et ila? e²ení Ztráty z nerealizovaných investic jsou dány v tabulce (v tis.) z / do L.A. Chicago New York Atlanta západ 28 84 112 112 st edo západ 60 20 50 50 východ 96 60 24 60 jih 64 40 40 16 kde nap. západ New York je 8 70 0.2 = 112 (dny, platba, procenta). Zavedeme binární veli iny y j 1-pobo ka j bude otev ena, a x ij 1-oblast i posílá platby na pobo ku j. Kriterium 28x 11 + 84x 12 + 112x 13 + 112x 14 + 60x 21 + + 16x 44 + +50y 1 + 50y 2 + 50y 3 + 50y 4 min Omezení x ij = 1 i j kaºdá oblast musí být p i azena jedné pobo ce. x ij 4y j i j neotev ené pobo ce se nesmí nic posílat (4 je tam proto, aby pro y = 1 podmínka vypadla - velké íslo) Program: U6a_postovniBoxy.xlsx x ij, y j {0, 1} i, j 71
72
12 Propuknutí infek ního onemocn ní V n místech se vyskytlo infek ní onemocn ní. K dispozici je m léka ských tým, které mohou onemocn ní pro²et it. Tým i {1, 2,, m} bude místo j {1, 2,, n} vy²et ovat t ij hodin. Kaºdý tým m ºe obslouºit 0, 1 nebo 2 místa. Jestliºe má tým obslouºit je²t druhé místo (z místa k do místa l), musí se po ítat s dobou p ejezdu d kl. Jakmile jsou v²echna místa pro²et ena, m ºe se s infekcí za ít bojovat. Cílem je navrhnout plán vy²et ování tak, aby cela akce byla co nejkrat²í. e²ení Denujeme veli inu x ij {0, 1} s hodnotou 1 jestliºe tým i bude vy²et ovat místo j a 0, kdyº nebude. Omezení - kaºdé místo bude nav²tíveno práv jednou x ij = 1, j - ºádný tým nenav²tíví více neº dv místa x ij 2, i i j - x je binární x ij {0, 1}, i, j Kriterium - vy²et ení v²ech míst t ij x ij, i - cestování d kl x ik x il, i j k,l; k l { Optimalizace: min max i j t ijx ij + } k,l; k l d klx ik x il Pro kaºdou konstelaci je jeden tým nejdel²í a tohle maximum chceme minimalizovat. Tohle ale neumíme (i) nelinearita v sou inu, (ii) minimax. (i) nelinearita Zavedeme novou prom nnou w ikl = x ik x il s podmínkami w ikl x ik, w ikl 0, w ikl x il, w ikl x ik + x il 1. 73
P íklad 2 týmy (i=1,2), 3 místa (j=1,2,3) stav [ ] x11 x x = 12 x 13 x 21 x 22 x 23 asy t = [ ] t11 t 12 t 13 t 21 t 22 t 23 binární veli ina w (cesta tam a zp t je stejn dlouhá) [ ] w1;12 w w = 1;13 w 1;23 w 2;12 w 2;13 w 2;23 délky p ejezdu d = [ 8, 12, 14 ] Podmínky 1. w i;kl 0, i, k, l 2. w i;kl x ik 0, w i;kl x il 0, i, k, l 3. w i;kl x ik x il + 1 0 4. j t ijx ij + kl; k l d klw i;kl q 0, i kde poslední podmínka denuje veli inu q jako novou veli inu s významem doba trvání nejdel²í akce. Kriterium Poznámka Realizace podmínky 2. q min w i;kl x ik w 1;12 x 11 w 1;13 x 11 w 1;23 x 12 w 2;12 x 21 w 2;13 x 21 w 2;23 x 22 w i;kl x il w 1;12 x 12 w 1;13 x 13 w 1;23 x 13 w 2;12 x 22 w 2;13 x 23 w 2;23 x 23 Program: U7a_infekce_male.xlsx, U7b_infekce_vetsi.xlsx 74
75
13 Zobecn ní úlohy TSP 13.1 Nejkrat²í cesta grafem V bec nejkrat²í cesta v²emi uzly bez ohledu na to, kde za íná a kde kon í. e²ení Vezmeme graf a p idáme jeden uzel. Z n j vedeme cesty tam a zp t do v²ech uzl grafu s nulovou délkou. Na tento roz²í ený graf aplikujeme TSP a to, co vznikne v p vodním grafu je nejkrat²í cesta. puvodni graf 0 0 0 0 novy uzel Program: U8a_TSP_asymHam.xlsx 76
13.2 Nejkrat²í cesta z daného uzlu Po áte ní uzel cesty je dán. Hledáme nejkrat²í cestu z tohoto uzlu. 77
e²ení Vezmeme po áte ní uzel, a hranám, které do n j vedou dáme nulová ohodnocení. Na tento upravený graf aplikujeme TSP. pocatecni uzel 0 0 0 0 0 carkovane hrany jsou pridany Program: U8b_TSP_asymHam.xlsx 78
13.3 Nejkrat²í cesta s více náv²t vami m st Úloha je dána jako asymetrický TSP, ale p ipou²tíme více náv²t v jednotlivých m st. e²ení Místo matice vzdáleností jednotlivých dvojic uzl (ohodnoceni hran grafu) zadáme matici nejkrat²ích vzdáleností mezi jednotlivými dvojicemi uzl. M ºe být: bu je vzdálenost spojovací hrany nejmen²í, pak ji necháme. Nebo existuje krat²í cesta, pak ji p epí²eme. Nebo hrana neexistuje, pak ji p idáme s ohodnocením nejkrat²í vzdálenosti mezi t mito uzly. Poznámka Matice nejkrat²ích vzdáleností se velice jednodu²e spo te pomocí operace minimální s ítání matic. Tato operace funguje podobn jako sou in matic, ale místo násobení prvk a s ítání se provádí sou et prvk a vezme se minimum, tedy (A B) i,j = min {a i,k + b k,j } k Pro výpo et nejkrat²ích vzdáleností napí²eme matici ohodnocení grafu D, kde na diagonále jsou nuly a mimodiagonální prvky ozna ují orientovanou vzdálenost mezi uzly. Kde hrana nevede, dáme velké íslo. A provedeme D 2 = D D D 3 = D D 2 D n 1 = D D n 2 kde D 2 spo te v²echny nejkrat²í dvou-krokové cesty, D 3 t í-krokové atd. aº n 1-krokové, kde n je po et uzl (m st). Protoºe nejdel²í cesta grafem má n 1 hran, obsahuje matice D n 1 nejkrat²í cesty mezi jednotlivými uzly grafu. 79
Na upravenou matici (nyní minimálních vzdáleností mezi uzly grafu) aplikujeme TSP. Dostaneme navazující dvojice uzl, které v p vodním grafu vyzna íme. Kaºdou hranu ale musíme prozkoumat. Pokud je délka hrany minimální délkou, pak ji na cest ponecháme. Pokud není minimální, musíme hledat, po kterých hranách minimální cesta mezi aktuální dvojicí bod vede a místo aktuální hrany vyzna íme tuto minimální cestu. Tím se m ºe stát, ºe n kterým uzlem projdeme vícekrát, ale m ºeme dostat krat²í cestu neº kdyº trváme na podmínce jediného pr chodu kaºdým m stem. Program: U8c_TSP_asymVice.xlsx (veliké - podívat se v Excelu) 13.4 Nejkrat²í cesta klastry uzl Uvaºujeme graf jehoº vrcholy jsou pokryty k klastry tak, ºe klastry jsou disjunktní a ºádný vrchol není nepokryt. Uzly jsou spojeny orientovanými hranami s ohodnocením, reprezentujícím délku hrany. Úkol je projít v²emi uzly tak, ºe po vstupu do uzlu se musí projít v²emi uzly tohoto grafu a cesta je nejkrat²í moºná. e²ení Vyjdeme z existujícího grafu a hranám uvnit klastru p idáme velké ohodnoceni M. Dále aplikujeme TSP. Program: U8d_TSP_asymKlast.xlsx 80
81
14 azení 14.1 Obecná formulace Základní pojmy jsou úkol a pozice. Tedy máme n úkol, které lze zpracovat jen postupn (nikoli paraleln ). Zpracování i-tého úkolu trvá dobu p i a má ur eno, kdy má být úkol dokon en d i. Jak máme zpracování úkol uspo ádat, aby sou et zpoºd ní p i dokon ení jednotlivých úkol (tardiness) t i byl minimální. Úloha tedy zní Zadáno p = [p 1, p 2,, p n ] d = [d 1, d 2,, d n ] minimalizujte celkové zpoºd ní kde t i je denována jako rozdíl n J = t i min i=1 t i = (skute né dokon ení ukolu i ) (poºadované dokon ení úkolu i ), Poznámka t i ozna uje pouze zpoºd ní (je to nezáporná veli ina). Pro p edstih je nula. 14.2 Formulace s denicí p edcházení Denujeme binární veli inu y, tak, ºe y ij = 1 znamená, ºe úkol i p edchází (je t sn t sn p ed) úkol j. Poznámka Z matice y sta í brát jen horní trojúhelník (bez diagonály), tedy y ij pro i < j, protoºe platí y ji = 1 y ij. Zavedeme veli inu s i - za átek zpracování úkolu i a dále e i = s i + p i, coº je skute ný as dokon ení i-tého úkolu. Formulace úlohy je následující: Kriterium Omezení 1 J = n t i min i=1 e i d i t i, i (úkoly) denuje zpoºd ní t i. Konec zpracování úkolu i, a tedy jeho odevzdání, je e i. Ten se p edpokládá v t²í, neº poºadovaná doba odevzdání d i. Rozdíl e i d i je tedy kladný a p edstavuje zpoºd ní p i odevzdání úkolu i. Ten je shora omezen veli inou zpoºd ní t i. Protoºe se ale sou et v²ech 82
t i minimalizuje, bude z ejm e i = d i + t i, tedy dokon ení úkolu je poºadované dokon ení + zpoºd ní. Omezení 2,3 uspo ádávají úkoly podle veli iny y ij. Podle hodnoty y ij platí práv jedno z omezení e i s j + M y ji {}}{ (1 y ij ), i < j e j s i + My ij, i < j První z omezení íká: pro y ij = 1 je úkol i je za azen p ed úkol j, a tedy konec úkolu i tj. e i bude men²í neº za átek úkolu j tj. s j. Protoºe y ij = 1 bude y ji = 0 a omezení bude mít tvar s i + p i s j. V p ípad, ºe i následuje j, bude y ij = 0. Omezení 2 je pak vy azeno (platí vºdy, díky velkému íslu M, které bude na pravé stran ). Obdobn je to i s omezením 3. Ob uvedená omezení lze ov²em spojit v jediné (v druhém zam níme i a j) a vyjád íme ho ve tvaru pro pot ebném implementaci (vpravo je jen konstanta) e j s i My ij 0, i, j, i j. Poznámka Matici y se vyplatí denovat jako plnou. Diagonála se sice nevyuºije, ale nad diagonálou jsou optimalizované prvky y ij, i < j a pod diagonálu se (ru n ) zadají dopl ky y ji = 1 y ij, i < j. Spodní trojúhelník se vyuºije p i zápisu podmínky 2, 3. e²ení v programu EXCEL je velmi dobré. Realizace podmínky 1 je jasná. Komplikovaná by se mohla zdát podmínka 2,3 (lépe spojená v jednu). Tu lze ale realizovat pomocí funkce transpose() nebo esky transpozice() takto =TRANSPOSE(e)-s-1000*y kde e a s jsou zavedené ádkové vektory, 1000 je velké íslo M a y je celá matice y ij, s nulami na diagonále 1 y ij pod diagonálou. Zadáme tak, ºe vytvo íme blok o velikosti matice y, zadáme = a uvedený vzorec (prom nné kopírujeme my²í) a nakonec dáme Ctrl Shift Enter. Program je U9a_schedulingDJ.xlsx 83
14.3 Formulace s denicí pozice Denujeme binární veli inu x tak, ºe x ij = 1 jestliºe úkol i je na pozici j. Veli ina zpoºd ní t i je denována stejn - zpoºd ní p i odevzdání úkolu i, tedy doba od poºadovaného termínu odevzdání do skute ného odevzdání. Kriterium J = n t i max i=1 Omezení 1 a 2 n x ij = 1, i=1 n x ij = 1, j=1 tj. na kaºdé pozici musí být práv jeden úkol. pozice j úkoly i 84
Omezení 3 n n p i (x i1 + x i2 + + x ij ) d i x ij t j, }{{} i=1 =0 nebo 1 i=1 pozice j Sledujeme pozici j a její zpoºd ní t j. První suma detekuje úlohy, které jsou na p edcházejících pozicích (v etn j), tj. x i1 + x i2 + + x ij a jejich trvání p i - tedy tato suma p edstavuje dobu, za kterou budou vykonány úlohy na pozicích 1, 2, j. Druhá suma vybírá práv tu úlohu i, který má být na pozici j, a tedy v sou inu s d i dává dobu, ve které m la být úloha i ukon ena. Rozdíl mezi první a druhou sumou je tedy zpoºd ní t j. Uvedené omezení lze upravit tak, ºe p ehodíme sumaci podle i a j. Dostaneme j k=1 i=1 n p i x ik n d i x ij t j, pozice j, i=1 kde n i=1 p ix ik je sou in vektoru p a matice x. Ten lze v Excelu realizovat taktommult (p, x) (s p edvýb rem bloku pro výsledek) nebo mmult(p; x1) a kopírovat. Tady se ale musí xovat vektor p pomocí F4. x1 je první sloupec matice x. Vektor p musí být v kaºdém p ípad ádkový. Následující p íklad ilustruje toto druhé vyjád ení podmínky. P íklad: Pro jedno konkrétní se azení úkol, konkrétn 1, 4, 2, 5, 3 vyzna íme pozice x, které budou rovny 1. Potom pro j = 3 bude Vlevo: j = 3 i = 1 x 11 i = 2 x 23 i = 3 x 35 i = 4 x 42 i = 5 x 54 1. sloupec - aktivní je x 11 (tedy i = 1) a to vytáhne p 1 2. sloupec - aktivní je x 42 (tedy i = 4) a odtud p 4 3. (poslední j-tý) - aktivní je x 23 a odtud p 2 Doba do konce je tedy p 1 + p 4 + p 2 Vpravo: v j-tém (tedy t etím) sloupci najdeme aktivní pole - x 23 (tedy i = 2) d 2 ur uje, kdy m la být pozice j = 3 dokon ena. 85
Rozdíl je zpoºd ní. e²ení v programu EXCEL Je jednodu²²í a lze vyuºívat kopírování. Jedná se o tabulku v dolní ásti programu. Tu lze vytvá et kopírováním ve sloupcích po ínaje první a dále s rostoucím k. Ve vzorcích je t eba pouºít xování adresy pomocí F4. Program je U9b_schedulingSP.xlsx 14.4 Formulace jako lineární t íd ní Denujeme binární x tak, ºe x ij = 1 znamená, ºe úkol i leºí n kde p ed úkolem j. 4 Dále zavedeme zpoºd ní t j. Kriterium Podmínka 1 J = t j min x ij + x ji = 1, (i, j), i > j coº znamená i j + j i = 1 tedy bu je men²í i nebo j (protoºe x ij = 1 znamená i j - úloha i se plní v d íve neº úloha j). 4 P ipome me, ºe u p edcházení to bylo bezprost edn p ed. 86
Podmínku lze realizovat jako X + X = 1 kde X je matice v²ech x ij a X je transpozice. Do podmínky pak vstupuje jen jeden trojúhelník (bez diagonály). Podmínka 2 x ik + x kj + x ji 2, (i, j, k) r zné Jestliºe x ik = 1 a x kj = 1, pak x ik + x kj = 2 a x ji = 0 protoºe kdyº i k < j i j a tedy j i je nepravda. Jestliºe alespo jeden z x ik nebo x kj je nula, sou et je 2 automaticky. V podmínce se testují v²echny r zné trojice hran x ik, x kj, x ji dané indexy i, j, k. Na po adí výb ru index nezáleºí, a tedy takové trojice tvo í v²echny kombinace t etí t ídy z n, kde n je po et uzl grafu (po et azených úkol ). Jak generovat takové kombinace je ukázáno v P íloze na stran 117. Podmínka 3 p j + n p i x ij d j t j, i=1 úloly j Suma v této podmínce s ítá x ve sloupcích, tedy podle prvního indexu. Jedni ky jsou tam, kde konkrétní úloha i p edchází úlohu j. Tedy se te v²echny doby trvání úloh i, které jsou p ed sledovanou úlohou j (viz druhá matice x v následující poznámce). Plus doba trvání p j dá dobu, kdy bude tato úloha skute n dokon ena. d j je doba, ve které m l být dokon en, a tedy rozdíl je zpoºd ní. Poznámka Abychom si dob e uv domili rozdíl mezi bezprost edn p ed a n kde p ed, uvedeme matici x pro p ípad, kdy úlohy jdou v po adí 3, 2, 4, 1 bezprost edn n kde x = x = 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 1 0 0 0 e²ení v programu EXCEL Tato formulace je pro EXCEL vyloºen protivná. Nejhor²í je, ºe se realizují podmínky: v²echny trojice (i, k), (k, j), (j, i), kde i, j, k jsou ísla úloh. T ch je hodn a nelze je vytvá et kopírováním. Na²t stí se trojice vybírají jako podmnoºiny (bez po adí) a tak je jich jen ( n 3), kde n je po et úloh. Takºe pro n = 4 to budou 4 podmínky. Podmínky 1 a 2 se musí vypsat prvek po prvku. Podmínku 3 lze kopírovat podle vzoru 87
nebo lze pouºít funkci mmult(). A26=A4+($A$4*A12+$B$4*A13+$C$4*A14+$D$4*A15)-A6 Program je U9c_schedulingLO.xlsx 14.5 Hybridní formulace V této formulaci se vyuºívají prom nné obojího typu: (i) prom nné x denující pozici úkolu a (ii) prom nné y ur ující po adí úkol. Máme tedy x ik = 1 jestliºe úkol i je na pozici k, y ij = 1 jestliºe úkol i je naplánován n kdy p ed úkolem j Dále op t denujeme zpoºd ní t i jako rozdíl mezi dobou dokon ení úkolu i a jeho plánovaným dokon ením. Kriterium J = i t i min 88
Podmínky 1 a 2 Podmínka 3 x jk + k 1 m=1 n x ik = 1, pozice k i=1 n x ik = 1, úkoly i k=1 x im 1 + y ij, k, j > 1, i < j Vysv tlení: Tato podmínka íká ºe, jestliºe je x jk = 1 (úkol j je na pozici k) a jiný úkol i je p ed ním - tedy k 1 m=1 x im = 1, bude 1 + 1 = 2 1 + y ij y ij = 1, tj. ur uje hodnotu y ij jako 1, tj. íká, ºe úloha j je za úlohou i. Obrázek pro n = 4 je uveden dále. Podmínka 4 p j + n p i y ij d j t j i=1 Tato podmínka ur uje zpoºd ní t j a je stejná jako ve formulaci s lineárním t íd ním. e²ení v programu EXCEL Je dosti náro né, jednak proto, ºe podmínky 3 a 4 nelze vytvo it kopírováním ale hlavn pro to, ºe je t eba generovat v²echny podmínky 3, kterých pro v t²í n bude velmi mnoho. Pro n = 4 je program U9d_schedulingHY.xlsx následující 89
A podmínka 3 je ilustrována takto 14.6 Formulace jako cesty grafem P i této formulaci uvaºujeme cesty grafem s inciden ní maticí u ij. Hledáme cesty s minimálním zpoºd ním i t i. Protoºe chceme testovat v²echny cesty, uvaºujeme virtuální pozici 0 (viz triky v TSP). Úloha je postavena takto: Denujeme y ij = 1, jestliºe úkol i je p ed úkolem j (kdekoli) u ij = 1, jestliºe i a j jsou bezprost edn ua sebou t i je zpoºd ní p i odevzdání úkolu i Kriterium J = i t i min 90
Podmínka 1 a 2 n u ij = 1, úkoly j 0 tedy, kaºdý p edchozí má jediného následníka (první pozice je 0), a i=1 n u ij = 1, pozice i 1 j=0 tedy, kaºdý následník má jediného p edchozího. Podmínka 3 n y ij + i=1 n y jk = n 1, úkoly j 1 k=1 tedy, t ch úkol, co jsou p ed j, a t ch úkol, co jsou za j, je dohromady práv n 1. Podmínka 4 coº je denice zpoºd ní t i. Podmínka 5 n y ij i=1 p j + n p i y ij d j t j, úkoly j 1 i=1 n y ik + (n + 1) u kj n, (j, k), j > 0, k > 0, j k i=1 která íká: Pokud hrana (i, j) leºí na cest uspo ádání, pak úkol i má o jedna mén p edch dc neº úkol j: i y ij +1 = i y ik. Pokud neleºí, tak podmínka je vºdy platná (a tedy se neuvaºuje). Poznámka Trochu lep²í neº podmínka 5 je tato n y ij i=1 n y ik + (n + 1) u jk + (n 1) u kj n, (j, k), j > 0, k > 0, j k i=1 e²ení v programu EXCEL je p ímo úmorné! Diagonály matic u a y se musí zadat nulové, vyjmout z nastavovaných bun k a také z podmínky na binární veli iny. Podmínka 5 se zadává do matice (n 1) n - pro v²echny hrany cest, jdoucích od vstupu do výstupu (cesta o délce 4 má 3 hrany). Program U9e_schedulingTR.xlsx je tady 91
92