Muurahaiskolonnaoptimointi ja kauppamatkustajan ongelma

Transcription

Muurahaiskolonnaoptimointi ja kauppamatkustajan ongelma
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