Luetteloivat ja heuristiset menetelmät Mat-2.4191, Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki
Sisältö Branch and Bound sekä sen variaatiot (Branch and Cut, Lemken menetelmä) Optimointiin perustuvat heuristiset menetelmät Dynaaminen ohjelmointi Lokaaliin etsintään perustuvat menetelmät Simuloitu jäähdytys Yhteenveto
Branch and Bound (B&B) Hajota ja hallitse Yleinen B&B: alkuperäinen tehtävä: minimoi c x ehdolla x F muutetaan muotoon: minimoi c x ehdoilla x F i, i = 1,, k, minkä jälkeen aliongelmien ratkaisuista valitaan optimaalinen
Branch and Bound Jäljelle jäävät aliongelmat voidaan edelleen jakaa uusiin aliongelmiin (branch). Oletus: aliongelmalle F i osataan helposti laskea alaraja b(f i ) (bound): b(f i ) min{ c x x F i } Olkoon U toistaiseksi tutkituista aliongelmista optimaalisin. Jos U b(f i ) jollekin F i, niin kyseinen aliongelma voidaan poistaa tarkastelusta.
Branch and Cut Branch and Bound -algoritmin variaatio Idea: aliongelmiin lisätään uusia rajoituksia, jotka leikkaavat pois osan reaalilukuarvoisista ratkaisuista, mutta säilyttävät mahdolliset kokonaislukuratkaisut (leikkaustaso) Konvergointi saattaa nopeutua huomattavasti (varsinkin, jos leikataan syvältä )
Lemken menetelmä Branch and Bound -algoritmin variaatio Tavoite: ratkaistaan LCP(q,M) -ongelma (Linear Complementary Problem), (q R n, M R nxn ): w = Mz + q, (käypyys), z 0, w 0, (käypyys), z w = 0, (komplementaarisuus), z, w R n. Voidaan käyttää kvadraattisten optimointitehtävien ratkaisemiseen (Q R dxd, c R d, A R mxd, b R m ): minimoi (1/2)x Qx + c x ehdolla Ax b, x R d +
Optimointiin perustuvat heuristiset menetelmät Tutkitaan kokonaislukuongelmaa (ILP) (tai BILP), esim: minimoi c x ehdolla x P Z n +, missä P = { x R n +, Ax b } Strategia: Lasketaan lineaarisen relaksaation optimiratkaisu (Simplex) Pyöristetään lineaarisen relaksaation optimaalinen ratkaisu kokonaislukuongelman käypään ratkaisuun Esitellään kaksi menetelmää: Feasibility Pump (antaa jonkin käyvän ratkaisun) Dive and Fix
Feasibility Pump -algoritmi kokonaislukutehtävälle (ILP) Input: A Z mxn, b Z m, c Z n, iteraatioiden maksimilukumäärä T Output: Kokonaislukuongelman käypä ratkaisu x tai ei tulosta Algoritmi: 1. Lasketaan lineaarisen relaksaation optimiratkaisu x * (Simplex) Jos P = : stop ja anna ulos: ei tulosta Jos x * on kokonaislukuarvoinen: stop ja anna ulos: x * Iteroidaan korkeintaan T kertaa: 2. Pyöristetään x * komponenteittain kokonaislukuvektoriin ẋ 3. Lasketaan kokonaislukuvektorille ẋ sitä L 1 -normin mielessä lähinnä oleva joukon P piste x. Jos x on kokonaislukuarvoinen: stop ja anna ulos: x Muutoin: aseta x * = x ja mene kohtaan 2.
Feasibility Pump -algoritmi kokonaislukutehtävälle (ILP) Algoritmi tuottaa kaksi jonoa: {(x * ) j }, alkiot toteuttavat epäyhtälöt {(ẋ) j }, alkiot ovat kokonaislukuarvoisia Toiveena on, että jonot konvergoivat kohti toisiaan Algoritmi voi jäädä silmukkaan Tällöin kohdan 2. pyöristykseen voi lisätä satunnaisuutta Epäyhtälöihin voidaan lisätä ehto c x Z.
Dive and Fix -algoritmi binäärilukutehtävälle (BILP) Input: A Z mxn, b Z m, c Z n Output: Binääriongelman käypä ratkaisu x tai ei tulosta Algoritmi: 1. Lasketaan lineaarisen relaksaation optimiratkaisu x * (Simplex) Jos P = : stop ja anna ulos: ei tulosta Jos x * on kokonaislukuarvoinen: stop ja anna ulos: x * 2. F = { j 0 < x * j < 1} 3. Niin kauan kuin F tee: (a) (Dive) k = indeksi j, jolle x * j 1/2 pienin (b) (Fix) kiinnitä x * k = 0 tai x* k = 1 sen mukaan kummassa tapauksessa lineaarisen relaksaation optimiratkaisu on pienempi. Jos kumpikin antaa ei-käyvän arvon: stop ja anna ulos: ei tulosta (c) mene kohtaan 2. Vaiheen 3. kohdille (a), (b) ja (c) on erilaisia variaatioita
Dynaaminen ohjelmointi (DP) B&B on luetteloiva menetelmä, joka antaa tarkan ratkaisun, mutta välttää liiallista luetteloimista Dynaaminen ohjelmointi on toinen mahdollinen lähestymistapa, joka käyttää implisiittistä luettelointia kokonaislukuongelmiin Voidaan soveltaa esim. kauppamatkustajan ongelmaan tai selkärepun täyttöongelmaan Suuren työmäärän takia voidaan joutua turvautumaan approksimatiiviseen dynaamiseen ohjelmointiin (ADP)
Dynaaminen ohjelmointi (DP) Yleisiä suuntaviivoja DP -algoritmien suunnitteluun 1. Käypä ratkaisu muodostuu jonosta valintoja; kokonaiskustannus on yksittäisten valintojen kustannusten summa. 2. Systeemin kulloinenkin tila määritellään kaikkien aikaisempien relevanttien valintojen yhteenvetona. 3. Määritetään, mitkä tilatransitiot ovat mahdollisia; yksittäisen päätöksen kustannuksen määritellään samaksi kuin tilatransition aiheuttama kustannus 4. Määritellään rekursio aloitustilasta tavoitetilaan.
Lokaali haku Lokaali haku on yleinen lähestymistapa optimointiheuristiikan suunnitteluun seuraavantyyppiselle tehtävälle: minimoi c(x) ehdolla x F Idea: aloitetaan jostakin x F, lasketaan c(x) lasketaan c(y) jollekin y F, joka on x:n naapuri Jos c(y) < c(x), valitaan y ja jatketaan edelliseen tapaan Jos tällaista alkiota y ei löydy, niin algoritmi pysähtyy, paikallinen optimi on löytynyt
Simuloitu jäähdytys Lokaalin haun ongelma: löydetään yleensä vain paikallisia optimeja, mutta ei välttämättä globaalia (algoritmi juuttuu paikalliseen minimiin). Simuloidun jäähdytyksen tavoitteena on välttää tämän ongelma Algoritmi voi tietyllä todennäköisyydellä hypätä ulos paikallisesta optimikuopasta Hyppäystodennäköisyyttä määrittää parametri T, lämpötila.
Simuloitu jäähdytys Äärellinen joukko F käypiä ratkaisuja, joita kutsutaan tiloiksi. Kustannusfunktio c(x). x F:llä on naapuripisteiden joukko N(x) F Naapuruus on symmetristä: jos y N(x), niin x N(y). Olkoon q xy todennäköisyys, että tilassa x valitaan naapuri y N(x). Tälle pätee: q xy 0, y N(x) q xy = 1.
Simuloitu jäähdytys Algoritmi: Nykyinen tila x Valitaan tutkittavaksi x:n naapuri y todennäköisyydellä q xy Lasketaan c(y) Hypätään tilasta x tilaan y todennäköisyydellä: e -(c(y) - c(x))/t, kun c(y) > c(x) 1, muuten.
Simuloitu jäähdytys x(t):t, missä t on iteraatioiden lukumäärä muodostavat Markovin ketjun Todennäköisyys olla tilassa x lähestyy jotakin tasapainoa π(x), kun T pidetään vakiona ja t. Mitä pienempi T sen suurempi on absoluuttisen optimitilan tasapainotodennäköisyys Toisaalta, mitä pienempi T sen hitaammin lähestytään tasapainotodennäköisyyttä Strategia: alennetaan lämpötilaa, esim. T = C/log(t) Em. strategialla algoritmi päätyy absoluuttiseen optimiin, kun C riittävän suuri
Yhteenveto Luetteloivia ja heuristisia menetelmiä on useita erilaisia. Tässä esiteltiin muutamia niistä. Esittelemättä jääneitä heuristisia menetelmiä mm: Geneettiset algoritmit Tabuhaut Kaikkien algoritmien ongelmana: Joko eksponentiaalinen laskuaika Tai tyydyttävä approksimatiivisiin ratkaisuihin Liittyy P = NP -ongelmaan