Pisteen x lähistö koostuu kaikista ratkaisuista, jotka on saatu x:stä tekemällä siihen yksi siirto:

Samankaltaiset tiedostot
Edellä on tarkasteltu luettelointimenetelmiä, jotka ainakin periaatteessa

Algoritmit 2. Luento 13 Ti Timo Männikkö

Algoritmit 2. Luento 12 To Timo Männikkö

Demo 1: Simplex-menetelmä

Luetteloivat ja heuristiset menetelmät. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Kombinatorinen optimointi

Algoritmit 2. Luento 12 Ke Timo Männikkö

Kimppu-suodatus-menetelmä

Lineaarisen kokonaislukuoptimointitehtävän ratkaiseminen

Search space traversal using metaheuristics

3.4 Peruutus (backtracking)

. Kun p = 1, jono suppenee raja-arvoon 1. Jos p = 2, jono hajaantuu. Jono suppenee siis lineaarisesti. Vastaavasti jonolle r k+1 = r k, suhde on r k+1

Lineaarinen optimointitehtävä

Harjoitus 6 ( )

TIES592 Monitavoiteoptimointi ja teollisten prosessien hallinta. Yliassistentti Jussi Hakanen syksy 2010

Luento 10: Optimointitehtävien numeerinen ratkaiseminen; optimointi ilman rajoitusehtoja

Harjoitus 6 ( )

Luento 8: Epälineaarinen optimointi

Luento 8: Epälineaarinen optimointi

Geneettiset algoritmit

Malliratkaisut Demot

8. Ensimmäisen käyvän kantaratkaisun haku

Implementation of Selected Metaheuristics to the Travelling Salesman Problem (valmiin työn esittely)

4.5 Kaksivaiheinen menetelmä simplex algoritmin alustukseen

isomeerejä yhteensä yhdeksän kappaletta.

Kuvioton metsäsuunnittelu Paikkatietomarkkinat, Helsinki Tero Heinonen

Haitallinen valikoituminen: yleinen malli ja sen ratkaisu

Malliratkaisut Demot

Yhden muuttujan funktion minimointi

Malliratkaisut Demot

Algoritmit 2. Luento 11 Ti Timo Männikkö

4. Luennon sisältö. Lineaarisen optimointitehtävän ratkaiseminen Simplex-menetelmä

Mat Lineaarinen ohjelmointi

Kuljetustehtävä. Materiaalia kuljetetaan m:stä lähtöpaikasta n:ään tarvepaikkaan. Kuljetuskustannukset lähtöpaikasta i tarvepaikkaan j ovat c ij

Optimaalisuusehdot. Yleinen minimointitehtävä (NLP): min f(x) kun g i (x) 0 h j (x) = 0

(p j b (i, j) + p i b (j, i)) (p j b (i, j) + p i (1 b (i, j)) p i. tähän. Palaamme sanakirjaongelmaan vielä tasoitetun analyysin yhteydessä.

Luento 11: Rajoitusehdot. Ulkopistemenetelmät

Luento 3: Simplex-menetelmä

Gradient Sampling-Algoritmi

1 Rajoittamaton optimointi

Ratkaisu: a) Kahden joukon yhdisteseen poimitaan kaikki alkiot jotka ovat jommassakummassa joukossa (eikä mitään muuta).

1 + b t (i, j). Olkoon b t (i, j) todennäköisyys, että B t (i, j) = 1. Siis operaation access(j) odotusarvoinen kustannus ajanhetkellä t olisi.

Matematiikan ja tilastotieteen laitos Matematiikka tutuksi Harjoitus 2, malliratkaisut

Luento 9: Yhtälörajoitukset optimoinnissa

Malliratkaisut Demot

Haku osittaisen informaation vallitessa

Ovatko seuraavat väittämät oikein vai väärin? Perustele vastauksesi.

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

Talousmatematiikan perusteet: Luento 12. Lineaarinen optimointitehtävä Graafinen ratkaisu Ratkaisu Excel Solverilla

IV. TASAINEN SUPPENEMINEN. f(x) = lim. jokaista ε > 0 ja x A kohti n ε,x N s.e. n n

Malliratkaisut Demo 1

= 5! 2 2!3! = = 10. Edelleen tästä joukosta voidaan valita kolme särmää yhteensä = 10! 3 3!7! = = 120

