Metaheuristiikat logistiikan optimoinnissa

Samankaltaiset tiedostot
Optimointi. Etsitään parasta mahdollista ratkaisua annetuissa olosuhteissa. Ongelman mallintaminen. Mallin ratkaiseminen. Ratkaisun analysointi

Matematiikan tukikurssi

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

Kombinatorinen optimointi

Algoritmit 2. Luento 12 To Timo Männikkö

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

TILASTOLLINEN LAADUNVALVONTA

Numeeriset menetelmät

Algoritmit 2. Luento 12 Ke Timo Männikkö

Epäyhtälön molemmille puolille voidaan lisätä sama luku: kaikilla reaaliluvuilla a, b ja c on voimassa a < b a + c < b + c ja a b a + c b + c.

Search space traversal using metaheuristics

Johdatus diskreettiin matematiikkaan Harjoitus 7,

Käyttöjärjestelmät: Virtuaalimuisti

2.7 Neliöjuuriyhtälö ja -epäyhtälö

Kimppu-suodatus-menetelmä

Algoritmit ja tietorakenteet Copyright Hannu Laine. 1, kun n= 0. n*(n-1)!, kun n>0;

Algoritmit 2. Luento 13 Ti Timo Männikkö

String-vertailusta ja Scannerin käytöstä (1/2) String-vertailusta ja Scannerin käytöstä (2/2) Luentoesimerkki 4.1

Aluksi Kahden muuttujan lineaarinen epäyhtälö

Luonnollisten lukujen laskutoimitusten määrittely Peanon aksioomien pohjalta

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

2.2 Täydellinen yhtälö. Ratkaisukaava

monissa laskimissa luvun x käänteisluku saadaan näyttöön painamalla x - näppäintä.

Luento 6. June 1, Luento 6

Lisää segmenttipuusta

Algoritmit 2. Luento 13 Ti Timo Männikkö

Esimerkkejä derivoinnin ketjusäännöstä

Algoritmit 2. Luento 8 Ke Timo Männikkö

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Ennakkovaroitustoimintojen sekä. uuden teknologian hyödyntäminen. toteutuspöytäkirjamenettelyssä

Matematiikan tukikurssi

Graafit ja verkot. Joukko solmuja ja joukko järjestämättömiä solmupareja. eli haaroja. Joukko solmuja ja joukko järjestettyjä solmupareja eli kaaria

KOKEMUKSIA TOIMINTAKYKYÄ. Itsenäiseen elämään sopivin palveluin -hanke Merja Marjamäki

Miten korkeakoulujen yhteishaun ja erillishakujen kokonaisuutta tulisi kehittää?

Darwin: Tutkimusprojektin esittely

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

PROJEKTIN OHJAUS JA SEURANTA JOUNI HUOTARI, ESA SALMIKANGAS

JOENSUUN SEUDUN HANKINTATOIMI KOMISSIOMALLI

Algoritmit 2. Luento 11 Ti Timo Männikkö

Geneettiset algoritmit

OHJ-1151 Ohjelmointi IIe

Diskreetit rakenteet

Eksponenttifunktion Laplace muunnos Lasketaan hetkellä nolla alkavan eksponenttifunktion Laplace muunnos eli sijoitetaan muunnoskaavaan

Demo 1: Simplex-menetelmä

Uudistuva RISKINARVIO-ohje

Algoritmit 1. Luento 10 Ke Timo Männikkö

MUUTOS 14! - Sosiaaliset kriteerit julkisissa hankinnoissa!

Verkkotehtäviin pohjautuva arviointi matematiikan opetuksessa

Huomaathan, että ohjeessa olevat näytöistä otetut kuvat voivat poiketa sinun koulutuksesi vastaavien sivujen kuvista.

Suomi toisena kielenä -ylioppilaskoe. FT Leena Nissilä Opetusneuvos, yksikön päällikkö OPETUSHALLITUS

Mat Lineaarinen ohjelmointi

Prosessit etyön kehittämisessä

Sähköpostiohjeet. Tehokas ja huoleton sähköposti

Väli- ja loppuraportointi

Dynaamisen järjestelmän siirtofunktio

Kriittisen polun hallinta CRIPMAN (CRItical Path MANagement) Pekka Maijala & Jaakko Paasi

TIEA382 Lineaarinen ja diskreetti optimointi

Kenguru 2016 Mini-Ecolier (2. ja 3. luokka) Ratkaisut

Mielestämme hyvä kannustus ja mukava ilmapiiri on opiskelijalle todella tärkeää.

Hyvä vesihuoltohanke, suunnittelijan näkökulma

HALLINTOTIETEIDEN MAISTERIN TUTKINTO Valintakoe Pisteet yhteensä (tarkastaja merkitsee)

P A R T. Professional Assault Response Training Seppo Salminen Auroran koulu. Valtakunnalliset sairaalaopetuksen koulutuspäivät

MAA10 HARJOITUSTEHTÄVIÄ

GA & robot path planning. Janne Haapsaari AUTO Geneettiset algoritmit

Raportointi hankkeen tulosten kuvaajana ja toteutuksen tukena

Matkahuolto lisäosa WooCommerce alustalle (c) Webbisivut.org

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Niemenkulman vanha koulu. Yhdistysten talot ja tilat ilta 3.5. Vartsala Terhi Ajosenpää

Strategia, johtaminen ja KA. Virpi Einola-Pekkinen

Osakesalkun optimointi. Anni Halkola Turun yliopisto 2016

Muurahaiskolonnaoptimointi ja kauppamatkustajan ongelma

Valintaperusteet, kevät 2013: Liiketalouden koulutusohjelma 210 op, Liiketalouden ammattikorkeakoulututkinto, Tradenomi

Opintopolku opastaa korkeakouluhakuihin

