Branch-and-Bound. 1. Az egészértéketű programozás. a korlátozás és szétválasztás módszere Bevezető Definíció. 11.

Hasonló dokumentumok
2017/ Szegedi Tudományegyetem Informatikai Intézet

Diszkrét, egészértékű és 0/1 LP feladatok

Korlátozás és szétválasztás módszere Holló Csaba 2

Kétfázisú szimplex algoritmus és speciális esetei

Totális Unimodularitás és LP dualitás. Tapolcai János

A szimplex algoritmus

Követelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet

Követelmények Motiváció Matematikai modellezés: példák A lineáris programozás alapfeladata 2017/ Szegedi Tudományegyetem Informatikai Intézet

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

További programozási esetek Hiperbolikus, kvadratikus, integer, bináris, többcélú programozás

1/ gyakorlat. Lineáris Programozási feladatok megoldása szimplex módszerrel. Pécsi Tudományegyetem PTI

Operációkutatás. Vaik Zsuzsanna. ajánlott jegyzet: Szilágyi Péter: Operációkutatás

11. Előadás. 11. előadás Bevezetés a lineáris programozásba

Számítógép és programozás 2

Általános algoritmustervezési módszerek

Optimalizálás alapfeladata Legmeredekebb lejtő Lagrange függvény Log-barrier módszer Büntetőfüggvény módszer 2017/

Programozási módszertan. Mohó algoritmusok

Nem-lineáris programozási feladatok

A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2018/

Bevezetés az operációkutatásba A lineáris programozás alapjai

A lineáris programozás alapfeladata Standard alak Az LP feladat megoldása Az LP megoldása: a szimplex algoritmus 2017/

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2017/ Szegedi Tudományegyetem Informatikai Intézet

Operációkutatás példatár

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Abszolútértékes és gyökös kifejezések

Növényvédő szerek A B C D

Sapientia - Erdélyi Magyar TudományEgyetem (EMTE) Csíkszereda IRT- 4. kurzus. 3. Előadás: A mohó algoritmus

Optimumkeresés számítógépen

1/ gyakorlat. Hiperbolikus programozási feladat megoldása. Pécsi Tudományegyetem PTI

Algoritmizálás, adatmodellezés tanítása 8. előadás

1. Előadás Lineáris programozás

Egészértékű lineáris programozás

egyenlőtlenségnek kell teljesülnie.

Számítógép és programozás 2

A szimplex algoritmus

Korlátozás és szétválasztás elve. ADAGOLO adattípus

Egyenletek, egyenlőtlenségek, egyenletrendszerek I.

Algoritmusokfelülnézetből. 1. ELŐADÁS Sapientia-EMTE

Döntéselőkészítés. I. előadás. Döntéselőkészítés. Előadó: Dr. Égertné dr. Molnár Éva. Informatika Tanszék A 602 szoba

Áttekintés LP és geometria Többcélú LP LP és egy dinamikus modell 2017/ Szegedi Tudományegyetem Informatikai Intézet

Operációkutatás. Vaik Zsuzsanna. Budapest október 10. First Prev Next Last Go Back Full Screen Close Quit

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL

Algoritmuselmélet. Katona Gyula Y. Számítástudományi és Információelméleti Tanszék Budapesti Műszaki és Gazdaságtudományi Egyetem. 13.

Módszer köztes tárolókat nem tartalmazó szakaszos működésű rendszerek ütemezésére

Lineáris programozási feladatok típusai és grafikus megoldása

Operációkutatás vizsga

11. Előadás. 1. Lineáris egyenlőség feltételek melletti minimalizálás

Nagy Gábor compalg.inf.elte.hu/ nagy

3. előadás. Termelési és optimalizálási feladatok. Dr. Szörényi Miklós, Dr. Kallós Gábor

Mohó algoritmusok. Példa:

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

8. Előadás. Megyesi László: Lineáris algebra, , oldal. 8. előadás Mátrix rangja, Homogén lineáris egyenletrendszer