(b) Onko hyvä idea laske pinta-alan odotusarvo lähetmällä oletuksesta, että keppi katkeaa katkaisukohdan odotusarvon kohdalla?

Valitaan alkio x 1 A B ja merkitään A 1 = A { x 1 }. Perinnöllisyyden nojalla A 1 I.

Sekalukuoptimointi. Lehtonen, Matti Matemaattisen ohjelmoinnin seminaari, Tietojenkäsittelytieteen laitos Helsingin Yliopisto

7.4 Sormenjälkitekniikka

Duaalisuus kokonaislukuoptimoinnissa. Mat , Sovelletun matematiikan tutkijaseminaari, kevät 2008, Janne Karimäki

Malliratkaisut Demot

Luento 4: Lineaarisen tehtävän duaali

Numeeriset menetelmät

4 Heuristinen haku. Eero Hyvönen Helsingin yliopisto

12. Hessen matriisi. Ääriarvoteoriaa

Harjoitus 4: Matlab - Optimization Toolbox

3. laskuharjoituskierros, vko 6, ratkaisut

Tehtäväsarja I Tehtävät 1-5 perustuvat monisteen kappaleisiin ja tehtävä 6 kappaleeseen 2.8.

Mat Lineaarinen ohjelmointi

1 Lukujen jaollisuudesta

Jälki- ja herkkyysanalyysi. Tutkitaan eri kertoimien ja vakioiden arvoissa tapahtuvien muutosten vaikutusta optimiratkaisuun

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Piiri K 1 K 2 K 3 K 4 R R

Osakesalkun optimointi

5/11 6/11 Vaihe 1. 6/10 4/10 6/10 4/10 Vaihe 2. 5/11 6/11 4/11 7/11 6/11 5/11 5/11 6/11 Vaihe 3

Numeeriset menetelmät

Ohjelmoinnin peruskurssi Y1

Shorin algoritmin matematiikkaa Edvard Fagerholm

Algoritmit 2. Luento 8 To Timo Männikkö

MS-A0207 Differentiaali- ja integraalilaskenta 2 (Chem) Yhteenveto, osa I

Analyysi 1. Harjoituksia lukuihin 1 3 / Syksy Osoita täsmällisesti perustellen, että joukko A = x 4 ei ole ylhäältä rajoitettu.

=p(x) + p(y), joten ehto (N1) on voimassa. Jos lisäksi λ on skalaari, niin

LUKU 3. Ulkoinen derivaatta. dx i 1. dx i 2. ω i1,i 2,...,i k

Topologia Syksy 2010 Harjoitus 9

Mikäli funktio on koko ajan kasvava/vähenevä jollain välillä, on se tällä välillä monotoninen.

ABHELSINKI UNIVERSITY OF TECHNOLOGY

Ohjelmoinnin peruskurssi Y1

Mat Lineaarinen ohjelmointi

JAKSO 2 KANTA JA KOORDINAATIT

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 6 To Timo Männikkö

r > y x z x = z y + y x z y + y x = r y x + y x = r

Luento 6: Monitavoiteoptimointi

Tekijäryhmiä varten määritellään aluksi sivuluokat ja normaalit aliryhmät.

Jatkuvat satunnaismuuttujat

Ohjelmoinnin perusteet Y Python

Algoritmit 2. Luento 10 To Timo Männikkö

Johdatus diskreettiin matematiikkaan Harjoitus 2, Osoita että A on hyvin määritelty. Tee tämä osoittamalla

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

Vastaus 1. Lasketaan joukkojen alkiot, ja todetaan, että niitä on 3 molemmissa.

Oletetaan ensin, että tangenttitaso on olemassa. Nyt pinnalla S on koordinaattiesitys ψ, jolle pätee että kaikilla x V U

min x x2 2 x 1 + x 2 1 = 0 (1) 2x1 1, h = f = 4x 2 2x1 + v = 0 4x 2 + v = 0 min x x3 2 x1 = ± v/3 = ±a x 2 = ± v/3 = ±a, a > 0 0 6x 2

Matematiikan tukikurssi

Transkriptio:

