Reitinoptimointiongelma, sen variantit ja ratkaisumenetelmät FT Tuukka Puranen TIEA382 7.3.2012
Tavoitteet Tunnistaa alueita, jossa reitinoptimointia voidaan hyödyntää Hahmottaa reitinoptimoinnin keskeiset päätösmuuttujat, rajoitteet ja tavoitteet Tietää millä periaatteilla reitinoptimointiongelmia ratkaistaan Heuristiikat Metaheuristiikat Ymmärtää miten reitinoptimointimalleja voidaan tarkentaa ja miksi Tietää yleisesti laitoksen VRP-tutkimuksesta
Kauppamatkustajan ongelma (TSP)
Reitinoptimointiongelma (VRP)
Reitinoptimointitehtävä Lähtö autoilla keskusvarastolta, käy kaikissa pisteissä ajallaan Matkustusnopeus 1 yksikkö / 1cm Muutaman pisteen kohdalla takaraja annettu Pysähtyminen vie 1 yksikön per piste Kuhunkin autoon mahtuu 10 yksikköä Kunkin pisteen kapasiteettitarve annettu kartalla Tavoite: mahdollisimman vähän autoja (reittejä), mahdollisimman lyhyet reitit
Sillä välin tosimaailmassa Postinjakelu Öljy- ja kemikaalikuljetukset laivoilla Päivittäistavarat Kuriiripalvelut Koulukuljetukset Jätteiden keruu Teiden auraus Kotisairaanhoito Vanhusten ruokakuljetukset (Credit: Hämeen ammatti-instituutti)
Käsin suunnittelun rajat
Käsin suunnittelun rajat 12:00-12:30 18:00-19:00 12:15-12:45 19:00-19:30
VRP formaalisti Kuljetaanko i:stä j:hin k:lla? Ajoneuvot Kaikkialla käytävä kerran Kuljetustarve i:hin (delta) Kaikki autot lähtevät varikolta Ja saapuvat varikolle Hinta i:stä j:hin (psi) Pisteet Auton kapasiteetti (phi) Ja jatkavat matkaa siitä mihin ovat saapuneet Jokaisella pisteellä on Juokseva järjestysnumero Jotka alkavat varikolta nollasta
Ratkaisumenetelmät TSP NP-täydellinen Lineaarioptimointi
Ratkaisumenetelmät x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o x x x x x x x x x x x x x x o o o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o o o x x x x x x x x x x x x x x x x o x x x x x x x x x x x x x o o o o x x x x x x x x x x x x x x x x x x x x o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o x x x x x x x x x x x x x x x x x x o o o o x x x x x x o o x o o o x x x x x x x x x x x x x x x x x x x x o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o o o o o o o o o x x x x x x x x o o o x x x x x x x x x x x x x x x x o o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o x x x x x x x x x x x x x x x x x x x x x x x o o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x o o x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x (Credit: Wikipedia)
Heuristiikat Eksplisiittisen päätösmuuttujien käsittelyn sijaan operoidaan verkkoesityksen avulla Helpompi hahmottaa ja suunnitella menetelmiä Muutetaan pieni osa päätösmuuttujista kerralla Heuristiikat luonteeltaan epätarkkoja eli eivät takaa mitään Kaksi (reititys)heuristiikkojen perustyyppiä Rakennusheuristiikat Parannusheuristiikat
Rakennusheuristiikoista Tavoitteena luoda alkuratkaisu, joka toteuttaa kaikki ehdot (rajoitteet) Kaikki pisteet jollain reitillä Kapasiteettia ei ylitetä, jne. Ei aina mahdollista (ja myös NP-täydellinen) Idea: otetaan piste kaukaa ja tehdään siitä reitti. Lisätään lähellä olevia yksitellen tälle reitille niin monta kuin mahtuu Demo
Parannusheuristiikoista Alkuratkaisussa on usein parantamisen varaa Parannusheuristiikat etsivät pienillä muutoksilla saatavia ratkaisuja jotka olisivat parempia kuin tämänhetkinen (local search) Idea: Otetaan piste reitiltä ja siirretään se toiselle reitille jos ratkaisu näin paranee Käydään läpi kaikki pisteet Toistetaan kunnes parempia ratkaisuja ei löydy Hill climbing täydellisessä pimeydessä Demo
Parannusheuristiikkojen rajat Lokaalin haun siirrot (edellä ns. relocate -siirto reitiltä toiselle) päätyvät hyvin usein lokaaliin optimiin Tilanne jossa ei ole enää näkyvissä siirtoja jotka parantaisivat Vuorenhuippu pimeässä Ei ole kuitenkaan takeita siitä että ollaan löydetty paras (tai edes hyvä) ratkaisu Usein ei olla (vaikka demosta voisi näin päätellä ) Miten parannettaisiin tuloksia?
Metaheuristiikat Heuristiikkoja parantamaan on kehitetty heuristiikkojen heuristiikkoja (meta-) Tavoitteena on päästä pois lokaalista optimista (tai välttää niitä) Metaheuristiikka ohjaa lokaalin haun heuristiikkojen toimintaa esim. Säätämällä mikä siirto hyväksytään Valitsemalla millaisia siirtoja käytetään Muuttamalla tavoitefunktiota sopivasti Muuttamalla ratkaisua riittävän paljon
Variable Neighborhood Search Lokaalin haun operaattoreita on useita ja ne tekevät eri siirtoja (relocate, exchange, 2-opt, 3-opt, ) Kukin operaattori näkee eri vuoriston Idea: käytetään jotain toista operaattoria aina kun nykyinen jää jumiin lokaaliin optimiin Usean naapuruston haku Naapurusto = hakuoperaattorin läpi käymien vaihtoehtojen joukko Demo
Tabu Search Uusien operaattoreiden tuonti mukaan lisää laskenta-aikaa Entä kun mikään operaattori ei löydä parantavaa siirtoa? Ei voida taata että ratkaisu on paras (tai edes hyvä, joskin parempi kuin millään yksittäisellä siirrolla) Idea: Valitaan vähiten huonontava Miten estetään päätyminen heti takaisin samaan lokaaliin optimiin? Lista siirroista joita ei saa tehdä (tabu)
Muita Metaheuristiikkoja myös esim. ohjattu lokaali haku, simuloitu jäähdytys, iteroitu lokaali haku, Evoluutiolaskenta Memeettiset algoritmit (risteytys + lokaali haku) Risteytys vaikeaa monimutkaisissa tilanteissa Tehokkaimmat yhdistävät useita elementtejä Lisäksi: mm. purkumenetelmiä, rajoitteiden rikkomista Käytännössä: saavutetaan jo hyviä tuloksia
Sillä välin tosimaailmassa (taas) Logistiikkatoimija kuljettaa päivittäistavaraa useasta varastosta pieniin liikkeisiin kaupunkialueella Joistain liikkeistä täytyy poimia paluukuljetuksina esimerkiksi tyhjiä pulloja Logistiikkatoimijalla on autoja ja kuljettajia Autot ovat kahdella varikolla kaupungin laidoilla Kuljetuksiin käytetään kolmenkokoisia autoja että toiminta olisi joustavaa Joitain tuotteita varten tarvitaan kylmäsäiliö Joihinkin autoihin voidaan liittää tarvittaessa perävaunu joka nostaa kilometrikustannusta
Sillä välin tosimaailmassa (taas) Joidenkin asiakkaiden luokse ei pääse isoimmilla autoilla kujien kapeuden vuoksi Osa kuljettajista ei saa ajaa suurimpia autoja tai ottaa perävaunua Työpäivän aikana on pidettävä kaksi taukoa 15 ja 30 minuutin ja työpäivä voi kestää enimmillään 9 tuntia Osaa tavaroista saa kuljettaa vain rajoitetun ajan Joitain tuotteita ei voi pakata yhtä aikaa samaan säiliöön Tuotteiden tulisi saapua perille annettuun määräaikaan mennessä Tehtävänä on valita kuka ajaa mitäkin autoa ja perävaunua ja milloin sekä mikä auto huolehtii mistäkin toimituksesta ja missä järjestyksessä Uusia tilauksia voi saapua jakelun ollessa käynnissä Tavoitteena on minimoida kustannukset logistiikkatoimijalle
Reitinoptimointimuunnelmia VRP aikaikkunoilla (VRPTW) Avoin VRP (OVRP) Monen varikon VRP (MDVRP) Periodinen VRP (PVRP) VRP paluukuljetuksilla (VRPB) Monimuotoisen kaluston reititys (HVRP) Nouto- ja toimitusongelma (PDP) Dynaaminen VRP (DVRP) VRP stokastisilla vaatimuksilla (VRPSD) VRP osastoilla (VRPC)
Monimuotoisen kaluston reititys Kalustossa eri tyyppisiä ajoneuvoja Hinta Kapasiteetti Saatavuus (aikaikkunat) Yhteensopivuus (esim. satamat) Ratkaiseminen vaatii käytännössä mm. uusia siirto-operaattoreita Onko esimerkiksi halvempaa pilkkoa reitti kahdelle pienelle autolle? Tavallisessa VRP:ssä vähemmän reittejä parempi
Nouto- ja toimitusongelma Jokainen tehtävä koostuu kahdesta osasta Nouto Toimitus VRP (ja MDVRP) ovat erikoistapauksia PDP:stä Voidaan yhdistää muiden ominaisuuksien kanssa Aikaikkunat, kapasiteetti, kaluston määrä ja tyyppi Käytännön ongelmat ovat mm. öljyn kuljetusta, koulukyytejä, lähettipalveluja,
PDP 3 4 4 5 2 3 5 0 6 8 8 7 1 2 1 7 6
VRPC Autoissa osastot (esim. kylmäsäiliö) Varmistettava että voidaan todellisuudessakin lastata suunnitelmien mukaan Yksi kapasiteettimitta ei riitä Käytännössä: uusia päätösmuuttujia mihin osastoon lastataan Uusia siirto-operaattoreita Sovelluskohteita Jätehuolto Kemikaalikuljetukset Päivittäistavarat
Optimointi tieverkossa Asiakaspisteet lisätään osoitteiden tai koordinaattien perusteella tieverkkoon Lyhimmän polun laskenta (Dijkstran algoritmi) Kaikista kaikkiin (rinnakkaistuu kauniisti) Ikäviä ominaispiirteitä Etäisyydet epäsymmetriset Liikenneruuhkat Sillat, kapeat tiet, ym. VRP-ratkaisijalle syötteenä etäisyysmatriisi Demo
Tutkimus Kehitetään optimointisovellusta käytännön reititysongelmien ratkaisemiseen Toteutusintensiivinen Monta varianttia kerralla Mallit Menetelmät Rinnakkaislaskenta Automaatio Tällä hetkellä 7 henkilöä
Lähestymistapa Nelson Lab Case X Case Y Käytäntö NFleet Toteutus Rich VRPs Tutkimus MDPDP CVRP VRPTW PDPTW Teoria Laivaliikenne Tavarantoimitus Postinjakelu Koulukuljetukset Käytäntö
Hyperheuristiikat Monta eri ongelmavarianttia Osin eri lokaalin haun operaattorit Eri parametrit Mahdollisesti eri metaheuristiikat Mutta käyttäjä ei tiedä optimointimenetelmistä mitään Idea: kerätään tilastotietoa siitä mikä toimii milloinkin Tilastollinen päättely kun kohdataan uusi ongelma
Automaattinen mallinnus Monta eri ongelmavarianttia Osin eri rajoitteet Osin eri tavoitteet Osin eri päätösmuuttujat Käyttäjällä data, mutta tietää matemaattisesta mallinnuksesta vielä vähemmän kuin menetelmistä Idea: optimointimallin päättely asiakkaan datasta (puoli-) automaattisesti Tilastollinen luokittelu, graafien similaarisuusmitat
Mapper Mockup Map data sources to the selected domain model erp_vehicle license_plate vehicle_type designated_driver erp_order id date address due_datetime erp_delivery id order_id product_id amount weight X X X nf_vehicle id top_speed capacity nf_order id timewindow address capacity_req (Credit: tohtorikoulutettava Jussi Rasku)
Siirtäminen käytäntöön Testataan ratkaisemalla oikean maailman optimointiongelmia Tällä hetkellä sovittujen pilottien loppukäyttäjinä mm. Keski-Suomen Sairaanhoitopiirin ensihoidon ohjaus (ambulanssit) Keski-Savon henkilökuljetus (koulubussit) Puolustusvoimien huolto (kuorma-autot)
Opinnäyte- ja projektiaiheita Tieverkkodata Tietietokannan toteutus Karttakomponentin toteutus Satunnaisten tieverkkojen luonti Menetelmät Automaattisen mallipäättelyn prototyypit Rinnakkaislaskenta Menetelmien rinnakkaistuksen prototyypit Työkalut Massa-ajojärjestelmän jatkokehitys
Kysymyksiä? Keskustelua, kommentteja Muita demoja? Myös myöhemmin tuukka.puranen@jyu.fi Ag C323.1
Yhteenveto Reitinoptimointiongelma tulee vastaan monessa paikassa Tavoitteena on minimoida tarvittava kalusto (resurssit) ja kuljettu matka Ongelmia ratkaistaan käytännössä metaheuristiikoilla Reitinoptimointiongelmasta useita variantteja jotka vastaavat eri tosielämän vaatimuksiin Laitoksella tehtävän tutkimuksen tavoitteena on hallita laaja kirjo variantteja kerralla