Metóda vetiev a hraníc (Branch and Bound Method) na riešenie úloh celočíselného lineárneho programovania Úloha plánovania výroby s nedeliteľnosťami Podnikateľ vyrába a predáva zemiakové lupienky a hranolčeky za ceny 120 a 76 Sk za kilogram produktu, pričom lupienky môže predávať len v 15 kg baleniach a hranolčeky len v 30 kg baleniach. Na výrobu 1 kg lupienkov treba 2 kg zemiakov a 0,4 kg oleja, na výrobu 1 kg hranolčekov treba 1,5 kg zemiakov a 0,2 kg oleja. Podnikateľ nakúpil pred začiatkom výroby 100 kg zemiakov a 16 kg oleja za regulované ceny 12 a 40 Sk/kg. Aké množstvo jednotlivých produktov má podnikateľ vyrábať a predávať, aby maximalizoval svoj zisk pri rešpektovaní obmedzeného množstva obidvoch surovín, ktoré má k dispozícii? Matematický model úlohy Premenné: x 1 množstvo balení (15 kg) lupienkov x 2 množstvo balení (30 kg) hranolčekov max f = 1200x 1 + 1500x 2 za pod. 30x 1 + 45x 2 100 6x 1 + 6x 2 16 x 1, x 2 Z + Modelovanie a optimalizácia 7/ 1
Grafická reprezentácia úlohy plánovania výroby s nedeliteľnosťami x 2 4 3 2 ÚF: 1200x 1 + 1500x 2 = 2000 1 0 0 1 2 3 4 x 1 Modelovanie a optimalizácia 7/ 2
Strom riešení vrchol = podmnožina riešení (na jednej úrovni sú podmnožiny disjunktné) koreň = množina všetkých prípustných riešení 1 2 3 4 5 6 vetva 7 8 list = riešenie alebo prázdna množina vetva 2 1 koreň 2 1 1 2 vrchol list 1 2 Modelovanie a optimalizácia 7/ 3
Prehľadávanie stromu riešení 1. Preskúmaj koreň stromu a vlož ho do zoznamu. 2. Pokiaľ existuje nepreskúmaný následník prvého vrcholu v zozname, opakuj: a) preskúmaj následníka b) vlož následníka do zoznamu 3. Vyber prvý vrchol zo zoznamu. 4. Ak je zoznam prázdny, koniec. Inak, vráť sa na krok 2. Prehľadávanie úplné prezrieme všetky riešenia a zapamätáme si z nich najlepšie obmedzené niektoré vetvy stromu vynecháme (tie, pre ktoré sa dá dokázať, že v nich nie je optimálne riešenie) Stratégia prehľadávania určuje poradie, v ktorom budú vrcholy spracované: 1. prehľadávanie do hĺbky prvý vrchol v zozname je posledný vložený 2. usmernené prehľadávanie prvý je vrchol s najvyššou prioritou Výhody stratégií: ad 1) malé nároky na pamäť ad 2) optimálne riešenie nájdeme rýchlejšie Modelovanie a optimalizácia 7/ 4
Metóda vetiev a hraníc vykonáva obmedzené prehľadávanie. Na vylúčenie nejakej vetvy stromu riešení potrebujeme poznať: 1. horný odhad hodnoty účelovej funkcie (hodnotu účelovej funkcie akéhokoľvek prípustného riešenia) 2. dolný odhad hodnôt účelovej funkcie riešení z danej vetvy Preskúmanie následníka prvého vrcholu v kroku 2a) znamená nájsť dolný odhad. Vetvu stromu riešení, ktorá má koreň v následníkovi, vylúčime z ďalšieho prehľadávania (následníka nevložíme do zoznamu v kroku 2b)), ak dolný odhad horný odhad. Čím väčší dolný odhad, tým menej vrcholov stromu riešení sa prehľadáva! Čím menší horný odhad, tým menej vrcholov stromu riešení sa prehľadáva! Dolný odhad získame riešením zjednodušenej úlohy, ktorá vznikne vynechaním nejakých podmienok pôvodnej úlohy. Množina prípustných riešení pôvodnej úlohy množiny riešení zjednodušenej úlohy, preto optimálne riešenie zjednodušenej úlohy má hodnotu účelovej funkcie optimálne riešenie pôvodnej úlohy. Príklad Vynecháme podmienky celočíselnosti (LP-relaxácia). Pri usmernenom prehľadávaní má najvyššiu prioritu vetva s najmenším dolným odhadom. Modelovanie a optimalizácia 7/ 5
V priebehu prehľadávania si pamätáme doposiaľ najlepšie riešenie. Hodnota jeho účelovej funkcie je horným odhadom. Riešenie: a) dostaneme v liste stromu alebo b) vzniká ako vedľajší produkt pri výpočte dolného odhadu, kedy riešenie zjednodušenej úlohy je zároveň riešením pôvodnej úlohy, alebo heuristická metóda využije riešenie zjednodušenej úlohy na získanie riešenia pôvodnej úlohy Príklad Riešenie LP-relaxácie je celočíselné, alebo zaokrúhlime tie zložky riešenia LP-relaxácie, ktoré majú byť celočíselné. Vetvenie (vytvorenie následníkov) v prípade LP-relaxácie: Vyberieme jednu premennú x i riešenia LP-relaxácie, ktorá má byť celočíselná a nie je. x i opt je hodnota premennej x i v riešení LP-relaxácie. Následníkov aktuálneho vrcholu získame tak, že do modelu pridáme podmienku x i x i opt, resp. x i x i opt. Modelovanie a optimalizácia 7/ 6
Príklad realizácie metódy vetiev a hraníc s usmerneným prehľadávaním Koreň stromu: min f = -1200x 1-1500x 2 za pod. 30x 1 + 45x 2 100 6x 1 + 6x 2 16 x 1, x 2 Z + Optimálne riešenie LP-relaxácie úlohy: x 1 = 1,33 x 2 = 1,33 Hodnota ÚF: -3 600 = dolný odhad Zaokrúhlené riešenie (doposiaľ najlepšie riešenie): x 1 = 1, x 2 = 1 Hodnota ÚF: -2 700 = horný odhad Vetvenie: A min f = -1200x 1-1500x 2 min f = -1200x 1-1500x 2 za pod. 30x 1 + 45x 2 100 za pod. 30x 1 + 45x 2 100 6x 1 + 6x 2 16 6x 1 + 6x 2 16 x 1 1 x 1 2 x 1, x 2 Z + x 1, x 2 Z + Dolný odhad: x = <1; 1,56> f(x) = -3533,33 Zaokrúhlené riešenie: x = <1; 1> f(x) = -2700 B Dolný odhad: x = <2; 0,67> f(x) = -3400 Zaokrúhlené riešenie: x = <2; 0> f(x) = -2400 Modelovanie a optimalizácia 7/ 7
Vetvenie: C Riešenie: x = <1; 1> f(x) = -2700 D x 1 1 x 1 1 x 2 1 x 2 2 Dolný odhad: x = <0,33; 2> f(x) = -3400 Zaokrúhlené riešenie: x = <0; 2> f(x) = -3000 doposiaľ najlepšie riešenie Horný odhad: -3000 spracované vrcholy (vybraté zo zoznamu) koreň A B C D dolný odhad je -3400 dolný odhad je -3400 vetva s dolným odhadom 2700 vylúčená z ďalšieho prehľadávania Modelovanie a optimalizácia 7/ 8
Vetvenie: E F x 1 = 0 x 1 = 1 x 2 2 x 2 2 Riešenie: Nemá prípustné riešenie. x = <0; 2,22> f(x) = -3333,33 Zaokrúhlené riešenie: x = <0; 2> f(x) = -3000 A B C D dolný odhad je -3400 E F dolný odhad je 3333,33 Modelovanie a optimalizácia 7/ 9
Vetvenie: G H x 1 2 x 1 2 x 2 = 0 x 2 1 Riešenie: Nemá prípustné riešenie. x = <2,67; 0> f(x) = -3200 Zaokrúhlené riešenie: x = <2; 0> f(x) = -2400 A B C D H G E F dolný odhad je -3200 dolný odhad je 3333,33 Modelovanie a optimalizácia 7/ 10
Vetvenie: I J x 1 = 0 x 1 = 0 x 2 = 2 x 2 3 Riešenie: Nemá prípustné riešenie. x = <0; 2> f(x) = -3000 A B C D H G E F dolný odhad je -3200 I <0; 2> J Modelovanie a optimalizácia 7/ 11
Vetvenie: K L x 1 = 2 x 1 3 x 2 = 0 x 2 = 0 Riešenie: Nemá prípustné riešenie. x = <2; 0> f(x) = -2400 A B C D H G E F K <2; 0> L I <0; 2> J Optimálne riešenie: x = <0; 2> f(x) = -3000 Modelovanie a optimalizácia 7/ 12