Diszkrét matematika I.

Konjugált gradiens módszer

Algoritmuselmélet. Függvények nagyságrendje, elágazás és korlátozás, dinamikus programozás. Katona Gyula Y.

Döntési módszerek Tantárgyi útmutató

Nemlineáris programozás 2.

2. Visszalépéses keresés

FPI matek szakkör 8. évf. 4. szakkör órai feladatok megoldásokkal. 4. szakkör, október. 20. Az órai feladatok megoldása

Operációkutatás. 4. konzultáció: Szállítási feladat. A feladat LP modellje

Kétszemélyes játékok Gregorics Tibor Mesterséges intelligencia

Optimalizációs stratégiák 1.

Opkut deníciók és tételek

Az optimális megoldást adó algoritmusok

Algoritmizálás, adatmodellezés tanítása 7. előadás

V. Kétszemélyes játékok

További forgalomirányítási és szervezési játékok. 1. Nematomi forgalomirányítási játék

Matematikai modellezés

Algoritmuselmélet. Bonyolultságelmélet. Katona Gyula Y.

Ellátási lánc optimalizálás P-gráf módszertan alkalmazásával mennyiségi és min ségi paraméterek gyelembevételével

Egyes logisztikai feladatok megoldása lineáris programozás segítségével. - bútorgyári termelési probléma - szállítási probléma

Lineáris programozás. A mese

A Markowitz modell: kvadratikus programozás

Adatszerkezetek 2. Dr. Iványi Péter

Partíció probléma rekurzíómemorizálással

A Markowitz modell: kvadratikus programozás

Adatszerkezetek 7a. Dr. IványiPéter

Fibonacci számok. Dinamikus programozással

6. Függvények. 1. Az alábbi függvények közül melyik szigorúan monoton növekvő a 0;1 intervallumban?

Gazdasági informatika gyakorlat

30. ERŐSEN ÜSSZEFÜGGŐ KOMPONENSEK

Mesterséges Intelligencia. Csató Lehel. Csató Lehel. Matematika-Informatika Tanszék Babeş Bolyai Tudományegyetem, Kolozsvár 2007/2008

Egy ismerős fizika - feladatról. Az interneten találtuk az [ 1 ] könyvet, benne egy ismerős fizika - feladattal 1. ábra.

Gráfelmélet/Diszkrét Matematika MSc hallgatók számára. 3. Előadás

Számítógépes döntéstámogatás. Genetikus algoritmusok

A lineáris programozás alapjai

MÉSZÁROS JÓZSEFNÉ, NUMERIKUS MÓDSZEREK

bármely másikra el lehessen jutni. A vállalat tudja, hogy tetszőlegesen adott

R ++ -tree: an efficient spatial access method for highly redundant point data - Martin Šumák, Peter Gurský

Dualitás Dualitási tételek Általános LP feladat Komplementáris lazaság 2015/ Szegedi Tudományegyetem Informatikai Tanszékcsoport

Egyenletek, egyenlőtlenségek V.

E-tananyag Matematika 9. évfolyam Függvények

út hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.

Formális nyelvek és automaták

Ütemezési modellek. Az ütemezési problémák osztályozása

Módszertani megjegyzés: A kikötés az osztás műveletéhez kötődik. A jobb megértés miatt célszerű egy-két példát mu-

1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba

1. gyakorlat. Mesterséges Intelligencia 2.

2. Visszalépéses stratégia

EuroOffice Optimalizáló (Solver)

Alkalmazott optimalizálás és játékelmélet Lineáris programozás Gyakorlófeladatok. Rétvári Gábor

Átírás:

