• Nem Talált Eredményt

A Branch and Bound algoritmus

In document Optimális erőforrás-tervezés (Pldal 53-56)

1. Irodalmi áttekintés, alapfogalmak

1.6 Optimumkeresési eljárások

1.6.2 Heurisztikus és algoritmikus eljárások összehasonlítása

1.6.2.1 A Branch and Bound algoritmus

A kombinatorikus optimalizálásban illetve a mesterséges intelligenciában igen elterjedt módszer a korlátozás és szétválasztás módszere. A legtöbbször olyan NP-nehéz optimalizálási feladatok megoldásánál alkalmazzák, ahol a nem heurisztikus eljárásokkal történő megoldás meghaladná a mai számítási kapacitásokat. [65, 144, 179, 242, 306]

Az optimális erőforrás-tervezés is NP-nehéz feladat, ami azt jelenti, hogy nagyszámú erőforrás esetén lehetetlen belátható időn belül eredményhez jutni, pedig a feladat igazából nagyszámú erőforrás esetén válik izgalmassá és gyakorlati haszna is ekkor van. Mára már számos könyv és publikáció foglalkozik az eljárással, hol kiterjesztve azt a legáltalánosabb esetekre [242, 276], hol pedig egy-egy speciális problémát taglalva [85, 168, 181, 368]. A feladattípusok sokrétűsége ellenére azonban mindig jellemző, hogy valamiféle globális

minimum vagy maximum értéket keresünk, illetve az, hogy a feladat nagyságának növelésével jelentősen (sokszor exponenciálisan) nő a kiértékelendő részproblémák száma.

Az, hogy az eljárás ilyen széles körben alkalmazható, az annak köszönhető, hogy ez csupán egy kereteljárás, melyet mindig az aktuális problémához kell igazítani. A kereteljárást úgy értelmezhetjük, hogy adott több részeljárás, vagy más néven szabályok, melyeknek csupán általános működését, valamint sorrendjét adja meg a B&B-algoritmus. Azt viszont, hogy az egyes részeljárásokat pontosan hogyan alkalmazzuk, azt már az adott feladat szabja meg.

[242, 276]

A B&B-algoritmus formális leírása

Ahogy az előző részben láthattuk, a B&B-algoritmus leírása, különféle absztrakciós szinteken, már számos tudományos munkában megjelent. Mielőtt az eljárást áttekintenénk, figyelembe kell vennünk, hogy célunk csupán a megvalósítandó rendszer működésének megértése, illetve elméleti hátterének megalapozása, és nem az eljárás teljes részletekbe menő matematikai leírása, vagy például helyességének vizsgálata. Az elosztott rendszerünk egy általános keretet biztosít a már meglévő, speciális feladatokra optimalizált B&B-eljárások számára, így ennek az absztrakciós szintnek megfelelően elegendő a kereteljárással és annak komponenseivel megismerkedni. A jelen fejezet célja tehát az általános keretalgoritmus megismerése és formális leírása. Más, matematikailag részletesebb leírást találhatunk például Imreh Balázs „Kombinatorikus optimalizálás” című könyvében. Számunkra fontosabb az eljárás részeit képező szabályok kiemelése. [242, 276]

Az algoritmusban alkalmazott szabályok és szerepük

Az egyszerűség kedvéért a továbbiakban feltételezzük, hogy minden tekintett optimalizálási probléma minimalizálási feladat, azaz a lehetséges megoldások közül a minimális értékűt szeretnénk kiválasztani. A B&B algoritmus négy alapvető szabállyal jellemezhető, melyek a következők: [242, 276]

1. szétválasztási szabály (branching rule): ez a szabály határozza meg, hogy egy adott részproblémát mi alapján választunk szét kettő vagy több részproblémára.

2. korlátozási szabály (bounding rule): azt határozza meg, hogy miként számolható ki egy adott részprobléma optimális megoldásának alsó korlátja.

3. kiválasztási szabály (selection rule): ez a szabály definiálja, hogy miként válasszuk ki a következő szétválasztandó részproblémát a még feldolgozásra váró részproblémák közül.

4. kizárás szabály (elimination rule): ez a szabály adja meg, hogy mi alapján zárhatjuk ki azokat a részproblémákat, amelyek megoldásai nem vezethetnek a kiindulási probléma egy optimális megoldásához. Legyen P0 a megoldandó minimalizálási probléma. A szétválasztási szabály ismételt alkalmazásával az eredeti P0 problémának egyre finomodó felbontását hozzuk létre. Az így kapott új részproblémák egy B=(P,A)-val jelölt fa struktúrába rendezhetők, ahol P a csúcsok, A pedig az élek halmaza. Ezt a fát keresőfának nevezzük. A keresőfa gyökere a P0 kiindulási probléma. Ha egy Pj részprobléma a Pi részprobléma dekompozíciójából jött létre, akkor (Pi, Pj) ∈ A. Egy csúcs szintje a fában megegyezik a gyökértől az adott csúcsig vezető élek számával. A gyökér a 0. szinten helyezkedik el. Legyen továbbá f(Pi) a Pi részprobléma optimális megoldása, valamint ha Pi részproblémát P1…Pk

