Úterý 11:00 – 12:30 hod. učebna 212 RB © Lagová, Kalčevová 4EK213 – LINEÁRNÍ MODELY Úterý 11:00 – 12:30 hod. učebna 212 RB © Lagová, Kalčevová
11. přednáška CELOČÍSELNÉ PROGRAMOVÁNÍ © Lagová, Kalčevová
OSNOVA PŘEDNÁŠKY Gomoryho metoda Grafické znázornění Metoda větví a mezí
GOMORYHO METODA Gomoryho metodou řešíme úlohu LP: Ax R b x ≥ 0 (11.1) z = cTx ... max.(min.) ve které jsme podmínky nezápornosti proměnných rozšířili o podmínky celočísel-nosti: xj ≥ 0, celé, (11.2) j = 1, 2, ..., n Použitá symbolika má obvyklý význam (viz Přednáška 2 a další) Podmínky celočíselnosti jsou definov
ALGORITMUS METODY 1. Vypočteme optimální řešení úlohy LP bez ohledu na podmínky celočíselnosti 2. Testujeme celočíselnost OŘ: a. je-li OŘ celočíselné, našli jsme i opti- mum celočíselné úlohy VÝPOČET KONČÍ b. není-li OŘ celočíselné, výpočet pokra- čuje GOMORYHO METODA
3. Určíme zdrojový řádek: a. vypočteme celočíselné zbytky pravých stran: ri0 = βi - [βi ] (11.3) i = 1, 2, ..., m, kde [βi ] ... je funkce „celé číslo z βi “ b. najdeme g = max(ri0) =rp0 (11.4) i = 1, 2, ..., m c. zdrojový řádek je p-tý ????????????,,,
b. formulujeme omezení: 4. Přidáme Gomoryho omezení: a. vypočteme koeficienty rpj : rpj = apj − [apj ], (11.5) j = 1, 2, ..., n+m+s b. formulujeme omezení: (-rpjxj) + xn+m+s = - rp0, (11.6) kde s ... je index Gomoryho iterace může Gomoryho proměnná znovu vstouúit do řešení?
5. Počítáme nové řešení DSM: - Gomoryho omezení je klíčový řádek - klíčový sloupec určíme podle (7.6) ... ? 6. Testujeme řešitelnost: a. všechny koeficienty rpj v Gomoryho omezení jsou nezáporné, neexistuje OŘ celočíselné úlohy: VÝPOČET KONČÍ b. klíčový sloupec je podle hodnoty t v k-tém sloupci: TRANSFORMACE
7. Transformujeme řešení: a. klíčový řádek má v ST index m+s b. klíčový sloupec je k-tý c. na průsečíku klíčového řádku a klíčo- vého sloupce je klíčový prvek αm+s,k (je vždy záporný) d. obvyklým způsobem transformujeme podle (4.3) – (4.8) Vracíme se k bodu 2 TESTUJEME CELOČÍSELNOST
GRAFICKÉ ZNÁZORNĚNÍ Geometrickou interpretací Gomoryho o-mezení je řezná nadrovina (Gomoryho řez) Ta „odřízne“ ze spojité množiny PŘ část, která neobsahuje žádný celočíselný bod Některý z celočíselných bodů se přitom posune do vrcholu množiny PŘ (nebo alespoň na její hranu) Podle základní věty LP se tímto postupem najde OŘ (pokud existuje)
Příklad 11.1 Je dána úloha IP: Řešte úlohu (11.7) Gomoryho metodou Řešte úlohu (11.7) graficky
Podmínky celočíselnosti nejsou splněny Řešení Vypočteme SM optimální řešení úlohy (11.7) bez podmínek celočíselnosti: Tab. 11.1 Podmínky celočíselnosti nejsou splněny Řešení x(1) = (3, 9/5, 0, 0)T, z = 45 (11.8) není přípustným řešením úlohy (11.7)
Pokračujeme ve výpočtu Gomoryho me-todou Vypočteme koeficienty ri0 : r10= β1 - [β1] = 9/5 - 5/5 = 4/5 r20= β2 - [β2] = 3 - 3 = 0 Najdeme g = max (4/5, 0) = 4/5 První řádek zvolíme jako zdrojový: Vypočtěte koeficienty rpj ........................ ?
r11=r12= 0 r13=1/5 - 0 = 1/5 r14=-2/5 - [-2/5 ] = -2/5 - (-1)=3/5 Celočíselné zbytky rpj : Sestavíme 1. Gomoryho omezení -1/5x3 - 3/5x4 + x5 = - 4/5 (11.9) a přidáme k ST jako třetí omezení Řešíme DSM Klíčový řádek je třetí
• Klíčový řádek je třetí, tj. přidané Gomo- ryho omezení Tab. 11.2 • Klíčový řádek je třetí, tj. přidané Gomo- ryho omezení • Řešení v další iteraci je optimální, ale není celočíselné
Řešení v tabulce 11.3 není celočíselné: x(2)=(5/3, 7/3, 0, 4/3)T, z=115/3 (11.10) Pokračujeme ve výpočtu Gomoryho me- todou ..................................................... ?
Vypočteme celočíselné zbytky pravých stran: Najdeme g = max Zdrojový řádek je druhý: r21 = r22 = , r23 , r24 = , r25 • 2. Gomoryho omezení: -2/3x3 - 2/3x5 + x6 = - 2/3 (11.11)
K ST přidáme 2. Gomoryho omezení: −2/3x3 − 2/3x5 + x6 = −2/3 Tab. 11.4 • Klíčový řádek je čtvrtý (Gomoryho omezení) • Klíčový sloupec je třetí
• Všechny strukturní proměnné mají celočí- selné hodnoty Řešení Tab. 11.5 • Všechny strukturní proměnné mají celočí- selné hodnoty Řešení x(3)=(2, 2, 0, 0), z = 38 (11.12) je OŘ úlohy IP (11.7)
2. GRAFICKÉ ŘEŠENÍ (11.9): • Proměnné x3 a x4 vyjádříme z vlastních • Znázorníme graficky 1. Gomoryho řez (11.9): • Proměnné x3 a x4 vyjádříme z vlastních omezení modelu (11.4): x3 =15 - 2x1 - 5x2 x4 = 3 - x1 • Dosadíme do Gomoryho řezu: -1/5(15 - 2x1 - 5x2) - 3/5(3 - x1) + x5 = - 4/5 • Zjednodušíme: x1 + x2 + x5 = 4 (11.13) -1/5x3 – 3/5x4 + x5 = -4/5
Položíme x5 = 0 a vypočteme úseky na ose x1 a x2 : x1 = 0 x2 = 4 x2 = 0 x1 = 4 Znázorníme hraniční přímku a odpovídají-cí polorovinu „Odřízneme“ z množiny PŘ část vymeze-nou Gomoryho řezem Bod se souřadnicemi [2,2] je nyní na hra-ně množiny PŘ Znovu hledáme OŘ
-2/3 (15 - 2x1 - 5x2) - 2/3(4-x1 - x2) + x6 = -2/3 Analogicky upravíme 2. Gomoryho řez (11.11): -2/3x3 - 2/3x5 + x6 = -2/3 Dosadíme za x3 z (11.7) a za x5 z (11.9): -2/3 (15 - 2x1 - 5x2) - 2/3(4-x1 - x2) + x6 = -2/3 Odtud je 2. Gomoryho omezení 2x1 + 4x2 + x6 = 12 • Položíme x6 = 0 a vypočteme: x1 = 0 x2 = 3 x2 = 0 x1 = 6 • Další OŘ je celočíselné
„Žabák Integer – Gomory“ x2 3 x1 £ 3 2 2 x1 + 5 x2 £ 15 1 Chybí bublina se souřadnicemi u 2. OŘ ? Dopsat 2 Gomoryho omezení GŘ2 x1 [0,0] 1 2 3 4 GŘ1 5 Obr. 11. 1 – Gomoryho metoda
NEVÝHODY METODY Koeficienty Gomoryho omezení jsou zvláště v dalších iteracích velmi malá čísla, blízká nule Při eliminaci proto vznikají zaokrouhlo-vací chyby Ty mohou způsobit to, že výpočet nero-zezná optimální řešení a zkrachuje Proto programové systémy používají většinou kombinatorické metody
METODY VĚTVÍ A MEZÍ Mohou se použít pro řešení všech úloh IP i MIP Podmínkou je celočíselnost koeficientů účelové funkce (lze splnit vždy) Vyskytují se v řadě variant uzpůsobených pro řešení konkrétních úloh, např. pro bi-valentní úlohy, jako je okružní dopravní problém nebo přiřazovací problém Jsou založeny na efektivním prohledá-vání množiny přípustných řešení
VÝCHOZÍ ŘEŠENÍ Úlohu lineárního programování bez pod-mínek celočíselnosti označíme LP(0) Množinu přípustných řešení úlohy LP(0) označíme X(0) SM vypočteme optimální řešení x(0) = (x10, x20, ..., xn0) , z0 Jestliže x(0) vyhovuje i podmínkám celo-číselnosti, je to optimální celočíselné řešení výpočet končí Pokud ne, začneme větvení
VĚTVE větvící proměnná větve Z vektoru x(0) vybereme libovolnou pro-měnnou, která porušuje podmínku celo-číselnosti Označíme ji xk a její hodnotu xk0 Množinu přípustných řešení X(0) rozdělíme podle proměnné xk na dvě podmnožiny větvící proměnná větve levá větev pravá větev
V levé větvi přidáme k úloze LP(0) pod-mínku xk ≤ [xk0] (11.14) a vytoříme tak úlohu LP(1) V pravé větvi přidáme k úloze LP(0) pod-mínku xk ≥ [xk0] + 1 (11.15) a vytoříme tak úlohu LP(2) Tyto úlohy opět řešíme SM bez ohledu na podmínky celočíselnosti a dále větvíme
MEZE V každé větvi je odvozována horní mez hodnoty účelové funkce (za předpokladu maximalizace) celočíselného řešení: h(s) = [z(s) ] v úlohách IP (11.16) h(s) = z(s) v úlohách MIP (11.17) kde s ... je index úlohy LP(s), tj. s-té větve z(s) ... je optimální hodnota účelové funkce úlohy LP(s) Mez h(0) = [z(0) ] je horní mezí hodnoty úče-lové funkce celočíselného řešení
KONEC VĚTVE 1. Dosud nejlepší vypočtená hodnota úče-lové funkce celočíselného řešení se ozna-čí z* Jestliže je h(s) < z*, je zřejmé, že v této větvi nemůže být celočíselné optimum Větev tvořená úlohou LP(s) se uzavře Hodnota účelové funkce ve větvi nikdy nepřekročí horní mez větve
2. Výpočet ve větvi se rovněž uzavře, je-li nalezeno celočíselné OŘ: - je-li z(s) >z*, dosadíme z*= z(s) 3. Výpočet ve větvi rovněž končí, jestliže ve větvi neexistuje PŘ Výpočet končí uzavřením všech větví Nejlepší nalezené celočíselné řešení (po- kud existuje) s hodnotou účelové funkce z * je hledaným optimálním řešením celo- číselné úlohy
Příklad 11.2 Pro srovnání vyřešíme metodou větví a mezí úlohu (11.7) z příkladu 11.1 Označíme ji jako úlohu LP(0) :
1. Řešení úlohy LP(0) Úlohu LP(0) jsme vyřešili SM v tabulce 11.1 • Optimální řešení x(0) = (3, 9/5, 0, 0), z(0)=45 z této tabulky není celočíselné Hodnota účelové funkce z(0)=h(0)=[45] je horní mezí hodnoty účelové funkce celočíselné úlohy • Řešení úlohy znázorníme graficky
„Žabák Integer – x(0)“ x2 x1 £ 3 2 x1 + 5 x2 £ 15 x1 [0,0] 1 2 3 4 5 Obr. 11.2 − Řešení úlohy LP(0)
Větvení LP(0) Proměnná x2 porušuje podmínku celočí-selnosti, vybereme ji jako větvící proměn-nou Vytvoříme levou větev: x2 ≤ [x2] a pravou větev: x2 ≥ [x2] + 1 Formulujeme úlohy LP(1) a LP(2)
Formulace úloh LP(1) a LP(2) Levá větev: LP(1) Pravá větev: LP(2) 2x1+ 5x2 ≤ 15 2x1+ 5x2 ≤ 15 x1 ≤ 3 x1 ≤ 3 x2 ≤ 1 x2 ≥ 2 xj ≥ 0 xj ≥ 0 j = 1, 2 j = 1, 2 z = 9x1+10x2 … max. z = 9x1+10x2 … max.
Řešení úlohy LP(1) K OŘ úlohy LP(0) přidáme omezení x2 ≤ 1 Tab. 11.6 a upravíme je: ................................. jak ? • Řešíme DSM
OŘ úlohy LP(1) KONEC VĚTVE Tab. 11.7 Optimální řešení úlohy LP(1) je celočíselné: x(1)=(3, 1, 4, 0), z(1) = 37 Dosadíme z*= 37 KONEC VĚTVE
LP(0) x(0) = (3; 9/5) z(0) = 45 Mez = 45 x2 ≤ 1 LP(1) x(1) = (3; 1) z(1) = 37 z * = 37 KONEC VĚTVE Obr. 11.3 − Úloha LP(1)
„Žabák Integer – x(1)“ x2 x1 £ 3 2 x1 + 5 x2 £ 15 x2 £ 1 x1 [0,0] 1 2 3 4 5 Obr. 11.4 − Řešení úlohy LP(1)
Řešení úlohy LP(2) K OŘ úlohy LP(0) přidáme omezení -x2 ≤ -2 Tab. 11.8 a upravíme je: .................................. jak ? • Řešíme DSM
OŘ úlohy LP(2) Řešení v pravé větvi Tab. 11.9 Řešení v pravé větvi x(2) =(5/2, 2, 0, 1/2, 0), z(2) = 85/2 není celočíselné • h(2) = [85/2] >z*= 37 větvíme LP(2)
LP(0) x(0) = (3; 9/5) x(0) = 45 Mez = 45 x2 ≤ 1 x2 ≥ 2 LP(1) x(1) = (3; 1) x(1) = 37 x* = 37 LP(2) x(2) = (5/2; 2) x(2) = 42,5 Mez = 42 KONEC VĚTVE Obr. 11.4 − Úloha LP(2)
„Žabák Integer – x(2)“ x2 x1 £ 3 x2 ≥ 2 2 x1 + 5 x2 £ 15 x2 £ 1 x1 [0,0] 1 2 3 4 5 Obr. 11.5 − Řešení úlohy LP(2)
Větvení LP(2) • Větvíme podle x1=5/2 Levá větev: LP(3) Pravá větev: LP(4) 2x1+ 5x2 ≤ 15 2x1+ 5x2 ≤ 15 x1 ≤ 3 x1 ≤ 3 x2 ≥ 2 x2 ≥ 2 x1 ≤ 2 x1 ≥ 3 xj ≥ 0 xj ≥ 0 j = 1, 2 j = 1, 2 z = 9x1+10x2 … max. z = 9x1+10x2 … max.
Řešení LP(3) K optimálnímu řešení úlohy LP(2) přidáme upravené omezení x1 ≤ 2 Úlohu LP(3) řešíme DSM Tab. 11.10
OŘ úlohy LP(3) x(3)=(2, 11/5, 0, 1), z(3) = 40 Tab. 11.11 • Optimální řešení úlohy LP(3): x(3)=(2, 11/5, 0, 1), z(3) = 40 opět nesplňuje podmínky celočíselnosti • Protože h(3) = 40 >z*= 37 větvíme LP(3)
Obr. 11.6 − Úloha LP(3) x2 ≤ 1 x1 ≤ 2 KONEC LP(0) x(0) = (3; 9/5) z(0) = 45 Mez = 45 x2 ≤ 1 x2 ≥ 2 LP(1) x(1) = (3; 1) z(1) = 37 Z* = 37 LP(2) x(2) = (5/2; 2) z(2) = 42,5 Mez = 42 x1 ≤ 2 KONEC LP(3) x(3) = (2; 11/5) z(3) = 40 Mez = 40 Obr. 11.6 − Úloha LP(3)
„Žabák Integer – x(3)“ x2 x1 £ 2 x1 £ 3 x2 ≥ 2 2 x1 + 5 x2 £ 15 x2 £ 1 Bublina ? x2 £ 1 x1 [0,0] 1 2 3 4 5 Obr. 11.7 − Řešení úlohy LP(3)
Řešení LP(4) K optimálnímu řešení úlohy LP(2) přidáme upravené omezení x1 ≥ 3: PŘ úlohy LP(4) neexistuje .......... PROČ ? KONEC VĚTVE Tab. 11.12
x(4) Nepřípustné řešení LP(0) x(0) = (3; 9/5) x(0) = 45 Mez = 45 x2 ≤ 1 x2 ≥ 2 LP(1) x(1) = (3; 1) x(1) = 37 x* = 37 LP(2) x(2) = (5/2; 2) x(2) = 42,5 Mez = 42 x1 ≤ 2 x1 ≥ 3 KONEC VĚTVE LP(3) x(3) = (2; 11/5) x(3) = 40 Mez = 40 LP(4) x(4) Nepřípustné řešení KONEC VĚTVE Obr. 11.8 − Úloha LP(4)
„Žabák Integer – x(4)“ x2 x1 ≥ 3 x1 £ 3 x2 ≥ 2 2 x1 + 5 x2 £ 15 x2 £ 1 [0,0] 1 2 3 4 5 Obr. 11.9 − Řešení úlohy LP(4)
Větvení LP(3) Větvíme podle x2 = 11/5 K optimálnímu řešení úlohy LP(3) přidáme v levé větvi x2 ≤ 2 V pravé větvi přidáme x2 ≥ 3 V levé větvi vytvoříme úlohu LP(5) V pravé větvi vytvoříme úlohu LP(6)
Větvení LP(3) Levá větev: LP(5) Pravá větev: LP(6) 2x1+ 5x2 ≤ 15 2x1+ 5x2 ≤ 15 x1 ≤ 3 x1 ≤ 3 x2 ≤ 1 x2 ≥ 2 x1 ≤ 2 x1 ≥ 3 x2 ≤ 2 x2 ≥ 3 xj ≥ 0 xj ≥ 0 j = 1, 2 j = 1, 2 z = 9x1+10x2 … max. z = 9x1+10x2 … max.
Řešení LP(5) K optimálnímu řešení LP(3) přidáme upravené omezení x2 ≤ 2: Řešíme DSM Tab. 11.13
OŘ úlohy LP(5) Optimální řešení LP(5) je celočíselné: Tab. 11.14 Optimální řešení LP(5) je celočíselné: x(5) =(2, 2, 1, 1), z(5) = 38 Hodnota h(5) = 38 > z* z**= 38 KONEC VĚTVE
x(4) Nepřípustné řešení LP(0) x(0) = (3; 9/5) z(0) = 45 Mez = 45 x2 ≤ 1 x2 ≥ 2 LP(2) x(2) = (5/2; 2) z(2) = 42,5 Mez = 42 LP(1) x(1) = (3; 1) z(1) = 37 Z* = 37 x1 ≤ 2 x1 ≥ 3 KONEC VĚTVE LP(3) x(3) = (2; 11/5) z(3) = 40 Mez = 39 LP(4) x(4) Nepřípustné řešení KONEC VĚTVE x2 ≤ 2 LP(5) x(5) = (2; 2) z** = 38 Obr. 11.10 − Úloha LP(5) KONEC VĚTVE
„Žabák Integer – x(5)“ x2 x1 £ 2 x1 £ 3 x2 ≥ 2 x2 ≤ 2 2 x1 + 5 x2 £ 15 [0,0] 1 2 3 4 5 Obr. 11.11 − Řešení úlohy LP(5)
Řešení LP(6) K optimálnímu řešení LP(3) přidáme upravené omezení x2 ≥ 3: Řešíme DSM Tab. 11.15
OŘ LP(6) Celočíselným optimálním řešením LP(6) je Tab. 11.16 Celočíselným optimálním řešením LP(6) je x(6) =(0, 3, 0, 3), z(6) =30 KONEC VĚTVE
„Žabák Integer – x(6)“ x2 x1 £ 2 x2 ≥ 3 x1 £ 3 x2 ≥ 2 x2 ≤ 2 Bublina ? Asi se v tom úplně nevyznám x2 £ 1 x1 [0,0] 1 2 3 4 5 Obr. 11.12 − Řešení úlohy LP(6)
x(4) Nepřípustné řešení LP(0) x(0) = (3; 9/5) z(0) = 45 Mez = 45 x2 ≤ 1 x2 ≥ 2 LP(2) x(2) = (5/2; 2) z(2) = 42,5 Mez = 42 LP(1) x(1) = (3; 1) z(1) = 37 Z* = 37 x1 ≤ 2 x1 ≥ 3 KONEC VĚTVE LP(3) x(3) = (2; 11/5) z(3) = 40 Mez = 39 LP(4) x(4) Nepřípustné řešení KONEC VĚTVE x2 ≥ 3 x2 ≤ 2 LP(5) x(5) = (2; 2) z** = 38 LP(6) x(6) = (0; 3) Mez = 30 Obr. 11.13 − Úloha LP(6) KONEC VĚTVE KONEC VĚTVE
KONEC VÝPOČTU Všechny větve jsou ukončeny Protože h(6) = 30 < z** , je optimální hodno-ta účelové funkce celočíselné úlohy z** = 38 Optimálním řešením úlohy IP (11.7) je x(5) =(2, 2, 1, 1), z(5) = 38 KONEC VÝPOČTU
KONEC