11. gyakorlat Branch-and-Bound a korlátozás és szétválasztás módszere 1. Az egészértéketű programozás 1.1. Bevezető Bizonyos feladatok modellezése kapcsán előfordulhat olyan eset, hogy a megoldás során ki kell kössük bizonyos változókra, hogy ők egészek. Ha az első előadás első példáját nézzük ( 21.dia - egy cég gyárt fából játékvonatokat és katonákat) akkor természetesnek vesszük, hogy az optimális stratégiánkban egész számú vonat és katona gyártását szeretnénk előírni (nem valószínű hogy fél katonát el tudunk adni, sőt az sem világos, hogy a katona fejét hagyjuk-e el vagy a karját). A szimplex algoritmusban azonban semmilyen garanciánk nincs arra, hogy a végeredményünk egész lesz! Ez minden korábbi esetben csak a megfelelő feladatkiírásnak volt köszönhető. Gondolhatnánk, hogy akár könnyebb is megoldani az ilyen feladatokat, hiszen korlátozzuk a lehetséges megoldásokat, csak az egészek körében kell őket megoldanunk. A szomorú valóság az, hogy ezen aprócska kitétel jóval nehezebb feladatokhoz vezet... 1.2. Definíció Egészértékű programozási feladat - Integer Linear Programming (ILP): Ha az LP-ben a változók (vagy csak egy részük) csak nemnegatív egész értékeket vehetnek fel. (Azon változókat, melyek csak 0 vagy 1 értéket vehetnek fel, bináris változóknak nevezzük.) Relaxált feladat/lp-lazítás: Egy egészértékű programozási feladat relaxációját úgy kapjuk, hogy a változókra tett minden egészértékűségi vagy 0-1 (bináris) megkötést eltörlünk. 1. Megjegyzés. Az ILP feladatok általában nem oldhatók meg a relaxált LP-feladat optimális megoldásának kerekítésével, mert az esetenként nem lehetséges, vagy nem optimális megoldást eredményez! 2. Megjegyzés. A relaxált feladat optimuma sosem rosszabb, mint az egész értékű feldat optimuma. Ezt a megjegyzést fontos nagyon alaposan átgondolnunk, mert a mai stratégia alapját képzi. Tehát adott célfüggvény esetében a relaxált feladatat optimuma sosem rosszabb (maximalizálás esetén sosem kisebb, minimalizálás esetén sosem nagyobb), mint az egészértékű feladat optimuma. Ez nyilvánvaló, hiszen a relaxált feladat lehetséges megoldásainak halmaza teljes egészében tartalmazza az eredeti feladat (ILP) lehetséges megoldásainak halmazát (sőt annál bővebb). Az alábbi ábrán szemléltetjük ezen tulajdonságot. Az ábrán maximalizálunk (egy nyilvánvalóan nem lineáris függvényt, de ez a meggondoláson nem változtat). Pirossal az egész helyeket jelöltük, míg kékkel a relaxált feladat lehetséges megoldásait. Az ábráról nyilvánvaló, hogy a relaxált feladat optimuma nagyobb mint az egészértékű feladaté. 1

3. Megjegyzés. Ha a relaxált feladat megoldása egész, akkor megkaptuk az eredeti feladat optimális megoldását. 2. Branch and bound - B&B Az egyik ILP-ket megoldó stratégia a korlátozás és szétválasztás módszere, közismertebb nevén Branch and Bound (B&B). A B&B az Oszd meg, és uralkodj! stratégiát alkalmazza a ILP feladatok megoldására. Az egészértékű problémát több kisebbre fogjuk fölbontani - ez a branch rész, amikor szétágaztatjuk/szétválasztjuk a feladatot. Az uralkodás szakasza a feladatnak egy becslésből adódik, amikor is közelítjük, hogy milyen jó eredményt kaphatunk minden kisebb részproblémára. Esetünkben a becslést a relaxált feladat megoldása fogja adni. Az előző megjegyezésekből az is kiderül, hogy a relaxált optimum fölülről korlátozza ( bound ) az egészértékű optimumot (maximalizálás esetén) 2