24 10. Lokaali haku Optimoinnissa heuristisilla menetelmillä tarkoitetaan algoritmeja, jotka osassa tapauksista antavat tehtävälle hyvän tai lähes optimaalisen ratkaisun, mutta joiden toimivuutta ei voida täsmällisesti taata. Heuristiset menetelmät voivat olla deterministisiä tai stokastisia. Usein heuristiset algoritmit ovat hyvin tehtäväkohtaisia ja käyttävät hyväkseen ongelman erityispiirteitä. Yleisempään tarkoitukseen sopivia heuristisia menetelmiä sanotaan myös metaheuristiikaksi. Edellä käsitelty branch-and-bound on esimerkki sellaisista tarkoista algoritmeista, joiden avulla voidaan hakea (ellei aika lopu kesken) globaali optimi, ja algoritmin toiminnan onnistuminen voidaan todistaa (oletuksena ajan riittävyys). Lokaalin haun menetelmät eroavat näistä siinä, että ne nimensä mukaisesti toimivat paikallisen informaation varassa ja eivät välttämättä konvergoi kohti globaalia optimia. Näin voi käydä vaikka käypä joukko olisi suhteellisen pienikin äärellinen joukko, menetelmät eivät välttämättä "osaa" nähdä lokaalia lähiympäristöä kauemmaksi. Etuna lokaalin haun menetelmillä voi kuitenkin olla kyky saavuttaa nopeasti suurissakin ongelmissa hyviä ratkaisuja, vaikka ei välttämättä täysin optimaalisia. Tarkastellaan optimointiprobleemaa muodossa max z = f(x), x S X, missä X on ratkaisuavaruus ja S probleeman käypä joukko. Tässä X voi olla yleisempi kombinatorisen optimoinnin tehtävän ratkaisuavaruus kuin R n. Toisin sanoen, tehtävän muotoilua MI(N)LP:ksi ei välttämättä edellytetä. Oleellista on nyt sopia, mitä ovat tietyn ratkaisun x lähellä olevat muut ratkaisut. Lähellä x:ää olevat "naapurit" ajatellaan saaduksi ratkaisusta x sopivalla siirrolla. Se, mitkä siirrot katsotaan sopiviksi, määrittelee avaruuden X lähistörakenteen. Oletamme, että nämä siirrot on sovittu. (Huomataan, että "kokonaislukumaailmassa" läheisyyden ilmaiseminen voi olla vaikeampaa, kuin esimerkiksi R n :ssä tai muussa metrisessä avaruudessa, jossa on käytössä etäisyyden käsite.) Olkoon M kaikkien siirtojen m joukko. Ratkaisua x muutetaan siirrolla m siten, että tulos x ' = x m on uusi "häiritty" ratkaisu. Siirto m on käypä (sallittu), jos x m on käypä, muuten siirto on epäkäypä. Pisteen x lähistö koostuu kaikista ratkaisuista, jotka on saatu x:stä tekemällä siihen yksi siirto: N(x) = {x' X x' = x m, m M }. Käypä lähistö saadaan tekemällä vain sallittuja käypiä siirtoja: N(x) S. (Termiä "lähistö" on käytetty tarkoituksellisesti topologian termin "ympäristö" asemasta sekaantumisen välttämiseksi)

