Muurahaiskolonnaoptimointi ja kauppamatkustajan ongelma Jaakko Ahola LuK-tutkielma Turun yliopisto Helmikuu 2015 Sisältö 1 Johdanto 3 2 Muunnos oikeista muurahaisista keinotekoisiin 4 2.1 Tuplapolkukoe . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 2.2 Stokastinen malli . . . . . . . . . . . . . . . . . . . . . . . . . 6 2.3 Kohti keinomuurahaisia . . . . . . . . . . . . . . . . . . . . . . 8 2.4 Keinomuurahaiset ja minimikustannuspolut . . . . . . . . . . 10 2.4.1 Todennäköisyyksiin perustuvat menomuurahaiset ja ratkaisun luominen . . . . . . . . . . . . . . . . . . . . 12 2.5 3 Determinisiset paluumuurahaiset ja feromonipäivitys . 13 2.4.3 Feromonien päivitys perustuen ratkaisun laatuun . . . 13 2.4.4 Feromonin haihtuminen . . . . . . . . . . . . . . . . . 13 S-ACO-algoritmi . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.5.1 Polun hakutoiminta . . . . . . . . . . . . . . . . . . . . 14 2.5.2 Polun seuraaminen ja feromonipäivitys . . . . . . . . . 15 2.5.3 Feromonijäljen haihtuminen . . . . . . . . . . . . . . . 16 2.5.4 S-ACO-algoritmilla tehdyt kokeet . . . . . . . . . . . . 17 Muurahaiskolonnaoptimoinnin metaheurestiikka 19 3.1 Kombinatorinen optimointi . . . . . . . . . . . . . . . . . . . . 20 3.2 Laskennallinen kompleksisuus . . . . . . . . . . . . . . . . . . 21 3.3 ACO-metaheurestiikka . . . . . . . . . . . . . . . . . . . . . . 22 3.4 4 2.4.2 3.3.1 Ongelman esitysmuoto . . . . . . . . . . . . . . . . . . 22 3.3.2 Keinomuurahaisten toiminta . . . . . . . . . . . . . . . 24 Pseudokoodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Kauppamatkustajan ongelman ratkaiseminen muurahaiskolonnaoptimoinnilla 28 4.1 Kauppamatkustajan ongelman matemaattinen esitys . . . . . 30 4.2 Algoritmien vertailu ja tulokset . . . . . . . . . . . . . . . . . 30 4.2.1 Taulukot . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.2.2 Päätelmät . . . . . . . . . . . . . . . . . . . . . . . . . 37 1 Viitteet 38 2 1 Johdanto Muurahaisten monimutkainen sosiaalinen toiminta on pitkään kiinnostanut ihmistä. Yksi kiinnostavimmista näkyvistä toiminnoista on kenties muurahaisvaltateiden muodostuminen. Kun olimme lapsia saatoimme astua sellaiselle tai asettaa muita esteitä näille valtateille, ja seurata miten muurahaiset reagoivat näihin häiriötekijöihin. Olemme myös saattaneet pohtia miten nämä tiet ovat muodostuneet ja mihin ne johtavat. On yllättävää huomata, että tietyillä muurahaislajeilla on kyky löytää lyhin reitti paikasta a paikkaan b, vaikka yksittäisen muurahaisen kognitiiviset kyvyt ovat erittäin rajalliset. Tämä perustuu muurahaisten kykyyn hyödyntää feromoneihin pohjautuvaa kommunikointia. Feromoni on kemiallinen tuoksuaine, jota muurahaiset voivat haistaa ja asettaa. Feromoneja on useita erilaisia, mutta tässä yhteydessä tarkoitetaan merkitsemisferomoneja. Tämä käytös on ollut inspiraation lähteenä useisiin optimointialgoritmeihin. Muurahaiskolonnaoptimointalgoritmit (eng. Ant colony optimization algorithms, käytetään vastaisuudessa kirjallisuudessa käytettyä lyhennettä ACOalgoritmit) on eräs menestyneimmistä ja laajimmin käytetyistä algoritmeista, jotka perustuvat muurahaisten käytökseen. Niiden menestys pohjautuu muun muassa siihen, että niitä voidaan soveltaa useisiin kohteisiin ja useille ongelmille ACO-algoritmit on tehokkaimpia. Tämä työ perustuu pääosin Marco Dorigon ja Thomas Stützlen kirjoittamaan kirjaan [1]. Viimeisimmässä osiossa ACO-algoritmien erityistyyppiä Dorigon ja Gambardellan kehittämää ACS-algoritmia vertaillaan muihin luonnon inspiroimiin optimointialgoritmeihin. Kyseinen osio perustuu Dorigon ja Gambardellan artikkeliin [13]. 3 2 Muunnos oikeista muurahaisista keinotekoisiin Muurahaiskolonnat tai laajemmin ilmaistuna sosiaaliset hyönteisyhdyskunnat pystyvät suorittamaan monimutkaisia tehtäviä yksilöiden yksinkertaisuudesta huolimatta, mikä johtuu niiden erittäin rakenteellisesta yhdyskuntajärjestelmästä. Muurahaisalgoritmien tutkimusala hyödyntää uusien algoritmien luomisessa todellisten muurahaisten toimintatapoja, kuten ruoanhakua, työvoiman jakoa, jälkikasvun lajittelua ja yhteistyökykyistä kuljetusta. Kaikissa näissä esimerkeissä muurahaiset koordinoivat toimintaansa stigmergian avulla, joka on eräs epäsuora tapa kommunikoida, missä viestit välittyvät ympäristöön tehtyjen muutosten kautta. Esimerkiksi ruokaa hakevat muurahaiset jättävät maahan kemikaalia, joka kasvattaa seuraavien muurahaisten todennäköisyyttä käyttää samaa reittiä. Biologit ovat osoittaneet, että sosiaalisilla hyönteisillä havaitut monet kolonnatason toimintatavat voidaan selittää melko yksinkertaisilla malleilla, joissa on vain stigmergistä kommunikointia. Muurahaisalgoritmien idean taustalla on tietynlaisen keinotekoisen stigmergian käyttö, joka koordinoi keinotekoisten yksilöiden yhteisöjä. Yksi menestyneimmistä muurahaisalgoritmeista on muurahaiskolonnaoptimointi eli ACO, jonka idea perustuu ruokaa etsiviin muurahaisiin, ja jota hyödynnetään diskreeteissä optimointiongelmissa. Tässä ensimmäisessä osiossa käsitellään sitä, miten oikeat muurahaiset ovat olleet inspiraationa keinomuurahaisille, jotka kykenevät ratkaisemaan diskreettejä optimointiongelmia. Useilla muurahaislajeilla on primitiivisesti kehittynyt näköaisti ja jotkin lajit ovat täysin sokeita. Muurahaisyksilöiden välinen kommunikointi perustuu suurelta osin muurahaisten tuottamiin kemikaaleihin, feromonei- hin. Näistä kenties merkittävin on niin kutsuttu jälkiferomoni, jota jotkin lajit käyttävät merkitsemään polkuja maahan, esimerkiksi ruoan luota pesään. Tämä kollektiivinen jälkien jättämis- ja jälkien seuraamiskäytös on ollut ACO-algoritmien inspiraation lähteenä. Muurahaiset valitsevat todennäköisimmin aina reitin, jossa on suurin feromonikonsentraatio. 4 2.1 Tuplapolkukoe Deneubourg ja kollegat tekivät mielenkiintoisia kokeita Argentine- muurahaisilla, joissa yhdistettiin pesä ja ruoan lähden kahdella polulla. Kokeissa vaihdeltiin polkujen pituuksien suhdetta r = ll /ls , missä ll on pidemmän polun pituus ja vastaavasti ls lyhyemmän polun pituus. Ensimmäisessä kokeessa polut olivat yhtä pitkät (r = 1). Aluksi muurahaiset olivat vapaita kulkemaan pesän ja ruoan lähteen välillä ja prosentuaaliset osuudet muurahaisista, jotka valitsivat tietyn polun, havainnoitiin ajan kuluessa. Lopputuloksena havaittiin, että vaikka alussa oli sattuman varaisia valintoja, lopulta kaikki muurahaiset käyttivät samaa polkua. Tämä tulos voidaan selittää seuraavasti. Kokeen alussa poluilla ei ole lainkaan feromonia. Tällöin muurahaisilla ei ole mitään preferenssiä ja ne valitsevat samalla todennäköisyydellä kumman tahansa polun. Satunnaisvaihtelusta johtuen muutama useampi muurahainen valitsee ennemmin toisen reitin, jolloin kulkiessaan ne jättävät myös feromonia kulkemalleen reitille. Kun reitillä on enemmän feromonia, yhä useampi muurahainen valitsee tämän reitin. Lopulta muurahaiset konvergoivat käyttämään vain yhtä reittiä. Tätä kutsutaan autokatalyyttiseksi, itseään vahvistavaksi tai positiivisen palautteen prosessiksi, joka toimii esimerkkinä muurahaisten itseorganisoidusta käytöksestä. Tämä makroskooppinen kaava (tässä viitataan konvergoitumiseen toiselle polulle) tulee näkyviin prosesseissa ja vuorovaikutuksissa, jotka tapahtuvat mikroskooppisella tasolla. Tämä on myös esimerkki stigmergisestä käytöksestä. Toisessa kokeessa toinen polku oli kaksi kertaa pidempi kuin toinen eli r = 2. Suurimmalla osalla testeistä muurahaiset päätyivät käyttämään vain lyhyempää reittiä jonkin ajan kuluttua. Kuten ensimmäisessä kokeessa, alussa molemmat polut vaikuttavat identtisiltä, joten muurahaiset valitsevat reitin satunnaisesti. Siis odotusarvoisesti puolet valitsevat pidemmän reitin ja puolet lyhyemmän reitin, vaikka stokastisia heilahteluja voi ilmaantuja, jolloin toinen reitti on toista suositumpi valinta. Tämä koeasetelma eroaa huomattavasti edellisestä kokeesta. Koska toinen polku on toista lyhyempi, muurahaiset, jotka valitsevat lyhyemmän reitin ehtivät aiemmin ruoan lähteel5 le. Kun ne ovat palaamassa pesälle, niiden täytyy jälleen valita lyhyemmän ja pidemmän polun väliltä. Korkeampi feromonitaso suosii lyhyempää reittiä. Tällöin feromoni alkaa kasaantua nopeammin lyhyemmälle reitille, jota lopulta kaikki muurahaiset käyttävät. Verrattuna ensimmäiseen kokeeseen, alun satunnaisvaihteluiden vaikutus vähenee ja stigmergian, autokatalyysin ja polkujen pituuksien suhde ovat päätoimintamekanismit. Huomionarvoista on kuitenkin se, että vaikka pidempi polku on toista polkua kaksi kertaa pidempi, kaikki muurahaiset eivät käytä lyhyempää polkua vaan edelleen pieni prosentti käyttää pidempää haaraa. Tämä voidaan tulkita eräänlaiseksi polkujen tutkimiseksi. Erityisen mielenkiintoista on havaita, mitä tapahtuu konvergoinnin jälkeen, kun muurahaiskolonnalle tarjotaan vieläkin lyhyempää reittiä pesän ja ruoan lähteen välillä. Tällaisessa lisäkokeessa muurahaisilla oli käytettävissään vain pidempi polku ja pitkän ajan kuluttua lyhyempi polku lisättiin. Tässä tapauksessa muurahaiset valitsivat vain hajanaisesti lyhyemmän reitin ja kolonna juuttui käyttämään pidempää reittiä. Tämä voidaan selittää pidemmän polun korkealla feromonikonsentraatiolla ja hitaalla feromonin haihtumisella. Suurin osa muurahaisista valitsee pidemmän reitin johtuen sen korkeammasta feromonitasosta ja autokatalyyttisestä toiminnasta vahvistaen edelleen pidemmän polun feromonitasoa, vaikka lyhempi reitti ilmaantuisikin. Feromonin haihtuminen on liian hidasta suosiakseen lyhyempien reittien tutkimista. Feromonin elinikä on verrannollinen kokeen pituuteen, mikä tarkoittaa sitä, että feromoni haihtuu liian hitaasti, jotta muurahaiskolonna voisi unohtaa alioptimaalisen polun, johon se on konvergoitunut, ja löytää ja oppia uuden lyhyemmän reitin. 2.2 Stokastinen malli Deneubourg ja kollegat esittivät yksinkertaisen stokastisen mallin, joka riittävän hyvin kuvaa tuplapolkukokeessa havaittua muurahaiskolonnan toiminnan dynamiikkaa. Tässä mallissa ψ muurahaista per sekunti kulkee pesältä ruuan luo ja takaisin vakionopeudella v [cm/s] jättäen yhden feromoniyksikön kulkemalleen polulle. Olkoon edelleen ls ja ll [cm] lyhyen ja pitkän polun 6 (a) (b) Kuva 2.1 pituudet. Muurahainen, joka valitsee lyhyen reitin, kulkee sen ts = ls /v sekunnissa, kun taas muurahainen, joka valitsee pidemmän reitin, kulkee sen r · ts sekunnissa, missä r = ll /ls . Olkoon todennäköisyys pia (t), jossa muurahainen saapuu päätöksentekokohtaan i ∈ {1, 2} (katso kuva (2.1b)) ja valitsee haaran a ∈ {s, l}, missä s tarkoittaa lyhyttä polkua ja l pitkää. Olkoon polun feromonin kokonaismäärä ajan t funktio ϕia (t), joka verrannollinen muurahaisten lukumäärään, jotka ovat käyttäneet polkua ajanhetkeen t mennessä. Esimerkiksi todennäköisyys pis (t), että valitaan lyhyempi reitti, on pis (t) = (ts + ϕis (t))α , (ts + ϕis (t))α + (ts + ϕil (t))α (2.1) missä lausekkeen muoto ja parametrin α = 2 arvo perustuvat muurahaisilla tehtyihin polun seuraamiskokeisiin. ϕil (t) lasketaan vastaavasti siten, että ϕis (t) + ϕil (t) = 1. Tämä malli olettaa, että polun feromonin määrä on suoraan verrannollinen polkua käyttäneiden muurahaisten lukumärään ajanhetkeen t mennessä eli toisin sanoen feromonin haihtumista ei tapahdu tämän mallin puitteissa. Tämä on yhtenevää tehtyjen kokeiden kanssa, joissa havaittiin, että muurahaisten konvergoituminen lyhyemmälle polulle on ajallisesti samaa kertaluokkaa kuin feromonin keskimääräinen elinikä. Dierentiaaliyhtälöt, jotka 7 kuvaavat stokastisen mallin kehittymistä, ovat seuraavat dϕis /dt = ψpjs (t − ts ) + ψpis (t), (i = 1, j = 2; i = 2, j = 1), dϕil /dt = ψpjl (t − r · ts ) + ψpil (t), (i = 1, j = 2; i = 2, j = 1). (2.2) (2.3) Dierentiaaliyhtälöistä ensimmäinen voidaan lukea seuraavasti: feromonin määrän hetkellinen muutos ajanhetkellä t polulla s, päätöksentekokohdassa i on muurahaisten virtausmäärävakio ψ kerrottuna todennäköisyydellä valita lyhyempi polku päätöksentekokohdassa j ajanhetkellä t − ts summattuna muurahaisten virtausmäärävakio kerrottuna todennäköisyydellä valita lyhyempi polku päätöksentekokohdassa i ajanhetkellä t. Vakio ts kuvastaa aikaviivettä, joka kuluu, kun muurahaiset kulkevat lyhyemmän polun. Jälkimmäinen yhtälö kuvastaa vastaavasti feromonin määrän hetkellistä muutosta pidemmällä polulla. Tässä tapauksessa aikaviive on r · ts . Tässä mallissa muurahaiset jättävät feromonia meno- ja paluupoluillaan. Itse asiassa tämä on välttämätön käytös, jotta muurahaiskolonna konvergoituisi lyhyemmälle polulle. Jos muurahaiset jättäisivät feromonia vain menotai paluupolullaan, ne eivät löytäisi lyhyintä polkua. Tämä on todettu myös oikeilla muurahaisilla tehdyillä kokeilla. 2.3 Kohti keinomuurahaisia Tuplapolkukokeet osoittavat, että muurahaiskolonnilla on sisäänrakennettu optimointikyky. Paikalliseen tietoon perustuvan todennäköisyyssääntöjen käytön pohjalta muurahaiset pystyvät löytämään lyhimmän reitin kahden pisteen välillä. Tuplapolkukokeiden inspiroimana on mahdollista suunnitella keinomuurahaisia, jotka liikkuessaan graalla mallintavat tuplapolkua ja löytävät lyhimmän polun kahden solmun välillä, jotka vastaavat pesää ja ruuan lähdettä. Ensimmäisenä askeleena kohti keinomuurahaisten määritelmää, tarkastellaan seuraavaa graaa. 8 (a) (b) Kuva 2.2 Graa (2.2a) koostuu kahdesta solmusta, jotka kuvastavat pesää ja ruuan lähdettä, ja jotka ovat yhdistyneet pitkällä ja lyhyellä kaarella. Tässä esimerkissä pidempi kaari on r kertaa pidempi kuin lyhyempi kaari, missä r on kokonaisluku. Lisäksi oletamme, että aika on diskreetti (t = 1, 2, 3, . . . ) ja jokaisella aika-askeleella jokainen muurahainen liikkuu kohti toista solmua vakionopeudella yksi pituusyksikkö per yksi aikayksikkö. Täten muurahaiset lisäävät yhden feromonin käyttämälleen kaarelle. Muurahaiset liikkuvat graalla valiten reittinsä todennäköisyyksien perusteella. pis (t) on todennäköisyys sille, että muurahainen solmussa i ajanhetkellä t valitsee lyhyemmän polun ja vastaavasti todennäköisyys valita pidempi polku on pil (t). Nämä todennäköisyydet ovat feromonijälkien ϕia funktio, jossa muurahaiset solmussa i(i ∈ {1, 2} päätyvät polulle a, (a ∈ {s, l}): pis (t) = [ϕis (t)]α , [ϕis (t)]α + [ϕil (t)]α pil (t) = [ϕil (t)]α [ϕis (t)]α + [ϕil (t)]α (2.4) Polun feromonimäärän päivitys tehdään seuraavasti: ϕis (t) = ϕis (t − 1) + pis (t − 1)mi (t − 1) + pjs (t − 1)mj (t − 1), (i = 1, j = 2; i = 2, j = 1) ϕil (t) = ϕil (t − 1) + pil (t − 1)mi (t − 1) + pjs (t − 1)mj (t − r), (i = 1, j = 2; i = 2, j = 1), (2.5) (2.6) missä muurahaisten lukumäärä mi (t) solmussa i ajanhetkellä t on mi (t) = pjs (t − 1)mj (t − 1) + pjl (t − r)mj (t − r), (i = 1, j = 2; i = 2, j = 1) 9 (2.7) Tämä malli eroaa edellisessä kappaleessa määritellystä stokastisesta mallista kahdessa merkittävässä kohdassa. • Malli käsittää koko järjestelmän keskimääräistä käyttäytymistä eikä yksittäisten muurahaisten stokastista toimintaa. • Malli toimii diskreetissä ajassa toisin kuin edellinen toimii jatkuvassa ajalla. Siten tässä mallissa lasketaan dierenssiyhtälöitä ja edellisessä mallissa dierentiaaliyhtälöitä. Kuvan (2.1b) mekanismia voidaan kuvata myös graalla (2.2b). Tässä mallissa graan jokainen kaari on yhtä pitkä ja pidempi polku esitetään kaarien ketjuna. Esimerkiksi tässä kuvassa pidempi polku on kaksi kertaa pidempi kuin lyhyempi. Feromonimäärien päivitykset tehdään yhden aikayksikön viipeellä jokaiselle kaarelle. Kuvan (2.2) graat ovat laskennallisesti katsoen ekvivalentteja, vaikkakin jälkimmäinen malli sallii helpomman algoritmisen implementoinnin tarkastellessa graaa, jossa on useita solmuja. Simuloinnit tällä diskreettiaikaisella mallilla antaa hyvin samankaltasia tuloksia kuin jatkuva-aikainen mallikin, joka esitettiin yhtälöillä (2.1), (2.2), (2.3). Esimerkiksi jos asetetaan muurahaisten lukumääräksi 20, polkujen pituuden suhteeksi r = 2 ja parametriksi α = 2, malli konvergoi melko nopeasti kohti lyhyemmän polun käyttöä. 2.4 Keinomuurahaiset ja minimikustannuspolut Edellisessä osiossa osoitimme, että dierenssiyhtälöryhmä pystyy hyvin jäljentämään jatkuva-aikaisen mallin keskimääräistä toimintaa. Tavoitteenamme on kuitenkin määritellä algoritmi, jota voidaan käyttää ratkaisemaan minimikustannusongelmia monimutkaisimmilla graafeilla kuin aiemmin esitellyissä tuplapolkukokeissa. Tämä tavoite mielessä, tarkastellaan yhtenäistä graaa G = (N, A), jossa N on joukko solmuja (n = |N |) ja A on suuntaamattomien kaarien joukko, joka yhdistää solmut. Kaksi pistettä, joiden välillä haluamme määrittää minimikustannuspolun, kutsuttakoon lähtö- ja maalisolmuiksi (eng. source and destination nodes). 10 Kuva 2.3: Esimerkki graasta G Jos yritämme ratkaista minimikustannusongelmaa graalla G käyttäen keinomuurahaisia, joiden toiminta on suoraviivainen laajennus edellisessä osiossa määritellystä toiminnasta, muurahaiset saattavat valitettavasti generoida silmukoita. Menoreiteillä tapahtuvan feromonijäljen päivitysmekanismin vuoksi, silmukat tulevat muurahaisille yhä houkuttelevimmiksi ja ne saattavat jäädä niihiin jumiin. Vaikka muurahainen voi poistua tällaisista silmukoista, kokonaisferomonijakaumasta tulee sellainen, ettei lyhyitä polkuja enää suosita, eikä mekanismi, jolla lyhyempi polku löydettiin tuplapolkukokeessa, enää toimi. Koska tämä ongelma johtuu menopolulla tapahtuvasta feromonijäljen päivityksestä, vaikuttaisi siltä, että yksinkertaisin ratkaisu ongelmaan olisi poistaa menopolun feromonipäivitys, jolloin muurahaiset olisivat riippuvaisia vain paluupolun feromonipäivityksestä. Kuten on jo aiemmin todettu kappaleen 2.2 lopussa, jos menopolun feromonipäivitys poistetaan, malli ei enää toimi, ei edes yksinkertaisimmassa tuplapolkukokeessa. Näin ollen keinomuurahaisten kykyjä tulee laajentaa siten, että todellisten muurahaisten tärkeimmät ominaisuudet säilytetään ja että ne pystyvät ratkaisemaan minimikustannuspolkuongelman yleisillä graafeilla. Erityisesti keinomuurahaisille annetaan rajallinen muisti, johon ne voivat tallentaa osapolut, joita ne ovat seuranneet lähtöhetkestä nykyhetkeen ja lisäksi ne voivat tallentaa polkujen vaatiman kustannuksen. Muistin käytön avulla muurahaiset kykenevät implementoimaan useita hyödyllisiä toimintatapoja, joiden avulla ne pystyvät tehokkaasti luomaan ratkaisuja minimikustannuspolkuongelmaan. Nämä toimintatavat ovat: 1. todennäköisyyksiin perustuva ratkaisun luominen, joka suosii feromonijälkiä 11 2. deterministinen paluupolku silmukan muodostumisenestolla ja feromonipäivityksellä 3. luotujen ratkaisujen laadun määritys, jonka avulla määritetään asetettavan feromonin määrä. Huomioitakoon, että yksinkertaisimmassa minimikustannuspolun haussa, ratkaisun laadun arvio voidaan tehdä muurahaisen avulla jo luotaessa ratkaisua, mutta tämä ei ole välttämättä totta muissa ongelmissa, joissa ei voitane helposti määrittää osaratkaisuja. Lisäksi, voidaan osoittaa, että jos huomioidaan feromonin haihtuminen, algoritmin suorituskykyä voidaan huomattavasti parantaa, mikä ei ole välttämätöntä selittämään todellisten muurahaisten toimintaa. Seuraavaksi selostetaan lyhyesti edellä mainitut toimintatavat ja feromonin haihtuminen implementoituna algoritmiin, jota kutsuttakoon SimpleACOksi (tai lyhyemmin S-ACO). Huomiotakoon, että vaikka se esittää suurta parannusta kohti tehokasta algoritmia minimikustannusongelmien ratkaisuun graafeilla, S-ACO tulisi pitää vain opetuskeinona avaamaan ACOalgoritmeissa piileviä mekanismeja. 2.4.1 Todennäköisyyksiin perustuvat menomuurahaiset ja ratkaisun luominen S-ACO-muurahaisilla voidaan ajatella olevan kaksi eri tilaa - meno ja paluu. Ne ovat menotilassa, kun ne liikkuvat pesästä kohti ruuan lähdettä ja paluutilassa, kun ne palaavat ruuan luota pesälle. Kun menotilassa oleva muurahainen saavuttaa määränpäänsä, se vaihtaa paluutilaan ja aloittaa matkansa kohti lähtöpistettä. S-ACOssa menotilassa olevat muurahaiset eli menomuurahaiset luovat ratkaisun valitsemalla todennäköisyyksien perusteella seuraavan solmun, johon ne kulkevat. Seuraava solmu valitaan siis naapurisolmujen joukosta, mikä tarkoittaa sitä, että graan G = (N, A), kaksi solmua i, j ∈ N ovat naapureita, jos on olemassa kaari (i, j) ∈ A. Todennäköisyyksiiin perustuva valinta suosii feromonijälkiä, joita graalla aiemmin kulkeneet muurahaiset ovat asettaneet. Menomuurahaiset eivät aseta lainkaan feromonia 12 liikkuessaan. Tämän ja deterministisesti määritellyn paluun avulla voidaan välttää silmukoiden muodostumista. 2.4.2 Determinisiset paluumuurahaiset ja feromonipäivitys Tarkan muistin käytön avulla muurahainen kykenee määrittämään kulkemansa polun etsiessään määränpääsolmua. Lisäksi S-ACO-muurahaiset parantavat suorituskykyä implementoimalla silmukoiden eston. Käytännössä ennen kuin muurahaiset rupeavat liikkumaan taaksepäin muistamallaan polulla, ne poistavat kaikki silmukat siitä. Kun ne siirtyvät paluutilaan, ne jättävät feromonia juuri kulkemalleen polulle. 2.4.3 Feromonien päivitys perustuen ratkaisun laatuun S-ACO-algoritmissa muurahaiset muistavat solmut, joissa ovat käyneet menopolullaan, ja lisäksi myös kulkemiensa kaarien kustannuksen, mikäli graa on painotettu. Näin ollen ne kykenevät määrittämään luomiensa ratkaisujen kustannuksen. Tämän määrityksen avulla ne mukauttavat paluupolulle asetettavan feromonin määrän. Kun feromonipäivityksestä tehdään ratkaisun laadun funktio, seuraavat muurahaiset pystyvät tehokkaammin luomaan parempia ratkaisuja. Suuremmat feromonimäärät lyhyemmille poluille parantavat huomattavasti algoritmin suorituskykyä. Tämä on haivattu todeksi myös luonnossa. Esimerkiksi Lasius niger -muurahaiset jättävät enemmän feromonia palatessaan runsaammalta ruuan lähteeltä. 2.4.4 Feromonin haihtuminen Oikeissa muurahaisyhdyskunnissa feromonin määrä vähenee ajan myötä johtuen haihtumisesta. S-ACO-algoritmissa haihtumista simuloidaan määrittelemällä haihtumissääntö, mikä voi olla vakio. Feromonin haihtuminen vähentää alkuvaiheessa jätetyn feromonin vaikutusta, jolloin keinomuurahaiset ovat voineet luoda huonolaatuisia ratkaisuja. Haihtuminen voi olla hyvinkin hyödyllistä keinomuurahaisilla, vaikka oikeilla muurahaisilla feromonin haihtuminen ei ole mitenkään merkittävää. 13 2.5 S-ACO-algoritmi Seuraavaksi määrittelemme tarkasti S-ACO-algoritmin, jonka avulla saadaan minimikustannuspolkuongelmaan ratkaisu. Jokaiselle graan G = (N, A) kaarelle (i, j) määritellään muuttuja τij , jota kutsutaan keinoferomonijäljek- si (vastaisuudessa lyhyesti feromonijälki). Muurahaiset kykenevät lukemaan ja kirjoittamaan feromonijälkiä. Feromonin määrä on verrannollinen kaaren käyttömäärään. 2.5.1 Polun hakutoiminta Jokainen muurahainen rakentaa ratkaisun lähtien alkusolmusta noudattaen kohta kohdalta tiettyä päätöksentekotapaa. Jokaisessa solmussa muurahainen lukee solmuun itseensä tai siitä lähteviin kaariin tallennetut paikalliset tiedot, joita hyödynnetään stokastisesti määrittämään solmu, johon seuraavaksi kuljetaan. Jokaisen hakuprosessin alussa jokaiselle kaarelle määritetään vakioferomonimäärä (esimerkiksi τij = 1, ∀(i, j) ∈ A). Kun muurahainen k on solmussa i, se käyttää feromonijälkiä τij laskemaan todennäköisyyttä valita solmu j seuraavaksi: pkij = P α τij l∈N k i α τil , jos j ∈ Nik jos j ∈ / 0, , (2.8) Nik missä Nik on muurahaisen k naapurusto solmussa i. S-ACO:ssa solmun i naapurusto käsittää kaikki solmut, jotka ovat suoraan kaaren kautta yhteydessä solmuun i graassa G = (N, A), lukuunottamatta solmun i edeltäjää eli solmua, josta muurahainen siirtyi solmuun i. Näin ollen muurahainen välttyy palaamasta jo vierailtuun solmuun. Siinä ainoassa tapauksessa, kun Nik on tyhjä, mikä tarkoittaa umpikujaa graalla, solmun i edeltäjä liitetään joukkoon Nik . Huomio, että tämä päätöksentekotapa, saattaa johtaa silmukoihin. Muurahainen toistuvasti hyödyntää tätä päätöksentekotapaa liikkuessaan lähtösolmusta maalisolmuun. Ajanhetki jolloin maalisolmuun saavutaan voi olla eriävä eri muurahaisten välillä johtuen muurahaisten polkujen eroista. 14 2.5.2 Polun seuraaminen ja feromonipäivitys Saapuessaan maalisolmuun, muurahainen vaihtaa menotilasta paluutilaan ja seuraa juuri kulkemaansa polkua askel askeleelta. Lisäksi ennen paluumatkaansa muurahainen voi poistaa luomansa silmukat, joita on saattanut muodostua maalisolmun etsinnässä. Silmukoiden ongelmana on se, että kun muurahainen kulkee polkua takaisin, se saattaa jättää silmukoihin useita kertoja enemmän feromonia kuin pitäisi, mikä johtaa itsevahvistuvien silmukoiden ongelmaan. Silmukoiden poisto voidaan suorittaa iteratiivisesti skannaamalla solmuindeksejä järjestyksessä lähtösolmusta alkaen. Kun käsitellään solmua s paikalla i, polku skannataan maalisolmusta alkaen, kunnes solmu s ilmaantuu ensimmäisen kerran paikassa j . On aina totta, että i ≤ j , sillä skannausprosessi päättyy viimeistään paikassa i. Jos j > i, alipolku paikasta i + 1 paikkaan j vastaa silmukkaa, joka voidaan poistaa. Skannausprosessi on kuvattu seuraavassa esimerkissä. Tämä esimerkki osoittaa, että silmukan Kuva 2.4: Kuvaus silmukan poistoprosessista poistoproseduuri ei välttämättä poista suurinta silmukkaa. Tässä esimerkissä kolmen yksikön pituinen silmukka 4 − 3 − 6 − 4 poistetaan, mutta pisintä silmukkaa 6 − 4 − 2 − 7 − 6 ei poisteta, sillä se ei enää ole olemassa ensimmäisen silmukan poiston jälkeen. Yleisemmin sanottuna, jos polku sisältää sisäkkäisiä silmukoita, lopullinen silmukkavapaa polku on riippuvainen silmukoiden 15 poistojärjestyksestä. S-ACO-algoritmissa silmukan poisto on implementoitu siten, että silmukat poistetaan samassa järjestyksessä kuin ne luodaankin. Palatessaan lähtösolmuun k :s muurahainen jättää ∆τ k verran feromonia jokaiselle kulkemalleen kaarelle. Tarkalleen ottaen, jos muurahainen k on paluutilassa ja se kulkee kaarta (i, j) pitkin, se muuttaa feromoniarvoa seuraavasti: (2.9) τij ← τij + ∆τ k . Tämän säännön perusteella muurahainen, joka kulkee solmujen i ja j väliä yhdistävää kaarta pitkin, lisää seuraavien muurahaisten todennäköisyyttä käyttää samaa kaarta. Tärkeä huomioitava asia on ∆τ k :n valinta. Yksinkertaisimmillaan tämä on vakio kaikilla muurahaisilla. Tässä tapauksessa ainoastaan polkujen eriävä pituus suosii lyhyempien polkujen löytämistä eli muurahaiset, jotka ovat löytäneet lyhyemmän polun, voivat jättää feromonia aiemmin kuin ne muurahaiset, jotka ovat valinneet pidemmän reitin. Lisäyksenä deterministiseen paluupolun feromonipäivitykseen, muurahaiset voivat jättää feromonia polun pituuden funktiona - mitä lyhyempi polku, sitä enemmän feromonia. Yleisesti vaaditaan, että muurahaisen jättämän feromonin määrä on polun pituuden ei-kasvava funktio. 2.5.3 Feromonijäljen haihtuminen Feromonijäljen haihtuminen voidaan nähdä tutkimusmekanismina, jonka avulla vältetaan kaikkien muurahaisten nopea konvergoituminen alioptimaaliselle polulle. Todellisilla muurahaisilla feromonin haihtumisella ei ole suurta merkitystä lyhyimmän polun löytämisessä. Sitä vastoin keinomuurahaisilla tämä mekanismi on hyvinkin ratkaiseva johtuen mahdollisesti siitä, että keinomuurahaisilla ratkaistaan hyvinkin monimutkaisia optimointiongelmia. Tällainen mekanismi, kuten haihtuminen, suosii virheiden ja huonojen valintojen unohtamista, minkä avulla kyetään jatkuvasti parantamaan ratkaisua. Lisäksi keinotekoinen feromonin haihtuminen on tärkeässä roolissa rajaamassa feromonijälkien maksimiarvoa. Haihtuminen vähentää feromonijälkiä 16 eksponentiaalisesti. S-ACO- algoritmissa feromonin haihtuminen on lomitettu yhteen feromonin asettamisen kanssa. Kun jokainen muurahainen k on kulkenut seuraavaan solmuun aiemmin kuvatun hakutoimintansa mukaan, feromonijäljet haihtuvat jokaisella kaarella seuraavan kaavan mukaan τij ← (1 − ρ)τij , ∀(i, j) ∈ A, (2.10) missä ρ ∈ (0, 1] on parametri. Kun feromonin haihtuminen on toteutettu jokaiselle kaarelle, feromonin määrä ∆τ k lisätään kaarille. Yksi S-ACOalgoritmin iteraatiosykli käsittää muurahaisten liikkumisen, feromonin haihtumisen ja feromonin asettamisen. 2.5.4 S-ACO-algoritmilla tehdyt kokeet Referoidaan lyhyesti Deneuborg et al. tekemiä kokeita luvussa 1.3.2 [1]. Näissä kokeissa saatiin seuraavia tuloksia. • S-ACO-algoritmin suorituskyky on huomattavasti heikompi ilman ratkaisun laatuun perustuvaa feromonin haihtumista ja monimutkaisissa ongelmissa välttämätöntä. Erityisesti algoritmi konvergoi usein alioptimaaliseen ratkaisuun. Tällainen konvergoituminen on sitä nopeampaa, mitä suuremmat arvot parametreilla α ja ρ on. • Feromonin haihtumiskerroin ρ voi olla hyvin kriittinen. Kun testeissä ρ:n arvoksi asetettiin 0, 1; S-ACO konvergoi aina lyhimmälle polulle. Arvon ollessa 0, 2 algoritmi konvergoi merkittävän usein alioptimaaliselle polulle. • Suuret parametrin α arvot aiheuttavat algoritmin toimimaan huonosti, sillä se liiallisesti korostaa alustavaa satunnaisvaihtelua. • Kolonnan suuruus tulee olla suurempi kuin yksi, jotta pystytäään ratkaisemaan edes yksinkertaisinkin tuplapolkukoe. Lisäksi mitä suurempi kolonna on, sitä paremmin algoritmi konvergoi. Tosin tämän haittapuolena on pidemmän simulointiajat. 17 Nämä havainnot ovat tärkeitä seuraavissa kappaleissa, kun määritellään ACO:n metaheurestiikkaa tai ratkaistaan erilaisia diskreettejä optimointiongelmia. 18 3 Muurahaiskolonnaoptimoinnin metaheures- tiikka Metaheurestiikka viittaa mestaristrategiaan, joka ohjaa ja modioi muita heurestiikoita tuottamaan parempia ratkaisuja kuin mitä tavallisesti luodaan lokaalien optimien haussa. Tabuhaku, Fred Glover ja Manuel Laguna, 1998 Kombinatoriset ongelmat ovat kiehtovia, sillä ne on usein helppo esittää, mutta vaikea ratkaista. Useat sovelluksista löytyvät ongelmat ovat N P täydellisiä, mikä tarkoittaa sitä, että ongelmaa ei voida ratkaista polynomiaalisessa laskenta-ajassa. Tätä ei kuitenkaan ole todistettu, mutta näin vahvasti uskotaan [6]. Näin ollen, jotta voitaisiin ratkaista käytännöllisesti laajoja ongelmia, joudutaan käyttämään approksimointimenetelmiä, jotka antavat lähellä optimia olevan ratkaisun suhteellisen nopeasti. Tällaisia algoritmeja kutsutaan löyhästi heurestiikoiksi, jotka usein käyttävät johonkin tiettyyn ongelmaan liittyvää tietoa luodakseen tai parantaakseen ratkaisuja. Yksittäisten ratkaisualgoritmien haittana on, että ne usein luovat vain rajatun määrän ratkaisuja tai niiden suoritus pysähtyy lokaaliin optimiin. Esimerkkeinä mainittakoon ahne konstruktiivinen heurestiikka ja iteratiivinen parannusmenetelmä. Ilmeinen laajennus lokaaliin hakuun olisi käyttää eri aloituspistettä, mutta tämä harvoin tuottaa merkittävää parannusta. Useita lähestymistapoja on esitetty, jotta näitä ongelmia voitaisiin välttää. Viime aikoina useat tutkijat ovatkin keskittyneet uuteen algoritmien luokkaan, jota kutsutaan metaheurestiikaksi. Metaheurestiikka on lajitelma algoritmisia käsitteitä, joita voidaan käyttää määrittämään heurestiikkamenetelmiä, joilla voidaan ratkaista useita erilaisia ongelmia. Metaheurestiikoiden käyttö on merkittävästi lisännyt kykyä löytää erittäin laadukkaita ratkaisuja vaikeisiin, tärkeisiin, huonosti ymmärrettyihin ja laajoihin ongelmiin järkevässä ajassa. Erityisen menestyksekäs metaheurestiikka on muurahaisten inspiroima. Tässä kappaleessa esittelemme muurahaiskolonnaoptimoinnin metaheurestisen viitekehyksen, joka käsittää algoritmisen lähestymistavan. Algoritmeja, jotka sopivat ACO-metaheurestiseen viitekehykseen, kutsutaan seuraavaksi ACO-algoritmeiksi. 19 3.1 Kombinatorinen optimointi Kombinatoriset optimointiongelmat käsittävät arvojen löytämistä diskreetteihin muuttujiin siten, että optimaalinen ratkaisu löydetään tavoitefunktion mukaisesti. Useat merkittävät käytännölliset tai teoreettiset ongelmat ovat kombinatorista laatua. Esimerkkeinä mainittakoon edellisessä luvussa käsitelty lyhimmän polun löytäminen, lisäksi useat oikean maailman ongelmat kuten minimikustannussuunnitelma, jonka perusteella kuljetaan tavarat asiakkaille, optimaalinen työtehtävien jako työntekijöiden kesken, Internetin datapakettien reitityssuunnitelma, tuotantolinjan töiden optimaalinen järjestys ja lentohenkilöstön allokointi lentokoneisiin. Kombinatorisessa optimointiongelmassa joko maksimoidaan tai minimoi- daan. Ongelma on käsite, joka viittaa yleisesti kysymykseen, johon kaivataan vastausta, ja jossa on useita parametreja ja muuttujia, joilla ei ole määrättyä arvoa. Instanssi viittaa ongelmaan, jossa jokaiselle parametrille on määrät- ty tietyt arvot. Esimerkiksi kauppamatkustajan ongelma (TSP = Traveling Salesman Problem) on yleisesti määriteltynä ongelma, jossa pyritään löytämään minimikustannus Hamiltonin kierrokselle painotetulla graalla. Sen sijaan TSP-instanssissa on tietty määrä solmuja ja kaarien painoja. Muodollisemmin ilmaistuna kombinatorisen ongelman Π instanssi on kolmikko (S, f, Ω), missä S on käypä ratkaisujoukko, f on kohdefunktio, joka määrittää kohdefunktioarvon jokaiselle käypälle ratkaisulle s ∈ S , ja Ω on rajoitteiden joukko [10]. Ratkaisut, jotka kuuluvat käypään ratkaisujoukkoon ∼ S ⊆ S ja jotka täyttävät rajoitteet Ω, kutsutaan sallituiksi ratkaisuiksi. Tavoitteena on löytää globaalisesti optimaalinen sallittu ratkaisu s∗ . Minimoin∼ tiongelmille tämä tarkoittaa minimikustanteisen ratkaisun s∗ ∈ S löytämi∼ sen siten, että f (s∗ ) ≤ f (s) kaikilla s ∈ S . Maksimointiongelmissa ratkaisun ∼ ehtona on f (s∗ ) ≥ f (s) kaikilla s ∈ S . Seuraavaksi käsitellään vain minimointiongelmia, sillä funktion g maksimointi on sama tehtävä kuin funktion f = −g minimointi. 20 3.2 Laskennallinen kompleksisuus Suoraviivainen kombinatorisen ongelman ratkaisutapa olisi tyhjentävä haku, mikä tarkoittaa kaikkien mahdollisten ratkaisujen luettelointia ja joista valitaan paras. Useimmissa tapauksissa tällainen naiivi lähestymistapa osoittautuu nopeasti mahdottomaksi, sillä ratkaisujen lukumäärä kasvaa eksponentiaalisesti suhteessa instassikokoon n, mikä voi olla esimerkiksi tarvittavien bittien lukumäärä, joka tarvitaan instanssin koodaukseen. Joidenkin kombinatoristen optimointiongelmien struktuurin tarkastelu ja luonteenpiirteiden hyväksikäyttö auttaa määrittämään algoritmeja, joiden avulla voidaan löytää ratkaisuja huomattavasti nopeammin kuin tyhjentävän haulla. Toisaalta joissakin tapauksissa edes parhaimmat algoritmit eivät suoriudu sen paremmin kuin tyhjentävä haku. Kombinatorista ongelmaa ratkaistaessa on tärkeää tietää, kuinka vaikeaa optimin löytäminen on. Eräs tapa kuvata tätä vaikeusastetta on pahimman tapauksen kompleksisuus, joka määritellään siten, että ongelmalla Π on pa- himman tapauksen kompleksisuus O(g(n)), mikäli paras tunnettu algoritmi sen ratkaisemiseen löytää optimin mille tahansa instanssille kokoa n laskentaajassa, joka on ylhäältä rajoitettu funktiolla vakio × g(n). Esimerkiksi Π on ratkaistavissa polynomiaalisessa ajassa, jos g(n) on polynomi. Vaikka jotkin kombinatoriset ongelmat on polynomiaalisessa ajassa ratkaistavia, suurimmalle osalle ongelmista ratkaisuaika kasvaa eksponentiaalisesti instanssikoon kasvaessa. N P -täydellisyyden teoria käsittelee kombinatoristen ongelmien vaikeusasteita. Teoria luokittelee ongelmat kahteen pääluokkaan: niihin, jotka on ratkaistavissa polynomiaalisessa ja niihin, jotka ei [11]. Kauppamatkustajan ongelma on esimerkki N P -täydellisestä ongelmasta. Mikäli optimaaliratkaisua ei voida löytää käytännössä tehokkaasti. Ainoana keinona on vaihtaa optimaalisuus tehokkuuteen. Toisin sanoen optimaalisuus uhrataan, jotta voidaan saada riittävän hyviä ratkaisuja polynomiaalisessa ajassa. Tällaisia approksimointialgoritmeja kutsutaan löyhästi heurestiikoiksi, joiden avulla esimerkiksi kauppamatkustajan ongelmaa ratkaistaan. 21 3.3 ACO-metaheurestiikka Muurahaiskolonnaoptimointi on metaheurestiikka, jossa keinomuurahaisten kolonna toimii yhteistyössä löytääkseen hyviä ratkaisuja vaikeisiin diskreetteihin optimointiongelmiin. ACO-algoritmeja voidaan käyttää ratkaisemaan sekä staattisia että dynaamisia kombinatorisia ongelmia. Staattisen ongelman piirteet on määritelty kerralla, eivätkä ne muutu ajan myötä. Dynaamiset ongelmat on määritelty joidenkin suureiden funktiona, joiden arvo määräytyy piilevän järjestelmän mukaan. Instanssi muuttuu näin ollen ajon aikana ja algoritmin tulee kyetä mukautumaan muuttuvaan ympäristöön. Esimerkkinä dynaamisesta ongelmasta mainittakoon Internetin reititysongelmat, joissa dataliikenne ja verkon topologia voi muuttua ajan myötä. Tässä osiossa kerrotaan ongelmien tyypistä, joihin voidaan soveltaa ACO-metaheurestiikkaa, keinomuurahaisten toiminnasta ja ACO-metaheurestiikan yleisestä rakenteesta. 3.3.1 Ongelman esitysmuoto ACO:n keinomuurahainen on stokastinen konstruktiivinen proseduuri, joka asteittain luo ratkaisun lisäämällä sopivasti ratkaisukomponentteja tekeillä olevaan osaratkaisuun. Näin ollen ACO-metaheurestiikkaa voidaan soveltaa mihin tahansa kombinatoriseen optimointiongelmaan, jolle voidaan määrittää konstruktiivinen eli rakentava heurestiikka. Konstruktiivinen algoritmi luo ratkaisun kombinatoriseen optimointiongelmaan iteratiivisesti, askel askeleelta, perääntymättä, lisäten ratkaisukomponentteja, kunnes koko ratkaisu on luotu. Vaikka komponenttien järjestys voi olla satunnainen, yleensä jotain heurestista sääntöä noudatetaan. Usein käytetään ahnetta heurestiikkaa, joka lisää ratkaisuun komponentin, joka vaikuttaa sillä hetkellä parhaimmalta. Vaikka tämä tarkoittaa sitä, että ACO-metaheurestiikkaa voidaan soveltaa moniin mielenkiintoisiin ongelmiin, todellisena ongelmana on se miten ongelma tulee esittää, jotta keinomuurahaiset voivat luoda siihen ratkaisun. Seuraavaksi esitetään keinomuurahaisten implementoinnin periaatteet. Oletetaan, että on minimointiongelma (S, f, Ω), missä S on käypien rat- kaisujen joukko, f on kohdefunktio, joka määrittää jokaiselle käyvälle rat22 kaisulle s ∈ S kohdefunktion arvon (i.e. kustannuksen) f (s, t), ja Ω(t) on rajoitteiden joukko. Parametri t tarkoittaa sitä, että kohdefunktio ja rajoitteet voivat riippua ajasta (i.e. dynaamiset ongelmat). Tavoitteena on löytää sallittu globaali optimi s∗ . Luonnehditaan ongelma (S, f, Ω) seuraavasti. • Komponenttien äärellinen joukko C = {c1 , c2 , . . . , cNC } on annettu, missä NC on komponenttien lukumäärä. • Ongelman tilat on määritelty äärellisen pituisena sarjana x = hci , cj , . . . , ch , . . . i joukon C yli. Kaikkien tilojen joukkoa kuvaa X . Sarjan pituus eli komponenttien lukumäärä on |x|. Sarjan maksimipituus on rajoitettu positiivisella vakiolla n < +∞. • Käypien ratkaisujen joukko S on x:n alijoukko eli S ⊆ X . ∼ ∼ • Sallittujen tilojen joukko X , jolle X ⊆ X , on määritetty ongelmariippuvaisella testillä, joka varmistaa, ettei ole mahdollista päättää sarjaa ∼ x ∈ X siten, ettei se täyttäisi rajoitteita Ω. Huomioitakoon, että tämän ∼ määritelmän mukaan tilan x ∈ X sallittavuus tulee tulkita heikossa mielessä. Itse asiassa se ei takaa, että x:n täydellistymä s on olemassa ∼ siten, että s ∈ X ∼ • Optimaalisten ratkaisujen epätyhjä joukko S ∗ , jolle S ∗ ⊆ X ja S ∗ ⊆ S • Kustannusfunktio g(s, t) on liitetty jokaiseen käypään ratkaisuun s ∈ S . ∼ ∼ Useimmissa tapauksissa g(s, t) ≡ f (s, t), ∀s ∈ S , missä S ⊆ S on sallittujen käypien ratkaisujen joukko, joka on saatu joukosta S rajoitteiden Ω(t) avulla. • Joissakin tapauksissa kustannus tai sen estimaatti J(x, t) voidaan liittää käypien ratkaisujen sijaista tiloihin. Jos xj voidaan saada lisäämällä ratkaisukomponentteja tilaan xi , niin tällöin J(xi , t) ≤ J(xj , t). Huomiotakoon, että J(s, t) ≡ g(s, t). Tämän esitysmuodon pohjalta keinomuurahaiset luovat ratkaisuja suorittaen satunnaisia kävelyjä täysin yhdistyneillä graafeilla GC = (C, L), jonka solmut 23 ovat komponentit C ja joukko L yhdistää komponentit C täysin. Graaa GC kutsutaan konstruktiograaksi ja sen alkioita L kutsutaan kytköksiksi. Ongelman rajoitteet Ω(t) implementoidaan keinomuurahaisten toimintaan seuraavassa osiossa kerrotulla tavalla. Rajoitteet voidaan implementoida joustavasti kombinatorisesta optimointiongelmasta riippuen joko tarkasti siten, että keinomuurahaiset voivat luoda vain sallittuja ratkaisuja tai löyhästi siten, että keinomuurahaiset voivat luoda ei-sallittuja ratkaisuja, joita voidaan sakottaa ei-sallittavuuden funktiona. 3.3.2 Keinomuurahaisten toiminta Kuten on jo edellä sanottu ACO-algoritmeissa keinomuurahaiset ovat stokastisia konstruktiivisia proseduureja, jotka luovat ratkaisuja liikkuen konstruktiograalla GC = (C, L), missä joukko L yhdistää kaikki komponentit C . Ongelman rajoitteet on rakennettu keinomuurahaisten konstruktiiviseen heurestiikkaan. Komponentit ci ∈ C ja kytkökset lij ∈ L voidaan liittää feromonijälkeen τ (τi jos liitetään komponentteihin, τij jos liitetään kytköksiin) ja heurestiseen arvoon η (vastaavasti ηi ja ηij ). Feromonipolku kuvastaa keinomuurahaisen pitkäaikaista muistia koko polunhakuprosessista ja se päivittyy muurahaisten toimesta. Sen sijaan heurestinen arvo tai heurestinen informaatio kuvastaa ennakkotietoja ongelman instanssista tai ajon aikaista tietoa, jota saadaan muusta lähteestä kuin muurahaisilta. Useissa tapauksissa η on kustannus tai kustannuksen estimaatti, siitä kun komponentti tai kytkös lisätään rakenteilla olevaan ratkaisuun. Keinomuurahaisten heurestiset säännöt hyödyntävät näitä arvoja tehtäessä todennäköisyyksiin perustuvia päätöksiä koskien graalla liikkumista. Tarkemmin ilmaistuna jokaisella kolonnan keinomuurahaisella on seuraavat ominaisuudet: • Keinomuurahainen hyödyntää konstruktiograaa GC = (C, L) etsiäkseen optimaalisia ratkaisuja s∗ ∈ S ∗ . • Sillä on muisti Mk , jota voidaan käyttää tallentamaan informaatiota muurahaisen jo kulkemasta polusta. Muistia voidaan käyttää (a) luomaan sallittuja ratkaisuja, (b) laskemaan heuristisia arvoja η , (c) 24 arvioimaan löydettyä ratkaisua ja (d) kulkemaan takaperin käytettyä polkua maalisolmusta alkaen. • Sillä on alkutila xks ja yksi tai useampi lopetusehto ek . Yleensä alkutila on esitetty joko tyhjänä sarjana tai yhden komponentin pituisena sarjana. • Oltaessa tilassa xr = hxr−1 , ii, jos yhtään lopetusehtoa ei ole täytetty, keinomuurahainen kulkee seuraavaan solmuun j naapurustossaan N k (xr ), toisin sanoen tilaan hxr , ji ∈ X . Jos yksikin lopetusehdoista ek täyttyy, muurahainen pysähtyy. Kun muurahainen luo käyvän ratkaisun, liikkeet ei-sallittuihin tiloihin on usein kiellettyjä, joko muistin käytön tai sopivasti määritellyn heurestisen arvon η avulla. • Keinomuurahainen valitsee seuraavan siirron käyttäen todennäköisyyteen perustuvaa päätöksentekosääntöä. Kyseinen sääntö on (a) paikallisesti saatavilla olevien feromonijälkien ja heurestisten arvojen funktio (i.e. feromonijäljet ja heurestiset arvot, jotka liitetään komponentteihin ja kytköksiin muurahaisen nykyisen sijainnin naapurustossa graalla GC ), (b) muurahaisen yksityiseen muistiin tallennetun tilan (c) ongelman rajoitteiden funktio. • Kun nykyiseen tilaan lisätään komponentti cj , keinomuurahainen voi päivittää feromonijäljen τ , joka liittyy kyseessä olevaan komponenttiin tai vastaavaan kytkökseen. • Kun keinomuurahainen on luonut ratkaisun, se kykenee kulkemaan takaperin juuri kulkemaansa polkua pitkin ja päivittämään käyttämiensä komponenttien feromonijäljet. On tärkeää huomata, että muurahaiset toimivat samanaikaisesti ja itsenäisesti, ja vaikka jokainen muurahainen on riittävän monimutkainen löytämään ratkaisun ongelmaan, hyvälaatuisia ratkaisuja saadaan muurahaisten välisen vuorovaikutuksen ansiosta. Tämä tapahtuu kirjoittamalla ja lukemalla feromonijälkimuuttujia. Tämä on tavallaan jaettu oppimisprosessi. 25 3.4 Pseudokoodi ACO-algoritmin voidaan ajatella koostuvan kolmen proseduurin vuorovaikutuksesta: ConstructAntsSolutions, UpdatePheromones, DaemonActions. ConstructAntsSolutions hallinnoi muurahaiskolonnaa, joka samanai- kaisesti ja asynkronisesti käy ongelman vierekkäisissä tiloissa liikkumalla konstruktiograan GC naapurisolmuja pitkin hyödyntäen feromonipolkuja ja heurestista informaatiota. Kun muurahainen on luonut ratkaisun, se arvioi sen ja UpdatePheromones-proseduuri käyttää sitä tietoa päättämään kuinka paljon feromonia asetetaan. UpdatePheromones on proseduuri, joka muokkaa feromonijälkiä, joko lisäämällä tai haihduttamalla feromonin määrää. Feromonin lisäys kasvattaa polun käyttämämisen todennäköisyyttä ja sen väheneminen eli niin kutsuttu unohtaminen aiheuttaa sen, että vältytään liian nopealta konvergoitumiselta alioptimaaliseen ratkaisuun ja kyetään etsimään uusia ratkaisuja. DaemonActions-proseduuri hallitsee keskitettyjä toimintoja, joita yk- sittäiset muurahaiset eivät kykene toteuttamaan. Esimerkkejä taustatoiminnoista ovat lokaalin optimointiproseduurin aktivointi, globaalin informaation kerääminen, jota voidaan hyödyntää feromonin asettamisessa tai parhaiden ratkaisujen painottaminen ylimääräisellä feromonilla. Algoritmi 1: ACO-metaheurestiikan pseudokoodi Procedure ACOMetaheurestic ScheduleActivities ConstructAntsSolutions UpdatePheromones DaemonActions %valinnainen lopeta ScheduleActivities lopeta Procedure Yllä näkyy ACO-metaheurestiikan pseudokoodi. ScheduleActivities hallinnoi kolmea edellä kuvattua proseduuria, mutta se ei kerro miten se niitä hallitsee. Niitä voidaan hallita joko rinnakkain, itsenäisesti tai niiden välillä 26 voi olla jokin synkronointi. Toteutustapa on algoritmin suunnittelijan valittavissa, kunhan käsiteltävä ongelma otetaan huomioon. ACO-metaheurestiikan toteuttamista valaistaan seuraavassa kappaleessa kauppamatkustajan ongelman näkökulmasta. 27 4 Kauppamatkustajan ongelman ratkaisemi- nen muurahaiskolonnaoptimoinnilla ACO-metaheurestiikan toimintaa voidaan parhaiten kuvata soveltamalla sitä johonkin ongelmaan. Tässä tarkastellaan kauppamatkustajan ongelmaa. Kauppamatkustajan ongelma saa nimensä siitä, että kauppamatkustaja lähtee kotikaupungistaan ja hänen tulee löytää lyhin mahdollinen reitti asiakaskaupungien kautta palaten lopulta kotikaupunkiinsa. TSP (kirjallisuudessa käytetään tätä lyhennettä, joka tulee englannin kielestä Traveling Salesman Problem) voidaan esittää täysin yhdistyneellä painotetulla graalla G = (N, A), jossa N on solmujen (kaupunkien) joukko (n = |N |) ja A on kaarien joukko, joka yhdistää solmut täysin eli jokaista solmuparia yhdistää kaari. Mikäli graa G ei ole täysin yhdistynyt, voidaan luoda graa G0 , johon on lisätty mielivaltaisen painoiset kaaret puuttuvien tilalle siten, että optimaalinen ratkaisu ei varmuudella muutu. Jokaisella kaarella (i, j) ∈ A on paino dij , joka kuvastaa kaupunkien i ja j välistä etäisyyttä. TSP on graan lyhimmän Hamiltonin polun löytämisen ongelma. Hamiltonin polku on suljettu piiri, jossa kuljetaan jokaisen graan G solmun kautta täsmälleen kerran. TSP voi olla joko symmetrinen, jolloin kaupunkien väliset etäisyydet ovat riippumattomia kulkusuunnasta, tai epäsymmetrinen (ATSP = Asymmetric TSP), jolloin ainakin yhdellä solmupareista i, j pätee dij 6= dji . Kuva 4.1: Esimerkki Hamiltonin polusta Ratkaisu TSP:n instanssiin voidaan esittää kaupunki-indeksien permutaationa. Tämä permutaatio on syklinen eli kaupungin absoluuttinen sijainti 28 kierroksella ei ole merkitsevä sen sijaan suhteellinen järjestys on ratkaiseva, toisin sanoen on olemassa n permutaatiota, jotka kuvaavat samaa ratkaisua. Konstruktiograa. Konstruktiograa on identtinen suhteessa ongelman graain. Komponenttien joukko C vastaa solmujen joukkoa (i.e. C = N ). Kytkökset vastaavat kaaria (i.e. L = A) ja jokaisella kytköksellä on paino, joka vastaa etäisyyttä dij solmujen i ja j välillä. Kaikkien mahdollisten osakierrosten joukko vastaa ongelman tiloja. Rajoitteet. TSP:n ainut rajoite on se, että kaikissa kaupungeissa tulee käydä täsmälleen yhden kerran. Tätä rajoitetta valvotaan siten, että jokaisella konstruktioaskeleella muurahainen valitsee seuraavan kaupungin ainoastaan niiden joukosta, joissa ei ole vielä käynyt. Muurahaisen k kaupungissa i sallittu naapurusto Nik käsittää kaikki kaupungit, joissa ei ole vielä käyty. Feromonijäljet ja heurestinen informaatio. TSP:n feromonijäljet τij viit- taa kaupungissa j käymisen haluttavuuteen lähdettäessä kaupungista i. Heurestinen informaatio ηij on usein kääntäen verrannollinen kaupunkien i ja j väliseen etäisyyteen. Yksinkertaisin ja yleisin valinta on siis η = 1/dij . Ratkaisun luominen. Alussa jokainen muurahainen on asetettu satunnaiseen aloitussolmuun eli -kaupunkiin ja jokaisella askeleella muurahainen lisää iteratiivisesti yhden vierailemattoman kaupungin osakierrokseensa. Ratkaisun luominen päättyy, kunnes jokaisessa kaupungissa on käyty. Yleiset kommentit. TSP on paradigmaattinen N P -vaikea kombinatorinen optimointiongelma, joka on houkuttanut useita tutkijoita. (Johnson & McGeoch, 1997; Lawler et al., 1985; Reinelt, 1994). TSP on ollut keskeisessä roolissa muurahaiskolonnaoptimoinnissa, sillä sitä käytettiin ensimmäisenä sovelluksena, kun esiteltiin ensimmäinen ACO-algoritmi nimeltään Ant System (Dorigo, 1992 [2]; Dorigo, Maniezzo, & Colorni, 1991 [3], 1996 [4]) ja sitä on myös käytetty miltei kaikissa myöhemmissäkin ACO-algoritmeissa. On useita syitä miksi TSP:llä on hyvä testata ACO-algoritmeja. Se on tärkeä optimointiongelma, joka esiintyy useissa sovelluksissa, ACO-algoritmeja on helppo soveltaa siihen, se on yksinkertaisesti ymmärrettävä siten, että algoritmin toimintaa ei häiritse liian useat tekniset yksityiskohdat ja se on hyvä koealusta uusille algoritmisille ideoille - hyvä suorituskyky TSP:llä usein takaa algoritmin käytettävyyden. 29 4.1 Kauppamatkustajan ongelman matemaattinen esitys ATSP (epäsymmetrinen TSP) voidaan esittää formaalisti seuraavalla tavalla: XX min dij xij i s.t. X j6=i xij = 1 ∀i = 1, . . . , n xij = 1 ∀j = 1, . . . , n (4.1) j X i XX x≥1 ∀2 ≤ |S| ≤ n − 2 i∈S j6∈S xij ∈ {0, 1} i = 1, . . . , n j = 1, . . . , n, missä päätösmuuttuja xij tarkoittaa: 1, jos reitti kulkee kaupungista i kaupunkiin j, i 6= j xij = 0, muulloin (4.2) ja S on joukon {1, 2, . . . , n} alijoukko, jonka avulla elimoidaan alisyklien muodostuminen[12]. Kuten aiemmin kappaleen 4 alussa todettiin, TSP:n optimaalinen ratkaisu voidaan esittää selkeämmin solmuindeksien permutaationa π = {1, 2, . . . , n} siten, että pituus f (π) on pienin mahdollinen, missä f (π) on f (π) = n−1 X dπ(i)π(i+1) + dπ(n)π(1) (4.3) i=1 4.2 Algoritmien vertailu ja tulokset Tarkastellaan ACS-algoritmia (Ant Colony System) ja vertaillaan sitä muihin tunnettuihin algoritmeihin. Tulokset löytyvät Dorigon ja Gambardellan artikkelista [13], jossa on viitattu aiemmin saatuihin tuloksiin. Näiden tutkimusten suoma näyttö löytyy taulukoista 1, 2, 3, ja 6. Taulukoissa kerrotut solmujen määrät tarkoittavat samaa kuin kaupunkien lukumäärä ongelman 30 tunnetussa viitekehyksessä. Testatut ongelmat on valittu joko sen perusteella mitä kirjallisuudesta löytyy, jotta voidaan verrata tuloksia muihin algoritmeihin tai optimiratkaisuihin tai jotta voidaan näyttää ACS:n kykyjä ratkaista monimutkaisia TSP instansseja (erityisesti epäsymmetriset instanssit). Kaikki ongelmat löytyvät kauppamatkustajan ongelman instanssikirjastosta eli TSPLIB-kirjastosta [27]. Taulukoissa 2 ja 3 ACS:n suorituskykyä vertailtu muihin luonnon inspiroimiin algoritmeihin, joihin kuuluu simuloitu jäähdytys (simulated annealing, SA), neuraaliverkot (NNs), joita tässä edustaa elastiset verkot (elastic net, EN), itseorganisoituva kartta (self organizing map, SOM), evolutionaarinen ohjelmointi (evolutionary computing, EP) ja yhdistelmä simuloidusta jäähdytyksestä ja geneettisistä algoritmeista (AG). Lisäksi näitä on vertailtu kaukaisimman lisäyksen menetelmään (farthest insertion heurestic, FI). Joissakin kokeissa on löydettyä ratkaisua parannettu lokaaliin optimiin 3optimaalisuuden heurestiikalla (Croes, 1958 [14]). Taulukoista havaitaan, että ACS suoriutuu yhtä hyvin tai jopa paremmin kuin muut algoritmit. Tosin TSP:ään sovellettuna ACS ei ole kuitenkaan kilpailukykyinen erityisille heurestiikoille kuten Ling-Kernighan-menetelmälle (Lin ja Kernighan, 1973 [8]). Dorigo ja Gambardella testasivat ACS-algoritmia myös suurempi dimensioisilla ongelmilla. Näille ajoille implementoitiin hieman modioitu versio ACS:stä, jossa hyödynnetään niin sanottua kandidaattilistaa. Tällaista tietorakennetta käytetään usein ratkaistaessa suuria TSP-ongelmia (Reinelt, 1994 [9]; Jonson ja McGeoch, 1997 [15]). Kandidaattilista on lista ensisijaisesti vierailtavista kaupungeista. Se on staattinen tietorakenne, joka sisältää jokaiselle kaupungille i, lähimmät kaupungit cl. Muurahainen siis valitsee seuraavan kaupungin kandidaattilistalta, jos se ei voikaan mennä mihinkään kandidaattilistan kaupunkiin se valitsee seuraavaksi kaupungin listan ulkopuolelta. Taulukoissa 4 ja 5 tutkitaan ACS:n suorituskykyä eripitusilla kandidaattilistoilla. (ACS ilman kandidaattilistaa tarkoittaa siis samaa kuin cl = n). Tulokset on saatu Eil51- ja Pcb442-ongelmainstansseilla, jotka osoittavat, että lyhyt kandidaattilista parantaa ACS:n suorituskykyä sekä keskiarvon että parhaan suorituksen osalta samalla käytetään myös vähemmän CPU-aikaa kierroksen luomiseen. Taulukon 3 tulokset on saatu käyttäen 31 parametria cl = 20. Vielä lupaavampia ovat ATSP:lle sovelletut ACS:n kokeet. Esimerkiksi ACS löysi optimaalisen ratkaisun 43 kaupungin ongelmalle (43X2) optimaalisen ratkaisun 220 sekunnissa käyttäen Pentium PC:tä. Samaa ongelmaa ei voitu ratkaista alle 32 tunnissa parhaimmalla saatavilla olevalla ATSP:lle tarkoitetulla koodilla, joka perustuu Toimeksianto-ongelman relaksaatioon (Fischetti ja Toth, 1992 [16]). Tämä ongelma ratkaisiin optimaalisesti myöhemmin Fischettin ja Tothin toimesta monitahokkaisiin perustuvalla algoritmilla (branch-and-cut scheme, 1994 [17]). Huomattakoon, että pelkästään teknisen kehityksen vuoksi algoritmien suorituskyky on nykyään aivan toista luokkaa. 32 4.2.1 Taulukot Taulukko 1: ACS-algoritmin vertailu muihin luonnon inspiroimiin algoritmeihin testattuna satunnaisilla symmetrisillä TSP:n instansseilla Ongelman nimi ACS ACS+3-opt SA+3-opt SOM+ FI FI+3-opt Kaupunkijoukko 1 5,84 5,84 5,84 5,84 5,89 5,85 Kaupunkijoukko 2 6,00 6,00 5,99 6,00 6,02 5,99 Kaupunkijoukko 3 5,57 5,57 5,57 5,58 5,57 5,57 Kaupunkijoukko 4 5,70 5,70 5,70 5,60 5,76 5,70 Kaupunkijoukko 5 6,17 6,17 6,17 6,19 6,50 6,40 Lyhimmän kierroksen pituuden vertailu seuraavilla algoritmeilla: ACSalgoritmi 3-opt -lokaalilla haulla ja ilman, SA+3-opt paras SA-algoritmin kierroksen pituus, jota on parannettu useilla erillisillä 3-opt ajoilla, SOM+ on paras kierroksen pituus neljän tuhannen SOM-ajon jälkeen (kaupungit eri järjestyksessä), FI-algoritmi 3-optimaalisuus -lokaalihaulla ja ilman. 3-optimaalisuus-heurestiikan lähtökohtana on siis käytetty ACS- ja FIalgoritmien tuloksia. SA+3-opt ja SOM+ tulokset ovat peräisin seuraavilta tutkijoilta: Durbin ja Willshaw (1987) [19] ja Potvin (1993) [24]. Muut algoritmien tulokset ovat Dorigon ja Gambardellan käsialaa [13] (1997). ACS ajettiin 1250 iteraatiolla käyttäen m = 20 muurahaista ja paras kierrospituus saatiin 15 yrityksen pohjalta. Paras kierrospituus kullekin ongelmalle on lihavoitu. 33 Taulukko 2: ACS-algoritmin vertailu GA, EP, SA ja AG-algoritmeihin (Lin et al. 1993) Ongelman nimi ACS GA EP SA AG Optimi Oliver30 420 421 420 424 420 420 (30 solmua) 423,74 [N/A] 423,74 [N/A] [N/A] 423,74 [830] [3200] [40 000] [24 617] [12 620] Eil50 425 428 426 443 436 425 (50 solmua) (427,96) [N/A] (427,86) [N/A] [N/A] [N/A] [1830] [25 000] [100 000] [68 512] [28 111] Eil75 535 545 542 580 561 535 (75 solmua) (542,31) [N/A] (549,18) [N/A] [N/A] [N/A] [3480] [80 000] [325 000] [173 250] [95 506] Kroa100 21 282 21 761 [N/A] [N/A] [N/A] 21 282 (100 solmua) (21 285,44) [N/A] [N/A] [N/A] [N/A] [N/A] [4 820] [103 000] [N/A] [N/A] [N/A] Taulukossa on raportoituna paras kierroksen pituus kokonaisluvuilla ja reaaliluvuilla (suluissa) ilmoitettuna. Hakasulkeissa on tarvittujen kierrosten määrä parhaimman kokonaisluvuilla ilmoitetun kierrospituuden saamiseen. ACS:n tulokset ovat Dorigolta ja Gambardellalta (1997) [13], EP:n tulokset Fogelilta (1993) [21], GA:n tulokset Bersini ym. tutkimuksesta (1995) [18] Kroa100-ongelmalle ja muille ongelmille EP:n tulokset on esitetty Whitley ym. toimesta (1989) [25]. SA:n ja AG:n tulokset ovat Lin ym. (1993) [22]. Oliver30-ongelma on peräisin Oliverilta ym. (1987) [23], Eil75 on peräisin Eilonilta ym. (1969) [20] ja nämä kuuluvat TSPLIB-kirjastoon ja johon on lisätty ylimääräiset kaupungit Eil51.tsp ja Eil76.tsp. Kroa100 löytyy myös TSPLIB-kirjastosta. Paras tulos jokaiselle ongelmalle on lihavoitu. On mielenkiintoista huomata, että kaikkien ongelmien kompleksisuus on luokkaa O(n2 · t) paitsi EP-algoritmille kompleksisuus on O(n · t), missä n on solmujen eli kaupunkien määrä ja t on generoitavien kierrosten lukumäärä. Taulukosta havaitaan, että ACS ja EP suoriutuvat huomattavasti paremmin kuin GA-, SA- ja AG-algoritmit. 34 Taulukko 3: ACS-algoritmin suorituskyky suurilla TSP-instansseilla Ongelman nimi ACS (cl = 20) ACS paras tulos (1) keskiarvo d198 15 888 16 054 (198 solmua) [585 000] [71,1] pcb442 51 268 51 690 (442 solmua) [595 000] [188,7] att532 28 147 28 522 (532 solmua) [830 658] [275,4] rat778 9015 9066 (778 solmua) [991 276] [28,6] 1577 22 977 23 163 (1577 solmua) [942 000] [116,6] Opt. tulos (2) % Error CPU (1)−(2) (2) aika 15 780 0,68 0,02 50 779 0,96 0,05 27 686 1,67 0,07 8806 2,37 [22 137 - 22 249] 3.27 + 3, 79 0,48 Toisessa sarakkeessa on ACS:n paras tulos 15 yrityksen perusteella. Paras kierrospituus on annettu kokonaislukuina ja hakasulkeissa on generoitujen kierrosten lukumäärä parhaan tuloksen saamiseen. Kolmannessa sarakkeessa on ACS:n kierrospituuden keskiarvo 15 yrityksen perusteella. Hakasulkeihin on merkitty keskihajonta. Neljännessä sarakkeessa on optimaalinen tulos. 1577 ongelmalle ei tiedetä tarkkaa tulosta, sen sijaan ala- ja ylärajat on ilmoitettu. Viidennessä sarakkeessa on virhe prosentteina, mikä on ACS-algoritmin laadun mitta. Kuudennessa sarakkeessa on kierroksen generointiin vaadittu CPU-aika Sun Sparc-serverillä (50 MHz). Syy siihen, että käytetty aika kasvaa nopeammin kuin lineearisesti, johtuu siitä, että ongelman dimension kasvaessa muurahainen joutuu yhä useammin valitsemaan seuraavan kaupungin eli solmun kandidaattilistan ulkopuolelta. Kaikki ongelmat löytyvät TSPLIB-kirjastosta [27]. 35 Taulukko 4: Vertailu kandidaattilistojen kokojen välillä Kandidaattilistan ACS ACS Ajon keskim. Häiriöiden määrä pituus keskiarvo paras tulos aika per luotu kierros 10 431,00 426 13,93 0,73 20 431,27 427 23,93 0,48 30 435,27 429 33,93 0,36 40 433,47 426 44,26 0,11 50 433,87 429 55,06 0,01 Ongelma: Eil51. Jokaiselle kandidaattilistan koolle keskiarvot on laskettu 15 yrityksen perusteella. Jokaisessa yrityksessä generoitujen kierrosten lukumäärä on 500. Taulukko 5: Vertailu kandidaattilistojen kokojen välillä Kandidaattilistan ACS ACS Ajon keskim. Häiriöiden määrä pituus keskiarvo paras tulos aika per luotu kierros 20 54 024,9 52 201 458,5 3,42 40 54 970,9 53 580 786,4 2,10 60 55 582,7 53 907 1134,5 1,77 80 56 495,9 54 559 1459,2 1,53 100 56 782,3 54 527 1764,3 1,30 Ongelma: Pcb442. Jokaiselle kandidaattilistan koolle keskiarvot on laskettu 10 yrityksen perusteella. Jokaisessa yrityksessä generoitujen kierrosten lukumäärä on 20 000. 36 Taulukko 6: Vertailu eksaktien metodien ja ACS:n välillä testattuna ATSP ongelmilla Ongelma ACS keskiarvo ACS paras tulos FT-92 FT-94 43X2 5627 5620 [N/A] 5620 (43 solmua) (295) (220) ry48p 14 685 14 422 14 422 14 422 (48 solmua) (798) (610) (729,6) (52,8) (492,2) Eksakti metodi on paras julkaistu deterministinen koodi epäsymmetriselle TSP:lle. Tulokset ovat Fischettiltä ja Tothilta vuosilta 1992 ja 1994 [16][17]. ry48p löytyy TSPLIBistä ja 43X2-ongelma on esitetty artikkelissa Balas et al. (1993) [26]. Taulukossa näkyy kierroksen pituudet ja CPU-aika ilmoitettuna suluissa. Testit on ajettu Pentium PC:llä. ACS-algoritmia ajettiin 10 muurahaisella ja 1500 iteraatiolla ja tulokset saatiin 15 yrityksen pohjalta. Parhaat tulokset on lihavoitu. 4.2.2 Päätelmät Avainasia ACS:n soveltamisessa uuteen ongelmaan on sopivan esitysmuodon tunnistaminen eli ongelman muuttaminen asianmukaiseksi graaksi ja sopivan heurestiikan valinta, jonka avulla määritetään graan kahden solmun välinen etäisyys. Täten todennäköisyyksiin perustuva keinomuurahaisten välinen yhteisvaikutus poluille asetettujen feromonien avulla generoi hyviä ja usein jopa optimaalisia ratkaisuja. On useita tapoja, joilla ACS-algoritmia voidaan parantaa, jotta suuremmille ongelmille soveltaminen on mahdollista. Esimerkiksi voidaan käyttää lokaalia optimointiheurestiikkaa, kuten 2- tai 3-optimaalisutta tai LinKernighan-metodia ([8]). Aiemmin esitetyissä tuloksissa lokaalia optimoin37 tiheurestiikkaa käytettiin vain parantamaan jo saatuja algoritmien tuloksia. Toisaalta jokainen muurahainen voitaisiin erikseen optimoida lokaalisesti ennen globaalia polun feromonipäivitystä. Toiseksi algoritmia voidaan hyödyntää tehokkaasti rinnakkaislaskennalla, erityisesti suurempien dimensioiden ongelmissa. Yksinkertaisin rinnastus voidaan saavuttaa jakamalla muurahaiset eri prosessoreille. Tällöin sama TSP-instanssi ratkaistaan eri prosessoreilla pienellä muurahaislukumäärällä ja parhaimman löydetyn kierroksen informaatio jaetaan epäsynkronisesti prosessoreiden kesken. 38 Viitteet [1] Marco Dorigo, Thomas Stützle: Ant Colony Optimization, A Bradford Book, Cambridge, 2004. [2] Dorigo, M. Optimization, Learning and Natural Algorithms [in Italian]. PhD thesis, Dipartimento di Elettronica, Politecnico di Milano, Milan, 1992 [3] Dorigo, M., Maniezzo, V., & Colorni, A. The Ant System: An autocata- lytic optimizing process. Technical report 91-016 revised, Dipartimento di Elettronica, Politecnico di Milano, Milan, 1991 [4] Dorigo, M., Maniezzo, V., & Colorni, A. Ant System: Optimization by a colony of cooperating agents. IEEE Transactions on Systems, Man, and CyberneticsPart B, 26(1), 2941, 1996 [5] Johnson, D. S., & McGeoch, L. A. Experimental analysis of heuristics for the STSP. In G. Gutin & A. Punnen (Eds.), The Traveling Salesman Problem and Its Variations, 369443. Norwell, MA, Kluwer Academic Publishers, 2002 [6] NP-täydellisyys, http://en.wikipedia.org/wiki/NP-complete [7] Lawler, E. L., Lenstra, J. K., Rinnooy Kan, A. H. G., & Shmoys, D. B. The Travelling Salesman Problem. Chichester, UK, John Wiley & Sons, 1985 [8] Lin, S & Kernighan, B.W., An eective heurestic algorithm for the TSP. Oper. Res., 21, 498-516, 1973 The Traveling Salesman: Computational Solutions for TSP Applications, vol. 840 of Lecture Notes in Computer Science. Berlin, [9] Reinelt, G. Springer-Verlag, 1994 [10] Matemaattinen http://fi.wikipedia.org/wiki/ optimointi, Matemaattinen_optimointi 39 Computers and Intractability: A Guide to the Theory of N P -Completeness, Freeman, San Francisco, 1979 [11] Garey, M. R., & Johnson, D. S. [12] Marko M. Mäkelä, Matemaattinen optimointi II, Turun Yliopisto, 2012 [13] Marco Dorigo, Luca Maria Gambardella: Ant colonies for the travelling salesman problem, BioSystems vol. 43, 73-81, Elsevier Science Ireland Ltd., Shannon, 1997 [14] Croes, G.A., A method for solving traveling salesman problems. Oper. Res., 6, 791-812, 1958 [15] Johnson, D.S. ja McGeoch, L.A., The traveling saleman problem: A case study in local optimization, in: Local Search in Combinatorial Optimization, E.H.L. Aarts and J.K. Lenstra (eds.), Wiley, New York, 1997 An additive bounding procedure for the asymmetric travelling salesman problem. Math. Program., 53, 173-197, 1992 [16] Fischetti, M. & Toth, P., [17] Fischetti, M. & Toth, A polyhedral approach for the exact solution of hard ATSP instances. Tech. REp. No. OR-94. DEIS, Università di Bologna, Italy, 1994 [18] Bersini, H., Oury, C. ja Dorigo, M., Hybridization of Genetic Algorithms. Teh. Rep No. IRIDIA 95-22, IRIDIA, Université Libre de Bruxelles, Belgium, 1995 An analogue approach to the travelling salesman problem using an elastic net method, Nature, 326, 689-691, [19] Durbin, R., ja Willshaw, D., 1987 Distribution management: mathematical modeling and practical analysis. Oper. Res. Q., [20] Eilon, S., Watson-Gandy, C.D.T. ja Christodes, N., 20, 35-53, 1969 Applying evolutionary programming to selected traveling salesman problems. Cybern. Syst. Int. J., 24, 27-36, 1993 [21] Fogel, D., 40 Applying the genetic approach to simulated annealing in solving some NP-hard problems. IEEE Trans. [22] Lin, F.-T., Kao, C.-Y. ja Hsu, C.-C., Syst., Man Cybern., 23, 1752-1767, 1993 A study of permutation crossover operators on the travelling salesman problem, in: Proc. 2nd Int. Conf. on [23] Oliver, I., Smith, D. ja Holland, J.R., Genetic Algorithms, J.J. Grefenstette (ed.) (Lawrence Erlbaum, Hillsdale, New Jersey) pp. 224-230, 1987 [24] Potvin, J-Y., The Traveling salesman problem: a neural network pers- pective. ORSA J. Comput., 5 (4), 328-347, 1993 Scheduling problems and travelling salesman: the genetic edge recombination operator, in: Proc. [25] Whitley, D., Starkweather, T. ja Fuquay, D., 3rd Int. Conf. on Genetic Algorithms, Schaer (ed.) (Morgan Kaumann, San Mateo, CA) pp. 133-140, 1989 [26] Balas, E., Ceria, S. & Cornuéjols, G., A lift-and-project cuting plane algorithm for mixed 0 − 1 programs. Mathematical Programming, 58, 295-324, 1993 [27] Kauppamatkustajan ongelman instanssien kirjasto, http://comopt. ifi.uni-heidelberg.de/software/TSPLIB95/ 41
© Copyright 2024