Algortimus Branch-and-Bound 1. Oldjuk meg az eredeti feladat relaxációját (dobjuk el az egészértékűségi feltételeket). Ha a megoldás egész, akkor készen vagyunk, a kapott megoldás az ILP optimális megoldása is egyben. Ha a megoldás nem egész: 2. Bontsuk részproblémákra a feladatot (szétválasztás - branch). Kezdetben egyik részprobléma sem lezárt. 3. Válasszunk ki egy nem lezárt részproblémát és oldjuk meg a hozzá tartozó relaxált feladatot (LP). Ekkor az esetek: A relaxált LP-nek nincs lehetséges megoldása zárjuk le a részproblémát (ágat) és 3-as lépés A relaxált LP-nek egy egész szám az optimális megoldása. Hasonlítsuk össze a most kapott megoldásunkat a eddig ismert legjobb egész megoldással. Ha a most kapott egész megoldás jobb, akkor mostantól ezt vegyük figyelembe, mint legjobb egész megoldás. zárjuk le az ágat és 3-as lépés A relaxált LP-re kapott optimális megoldás rosszabb, mint az eddigi legjobb egész megoldás. zárjuk le az ágat és 3-as lépés A relaxált LP egy olyan optimális megoldást ad, mely ugyan jobb, mint az eddig tárolt legjobb egész megoldás, viszont nem egész az értéke. Ekkor ezzel a részproblémával 2-es lépés Az első 3 esetben minden szükséges információnk megvan a részproblémáról, azt mondjuk, hogy a részprobléma teljesen felderített, ezért zárjuk le azt az ágat. Az algoritmusnak akkor van vége, ha minden részproblémát lezártunk (azaz a 3. lépésben nem tudunk nem lezárt részproblémát választani). Az optimális megoldás a tárolt legjobb egész megoldás. 3. Példa Vegyük az alábbi feladatot: x i Z, i = 1,2 3

Oldjuk meg a relaxált feladatot! A relaxált feladatban minden változatlan, csak az x i egészértékűségére vonatkozó kikötést töröljük el (azaz nem vesszük figyelembe a x i Z feltételt, ahogy egy ZH-ban egyébként észre se vennénk hogy ott van) A relaxált feladat optimális megoldását az x = (3.8,3) pontban találjuk, z(x ) = 8.2-es függvényértékkel. Házi feladat ezt leellenőrizni... Mivel nem kaptunk egész megoldást ezért az eredeti feladatot részproblémákra kell bontanunk. A leggyakoribb módszer az, hogy két részre vágjuk a problémát, mégpedig egy olyan változó mentén, amelynek a relaxált optimumhelyen az értéke nem volt egész. Jelen esetben vágjuk ketté a lehetséges megoldások halmazát aszerint, hogy az x 1 változó értéke legfeljebb 3 vagy legalább 4. (a relaxált optimumban x 1 = 3.8). Fontos megjegyezni, hogy ezzel biztosan nem veszítünk el egész megoldást, hiszen egy egész megoldásban az x 1 értéke nem lehet 3 és 4 között (mert egész kell legyen) Tehát az alábbi két részfeladatot definiálhatjuk: x 1 3 Részprobléma 1 x 1 4 Részprobléma 2 Sárgával jelöltük az új feltételeket. Oldjuk meg a második részprobléma relaxáltját! (Miért pont másodikat? Mert csak. Lehetne az elsőt is.) Újfent házi feladat ellenőrizni, hogy az optimális megoldás az x = (4,2.9) és z(x ) = 7.6 4

Vizsgáljuk egyesével az algoritmus 3. pontjának eseteit. Van megoldás, de nem egész, még nem találtunk egész megoldást, így nincs mihez hasonlítani, ezért vissza a 2-es lépésre és bontsuk szét ezen feladatot most az x 2 változó mentén! A B&B fában ez az alábbi lépéseket jelenti: És az új részproblémák: x 1 4 x 2 2 Részprobléma 3 x 1 4 x 2 3 Részprobléma 4 A 3. részprobléma megoldása során az x = (4,2) és z(x ) = 4. Ez az optimumhely egész. Így mostantól tudjuk, hogy a legjobb egész megoldás értéke 4. Így ezt az ágat lezárjuk. A 4. részproblémának nincs lehetséges megoldása így ezt az ágat is lezárjuk. 5