részproblémákra bontjuk szét, akkor az f függvényre teljesül, hogy:

( )

Pi j k

{

f

( )

Pj

}

f min1,..,

= = . (1.6.3.1-1)

Ezek után legyen g(Pi) a Pi részproblémához tartozó alsó korlát, melyet a korlátozási szabály alapján számítunk ki, T pedig azoknak a részproblémáknak a halmaza, amelyek már nem bonthatók további részproblémákra, azaz a keresőfa leveleit képviselik. A g függvény a következő tulajdonságokkal rendelkezik:

g(Pi) ≤ f(Pi), bármely Pi ∈ P esetén; (1.6.3.1-2)

g(Pi) = f(Pi), bármely Pi ∈ T esetén; (1.6.3.1-3)

g(Pi) ≤ g(Pj), bármely (Pi, Pj) ∈ A esetén. (1.6.3.1-4) A tulajdonságok fentről lefelé a következőket jelentik: g egy alsó becslése f-nek, g pontos becslés, ha Pi dekompozíció nélkül megoldható, valamint az alsó korlátok monoton nem csökkenőek. A B=(P,A) keresőfa adott Pi csúcsaihoz címkeként hozzárendeljük a g(Pi) értéket. Ezeknek a címkéknek a továbbiakban fontos szerepe lesz abban, hogy eldöntsük, a keresőfa egy adott ágát lezárhatjuk-e, vagy tovább folytassuk a keresést. A keresés, azaz a

keresőfában található további felbontásra váró részproblémák feldolgozási sorrendje különféle stratégiák szerint történhet.

Ilyen stratégiák, vagy más néven heurisztikus keresések lehetnek például a mélységi, szélességi vagy legjobb értéken alapuló keresések. A keresés sorrendjét a kiválasztási szabály határozza meg, és jelentősen befolyásolhatja az algoritmus hatékonyságát. A kizárási szabályban háromféle tesztet alkalmazhatunk, hogy megállapítsuk, az adott részproblémát kizárhatjuk-e az optimális megoldás kereséséből. [242, 276]

Az első ilyen teszt azt vizsgálja, hogy az adott részproblémának lehetséges-e olyan megoldása, amely kielégíti a kezdeti feltételeket (feasibility test). Azt a megoldást, amely kielégíti a kezdeti feltételeket, lehetséges megoldásnak (feasible solution) nevezzük.

[242, 276]

A második teszt azt vizsgálja, hogy az adott részproblémához címkeként hozzárendelt alsó korlát érték nagyobb, illetve egyenlő-e az eddig ismert legjobb lehetséges megoldás értékével (bounding test). Azaz Pi részprobléma esetén g(Pi) ≥ f*(P0) feltétel teljesül-e, ahol f*(P0) az eddig ismert legjobb lehetséges megoldás, angol nevén: incumbent. Ugyanis, ha ez a feltétel teljesül, akkor a (1.6.3.1-4) és (1.6.3.1-2) egyenlőtlenségek alapján a Pi ágat a keresőfában lezárhatjuk, hiszen Pi bármely Pj gyermekére teljesülnek a f(Pj) ≥ g(Pj) ≥ g(Pi) ≥ f*(P0) egyenlőtlenségek. Más szóval ez azt jelenti, hogy Pi bármely Pj részproblémájának megoldása legfeljebb olyan jó lehet, mint az eddigi ismert legjobb megoldás, tehát felesleges a Pi részproblémát tovább bontani. [242, 276]

A harmadik teszt, a dominancia teszt (dominance test) ugyanazon a megfontoláson alapszik, mint az előző alsó korlát teszt, azzal a különbséggel, hogy itt a vizsgálandó Pi

részproblémát nem az eddigi ismert legjobb lehetséges megoldáshoz hasonlítjuk, hanem minden korábban kiértékelt részproblémához. Ha a korábbi Pj részproblémák közül akár egy olyat is találunk, amelyre fennáll, hogy f(Pj) ≤ g(Pi), akkor azt mondjuk, hogy Pj domináns Pi

-vel szemben, azaz Pi -nek nem lehet jobb megoldása, mint Pj -nek, tehát ezt az ágat szintén lezárhatjuk. [242, 276]

In document Optimális erőforrás-tervezés (Pldal 53-56)