25 Lähistön koko on sen alkioiden lukumäärä. Se kertoo siis, kuinka monta erilaista siirtoa x:lle voidaan tehdä ("nollasiirto" eli että ei tehdä mitään siirtoa luetaan useimmiten myös siirroksi). Kaikille lähistöjä käyttäville menetelmille on onnistumisen kannalta oleellista, minkälainen lähistöstruktuuri on valittu. Jos lähistöt ovat liian suuria (ääritapauksessa koko ratkaisuavaruus X voi olla lähistönä), niin menetelmän jokainen iteraatio voi olla samaa luokkaa laskentatyöltään kuin alkuperäinen probleema. Jos lähistö on taas liian suppea, niin menetelmät etenevät hyvin hitaasti. Lokaali haku (Local Search, Neighborhood Search) on menetelmä(tyyppi), jossa jokaisessa iteraatiossa uusi iteraatiopiste valitaan nykyisen lähistöstä. Valintaan voidaan käyttää evaluointifunktiota E, jonka maksimiarvon mukaan uusi piste poimitaan. Algoritmi on silloin seuraava, kun aloituspisteenä on jokin käypä ratkaisu x 0 : 1. k:=1, x k =x 0, x * = x 0 2. Laske E(x) x N(x k ) 3. x k+1 :=argmax{e(x) x N(x k )} 4. k:=k+1 5. Jos f(x k )>f(x * ), niin tee päivitys x * = x k. 6. Onko lopetusehto voimassa? Jos on, x * on paras ratkaisu. Jos ei, niin jatka kohdasta 2. (Evaluointifunktio ja lopetusehto jäävät tässä yleisellä tasolla määrittelemättä. Yleensä evaluointifunktio on maksimointitehtävässä kohdefunktio f sellaisenaan ja minimointitehtävässä -f tai positiivisen funktion tapauksessa myös 1/f. Osa sellaisista rajoitusehdoista, jotka on vaikea ilmaista lähistöjen käypyydellä, voidaan ottaa huomioon evaluointifunktiossa esim. sakkotermien avulla.) Jos evaluointifunktiona käytetään pelkästään kohdefunktiota f, kyseessä on jyrkimmän nousun (steepest ascent) menetelmä. (Minimoinnissa: jyrkin vietto, steepest descent.) Sanotaan myös, että algoritmi on ahne (greedy), koska joka kerta valitaan eniten kohdefunktiota parantava vaihtoehto lähistöstä. (On sukua derivoituvien funktioiden gradienttimenetelmälle, mutta merkitys on suhteessa suurempi.) Lokaalin haun suurimpia ongelmia on, että se jää usein kiinni lokaaliin optimiin. Esimerkki 1. Muodosta pisteen x = [0 1 0 0 1] T B 5 lähistö, jos siirtona on a) yhden komponentin (bitin) muuttaminen nollasta ykköseksi tai päinvastoin. b) kahden komponentin vaihto keskenään (esim. 1. ja 5. x' = [1 1 0 0 0] T ).

26 Esimerkki 2: Kaupparatsuongelman ratkaisumenetelmä 2-opt Menetelmässä verrataan olemassa olevaa ratkaisua x sellaisiin lähellä oleviin ratkaisuihin, jotka saadaan vaihtamalla kaksi reitin jaksoa toisiin kahteen jaksoon, muuten reitti säilyy samana. Siirto on siis tämä vaihto, ja lähistö koostuu näin saaduista reiteistä. Kaupunkien lukumäärä N, käytävä läpi kaikki kaupungit täsmälleen kerran. Aloitus kaupungista 1, johon sitten lopuksi palataan. Reitti on jono kaupunkeja i 1, i 2,, i N, missä i 1 = 1 ja jono kertoo järjestyksen, jossa kaikki kaupungit käydään läpi. Reitin jaksot ovat i 1 ->i 2, i 2 ->i 3,, i N-1 ->i N, i N ->i 1. Nyt oletetaan, että tilanne on symmetrinen, eli jakson suunnalla ei ole väliä ja jokaisen jakson kustannus on sama molempiin suuntiin. Kustannukset saadaan symmetrisestä kustannusmatriisista W, koko N*N. Koska vaihdettavia jaksoja on täsmälleen kaksi, ne eivät voi olla peräkkäin. (Jos poistetaan peräkkäiset kaksi jaksoa, jää keskimmäinen kaupunki eristetyksi, jolloin se pitää yhdistää johonkin muuhun, mikä taas pakottaa poistamaan kolmannenkin jakson jostakin kohtaa) Edelleen todetaan, että jos tietyt kaksi jaksoa (a,b) ja (c,d) on poistettu, niin reitti on korjattava tasan kahdella uudella jaksolla käymättä missään kaupungissa useammin kuin kerran. Silloin uusiksi jaksoiksi reittiin on otettava (a,c) ja (b,d), muita mahdollisuuksia ei ole, kuten kuvasta voidaan päätellä. Joten vaihto on yksiselitteinen, kun poistettavat jaksot on päätetty. Algoritmi lähtee jaksosta i 1 ->i 2, käy läpi kaikki muut (paitsi vieressä olevia i 2 ->i 3 ja i N ->i 1 ) ja kokeilee kannattaako vaihtaa. Vaihto on kannattava, mikäli kustannusten pudotus W(a,b)+W(c,d)-(W(a,c)+W(b,d)) on positiivinen. Jakson i 1 ->i 2 vaihtokaveriksi otetaan se (jos löytyy), joka antaa suurimman positiivisen pudotuksen. Näin käydään läpi kaikki mahdollisuudet muutella reittiä kahden vaihdolla. Lopetetaan, kun ei enää löydy kannattavaa vaihtoa. Silloin on löydetty (ainakin) lokaalisti optimaalinen reitti. Se ei ole välttämättä globaali optimi, mutta on käytännössä todettu usein melko hyväksi. Etuna on laskennan nopeus ja menetelmän yksinkertaisuus. (Menetelmä tunnetaan yleisemmässä muodossaan k-opt-algoritmina ja Lin-Kernighanalgoritmina.) Oheisissa kuvissa on Matlabilla toteutetulla 2-opt-algoritmilla ratkaistu 300:n kaupungin TSP satunnaisesta alkuratkaisusta lähtien.

27

28 11. Simuloitu mellotus Lokaalin haun suurimpia ongelmia oli algoritmin juuttuminen lokaaliin optimiin. Eräs keino korjata tämä tilanne on löydettävissä fysikaalisen analogian kautta metallien lämpökäsittelystä. Kun sulaa hehkuvaa metallia jäähdytetään sopivan hitaasti (annealing), sen kiderakenne päätyy minimienergiatilaan. Jos taas jäähdytys on äkkinäistä (rapid quenching), rakenne voi jäädä lokaaliin optimitilaan ja tuloksena on hauraampi materiaali. Tätä matkivat matemaattiset optimointialgoritmit tunnetaan nimellä simuloitu mellotus (simulated annealing, simulated cooling, simuloitu hehkutus, simuloitu jäähdytys, termodynaaminen algoritmi). Ne kuuluvat stokastisten lokaalisten hakualgoritmien luokkaan. Periaate on lyhyesti seuraava: Olemassa olevan iteraatiopisteen lähistöstä valitaan satunnaisesti vertailupiste. Jos se parantaa kohdefunktion arvoa, se otetaan uudeksi iteraatiopisteeksi. Ellei, se voidaan silti hyväksyä uudeksi iteraatiopisteeksi todennäköisyydellä P(T, d) = e -d/t,

29 missä d on kohdefunktion huononnus pisteestä toiseen siirryttäessä ja T on ohjausparametri ("lämpötila"). Siis paljon nykyistä huonompi ratkaisu voi tulla kysymykseen vain hyvin pienellä todennäköisyydellä. Todennäköisyysfunktion muoto on peräisin Boltzmannin jakaumasta. Ohjausparametriä T muutetaan vakionopeudella r pienemmäksi (lämpötilan lasku, r = cooling rate). Alussa lämpötila T on suuri, jolloin todennäköisyys huononnusten hyväksymiseen on suurehko. Iteroinnin edetessä lämpötila T laskee ja huononnusta aiheuttavien ratkaisujen hyväksymisen todennäköisyys lähenee nollaa. Olkoot aloituslämpötila T, jäähdytyskerroin r (0,1), lopetussääntö ja aloitusratkaisu x 1 annettu. Lisäksi tarvitaan iterointiluku L, joka ilmaisee, kuinka monta iterointipistettä samassa lämpötilassa satunnaisesti haetaan, ennen kuin lämpötilaa lasketaan. Koska kyseessä on satunnaistettu lokaali haku, tarvitaan myös pisteen x lähistö N(x). Tällöin algoritmin eräs toteutus on seuraava: Simuloitu mellotus 0. x * = x 1, j = 1, k=1. 1. Jos lopetussääntö on voimassa, lopeta, x * on paras löydetty ratkaisu. Ellei, jatka kohdasta 2. 2. Jos j=l+1, jatka kohdasta 8. Ellei, jatka kohdasta 3. 3. Valitse satunnaisesti piste y N(x k ) ja laske kohdefunktion arvomuutos d = f(y)-f(x k ). 4. Jos d 0, generoi välille [0,1] tasaisesti jakautuneista satunnaisluvuista arvo p ja jatka kohdasta 5. Jos d<0, jatka kohdasta 6. 5. Jos p e -d/t, jatka kohdasta 6. Ellei, aseta j=j+1 ja jatka kohdasta 2. 6. Aseta x k+1 =y ja k=k+1. 7. Jos f(x k ) < f(x * ), aseta x * = x k, j=1 ja jatka kohdasta 8. Ellei, aseta j=j+1 ja jatka kohdasta 2. 8. Aseta T=rT, j=1 ja jatka kohdasta 1.