Az algoritmus szerint a 3. lépésre kell menni, azaz válasszunk egy nem lezárt részproblémát, ilyen most csak egy van az 1-es. Vegyük észre, hogy ebben az esetben az x 1 3 erősebb feltétel mint a, így utóbbi elhagyható. Az 1. részprobléma optimális megoldása: x = (3,2.6), és z(x ) = 7.4. Van megoldás, az nem egész, és értéke nem rosszabb mint a korábban talált. (7.4 4). Tehát még van esély arra, hogy ezen az ágon találunk jobb megoldást mint a 4. Ezért tovább kell bontani a feladatot az x 2 mentén. 6

x 1 3 x 2 2 Részprobléma 5 x 1 3 x 2 3 Részprobléma 6 A 6. részproblémának nincs lehetséges megoldása, így ezt az ágat lezárjuk. Az 5. részprobléma optimális megoldása x = (1.8,2) és z(x ) = 6.2. Mivel 6.2 4 ezért az 5. részproblémát tovább kell bontanunk az x 1 mentén. x 1 1 x 2 2 Részprobléma 7 x 1 3 x 2 2 x 1 2 Részprobléma 8 Oldjuk meg a 8-as részproblémát! Az optimális megoldás x = (2,2) és z(x ) = 6. Ez egész, és jobb mint a korábbi. Ezzel ezt az ágat lezárhatjuk. 7

Válasszunk egy nem lezárt részproblémát, ilyen megint egyetlen egy van a 7-es. Ezen feladat optimális megoldása az x = (1,1.6) és z(x ) = 5.4. Ezen érték kevesebb mint a korábban talált legjobb egész megoldás (5.4 < 6), így ezen ágon nem találhatunk jobb egész megoldást, ezért ezt az ágat is lezárjuk. ELFOGYTAK A LEZÁRATLAN ÁGAK! VÉGE. Az optimális egész megoldás az x = (2,2) és z(x ) = 6. 4. Összefoglalás Ne ijedjünk meg a viszonylag bonyolult leírástól, a B&B algoritmus logikus, ha észben tartjuk, hogy a relaxált feladat optimuma sosem rosszabb mint az ILP optimuma. Vegyük észre, hogy a B&B egy fát épít melynek gyökere az eredeti feladat. A fa minden csúcsa egy probléma és egy csúcs mindig részproblémája az összes ősének. Ez azt is jelenti, hogy a fában lefelé haladva egyre szűkítjük a lehetséges megoldások halmazát, így az optimumunk sem javulhat. Ha egy csúcsban lévő problémának már a relaxáltja is rosszabb mint egy már a fában valahol másutt talált egész megoldás, akkor ezen csúcsot nem kell kifejteni (szétválasztani), hiszen a leszármazottakban biztosan nem fogunk jobb megoldást találni. Ugyanakkor ha egy csúcsban már nincs lehetséges megoldás, vagy egész megoldásba értünk, akkor azt sem kell tovább vizsgálni. 8

5. Megjegyzések Kapcsolat a Bonya/Számtud/OnlineAlg(MSc) kurzusokkal: A sima LP feladatok megoldása P-beli, míg az egészértékű programozás NP-beli. Ez kb. azt jelenti, hogy az LP feladatok megoldhatók reális időn belül, míg az ILP-k nem. A P hivatalosan a polinomidőben megoldható, az NP a nemdeterminiszitkusan polinomidőben megoldható problémák osztályát jelenti. Egyesek úgy emlékeznek rá, hogy az LP feladat Piskóta, míg az ILP NemPiskóta... Tehát az egészértékű lineáris programozási feladatok (ILP) a nehéz kategóriába tartoznak. Az algoritmus 3. pontjában nem specifikált, hogy melyik részproblémát bontsuk tovább. Itt különböző heurisztikák alkalmazhatók pl. mélységi vagy szélességi keresés szerint választunk egy nem lezárt csúcsot. 9