Oletetaan, että funktio f on määritelty jollakin välillä ]x 0 δ, x 0 + δ[. Sen derivaatta pisteessä x 0 on

Marjan makuisia koruja rautalangasta ja helmistä -Portfolio

Animaation tuotanto. Mika Timonen

KUNTIEN ROOLI MUUTOKSESSA Vaikuttamisiltapäivä ja EK-foorumi 3.2.

Joonas Haapala Ohjaaja: DI Heikki Puustinen Valvoja: Prof. Kai Virtanen

Matematiikan tukikurssi 3.4.

TW- EAV510: WDS- TOIMINTO KAHDEN TW- EAV510 LAITTEEN VÄLILLÄ

Kuvioton metsäsuunnittelu Paikkatietomarkkinat, Helsinki Tero Heinonen

Malliratkaisut Demot

KELAN INDUKTANSSI VAASAN YLIOPISTO TEKNILLINEN TIEDEKUNTA SÄHKÖTEKNIIKKA. Miika Manninen, n85754 Tero Känsäkangas, m84051

Ehdotus NEUVOSTON PÄÄTÖS

Harjoitus 6 ( )

Parhaita käytäntöjä käyttöön Benchmarking lähtökohtana, RouteSmart työkaluna

Ohje hakulomakkeen täyttämiseen yliopistohaku.fi -palvelussa

Reitinoptimointiongelma, sen variantit ja ratkaisumenetelmät. FT Tuukka Puranen TIEA

Algoritmit 1. Luento 9 Ti Timo Männikkö

Algoritmit 1. Luento 1 Ti Timo Männikkö

Lausuntopyyntö STM 2015

Antavatko Kelan standardit mahdollisuuden toteuttaa hyvää kuntoutusta työssä uupuneille ja mielenterveysongelmaisille?

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

Aki Taanila LINEAARINEN OPTIMOINTI

Riskienhallinta DTV projektissa. Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Laboratoriotyön sisältö. Pareittain tehtävä laboratoriotyö Vaatimukset: Laboratoriotyöskentely Loppuraportti (1 raportti/työ)

360 asteen kuvan tekeminen

Mitä lapsen tulisi varhaiskasvatuksesta saada? Leikki-ikäisen hyvän kasvun eväät MLL Helsinki Marjatta Kalliala

SIS. Vinkkejä Ampèren lain käyttöön laskettaessa magneettikenttiä:

Harjoitus 3 ( )

Transkriptio:

Pekka Hotokka Metaheuristiikat logistiikan optimoinnissa Tietotekniikan kandidaatintutkielma 17. kesäkuuta 2008 Jyväskylän yliopisto Tietotekniikan laitos Jyväskylä

Tekijä: Pekka Hotokka Yhteystiedot: pejuhoto@jyu.fi Työn nimi: Metaheuristiikat logistiikan optimoinnissa Title in English: Metaheuristics for optimization of logistics Työ: Tietotekniikan kandidaatintutkielma Sivumäärä: 26 Tiivistelmä: Tässä tutkielmassa käydään läpi logistiikan optimointia, ja erityisesti sellaisia metaheuristiikoiksi kutsuttuja ratkaisumenetelmiä, jotka sopivat hyvin logistiikan optimointiongelmien ratkaisemiseen. English abstract: This thesis includes introduction to optimization of logistics and concentrates more on metaheuristics, which are efficient solving methods for logistics optimization problems Avainsanat: logistiikka, optimointi, heuristiikka, metaheuristiikka, kauppamatkustajan ongelma, ajoneuvojen reititysongelma Keywords: logistics, optimization, heuristics, metaheuristics, travelling salesman problem, vehicle routing problem, TSP, VRP

Sisältö 1 Johdanto 1 2 Optimoinnista 1 2.1 Optimointitehtävän matemaattinen malli................ 2 2.2 Erilaisia optimointitehtäviä ja ratkaisumenetelmiä........... 2 2.3 Kombinatoriset optimointiongelmat ja NP-täydellisyys........ 3 3 Logistiikan optimointi 4 3.1 Sovelluksia ja ongelmia........................... 5 3.2 Kauppamatkustajan ongelma....................... 5 3.3 Ajoneuvojen reititysongelma....................... 6 4 Heuristiset ja metaheuristiset ratkaisumenetelmät 7 4.1 Heuristiset algoritmit............................ 7 4.2 Metaheuristiikat............................... 8 5 Perinteiset metaheuristiikat 9 5.1 Geneettiset algoritmit............................ 9 5.2 Simuloitu jäähdytys............................. 10 5.3 Tabuetsintä.................................. 11 5.4 Neuroverkot................................. 12 6 Ant Colony Optimization 12 6.1 ACO-menetelmän perusteet........................ 13 6.2 ACO:n paradigmoja............................ 13 6.3 Menetelmän toimivuudesta ja kehityksestä............... 14 7 Guided Local Search 14 7.1 Ratkaisun ominaisuudet ja täydennetty kustannusfunktio...... 15 7.2 GLS VRP-ongelmissa............................ 15 7.3 Active Guided Evolution Strategies.................... 16 8 Edge Assembly Crossover 16 8.1 EAX-menetelmän perusteet VRP:ssä................... 17 8.2 Menetelmän toimivuudesta........................ 17 i

9 Menetelmien erot ja yhtäläisyydet 18 9.1 Satunnaisuus................................ 18 9.2 Muistin käyttö................................ 19 9.3 Korjaavien menetelmien käyttö...................... 19 10 Tulosten vertailusta menetelmien välillä 20 11 Yhteenveto 20 Lähteet 21 ii

1 Johdanto Optimoinnin tarkoituksena on etsiä annetulle ongelmalle paras mahdollinen ratkaisu annettujen ehtojen perusteella. Usein parhaan mahdollisen ratkaisun selvittämiseksi ongelmasta muodostetaan matemaattinen malli, joka ratkaistaan kyseiselle mallille sopivalla optimointimenetelmällä. Logistiikan ja ajoneuvojen reitityksen tehostamista on tutkittu jo pitkään, mutta vasta viimeisen kymmenen vuoden aikana on pystytty kehittämään menetelmiä, joilla voidaan ratkaista tehokkaasti käytännössä esiintyviä ongelmia. Tämä opinnäyte esittelee muutamia uusia metaheuristiikoiksi kutsuttuja logistiikan optimointiongelmiin soveltuvia yleiskäyttöisiä ratkaisumenetelmiä. Ensimmäisenä luvussa 2 kuvataan optimointitehtävien yleistä luonnetta, esitellään erilaisia optimointitehtäviä ja perehdytään tarkemmin kombinatorisiin optimointiongelmiin, jotka liittyvät läheisesti logistiikan optimointiin. Kolmannessa luvussa käsitellään optimointia logistiikan näkökulmasta, sen ongelmia ja sovelluksia, sekä esitellään kaksi tärkeintä logistiikan optimointiin liittyvää tehtävätyyppiä. Neljäs luku toimii johdantona heuristisiin ja metaheuristisiin ratkaisumenetelmiin. Luvuissa 5-8 esitellään tarkemmin metaheuristiikkoja; Luku 5 käsittelee jo pidempään käytössä olleita menetelmiä ja luvut 6-8 viime vuosien aikana kehitettyjä menetelmiä. Lopuksi ennen yhteenvetoa luvuissa 9-10 käsitellään eri metaheuristiikoista löytyvien ominaisuuksien eroja ja yhtäläisyyksiä, sekä ongelmia eri metaheuristiikkojen välisessä tehokkuuden vertailussa. 2 Optimoinnista Vaikka kaikista optimointitehtävistä ei ole tarpeellista tai edes mahdollista muodostaa matemaattista mallia, niin mallin muodostaminen on kuitenkin välttämätöntä siinä tapauksessa että tehtävä halutaan ratkaista (tietokoneella) laskennallisesti. Matemaattisen mallin muodostaminen on erittäin tärkeä osa optimointitehtävän ratkaisemista, koska saadun tuloksen käyttökelpoisuus ja oikeellisuus riippuu hyvin paljon siitä kuinka tarkasti malli kuvaa alkuperäistä ongelmaa. Mallin muodostaminen ja sen ominaisuudet riippuvat hyvin paljon annetusta tehtävästä, joten tehtävien mallintamista ei käsitellä tämän enempää. [13, luku 1] 1

2.1 Optimointitehtävän matemaattinen malli Optimointitehtävän matemaattisessa mallissa tarvitaan optimoitava suure, joka yleensä esitetään funktiona. Yleinen optimointitehtävän malli esitetään yleensä muodossa: minimoi f(x), kun x S, jossa f(x) on optimoitava funktio, jota kutsutaan tavoitefunktioksi tai kustannusfunktioksi. S on optimointitehtävän sallittu alue, jonka sisällä tehtävän ratkaisun tulee sijaita. Sallittu alue S voidaan esittää epäyhtälörajoitteiden g i ja yhtälörajoitteiden h j joukkona, joiden leikkausjoukko S on. g i 0 kaikilla i = 1,..., m h i = 0 kaikilla j = 1,..., l Optimointitehtävän ratkaisemiseen käytettävän menetelmän tarkoituksena on siis löytää funktiolle f(x) mahdollisimman pieni arvo, siten että kaikki rajoitteet g i ja h j ovat voimassa. Jos tehtävä olisi etsiä mahdollisimman suurta arvoa funktiolle f(x), olisi kyseessä maksimointitehtävä, joka voidaan kuitenkin palauttaa kaavan (1) muotoon minimoimalla funktiota f(x). Pistettä x 0 jossa f( 0 ) saavuttaa pienemmän arvon kuin missään kyseisen pisteen pienessä ympäristössä (ympäristön määritelmä riippuu tehtävän määrittelystä) kutsutaan lokaaliksi optimipisteeksi. Jos pienin arvo on samalla pienin arvo myös koko sallitussa alueessa, niin kyse on globaalista optimipisteestä. Optimointitehtävällä voi siis olla useita lokaaleja optimipisteitä, joissa tavoitefunktion arvo on huonompi kuin globaalissa optimipisteessä. Jos tehtävällä on useita globaaleja optimipisteitä, niin niissä tavoitefunktion arvo on aina sama. Useille tehtäville on kuitenkin vaikeaa tai jopa mahdotonta määrittää globaalia optimia tai tarkistaa onko lokaali optimipiste samalla myös globaalioptimipiste. Useat menetelmät hakevatkin vain tehtävän lokaalia minimiä, koska sen etsiminen on huomattavasti helpompaa. [13, luku 1] 2.2 Erilaisia optimointitehtäviä ja ratkaisumenetelmiä Koska optimoitavia asioita löytyy hyvin monenlaisista kohteista, niin myös niistä muodostettavien tehtävien ominaisuudet saattavat poiketa toisistaan hyvinkin paljon ja samalla niiden ratkaisemiseen käytettävät menetelmät saattavat olla hyvinkin 2

erilaisia. Vaikka joidenkin yksinkertaisten tehtävien ratkaiseminen saattaa olla mahdollista analyyttisesti, niin yleensä ratkaisumenetelmät ovat iteratiivisia algoritmeja, jotka kehittävät tehtävän optimiratkaisua lähestyvän sarjan ratkaisuja. Seuraavissa kappaleissa esitellään joitakin ominaisuuksiltaan erityyppisiä optimointitehtäviä, ja niille tyypillisiä ratkaisumenetelmiä. Lineaarisessa optimoinnissa sekä tavoitefunktio, että rajoitteet ovat lineaarisia funktioita. Lineaariset optimointitehtävät ratkaistaan usein simplex algoritmiin perustuvilla menetelmillä. Epälineaarisessa optimoinnissa puolestaan, joko tavoitefunktio, yksi tai useampi rajoitefunktio, tai molemmat ovat epälineaarisia. Erilaisia ratkaisumenetelmiä tehtäville on useita, mutta monet niistä perustuvat funktioiden derivaattojen käyttöön. Kokonaislukuoptimointi tarkoittaa sitä että muiden rajoitteiden lisäksi tehtävän muuttujat saavat saada ainoastaan kokonaislukuarvoja. Ratkaisumenetelmät riippuvat tehtävä muista ominaisuuksista, koska tehtävä voi olla esimerkiksi lineaarinen tai epälineaarinen. Monitavoiteoptimoinnissa on nimensä mukaisesti tarkoitus optimoida montaa, mahdollisesti ristiriitaista, asiaa samaan aikaan, eli optimoitavia tavoitefunktioita on useampi kuin yksi. Monissa monitavoiteoptmoinnin menetelmissä tarvitaan päätöksentekijää valitsemaan sopivin muodostetuista ratkaisuvaihtoehdoista. Kombinatorinen optimointitehtävä on sellainen, jossa sallittujen ratkaisujen määrä on äärellinen. Koska tärkeimmät logistiikan optimointiin liittyvät tehtävät ovat luonteeltaan kombinatorisia, niin tätä tehtävätyyppiä käsitellään enemmän luvussa 2.3. Tehtävätyyppien luokitteluja on olemassa myös monia muita ja osa tehtävistä saattaa sisältää myös useamman kuin yhden luokan ominaisuuksia. [13, luku 1] [19] 2.3 Kombinatoriset optimointiongelmat ja NP-täydellisyys Yhteistä kaikille kombinatorisille optimointiongelmille on se, että niillä on äärellinen määrä sallittuja ratkaisuja. Tällaisen tehtävän rajoitteet ovat diskreettejä ja rajoitettuja, eli esimerkiksi kokonaislukuja joltain äärelliseltä väliltä. Teoriassa kombinatorinen optimointiongelma voidaan ratkaista muodostamalla kaikki mahdolliset sallitut ratkaisut ja valitsemalla niistä paras. Käytännössä useat tehtävät ovat sellaisia, että tehtävän koon (muuttujien määrän) kasvaessa, sallittujen ratkaisujen määrä kasvaa huomattavasti nopeammin, esimerkiksi eksponentiaalisesti. Seurauksena tästä on se että vaikka pienet ongelmat ratkeaisivat suhteellisen helposti, niin 3

hieman suuremmilla ongelmilla kaikkien ratkaisujen läpikäyminen on käytännössä mahdotonta. Tyypillisiä esimerkkejä kombinatorisista optimointitehtävistä ovat töidenjärjestelytehtävä ja kauppamatkustajan ongelma. Töidenjärjestelytehtävässä on n kappaletta tehtäviä ja m kappaletta koneita, sekä jokaiselle tehtävälle konekohtaiseen käsittelyyn kuluva aika. Tavoitteena on järjestää tehtävät koneille, niin että ensimmäisen työn aloituksesta viimeisen työn valmistumiseen kuluu mahdollisimman vähän aikaa. Kauppamatkustajan ongelmassa on tarkoituksena löytää lyhin reitti annettujen kaupunkien välillä, niin että kaikissa kaupungeissa käydään täsmälleen kerran. Kauppamatkustajan ongelmaan perehdytään tarkemmin luvussa 3.2. [19, luku 5] Molemmat yllä esitetyt ongelmat, monien muiden ongelmien lisäksi, kuuluvat vaikeasti ratkeavien NP-täydellisten (NP-complete = "non-deterministic polynomial time-complete) ongelmien luokkaan, joille ei ole löydetty ongelman koon suhteen polynomisesti rajatussa ajassa toimivaa ratkaisualgoritmia. Koska tällaisen algoritmin löytyminen on hyvin epätodennäköistä, niin on kehitetty paljon menetelmiä, jotka pyrkivät löytämään lähellä optimia olevan ratkaisun kohtuullisessa ajassa. Näitä menetelmiä kutsutaan heuristiikoiksi ja niitä käsitellään tarkemmin luvussa 4. [2] 3 Logistiikan optimointi Logistiikan tarkoituksena on huolehtia siitä, että tarvittavat resurssit ovat oikeassa paikassa oikeaan aikaan. Logistiikka kattaa resurssien hankinnan, niiden varastoinnin ja kuljetuksen. Resursseilla voidaan tässä yhteydessä tarkoittaa esimerkiksi tavaroita, ihmisiä tai palveluita. Varsinaiseksi tieteenalaksi logistiikka alkoi toisen maailmasodan aikana, kun armeijoiden vaatimia materiaalivirtoja piti alkaa suunnitella järjestelmällisesti. 1950- luvulla myös liiketoiminta kehittyi ja laajentui niin paljon, että monimutkaisten raaka-aine ja tavarantoimitusten suunnittelua alettiin kehittää yhä enemmän. [18] Nykyään logistiikkaa pidetään yritysten ja organisaatioiden tärkeimpänä toimintona, jonka taloudellinen vaikutus on hyvin suuri. Niinpä onnistuneella logistiikkaketjun optimoinnilla voidaankin saavuttaa huomattavia taloudellisia säästöjä tai kilpailuetuja muihin yrityksiin nähden, parantuneen palvelutason muodossa. 4

3.1 Sovelluksia ja ongelmia Logistiikan alalla on monia mahdollisuuksia optimointiin ja kuljetus ja jakelutoiminnan osalla ne voidaan jakaa kolmelle tasolle. Strategisen tason suunnittelussa pyritään sijoittamaan varastot, varikot ja muut toimitilat tehokkaasti. Taktisella tasolla optimoidaan tarvittavan kuljetuskaluston kokoa ja tyyppiä. Toiminnallisen tason optimoinnissa pyritään tekemään ajoreiteistä ja aikatauluista mahdollisimman kustannustehokkaat. Toiminnallisen tason optimointia suoritetaan yleensä kauppamatkustajan- tai ajoneuvojen reititysongelman avulla, jotka esitellään seuraavissa luvuissa. Molempien reititysongelmien hankaluutena, on se että ne ovat hyvin NP- täydellisinä hankalia ratkaista tarkasti, ja monissa käytännön tilanteissa ajoreitteihin tarvitsee tehdä muutoksia pienellä varoitusajalla, tai jopa kesken reitin ajamisen. Tällaisia tilanteita varten tarvitaan nopeita heuristisia ratkaisumenetelmiä. 3.2 Kauppamatkustajan ongelma Kauppamatkustajan ongelmassa (Traveling Salesman Problem, TSP) on annettuna n kappaletta paikkakuntia (tai muita kohteita, solmuja) ja niiden väliset etäisyydet. Tehtävänä on löytää niiden välille mahdollisimman lyhyt reitti siten että lähdetään paikkakunnalta 1 ja käydään kaikilla muilla paikkakunnilla täsmälleen kerran ja palataan lopuksi paikkakunnalle 1. Kuvassa 1 on esitetty eräs sallittu ratkaisu pienelle kauppamatkustajan ongelmalle. Kauppamatkustajan ongelma kombinatorinen, mutta mahdollisten ratkaisuvaihtoehtojen määrä on n!, jolloin jo 20 paikkakunnan tapauksessa sallittuja ratkaisuja on yli 2.0 10 18. Monissa tapauksissa edellytetään että paikkakuntien välisissä etäisyyksissä on voimassa kolmioepäyhtälö, eli kaikki paikkakunnat sijaitsevat samassa euklidisessa tasossa ( TSP). Lisäksi voidaan vaatia että etäisyydet ovat symmetrisiä, eli paikkakunnalta a on yhtä pitkä matka paikkakunnalle b, kuin b:ltä on a:lle. Näillä ehdoilla voidaan mahdollisten ratkaisujen määrää karsia, mutta silti suurilla ongelmilla ratkaisuja on hyvin paljon. Jälkimmäistä ehtoa ei myöskään ole aina mahdollista täyttää, esimerkiksi silloin kun reitti sisältää yksisuuntaisia osia. Varsinaisen reitityksen ohella kauppamatkustajan ongelmalle on myös muita sovelluskohteita, esimerkiksi piirilevylle porattavien reikien porausjärjestys niin että se saadaan tehtyä mahdollisimman nopeasti, on optimoitavissa kauppamatkustajan ongelman avulla. 5

Kuva 1: Kauppamatkustajan ongelman esimerkkiratkaisu. 3.3 Ajoneuvojen reititysongelma Ajoneuvojen reititysongelma (Vehicle Routing Problem, VRP), on kauppamatkustajan ongelman yleistys, jossa on yhdeltä varikolta lähteviä useita ajoneuvoja kiertämässä kohteita, sekä kaikille kohteille on määrätty tarve ja ajoneuvoille maksimikapasiteetti. Yksi ajoneuvo voi siis kiertää vain niin monta kohdetta, kuin mihin sen kapasiteetti riittää, jonka jälkeen sen on palattava varikolle. VRP:ssä pyritään ajettavan matkan lisäksi usein myös minimoimaan tarvittavien ajoneuvojen määrä. Ajoneuvojen reititysongelma on tyypillinen kaikelle jakelutoiminnalle, jossa esimerkiksi tuotteita jaetaan keskusvarastolta jälleenmyyjille. Kuvassa 2 on esimerkki VRP:n mahdollisesta ratkaisusta Ajoneuvojen reititysongelma on monimutkaisuudeltaan ja sallittujen ratkaisujen määrältään yleensä huomattavasti vastaavan kokoista kauppamatkustajan ongelmaa suurempi, jolloin mahdollisuus tarkan ratkaisun etsimiseen on harvinaista. Nykyisin yli 50 kohteen reititysongelmat voidaan ratkaista tarkoilla menetelmillä vain joissakin erikoistapauksissa. Ajoneuvojen reititysongelman perusmalli ei ole aina riittävä, vaan todellisissa tilanteissa tarvitaan usein rajoituksia, jotka tekevät tehtävästä vielä monimutkaisemman. Palveltavilla kohteilla saattaa olla esimerkiksi aikarajoituksia, joiden sisällä käynti on suoritettava (VRPTW), jakelun lisäksi reitin varrella saattaa olla noutoja tai käytössä saattaa olla useampi varikko, joilta ajoneuvot voivat lähteä. Myös monia muita muunnoksia ja niiden yhdistelmiä on olemassa. 6

Kuva 2: Ajoneuvojen reititysongelman esimerkkiratkaisu. 4 Heuristiset ja metaheuristiset ratkaisumenetelmät Heuristisen ratkaisumenetelmän tavoitteena on löytää mahdollisimman lähellä optimia oleva ratkaisu kohtuullisessa ajassa, silloin kun tehtävän tarkka ratkaiseminen on mahdotonta tai liikaa aikaa vievää. Tavallisten heurististen algoritmien toteutus riippuu yleensä paljon annetusta tehtävästä, kun taas metaheuristiset algoritmit puolestaan ovat yleiskäyttöisempiä menetelmiä ratkaisuavaruuden tehokkaaseen läpikäymiseen. 4.1 Heuristiset algoritmit Heuristinen algoritmi on siis menetelmä joka pyrkii ratkaisemaan annetun tehtävän lähelle tarkkaa optimiratkaisua. Heuristiset menetelmät voidaan jakaa kolmeen päätyyppiin. Rakentamismenetelmät pyrkivät suoraan muodostamaan hyvän valmiin ratkaisun tyhjästä lähtien. Korjaavan menetelmän tarkoituksena on yrittää parantaa jo olemassa olevaan ratkaisua, korjaamalla sitä pienen paikallisen muutoksen avulla parempaan suuntaan. Tätä voidaan toistaa kunnes parempaan suuntaan tapahtuvaa korjausta ei enää löydy, tällöin on päädytty lokaaliin optimipisteeseen. Yhdistetyn ja toistetun menetelmän periaatteena on luoda useita alkuratkaisuja (satunnaisesti tai eri rakentamismenetelmillä), joita kaikkia parannetaan korjaavilla menetelmillä ja lopuksi valitaan saaduista ratkaisuista paras. Kauppamatkustajan ongelmalle yksinkertaisin rakentamismenetelmä on lähim- 7

män naapurin menetelmä, jossa aloitussolmun jälkeen reittiin lisätään jäljellä olevista solmuista se, johon edellistä solmusta on lyhin etäisyys. Menetelmä ei usein anna kovin hyviä tuloksia, mutta on erittäin yksinkertainen toteuttaa. Korjaavat menetelmät kauppamatkustajan ongelmassa perustuvat kahden tai useamman solmuparin välisten reittien uudelleen järjestelyyn. Menetelmät sopivat myös ajoneuvojen reititysongelman optimointiin, jossa voidaan lisäksi yrittää siirtää solmuja reittien välillä. Heurististen menetelmien ongelma on se, että saatujen tulosten hyvyyttä on hankala arvioida, koska tarkkaa optimia ei tiedetä. Menetelmän tehokkuutta voidaan testata vain kokeellisesti, ja silloinkin saadaan korkeintaan tilastollisia luotettavuuksia. [19] 4.2 Metaheuristiikat Metaheuristiikat ovat sellaisten menetelmien joukko, jotka toimivat korkeamman tason strategioina ohjaamassa optimaalisen ratkaisun hakuprosessia. Ne ovat moniin ongelmiin sopivia yleiskäyttöisiä menetelmiä, jotka tarvitsevat toimiakseen tehtäväkohtaisia algoritmeja ja heuristiikkoja. Metaheuristiikat pyrkivät välttämään lokaaliin optimipisteeseen juuttumista käyttämällä hyväkseen esimerkiksi satunnaisuutta tai useita rinnakkaisia ratkaisuja eli ratkaisupopulaatiota. Lisäksi kehittyneemmät menetelmät pitävät kirjaa ratkaisun kehittymisestä, jonka avulla ratkaisun hakuprosessia ohjataan. [2] Metaheuristiikkojen hyvänä puolena pidetään niiden monikäyttöisyyden lisäksi sitä, että ne pystyvät nopeasti löytämään ratkaisuavaruudesta ne alueet, joilta löytyy hyviä ratkaisuja, eivätkä tuhlaa liikaa aikaa kertaalleen tutkittujen tai huonoja ratkaisuja sisältävien alueiden tutkimiseen. Huonona puolena on puolestaan edelleen se, että saatujen ratkaisujen optimaalisuutta ei pystytä varmistamaan. Käytännössä metaheuristiikat ovat kuitenkin osoittautuneet hyvin tehokkaiksi menetelmiksi varsinkin monimutkaisten kombinatoristen ongelmien ratkaisemisessa. Vaikka metaheuristiikat pystyvät tehokkaasti pienentämään tutkittavaa ongelma-avaruutta, ovat ne varsinkin suurissa ja vaikeissa ongelmissa silti usein liian hitaita. [2] 1970- ja 1980-luvuilla alkunsa saaneet simuloitu jäähdytys, geneettiset algoritmit ja tabuhaku ovat ensimmäisiä optimoinnissa käytettyjä metaheuristiikkoja ja ne esitellään lyhyesti luvussa 5. Ant Colony Optimization, Guided Local Search ja Edge Assembly Crossover ovat uudempia ja kehittyneempiä menetelmiä, joihin perehdytään tarkemmin luvuissa 6-8. 8

5 Perinteiset metaheuristiikat Tässä luvussa esiteltävät menetelmät ovat ensimmäisiä metaheuristisia menetelmiä ja ovat luonteeltaan suhteellisen yksinkertaisia. Niitä on kuitenkin tutkittu hyvin paljon ja todettu monissa tilanteissa varsin käyttökelpoisiksi menetelmiksi, joten ne ovat vakiinnuttaneet paikkansa myös kombinatoristen optimointiongelmien ratkaisemisessa. 5.1 Geneettiset algoritmit Geneettisten algoritmien (GA) lähtökohtana on luonnon kyky kehittää eliöitä siten, että ne sopeutuvat ympäristöönsä. Algoritmit ylläpitävät joukkoa ratkaisuja, populaatiota, jota muokataan esimerkiksi risteyttämällä ja suorittamalla mutaatioita niin, että syntyy entistä parempia ratkaisuja ja huonoja ratkaisuja karsitaan pois. Geneettiset algoritmit perustuvat siis melko suoraan Darwinin evoluutioteoriaan ja ovat osa evolutionaaristen menetelmien joukkoa. Ratkaisujen helppoa muokkaamista varten ne yritetään esittää yksinkertaisessa muodossa, yleensä joko bittijonona tai kokonaislukujen joukkona. Lisäksi jokaiselle populaation ratkaisulle on laskettuna hyvyysarvo (esimerkiksi tavoitefunktion perusteella), joka vaikuttaa kyseisen ratkaisun selviytymiseen seuraavalle iteraatiokierrokselle tai todennäköisyyteen, jolla se valitaan vanhemmaksi risteytysoperaatioon. Osassa GA-menetelmistä iteraatiokierroksella siirretään osa ratkaisuista suoraan seuraavaan populaatioon, usein tähän joukkoon kuuluu tähän mennessä paras löydetty ratkaisu. Risteytysoperaatiota varten valitaan osa ratkaisuja vanhemmiksi, joita yhdistellään pareittain, tai useampi kerrallaan, uusien ratkaisujen saamiseksi. Myös satunnaisten mutaatioiden avulla voidaan tuottaa uusia ratkaisuja. Jos uusi ratkaisu ei sijaitse tehtävän sallitulla alueella, niin se voidaan hylätä ja muodostaa uusi ratkaisu tilalle. Koska joissain tehtävissä on hyvin hankala löytää sallitulla alueella olevia ratkaisuja, niin parempi vaihtoehto on joko pienentää ratkaisun hyvyysarvoa riippuen siitä kuinka kaukana sallitusta alueesta ratkaisu on, tai pyrkiä korjaamaan ratkaisua niin että se on sallitussa alueessa. Geneettisistä algoritmeista löytyy monia muunnoksia, jotka poikkeavat toisistaan esimerkiksi uuteen populaatioon ja vanhemmiksi valittavien ratkaisujen valintasääntöjen perusteella, erilaisten risteytysmenetelmien perusteella ja erilaisten lopetusehtojen perusteella. [2] 9

5.2 Simuloitu jäähdytys Simuloitu jäähdytys [11] on analogia metallin tai lasin hitaalle jäähdytysprosessille, jolla aineelle pyritään saamaan mahdollisimman kestävä rakenne. Se on yksi ensimmäisistä menetelmistä, joilla pyritään välttämään lokaaliin minimiin juuttumista. Menetelmän pääperiaatteena on sallia ratkaisun muuttuminen välillä myös huonompaan suuntaan, jolloin on mahdollista päästä pois lokaalin optimin vaikutusalueelta. Simuloitu jäähdytys aloittaa tilanteesta jossa on olemassa aloitusratkaisu s S (joka voidaan luoda satunnaisesti tai jollain heuristisella menetelmällä) ja lämpötilaparametri T. Jokaisella iteraatiokierroksella ratkaisua s muutetaan hieman satunnaisesti ratkaisuksi s, ja jos uusi ratkaisu on parempi kuin vanha, niin se hyväksytään automaattisesti. Jos uusi ratkaisu on huonompi kuin vanha, niin se hyväksytään todennäköisyydellä, joka yleensä lasketaan kaavalla e f(s ) f(s) T. Eli huonomman ratkaisun hyväksyminen riippuu tavoitefunktioiden arvojen lisäksi myös lämpötilaparametrin arvosta, jota pienennetään pikkuhiljaa hakuprosessin edetessä. Haun alussa saatetaan hyväksyä suuriakin muutoksia huonompaan suuntaan, mutta kun T on tarpeeksi pieni, ei huonompia ratkaisuja enää hyväksytä ja menetelmä konvergoi (lokaaliin)optimipisteeseen. Hyvin oleellinen osa menetelmää on tapa jolla lämpötilan pudotusta säädetään, koska sen avulla kontrolloidaan tasapainoa hakuprosessin laajuuden ja konvergenssin välillä. Yleensä pyritään siihen, että hakuprosessin alussa T :n arvoa vähennetään vähän (jos ollenkaan), jotta saataisiin mahdollisimman monipuolinen otos ratkaisuavaruudesta. Haun loppupuolella T :n arvoa voidaan vähentää nopeammin konvergenssin nopeuttamiseksi. Jäähdytyssäännöt voivat kuitenkin olla myös paljon monimutkaisempia, lämpötilaa voidaan esimerkiksi myös nostaa sopivissa tilanteissa. [9] Threshold Accepting (TA) [6] on toimintaperiaatteeltaan melko samanlainen kuin simuloitu jäähdytys, mutta hieman vähemmän tunnettu metaheuristiikka. TA:ssa asetetaan aluksi prosenteissa oleva raja, jota enempää ei ratkaisu parhaaseen löydettyyn ratkaisuun suhteutettuna huonontua. Ratkaisua parantavat muutokset hyväksytään aina ja ratkaisua huonontavat siirrot siinä tapauksessa, että ne eivät huononna ratkaisua tämän rajan yli. Rajaa sitten tiputetaan pikkuhiljaa kunnes se putoaa nollaan, jolloin huonontavia muutoksia ei enää hyväksytä ja menetelmä päätyy lokaaliin optimiin. Vaikka TA ei ole yleisesti menetelmänä yhtä tunnettu kuin simuloitu jäähdytys, on sillä erityisesti VRP-ongelmien yhteydessä saatu parempia tuloksia. Lisäksi TA:n 10

hyväksi puoleksi on laskettava se, että se on yksi yksinkertaisimmista metaheuristiikoista toteuttaa, joten sen toimivuutta on suhteellisen nopea koittaa erilaisissa ongelmissa ja tilanteissa. [3] 5.3 Tabuetsintä Tabuetsinnän (Tabu search) [8] periaatteena on käyttää ongelmakohtaisia korjaavia menetelmiä, joilla käydään läpi käsiteltävän ratkaisun naapuriratkaisuja ja pyritään lokaaliin optimiin. Lokaalista optimipisteestä pyritään jatkamaan sallimalla siirtyminen pisteeseen, joka ei paranna tavoitefunktion arvoa, mutta siirtyminen tapahtuu kuitenkin pisteeseen joka huonontaa tavoitefunktion arvoa vähiten. Menetelmässä pidetään myös jollakin tavalla muistissa kirjaa viimeisistä siirroista ja näiden tietojen, tabulistan, avulla estetään siirtyminen takaisin ratkaisuun, joka on äskettäin käyty läpi. Tabuetsintä toiminnan kannalta on oleellista se, kuinka tehtävän ratkaisun hakuavaruus ja menetelmä, jolla naapuriratkaisuja käydään läpi valitaan. Sopivat avaruudet ja menetelmät saattavat vaihdella paljonkin ja niiden valitseminen edellyttää paljon tietoa tehtävän luonteesta, joissa tapauksissa on esimerkiksi kannattaa käydä läpi myös ei-sallittuja ratkaisuja suorituksen aikana. TSP:n ja tavallisen VRP:n yhteydessä usein kuitenkin riittää hakuavaruudeksi sallitut ratkaisut ja hakumenetelmäksi jokin korjaava heuristinen menetelmä. Tabuetsintä varsinaisena perustana on siis lyhytkestoisessa muistissa oleva tabulista, joka pitää sisällään jonkinlaista tietoa viimeksi suoritetuista siirroista, jotta voitaisiin estää joutuminen takaisin tutkittuun ratkaisuun ja siten päätyminen kiertämään kehää. Tabulistan sisältö pyritään usein pitämään mahdollisimman yksinkertaisena ja ennalta määrätyn mittaisena. Jokaiselle tehtävätyypille on kuitenkin monta mahdollisuutta millaisessa muodossa listaan lisättävät tabut annetaan. Eräs vaihtoehto olisi pitää kirjaa kokonaisista ratkaisuista, mutta tämä vaatisi kuitenkin hyvin paljon tilaa ja listan läpikäyminen olisi hidasta. Yleisesti käytetään sellaisia tabuja, jotka pitävät kirjaa siirtojen tekemistä muutoksista ja pystyvät siten estämään käänteisen muutoksen. Esimerkiksi jos VRP:ssä on juuri siirretty asiakas v 1 reitiltä R 1 reitille R 2, niin käänteinen siirto voidaan estää kieltämällä asiakkaan v 1 siirtäminen reitiltä R 2 reitille R 1, tai yleisemmin kieltämällä asiakkaan v 1 siirtäminen takaisin reitille R 2 lähtöreitistä riippumatta. Kaikkein voimakkain tabu olisi kieltää asiakkaan v 1 siirtäminen kokonaan toistaiseksi. Tabu voidaan myös jättää huomioimatta, jos ratkaisu olisi muuten riittävän hyvä, näin tehdään yleensä ainakin silloin kun ratkaisu on 11

parempi kuin paras tähän mennessä tunnettu ratkaisu. Lisäksi jos ratkaisuavaruuden tutkimisessa käytetään useammanlaisia siirtoja, niin jokaiselle siirtotyypille voidaan pitää omaa tabulistaa. Menetelmän suoritus lopetetaan kun ratkaisu ei ole parantunut tietyn iteraatiomäärän aikana, iteraatioiden maksimimäärä on tullut täyteen tai ratkaisun hyvyys on saavuttanut ennalta määrätyn rajan. Tabuetsintä perusmallikin voi joissakin tapauksissa pystyä ratkaisemaan vaikeita ongelmia, mutta usein sitä on syytä laajentaa tekniikoilla, jotka esimerkiksi sopivissa kohdassa laajentavat tai tihentävät ratkaisuavaruuden läpikäymistä. Vaikka tabuetsintä on sellaisenaankin tehokas menetelmä kombinatoristen optimointiongelmien ratkaisemiseen, niin siitä on kehitetty tehokkaampia ja monimutkaisempia versioita, tai sitä käytetään osana muita ratkaisumenetelmiä. [7] 5.4 Neuroverkot Neuroverkkojen käyttöä optimoinnissa [10] alettiin tutkia jo vuonna 1985 ja menetelmästä on tämän jälkeen kehitetty useita paranneltuja versioita. Neuroverkkoja käytettäessä optimointiongelman kustannusfunktiosta ja sakkomuotoon muutetuista rajoitefunktioista muodostetaan yhdessä energiafunktio, jota neuroverkko pyrkii minimoimaan ja oppimaan samalla tekemään kannattavia muutoksia ratkaisuun. Vaikka neuroverkot ovat paljon puhuttu aihe tekoälyn saralla, niistä on tehty suhteellisen paljon tutkimusta, niin TSP ja VRP ongelmien ratkaisemiseen niistä ei ole onnistuttu kehittämään tehokkaasti toimivaa versiota. [14] 6 Ant Colony Optimization Ant colony optimization (ACO) eli muurahaisyhdyskuntaoptimointi perustuu muurahaisten kykyyn etsiä ruokaa toisten muurahaisten jättämien feromonijälkien perusteella. Kulkiessaan muurahainen jättää jälkeensä tasaista feromonijälkeä ja kun toinen muurahainen kohtaa tällaisen jäljen niin se jollain todennäköisyydellä alkaa seuraamaan kyseistä jälkeä ja vahvistaa sitä samalla kyseistä jälkeä, mikä puolestaan suurentaa todennäköisyyttä että myös seuraava muurahainen lähtee seuraamaan kyseistä jälkeä. Kun muurahainen on löytänyt ruokaa se palaa takaisin omaa jälkeään pitkin vahvistaa sitä jälleen. Feromonin haihtuminen saa aikaan sen, että lyhyet reitit vahvistuvat nopeammin kuin pitkät ja niitä suositaan enemmän. Reittien satunnaisen valinnan avulla voidaan kuitenkin koko ajan löytää uusia reittejä, jotka ovat nopeampia kuin olemassa olevat.[1] 12

6.1 ACO-menetelmän perusteet Kun ACO:a käytetään reititysoptimoinnissa, niin aluksi yksittäisen muurahaisen tehtävänä on muodostaa ongelmalle sallittu ratkaisu käyttämällä hyväksi tietoa olemassa olevista feromonijäljistä ja asiakkaiden välisistä etäisyyksistä. Aina varikolta tai asiakkaan luota lähtiessään muurahainen valitsee satunnaisen uuden asiakkaan, jonka valinnassa suositaan lyhyitä etäisyyksiä ja vahvoja feromonijälkiä. Kun ajoneuvon kapasiteetti (tai rajoite reitin maksimipituudesta) tulee täyteen, niin palataan varikolle ja jatketaan uuden asiakkaan valintaa sieltä. [1] [5] Kun m kappaletta reittejä on rakennettu valmiiksi, niin päivitetään feromonijälkiä siten, että kaikkien kaarien feromonia vähennetään jollakin vakiolla, ja muurahaisen kulkemien kaarien feromoniarvoa lisätään sopivasti. Tämän jälkeen aloitetaan uusi iteraatiokierros. Tätä ACO:n perusmuotoa kutsutaan Ant system -menetelmäksi (AS), jota voidaan laajentaa monin tavoin. [5] Reittejä voidaan koittaa parantaa korjaavilla heuristisilla menetelmillä, ja jos niin löydetään uusi paras ratkaisu, niin sen feromonijälkeä lisätään. Toinen vaihtoehto menetelmän tehostamiseksi on käyttää kandidaattilistoja, joihin sisällytetään vain sopiva määrä käsittelyssä olevan asiakkaan lähimpiä naapureita. Näin estetään menetelmää tuhlaamaan resursseja, sellaisten siirtojen tutkimiseen jotka hyvin epätodennäköisesti parantaisivat ratkaisua.[1] Myös feromonijälkien hallintaan on esitetty monia erilaisia paradigmoja, joita käsitellään seuraavassa luvussa. 6.2 ACO:n paradigmoja Rank Based Ant System paradigmassa valitaan vain E parasta ratkaisua tuottanutta muurahaista, eli elitistiä, ja vain näiden kulkemien reittien feromonijälkeä vahvistetaan. Parasta löydettyä ratkaisua vahvistetaan eniten, tavoitefunktion arvosta riippuvalla määrällä feromonia, ja muita E 1 elitistin muodostamia reittejä vahvistetaan feromonimäärällä, joka vähenee sekä ratkaisun sijoituksen perusteella että tavoitefunktion arvon perusteella. Elitisteihin kuulumattomien kaarien feromonia vähennetään sovitulla arvolla, aivan kuin niitä ei olisi kuljettu ollenkaan. Max-Min Ant System paradigmassa aloitetaan vahvistamalla ainoastaan parasta tähän mennessä löydettyä ratkaisua. Koska tämä johtaa helposti ratkaisujen haun keskittymiseen yhden ratkaisun ympärille, niin feromonijäljille määritellään maksimija minimirajat, jotta kovin suuria eroja ei pääsisi jälkien välillä syntymään. Feromonin maksimiraja riippuu parhaan tunnetun ratkaisun tavoitefunktion arvosta ja minirajana on jokin positiivinen luku. Lisäksi feromoniarvot alustetaan maksimira- 13

jaksi, jolloin ensimmäisten iteraatiokierrosten vaikutus on pienempi ja ratkaisuavaruuden tutkiminen tapahtuu laajemmin. Ja vasta myöhemmin, feromonien haihtumisen johdosta, tutkiminen tiivistyy löydettyjen hyvien ratkaisujen ympärille. Ant Colony System (ACS) muuttaa feromonijälkien hallinnan lisäksi myös päätöksentekoprosessia asiakkaan valinnan yhteydessä. Todennäköisyydellä q 0 valitaankin feromonijälkien ja etäisyyden perusteella paras seuraava asiakas ja todennäköisyydellä 1 q 0 satunnainen asiakas samalla periaatteella kuin perusmenetelmässä. Tässäkin paradigmassa vahvistetaan vain parasta löydettyä ratkaisua, mutta myös feromonin haihtuminen rajataan vain kaariin, jotka sisältyvät tähän ratkaisuun. Lisäksi käytetään lokaalia haihtumista, joka vähentää kaaren feromoniarvoa aina kun se valitaan kuljettavaksi, jolloin estetään tilanne, että samaa kaarta käytettäisiin aina uudelleen vaikka q 0 :n arvo olisi melkein yksi. Myös feromoniarvon miniraja on määriteltynä. [4] 6.3 Menetelmän toimivuudesta ja kehityksestä Ensimmäisenä kehitetty Ant System -menetelmä ei ollut kovin kilpailukykyinen muihin samankaltaisten tehtävien ratkaisemiseen tarkoitettujen menetelmien rinnalla, mutta uudet paradigmat feromonien hallinnassa ovat parantaneet menetelmän toimivuutta huomattavasti ja kehitys jatkuu edelleen. Esitettyjä paradigmoja ei voi laittaa suoraan paremmuusjärjestykseen. Max-Min Ant System tuottaa hieman parempia ratkaisuja kuin muut, mutta hitaammin. ACS toimii nopeasti, mutta ratkaisujen hyvyydessä on suurta vaihtelua. Rank Based Ant System näyttää olevan parhaiten tasapainossa laskenta-ajan ja ratkaisuiden kanssa. [4] ACO:n tekee mielenkiintoiseksi myös se, että menetelmän perusluonne on sellainen, että sen suoritus voidaan helposti muuttaa rinnakkaiseksi, eli jakamaan laskentaa useamman prosessorin kesken. Tästä on hyötyä varsinkin suurien tehtävien ratkaisemisessa, joissa laskenta-aikaa voidaan säästää huomattavasti. ACO:n sopivuus myös dynaamisiin, eli kesken ratkaisemisen muuttuviin ongelmiin, näyttää varsin lupaavalta, mutta tältä alueelta ei vielä ole kattavia tutkimustuloksia. [5] 7 Guided Local Search Guided local search (GLS) [17] käyttää tehtäväkohtaisia korjaavia menetelmiä lokaalin minimin etsimiseen, ja sen jälkeen ohjaa hakua uuteen suuntaan käyttämällä hyväkseen ratkaisuille määriteltyjä ominaisuuksia ja niiden avulla laskettavaa täy- 14

dennettyä tavoitefunktiota. 7.1 Ratkaisun ominaisuudet ja täydennetty kustannusfunktio Ratkaisun ominaisuuksilla pyritään erottelemaan ratkaisuja toisistaan. Ominaisuuksien joukko riippuu annetusta ongelmasta, ja jokaiselle ongelman ratkaisulle on määriteltävissä sisältääkö se jonkun ominaisuuden vai ei. Tämän lisäksi jokaisella ominaisuudella on hinta, joka kuvaa sen vaikutusta ratkaisun hyvyyteen. TSP:ssä ja VRP:ssä ominaisuuksien joukkona käyttää esimerkiksi solmujen välisiä kaaria, ratkaisu sisältää kaaren määrittelemän ominaisuuden, jos se sisältää kyseisen kaaren. Täydennetty kustannusfunktio muodostetaan alkuperäisestä tavoitefunktiosta lisäämällä siihen sakkotermi, joka on muotoa M λ p i I i (s). i=1 Tässä M on ominaisuuksien yhteenlaskettu määrä, p i on i:nnen ominaisuuden sakkoparametri ja I i on indikaattorifunktio, joka saa arvon 1 jos ratkaisu s sisältää ominaisuuden i ja arvon 0, jos se ei sisällä. Parametri λ määrittelee, kuinka paljon sakkotermiä painotetaan suhteessa alkuperäiseen tavoitefunktioon. [17] Nyt korjaavat menetelmät käyttävät täydennettyä kustannusfunktiota ratkaisun etsimiseen ja kun päädytään lokaaliin minimiin, niin sakotetaan kaikki siinä ratkaisussa esiintyviä ominaisuuksia, TSP:n ja VRP:n tapauksessa ratkaisussa olevia kaaria. Tämän jälkeen korjaavat menetelmät voivat aloittaa uudestaan, koska sakotuksen jälkeen täydennetty kustannusfunktio ei enää ole lokaalissa optimipisteessä. Ratkaisun hyvyys pitää kuitenkin jokaisessa lokaalissa optimipisteessä laskea myös alkuperäisellä kustannusfunktiolla, jotta voidaan tarkistaa onko kyseinen ratkaisu kun paras tähän mennessä löydetty, siinä tilanteessa että sakkotermejä ei lasketa mukaan. Menetelmästä voidaan muodostaa variaatioita esimerkiksi alentamalla sakkoja tiettyjen kierrosmäärien jälkeen tai käyttämällä satunnaiselementtiä sakon määrän määrittämisessä. 7.2 GLS VRP-ongelmissa GLS on todettu varsin toimivaksi menetelmäksi VRP-ongelmissa, ja sillä on saatu varsin hyviä tuloksia. Lisäksi sen toteutus näille ongelmille on varsin suoraviivainen, koska ratkaisun sakotettavina ominaisuuksina on helppo käyttää kaaria asiakkaiden välillä. GLS on myös mahdollista yhdistää ilman suuria ongelmia muihin 15

menetelmiin esimerkiksi tehostamaan pelkkien korjaavien menetelmien käyttöä. 7.3 Active Guided Evolution Strategies Active guided evolution strategies (AGES) [12] on kaksivaiheinen menetelmä, jossa ensimmäisenä vaiheena käytetään GLS-menetelmää ohjamaan korjaavia menetelmiä GLS:n suhteen paikalliseen optimiin asti. Tämän jälkeen siirrytään Evolution Strategies -vaiheeseen (ES), jossa asiakkaita poistetaan ja lisätään satunnaisiin reitteihin ja tämän jälkeen siirrytään vaiheeseen 1, jossa ratkaisua koitetaan parantaa GLS-menetelmällä. Alkuperäinen versio menetelmästä on laadittu VRPTW-ongelmia varten, mutta myös hieman muokattu versio CVRP- ongelmia varten on todettu erittäin hyvin toimivaksi. AGES-menetelmä käyttää myös algoritmia, jolla rajoitetaan korjaavan menetelmän hakuavaruus lähelle kulloinkin GLS-menetelmällä sakotettuun kaarta. Tämä nopeuttaa menetelmää huomattavasti, varsinkin hyvin suurilla ongelmilla, joissa hakuavaruuden laajuus aiheuttaa monilla muilla menetelmillä ongelmia. Menetelmällä onkin päästy parhaaseen tunnettuun ratkaisuun suuressa osassa testiongelmia ja löydetty joitakin uusia parhaita tunnettuja ratkaisuja vuonna 2005 ajetuissa testeissä. Menetelmän nopeuskin on varsin kohtuullinen ja lisäksi menetelmästä on erittäin nopea fast konfiguraatio tilanteisiin, jossa tarvitaan hyvä tulos nopeasti. 8 Edge Assembly Crossover Edge Assembly Crossover (EAX) [16] on populaatioon perustuva evolutionaarinen algoritmi, jonka perustana on vanhempien yhdisteleminen A-B sykleiksi kutsuttujen risteytysten perustella. A-B sykleistä on mahdollista muodostaa useita erilaisia jälkeläisiä, ja jos joku jälkeläinen on parempi kuin ensimmäinen vanhemmista (Avanhempi), niin seuraavalla iteraatiolla se korvaa kyseisen vanhemman populaatiossa. Menetelmässä populaation koko pysyy vakiona ja jos alkuperäisen populaation diversiteetti on tarpeeksi suurin, niin diversiteetti myös säilyy, koska uusi ratkaisu voi korvata vain sellaisen vanhemman, jota käyttäen se on muodostettu. EAX-menetelmää on yleisemmin käytetty TSP-ongelmissa, mutta se todettu myös hyvin tehokkaaksi menetelmäksi VRP-ongelmien ratkaisemisessa [15]. 16

8.1 EAX-menetelmän perusteet VRP:ssä Populaation luomiseksi muodostetaan n kappaletta erilaisia aloitusratkaisuja vapaavalintaisella satunnaistetulla menetelmällä. Tämän jälkeen populaation ratkaisut järjestetään jonoon satunnaiseen järjestykseen ja jokaiselle kahdelle peräkkäiselle ratkaisulle (A- ja B-ratkaisut) suoritetaan varsinainen EAX-iteraatio. A-B syklit muodostetaan yhdistämällä kahden vanhemman kaaret ja valitsemalla tästä sellaiset suljetut syklit, joissa A- ja B-vanhempien kaaret vuorottelevat. A-B sykleistä muodostetaan E-joukko, joka voi olla mikä tahansa sykleistä muodostettu yhdiste. E-joukkoon valitut syklit riippuvat menetelmän parametreista. Seuraavaksi muodostetaan uusi ratkaisu poistamalla E-joukosta kaikki A-ratkaisun kaaret ja lisäämällä B-ratkaisun kaaret. Näin muodostetussa väliratkaisussa voi olla sellaisia lenkkejä, jotka eivät ole yhteydessä varikkoon, ne yhdistetään sellaiseen reittiin johon yhdistämiskustannus on pienin. Tässä vaiheessa reittien kapasiteetit saattavat olla sallittua suurempia, jolloin kapasiteettaja korjataan tätä varten muokatuilla korjaavilla menetelmillä. Lopuksi ratkaisua koetetaan vielä parantaa sopivilla korjaavilla menetelmillä. Tämä vaihe voidaan toistaa useilla eri E-joukoilla ja näistä muodostetuista valitaan paras. Jos muodostunut ratkaisu on parempi kuin A-vanhempi, niin se korvaa kyseisen vanhemman populaatiossa. Jos ratkaisu on huonompi, niin hylätään. Tämän jälkeen otetaan käsittelyyn seuraava ratkaisupari, eli B-vanhemmasta tulee A-vanhempi ja B-vanhemmaksi valitaan jonosta seuraava ratkaisu. Näin käydään koko jono läpi ja lopuksi populaatiosta on muodostunut uusi sukupolvi. Jos lopetuskriteerit eivät ole täyttyneet, niin voidaan uusi sukupolvi sekoittaa uudestaan satunnaiseen järjestykseen jonoon ja aloittaa pareittaiset EAX-operaatiot jonon alusta. 8.2 Menetelmän toimivuudesta Menetelmä on todettu erittäin tehokkaaksi, ja sillä päästään hyvin usein testiongelmien parhaaseen löydettyyn ratkaisuun. Menetelmällä on myös löydetty useisiin ongelmiin uusi paras tunnettu ratkaisu. Pienenä rajoitteena menetelmän käytössä on se, että EAX-operaatio vaatii että molemmissa vanhemmissa on saman verran reittejä, jolloin koko populaation ratkaisuissa on oltava sama määrä reittejä. Tämän vuoksi reittien määrä on annettava kiinteänä parametrina, tai menetelmää on ajettava usealla eri aloituspopulaatiolla, joissa on eri reittien määrät. [15] 17

9 Menetelmien erot ja yhtäläisyydet Kaikilla edellä kuvatuilla menetelmillä on omat toimintaperiaatteensa ja ominaispiirteensä, mutta siltikin niistä yhteisiäkin piirteitä, jotka eivät kaikki aina ole aivan itsestään selviä. Lisäksi yhä suuremmissa määrin uudet menetelmät ovat ns. hybridimenetelmiä, joissa on piirteitä useista olemassa olevista menetelmistä. Tässä luvussa käydään läpi joitakin erilaisten menetelmien eroja ja yhtäläisyyksiä. 9.1 Satunnaisuus Hyvin suuri osa metaheuristiikoista käyttää satunnaisuutta jossain muodossa mahdollistamaan normaalia laajemman hakuavaruuden ja estämään ratkaisun juuttumista lokaaliin optimipisteeseen. Perinteisemmistä metaheuristiikoista geneettiset algoritmit käyttävät satunnaisuutta usein risteytettävien vanhempien valintaan, ja mutaatioiden tekemiseen. Simuloitu jäähdytys puolestaan valitsee huonontavia siirtoja satunnaisluvusta riippuvan parametrin perusteella, alussa ratkaisun haku riippuu hyvinkin paljon satunnaisuudesta, mutta loppua kohden satunnaiselementin vaikutus vähenee ja etsintä alkaa muistuttaa korjaavaa menetelmää ilman metaheuristiikkaa. Tabuetsintä alkuperäisessä muodossaan ei käytä minkäänlaista satunnaiselementtiä, vaan samasta alkuratkaisusta päädytään aina samaan lopputulokseen, jos algoritmin toiminta ja parametrit pidetään samana. ACO-menetelmässä reitin seuraavan asiakkaan valinnassa on oleellisessa asemassa satunnaistekijä, jonka avulla haku pysyy laajana, eikä painotu pelkästään liikaa lyhyiden asiakasvälien suosimiseen. GLS-menetelmä ei itsessään sisällä satunnaisuuden käyttöä, mutta esimerkiksi AGES-laajennoksessa satunnaisuutta käytetään menetelmän ES-osassa, jolloin reiteiltä poistettavat pisteet valitaan satunnaisesti. EAX-menetelmässä satunnaisuutta käytetään sekä aloituspopulaation luomiseen, että populaatiolistan sekoittamiseen, mikä määrää seuraavan kierroksen risteytettävät parit. Satunnaiselementtien käyttämisestä johtuen menetelmät saattavat antaa erilaisen lopputuloksen eri ajokerroilla. Tästä on se hyvä puoli että jos laskenta-aikaa on tarpeeksi, niin menetelmää voidaan suorittaa useita kertoja ja valita lopputuloksista paras, toisaalta tämä taas vaikeuttaa menetelmien tehokkuuden vertailua ja tulosten raportointia. Usein tällaisille menetelmille ilmoitetaankin ajokertojen määrä, paras saatu tulos, keskimääräinen tulos, huonoin tulos, sekä yhteen ajokertaan kuluva keskimääräinen aika. Lisäksi menetelmän toteutuksen testaamista ja parametrien hienosäätämistä varten toteutuksessa yleensä tarvitaan ominaisuus, että satunnaiselementti lukitaan paikalleen, eli satunnaislukugeneraattorille annetaan kiinteä sie- 18

menluku, jotta satunnaisuus ei vaikuttaisi liikaa toimivuuden testaamisen ja hienosäätöjen tuloksiin. 9.2 Muistin käyttö Muistin käytöllä on mahdollisuus rajoittaa sitä, että samoja tai hyvin samankaltaisia ratkaisuja käytäisiin useasti uudelleen läpi. Ensimmäinen muistia ratkaisun etsimiseen rajoittamiseen selkeästi käyttävä menetelmä on tabuetsintä, joka säilyttää joitakin viimeisiä ratkaisuun tehtyjä muutoksia tabulistassa, eikä salli näiden muutosten kumoamista. Tavallaan kaikki populaatioperustaiset käyttävät myös muistia hyväkseen, koska ne säilyttävät useita eri ratkaisuja tallessa ja käyttävät näitä sitten hyväkseen ratkaisun etsimisessä. GLS:n muisti puolestaan liittyy sakkotermiin, joka VRP:n ratkaisemisessa tarkoittaa usein jokaiselle kaarelle määrättyyn sakon määrään ja ratkaisun etsimisen rajoittamiseen niiden avulla. Suurten ratkaisupopulaatioiden ja jokaiselle mahdolliselle kaarelle asetettavien sakkokertoimien muistissa pitäminen saattaa kuitenkin muuttua ongelmaksi varsinkin hyvin suurten ongelmien kanssa, koska muistinkulutus yleensä kasvaa huomattavasti nopeammin kuin ongelman koko. Toisaalta jos toteutuksessa käytettäviä tietorakenteita optimoidaan kuluttamaan vain vähän muistia, niin saattaa puolestaan toteutuksen nopeus kärsiä huomattavasti. 9.3 Korjaavien menetelmien käyttö Monet metaheuristiikoista perustuvat korjaavien menetelmien ohjaamiseen ja niiden auttamiseen pois lokaaleista optimeista, mutta jotkin menetelmät rivät kuitenkaan välttämättä edes tarvitsisi niitä, vaan käyttävät korjaavia menetelmiä ainoastaan ratkaisujen hienosäätämiseen paremmiksi. Tabuetsintä ja simuloitu jäähdytys perustuvat korjaavien menetelmien käyttämiselle, tabuhaku ohjaa ratkaisun etsinnän pois lokaalista optimista kun sinne joudutaan ja simuloitu jäähdytys pitää etsintää alkuvaiheessa laajalla alueella antamalla korjaavan menetelmän tehdä myös ratkaisua huonontavia siirtoja. Geneettisen algoritmit eivät puolestaan korjaavia menetelmiä tarvitse koska ne perustuvat olemassa olevien ratkaisujen yhdistämiseen ja satunnaiseen muuttamiseen. Usein nekin jossain vaiheessa pyrkivät hakemaan parempaa tulosta joitakin korjaavia menetelmiä käyttäen. Menetelmissä jotka perustuvat korjaavien menetelmien ohjaamiseen, saattaa olla hyvinkin suuri merkitys lopputuloksiin sillä, että minkälaisia korjaavia menetelmiä 19

käytetään. Joillekin metaheuristiikoille saattaa sopia yksinkertaiset ja hyvin nopeat korjaavat menetelmät, kun taas toiset toimivat paremmin paljon erilaisia muutoksia kokeilevat korjaavat menetelmät. 10 Tulosten vertailusta menetelmien välillä Optimointimenetelmien laittaminen paremmuusjärjestykseen aiheuttaa usein suuria ongelmia. Vaikka monille eri ongelmatyypeille yleisesti käytössä olevat testiongelmat helpottavatkin menetelmien suorituskyvyn vertailua, niin ongelmaksi jää kuitenkin ratkaisun hyvyyden vertaaminen käytettyyn laskenta-aikaan. Myös laskentaajan ilmoittaminen on pieni ongelma, koska jokaisen menetelmän kehittäjä ajaa testit omalla tietokoneellansa, jolloin melkein kaikkien menetelmien laskennalliset tulokset on esitetty laskentatehokkudeltaan erilaisilla koneilla ajettuna, eivätkä ole suoraan vertailukelpoisia. Myös edellä esitetty menetelmissä käytetty satunnaisuus vaikeuttaa menetelmien vertailua, koska menetelmälle ei voida esittää yksikäsitteistä tulosta, vaan tuloksien tulkinnassa ja vertailussa on käytettävä tuloksia useista eri ajoista ja tehtävä tilastollista analyysiä näiden perusteella. Näiden lisäksi vertailua vaikeuttavat erilaiset toteutustavat. Varsinkin jos esitetty algoritmi on monimutkainen niin sen voi usein toteuttaa monella eri tavalla niin, että toimintaperiiate on täysin sama, mutta ilman testejä on vaikea nähdä mikä olisi laskennallisesti nopein tapa. Myös saman algoritmin toteuttaminen eri ohjelmointiympäristöissä saattaa vaikuttaa huomattavastikin sen suoritusaikaan, eikä kaikkien tuloksen tarkkaa toteutusympäristöä ole aina mainittu. 11 Yhteenveto Metaheuristiikkojen ja heuristiikkojen avulla on mahdollista saada varsin hyviä tuloksia sellaisiin logistiikan optimointiongelmiin, joita ei ole mahdollista ratkaista tarkoilla menetelmillä. Metaheuristiikkojakin on kuitenkin hyvin monia erilaisia, eikä ainakaan tähän mennessä ole löydetty sellaista menetelmää, joka toimisi tehokkaasti kaikilla mahdollisilla ongelmatyypeillä. Tässä tutkielmassa esitetyt metaheuristiikat eivät ole kattava lista kaikista olemassa olevista menetelmistä, mutta antavat hyvän kuvan siitä, että minkälaisia menetelmiä metaheuristiikat voivat olla ja millaisia yhtäläisyyksiä ja eroavaisuuksia niistä löytyy. 20

Perinteisempiä metaheuristiikkoja ei useinkaan enää käytetä sellaisenaan, vaan osana muita kehittyneempiä ratkaisumenetelmiä. Uudempien menetelmien ongelmana on kuitenkin niiden monimutkaisuus ja mahdollisesti säätöä tarvitsevien parametrien määrä, jolloin ennen tehtävän ratkaisemista tarvittavan valmistelevan työn määrä saattaa olla hyvinkin suuri. Metaheuristiikkojen käytettäessä joutuu lisäksi tasapainoilemaan ratkaisun laskentaan käytettävän ajan ja ratkaisun hyvyyden suhteen. Lisäksi useiden menetelmien toteuttaminen on melko hankalaa, ja hyvin suuria ongelmakokoja varten olisi tarvetta vieläkin nopeammille ratkaisumenetelmille. Metaheuristiikkojen välistä tehokkuuden vertailua vaikeuttaa muun muassa useissa menetelmissä käytettävä satunnaisuus, menetelmissä käyttävien korjaavien heuristiikkojen erilaisuus, sekä metaheuristiikkojen testauksessa käytettävät eritasoiset tietokoneet ja erilaiset toteutusympäristöt ja -tavat. Lähteet [1] John E. Bell ja Patrick R. McMullen, Ant colony optimization for the vehicle routing problem, Advanced Engineering Informatics, Vol. 18, (2004) 41-48. [2] Christian Blum ja Andrea Roli, Metaheuristics in Combinatorial Optimization: Overview an Conceptual Comparison, ACM Computing Surveys, Vol. 35, No. 3 September 2003 pp. 268-308. [3] Olli Bräysy, Jean Berger, Mohamed Barkaoui, Wout Dullaert, A Threshold Accepting Metaheuristic for the Vehicle Routing Problem with Time Windows, Central Eur. J. Oper. Res, 2003. [4] Karl F. Doerner, Richard F.Hartl, Guenter Kiechle, Maria Lucka, Marc Reimann Paraller Ant Systems for the Capacitated Vehicle Routing Problem, EvoCop 2004, LNCS 3004, pp.72-83. 2004. [5] Marco Dorigo ja Thomas Stützle The Ant Colony Optimization Metaheuristic: Algorithms, Applications and Advances, Handbook of Metaheuristics (2003) Chapter 9, ISBN 1-4020-7263-5 [6] Gunter Dueck, Tobias Scheuer, Threshold accepting: a general purpose optimization algorithm appearing superior to simulated annealing, Journal of Computational Physics archive, Volume 90, Issue 1, 1990, pp. 161-175. 21