Ruttplanering i vägdatabas M A L E N A S Ö D E R L U N D



Relevanta dokument
Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Grafer. 1 Grafer. Grunder i matematik och logik (2015) 1.1 Oriktade grafer. Marco Kuhlmann

Föreläsning 4: Kombinatorisk sökning

Föreläsning 4: Giriga algoritmer. Giriga algoritmer

Föreläsning 11. Giriga algoritmer

Föreläsning 8: Intro till Komplexitetsteori

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

N = {i}: noder (hörn) Graf: G = (N, B) Definitioner. Väg: Sekvens av angränsande bågar. Cykel: Väg som startar och slutar i samma nod.

Solowheel. Namn: Jesper Edqvist. Klass: TE14A. Datum:

Föreläsning 12+13: Approximationsalgoritmer

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

Föreläsning 7 Datastrukturer (DAT037)

TAOP86/TEN 1 KOMBINATORISK OPTIMERING MED

TNK049 Optimeringslära

Vätebränsle. Namn: Rasmus Rynell. Klass: TE14A. Datum:

Föreläsningsanteckningar F6

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

UPPGIFT 1 KANINER. Håkan Strömberg 1 Pär Söderhjelm

Föreläsning Datastrukturer (DAT036)

Föreläsning Datastrukturer (DAT037)

Alternativa rutter med tidsbegränsning via en dubbelriktad modifiering av Dijkstra s algoritm

ETS052 Internet Routing. Jens A Andersson

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

Föreläsning 6: Introduktion av listor

R AKNE OVNING VECKA 1 David Heintz, 31 oktober 2002

Graphs (chapter 14) 1

Föreläsning Datastrukturer (DAT036)

Nät med flera länkar. Vägval. Enklaste formen av kommunikation:

Algoritm för uppskattning av den maximala effekten i eldistributionsnät med avseende på Nätnyttomodellens sammanlagringsfunktion

Trafiksimulering: Grafalgoritmer

Tentaupplägg denna gång

NMCC Sigma 8. Täby Friskola 8 Spets

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Föreläsning 6 Datastrukturer (DAT037)

Föreläsning 5: Grafer Del 1

En ideal op-förstärkare har oändlig inimedans, noll utimpedans och oändlig förstärkning.

Föreläsning Datastrukturer (DAT036)

Handledning hur man motiverar föräldrar att inte skjutsa sina barn i bil till skolan

Bygga hus med LECA-stenar

Kommentar till bilderna. Att spara hörsel för framtiden. Bara det värdefulla är vi beredda att skydda! Hörseln vad kan vi förstå?!

Optimering. Optimering av transportproblem. Linköpings universitet SL. Campusveckan VT2013

Concept Selection Chaper 7

Föreläsning Datastrukturer (DAT037)

Föreläsning 5: Dynamisk programmering

729G04 - Diskret matematik. Lektion 4

Införande av ruttplanering och slottider: ett medel att påverka kötider och uppstallning vid slakterier.

FACIT version (10 sid)

Träd. Sats. Grafer. Definition. En fullständig graf har en båge mellan varje par av noder. Definition

FÖRELÄSNING 1 ANALYS MN1 DISTANS HT06

Samrådsgrupper Hösten 2014

Föreläsning 10. Grafer, Dijkstra och Prim

Collaborative Product Development:

Kaliningrad) låg vid bägge sidor av floden Pregel samt på

KUNGSBACKA KOMMUN. Duvehed Trafikutredning. Göteborg

Självkörande bilar. Alvin Karlsson TE14A 9/3-2015

Questionnaire for visa applicants Appendix A

Föreläsning 8 Datastrukturer (DAT037)

Basbyte (variabelbyte)

TAOP88/TEN 1 OPTIMERING FÖR INGENJÖRER

Algoritmer, datastrukturer och komplexitet

Föreläsning 10. Grafer, Dijkstra och Prim

Föreläsning 10. Grafer, Dijkstra och Prim

Förord. Implementering och utvärdering av en bildbaserad autentiseringsmetod

Träd, binära träd och sökträd. Koffman & Wolfgang kapitel 6, avsnitt 1 4

Lennart Carleson. KTH och Uppsala universitet

1. How many hours per week have you on average spent on the course, including scheduled time?

Grafer MST Top. sortering Starkt samm. komponenter Kortaste avstånd. Grafalgoritmer 1. Douglas Wikström KTH Stockholm

Användarhandbok. MHL to HDMI Adapter IM750

Senaste revideringen av kapitlet gjordes , efter att ett fel upptäckts.

Module 6: Integrals and applications

Nätverksoptimering. Examensarbete i Datavetenskap. - Bästa möjliga tillgänglighet till lägsta möjliga länkkostnad

Ickelinjära ekvationer

Tentamen MMG610 Diskret Matematik, GU

Fortsättningskurs i programmering F 2. Algoritmer i Programutveckling Hugo Quisbert Problemexempel 1

Riskanalys fo r kritiska IT-system - metodbeskrivning

Problem: BOW Bowling. Regler för Bowling. swedish. BOI 2015, dag 1. Tillgängligt minne: 256 MB

Optimering. Optimering

Kapacitet för godståg på Västra och Södra stambanan

TNSL11 Kvantitativ Logistik

Några svar till TDDC70/91 Datastrukturer och algoritmer

Viktigt att tänka på i en intervju och de vanligaste fallgroparna. som intervjuar. Ett kostnadsfritt whitepaper utgivet av Level Recruitment

Administrationsverktyg för marinvåg

Kapitel 6, 7, 8 o 9: Data och protokoll. LUNET o SUNET

Om oss DET PERFEKTA KOMPLEMENTET THE PERFECT COMPLETION 04 EN BINZ ÄR PRECIS SÅ BRA SOM DU FÖRVÄNTAR DIG A BINZ IS JUST AS GOOD AS YOU THINK 05


Objektorienterad programmering

Sammanställning av trafikåtgärder Riktlinjer för trafiksäkerhetsarbetet i Nacka 2009

någon skulle föreslå, att ur våra räkningar utesluta tecknet "j/, så att man t. ex. skulle skriva lösningen av

PM- Kalibrering av barriärmatriser i Skåne modellen

trafiksäkerhet i nytt ljus Vi hjälper dig att skapa en tryggare väg

Datastrukturer och algoritmer

Svar och arbeta vidare med Student 2008

miljö och samhällsbyggnad Till dig som ska börja ditt sista år på en utbildning inom miljö eller samhällsbyggnad

UMEÅ UNIVERSITET 26 april 2002 Instutionen för datavetenskap. Grafproblem. Laboration 4, Datastrukturer och Algoritmer VT02

Uppgift 1. Kylskåpstransporter

725G61 - Laboration 7 Implementation av ett API. Johan Falkenjack

Digitalisering av gångvägnät för hela staden PROJEKTSKISS TILL E-TJÄNSTEPROGRAMMET

The National Institute of Child Health and Human Development (NICHD) Protocol: Intervjuguide

Transkript:

Ruttplanering i vägdatabas M A L E N A S Ö D E R L U N D Examensarbete Stockholm, Sverige 2006

Ruttplanering i vägdatabas M A L E N A S Ö D E R L U N D Examensarbete i datalogi om 20 poäng vid Programmet för datateknik Kungliga Tekniska Högskolan år 2006 Handledare på CSC var Mikael Goldmann Examinator var Stefan Arnborg TRITA-CSC-E 2006:098 ISRN-KTH/CSC/E--06/098--SE ISSN-1653-5715 Kungliga tekniska högskolan Skolan för datavetenskap och kommunikation KTH CSC 100 44 Stockholm URL: www.csc.kth.se

Sammanfattning Att minimera körkostnader kan leda till stora resursbesparingar varför ruttplanering är ett intressant problem för verksamhetsområden som taxikörningar, kundleveranser, skolskjuts och diverse transporter. Uppdragsgivaren för detta examensarbete, Decerno AB, har utvecklat en vägdatabas som binder samman vägnätsanknuten information från flera olika verksamheter. Genom att göra data om vägars fysiska egenskaper, som till exempel bredd och längd, tillgängligt från samma ställe som data om olika gators gällande trafikregler, skapas ett bra underlag för att göra ruttplaneringar på. Decerno vill nu undersöka om vägdatabasens modell och data är tillräckliga och lämpliga för att utföra ruttplanering på. Detta görs genom att titta närmare på problemen Kortaste vägen, att hitta kortaste vägen mellan två punkter, samt the Traveling Salesman Problem, att hitta den bästa rutten mellan flera punkter. Kortaste vägen mellan två punkter erbjuds idag av många karttjänster och det finns flertalet effektiva lösningar på problemet. Traveling Salesman Problem är ett mer avancerat kombinatoriskt problem där flera punkter ska besökas till en så liten körkostnad som möjligt. Ju fler punkter som besöks desto längre tid tar det att beräkna den bästa rutten. Det finns idag inga kända lösningar som hittar den bästa rutten tillräckligt effektivt varför det har utvecklats många approximationsmetoder som ger en tillräckligt bra rutt. Oracle Spatial Network levereras med Oracle 10g och har ett paket för nätverksanalys där lösningar på Kortaste vägen och Traveling Salesman Problem finns implementerade. I examensarbetet undersöks huruvida dessa kan användas för att ruttplanera på Decernos databas samt jämför dem med lösningar på samma problem som utvecklas i en prototyp. En jämförelse görs även mellan Decernos vägdatabas och en kommersiell vägdatabas utvecklad av det holländska företaget Tele Atlas. Den prototyp som utvecklats under examensarbetet kan använda båda databaserna som dataunderlag. Problem med att avgöra vilka två noder i de två databaserna som motsvarar samma punkt i verkligheten har gjort att jämförelsen är grundad på modellen snarare än data. Detta har visat att Tele Atlas modell är väl anpassad för ruttplanering medan Decernos modell har ett bredare användningsområde. Dock kan små förändringar göra Decernos modell till en bra grund för ruttplanering. Då tester körts på samma vägnät i prototypen och i Oracle Spatial Networks analysverktyg har prototypen löst problemet Kortaste vägen snabbare medan Oracles lösningar på the Traveling Salesman Problem har hittats snabbare och resulterat i kortare rutter. Oracle Spatial Networks lösningar missar dock att besöka vissa noder i några få fall.

Vehicle Routing in Road Database Abstract Minimizing driving costs can help saving resources which is why vehicle routing is an interesting problem for businesses like cab companies, deliverers, school pick up services and transports. Decerno, the company commissioning the study, has developed a road database that connects road network related information from several organizations. Good conditions for performing vehicle routing are achieved by making the physical attributes of a road network, for example the width and length of a road, accessible from the same place as network traffic rules. Decerno wants to investigate whether or not the database model and data are sufficient and suitable for vehicle routing. This is done by looking at the two problems Shortest Path, where the shortest path between two points is found, and the Traveling Salesman Problem, where the best route visiting two or more points is found. Solutions to the Shortest Path between two points is offered by many map services today and there are several efficient solutions to the problem. The Traveling Salesman Problem is a more complex combinatorial problem where several points are to be visited at the lowest possible driving cost. The more points to visit, the longer it takes to compute the best route. Today there exist no known solutions that can find this route efficiently enough, which is why many approximation methods, that give a sufficiently good route, have been developed. Oracle Spatial Network is delivered with Oracle 10g and has a network analysis package with the Shortest Path and the Traveling Salesman Problem implemented. This thesis investigates whether or not these solutions can be used to perform vehicle routing on Decerno s database and compares these to solutions developed in a prototype. The thesis also compares Decerno s database to a commercial database developed by Tele Atlas, a Dutch corporation specializing in geographic information. The prototype developed for this thesis can perform Shortest Path and Traveling Salesman Problem on both databases. Deciding which two nodes in the databases that correspond to the same point in the road network is problematic. This is why the comparison is based on the two models rather than tests on the data in the databases. The results show that Tele Atlas model is well adjusted to vehicle routing and Decerno s model has a wider usage, though small changes can make Decerno s model just as well adjusted to vehicle routing as Tele Atlas model. Tests show that the prototype solves the Shortest Path problem somewhat faster than Oracles Spatial Network s analysis tools while Oracle solves the Traveling Salesman Problem faster and with shorter routes than the prototype. Oracle Spatial Network s solutions do not visit all the given nodes in a few cases though.

Innehåll 1 Introduktion 1 1.1 Bakgrund................................. 1 1.2 Problem.................................. 2 1.3 Syfte.................................... 2 1.4 Avgränsningar............................... 3 1.5 Terminologi, förkortningar och definitioner............... 3 2 Teori 5 2.1 Vägdatabaser............................... 5 2.1.1 Decernos databas......................... 5 2.1.2 Tele Atlas databas........................ 7 2.1.3 Oracle Spatial Network..................... 9 2.2 Ruttplanering............................... 9 2.3 Kortaste vägen.............................. 12 2.3.1 Dijkstra.............................. 12 2.3.2 Floyd............................... 12 2.4 Traveling Salesman Problem....................... 13 2.4.1 Kandidatmängder........................ 15 2.4.2 Heuristiker baserade på närmsta grannen........... 15 2.4.3 Insättningsheuristiker...................... 18 2.4.4 Jämförelse av konstruktionsmetoder.............. 19 2.4.5 En approximation för asymmetrisk TSP............ 22 2.4.6 Förbättringar........................... 25 3 Metod 29 3.1 Arbetsgång................................ 29 3.2 Förutsättningar.............................. 30 3.3 Från vägdatabas till graf......................... 30 3.4 Kortaste vägen.............................. 31 3.5 Traveling Salesman Problem....................... 34 3.5.1 Minimal cykeltäckning...................... 35 3.5.2 Från många cykler till en.................... 38 3.5.3 Förbjudna svängar........................ 39

4 Resultat och jämförelser 41 4.1 Prototyp och Oracle Spatial Network.................. 41 4.1.1 Kortaste vägen.......................... 41 4.1.2 TSP................................ 42 4.2 Databaser................................. 43 4.2.1 Modellen för vägnätet och dess attribut............ 43 4.2.2 Tillgänglighet........................... 44 4.2.3 Data................................ 44 4.2.4 Syfte med databaserna...................... 45 5 Slutsatser och rekommendationer 47 Litteraturförteckning 51

Kapitel 1 Introduktion Denna rapport avhandlar ett examensarbete inom datalogi utfört på institutionen för Numerisk Analys och Datalogi vid Kungliga Tekniska Högskolan. Arbetet är gjort för uppdragsgivaren Decerno AB, ett konsultföretag med ca 30 anställda som har sitt huvudkontor i Täby utanför Stockholm. Handledare från Decerno är Johan Behrenfeldt och Patrik Engström, handledare från KTH är Mikael Goldmann. Problemet som undersöks är ruttplanering i en vägdatabas. I denna rapport ges först en bakgrund till examensarbetet, därefter följer ett teoriavsnitt som tar upp tidigare arbeten och kända metoder. Sedan beskrivs hur uppgiften lösts, vilken metod som använts och vad resultaten blev. Sist presenteras slutsatser och rekommendationer. Detta inledande kapitel syftar till att presentera problemet, dess bakgrund och tillämpningar, beskriva ramen för examensarbetet samt ge några definitioner som kan vara bra att hålla i minnet under läsandet av rapporten. 1.1 Bakgrund Ruttplaneringsproblem handlar ofta om att från en eller flera terminaler skicka ut ett eller flera fordon för att besöka givna punkter och sedan återvända till utgångsterminalen. Det finns många olika tillämpningar så som skolskjuts, färdtjänst, sophämtning och varuleverans och de ställer alla olika krav på ruttplaneringen. Handlar det om distribution av varor är det viktigt att ta hänsyn till att fordonen inte får överlastas, att chaufförerna får sina raster och att de anländer till kunden när kunden har öppet och kan ta emot leveransen. Om ruttplaneringen avser en skolskjuts handlar kraven istället om att eleverna inte ska behöva vänta på skjutsen för länge eller komma till skolan långt innan första lektionen. Decerno AB har i samarbete med Stockholms Stad tagit fram LV, Lokal Vägdatabas, för att kunna samordna flera olika databaser innehållande information om 1

KAPITEL 1. INTRODUKTION stadens vägnät. Tidigare hade olika verksamheter separata system men idag kan mycket vägdata göras åtkomliga från LV. De gamla databaserna finns kvar för att behålla viss verksamhetsuppdelning men de kommunicerar och utbyter data med LV så att flera verksamheter får tillgång till gemensamma vägdata. I dagsläget är LV kopplat till två databaser, Gata, som är en databas över vägars fysiska egenskaper, och LTF (Lokala Trafikföreskrifter) som är en databas över de trafikregler som gäller på vägarna. Vabas är en databas över brunnar och vattenledningssystem och det finns andra över till exempel gropar i vägbanorna. Dessa är exempel på databaser som idag inte är kopplade till LV men skulle kunna bli det i framtiden. LV kan utbyta data med NVDB, Nationell VägDataBas, som är Vägverkets rikstäckande databas över Sveriges vägar. LV är tänkt att komplettera NVDB och ha större detaljrikedom inom det specifikt täckta området. Systemet har nyligen tagits i bruk och det finns nu intresse för att utveckla en ruttplanerare för LV. 1.2 Problem Ruttplanering är ett intressant problem för många verksamheter och med många tillämpningsområden. Kända lösningar på problemet använder sig ofta av en graf som representerar vägnätet. En graf är en mängd länkar, vilka representerar vägavsnitt, som binds samman av noder, vilka representerar korsningar. Minimikrav för en ruttplanering är tillgång till information om vägavsnitt, korsningar och någon kostnadsfunktion (till exempel vägavsnittets längd) kopplad till länkarna. En vägdatabas innehåller normalt detta och mycket mer, så som förbjudna körriktningar eller förbjudna manövrar, vägbredd, fri höjd och annat som kan vara av intresse vid en ruttplanering. LV innehåller och fylls på med denna information kontinuerligt och borde utgöra en bra grund för ruttplanering. För att kunna applicera kända metoder och algoritmer måste informationen i vägdatabasen extraheras till en graf innehållande den information som är relevant för vägnätet i en ruttplanering. Hur detta görs beskrivs mer detaljerat i Metod, kapitel 3. Decerno vill veta om ruttplanering kan ske på LV så som modellen ser ut idag. Ruttplaneraren ska dels kunna ge kortaste vägen från en punkt till en annan och dels kunna föreslå en bra rutt som besöker vissa givna punkter i någon ordning. 1.3 Syfte Examensarbetet syftar till att undersöka om det går att ruttplanera med LV som vägdataunderlag. Detta görs dels genom att utveckla en enkel ruttplaneringsprototyp som använder LV som vägnät och dels genom att använda de inbyggda ruttplaneringsfunktioner som finns tillgängliga i Oracle Spatial Network. 2

1.4. AVGRÄNSNINGAR I arbetet ingår även att jämföra dessa två sätt att ruttplanera för LV samt att jämföra LV med en vägdatabas utvecklad av Tele Atlas. 1.4 Avgränsningar Examensarbetet behandlar inte ruttplanering i dess helhet utan koncentrerar sig på delproblemen Traveling Salesman Problem och Kortaste vägen. Båda problemen presenteras mer ingående i Teori, kapitel 2. Endast två sätt att ruttplanera för LV utreds och jämförs, nämligen att använda Oracle Spatial Networks inbyggda funktioner och att implementera en enkel prototyp. Jämförelsen mellan LV och Tele Atlas databas är baserad på en studie av respektive modell. Ruttplaneringsprototypen kan använda båda databaserna som vägnätsunderlag men för få tester har gjorts för att kunna dra några slutsatser. Det enda data som är detsamma i LV och i Tele Atlas databas är vägarnas namn varför det är tidskrävande och omständligt att hitta noder i databaserna som kan anses vara desamma i verkligheten. 1.5 Terminologi, förkortningar och definitioner LV - Lokal Vägdatabas, utvecklad av Decerno NVDB - Vägverkets rikstäckande Nationella VägDataBas Graf - En mängd noder sammankopplade av länkar. I denna rapport kommer länkar och kanter användas som synonymer. I en viktad graf har länkarna en kostnad. Kostnaden beror på tillämpning men det är i ruttplaneringssammanhang vanligt att kostnaden är vägavsnittets längd eller tiden det tar att färdas längs detta. Alla grafer antas vara viktade i denna rapport. Kostnad, vikt och längd används som synonymer för kostnaden på en kant mellan noderna i och j och betecknas med c ij, w ij eller d ij. Oriktad graf - En graf där länkarna saknar riktning. Det är möjligt att färdas längs en länk i båda riktningarna. Riktad graf - En graf där länkarna har riktning. Färd längs en länk kan bara ske i dess riktning. Fullständig graf - Graf där varje nod är kopplad till varje annan nod via en länk. Bipartit graf - En graf vars noder kan delas upp i två disjunkta mängder, X och Y, så att varje kant i grafen förbinder en nod i X med en nod i Y och ingen kant förbinder två noder i X eller två noder i Y. 3

KAPITEL 1. INTRODUKTION Kortaste vägen - Problemet att hitta kortaste vägen mellan två punkter. Med kortast menas lägst sammanlagd kostnad för alla länkar som ingår i vägen. I denna rapport används kortast och billigast som synonymer. TSP - Traveling Salesman Problem, Handelsresandeproblemet på svenska. Hitta den kortaste cykel som besöker ett antal givna noder. Stig - En sekvens av länkar och noder där alla noder, utom den första och sista, har exakt en länk före sig och en länk efter sig i sekvensen. Cykel - En stig där första och sista länken är sammankopplade. Hamiltoncykel - En cykel i en graf som besöker alla noder precis en gång och återvänder till startnoden. Att lösa TSP är att hitta den billigaste Hamiltoncykeln i en given graf. Hamiltonstig - En stig som besöker alla noder i en graf exakt en gång. n - I denna rapport kommer n i en funktion f(n) att vara storleken på indata för problemet. I TSP-problemet till exempel är n antal noder att besöka i en rutt. Triangelolikhet - Triangelolikheten säger att d ab d ac + d cb, det vill säga att det aldrig är en genväg att gå via en annan nod. Linjär tid - En algoritm är linjär om exekveringstiden i värsta fall växer som en linjär funktion, det vill säga ett polynom av första graden, till exempel n. Linjära algoritmer anses vara snabba i de flesta tillämpningar. Polynomisk tid - En algoritm är polynomisk om exekveringstiden i värsta fall växer som ett polynom. Ett exempel på ett sådant är n 3. Polynomiella algoritmer anses ofta vara rimligt snabba, men det beror på tillämpning och polynom. Exponentiell tid - En algoritm är exponentiell om exekveringstiden i värsta fall växer som en exponentialfunktion. Exempel på en sådan är 2 n. Sådana exekveringstider är normalt inte rimliga annat än för mycket små n varför problem, för vilka det inte finns en bättre känd lösning än en exponentiell algoritm, ofta approximeras med en polynomiell algoritm. log n - Med funktionen log n avses i denna rapport basen 2, det vill säga log 2 n vilket är den inversa funktionen till 2 n O(f(n)) - En algoritm tillhör O(f(n)) om exekveringstiden växer högst lika snabbt som f(n) gånger en konstant. Ω(f(n)) - En algoritm tillhör Ω(f(n)) om exekveringstiden växer minst lika snabbt som f(n). 4

Kapitel 2 Teori Detta kapitel avhandlar några kända metoder för att lösa problemen Kortaste vägen och TSP. För Kortaste vägen finns kända algoritmer som löser problemet på polynomisk tid och därför kan den optimala lösningen hittas. TSP är ett svårare problem och har inga idag kända polynomiska lösningar. För en optimal TSP-lösning finns ännu bara exponentiella algoritmer varför man ofta får nöja sig med en tillräckligt bra rutt och approximera en optimal lösning med en polynomiell algoritm. Det finns diverse metoder för att förbättra den rutt man fått och några presenteras och beskrivs nedan. Eftersom arbetet inte behandlar ruttplanering i stort ges endast en kort beskrivning av helhetsproblemet. Först presenteras de vägdatabaser som ruttplaneringen ska ske på och Oracle Spatial Networks ruttplaneringsfunktioner. 2.1 Vägdatabaser Nedan presenteras LV, den databas som Decerno utvecklat och som examensarbetet avser undersöka lämpligheten för ruttplanering på. Därefter presenteras den databas som Tele Altas har utvecklat och som LV ska jämföras med. Sist ges en beskrivning av Oracle Spatial Network och det paket med vägnätsanalys som följer med den nya versionen Oracle 10g. 2.1.1 Decernos databas Decerno har utvecklat en lokal vägdatabas, LV i samarbete med Stockholm Stad. Databasens främsta uppgift är att göra vägnätsdata från olika verksamheter tillgängliga från ett och samma ställe. Nu har även intresset väckts för att göra ruttplanering med LV som dataunderlag. Nedan följer en beskrivning av de delar av LV som är viktiga i ruttplaneringssammanhang. 5

KAPITEL 2. TEORI Figur 2.1. En referenslänk och dess referenslänksdelar kopplade till noder via portar Vägnätets representation I LV representeras vägavsnitt som referenslänkar. En referenslänk byggs upp av referenslänksdelar som tillsammans sträcker sig heltäckande över det vägavsnitt som referenslänken representerar. Om en referenslänk består av mer än en referenslänksdel är dessa kopplade till varandra via noder. Till skillnad från den traditionella grafrepresentationen, där länkar kopplas direkt till en nod, sker kopplingen mellan en referenslänksdel och en nod via portar. Varje referenslänksdel har en länkport i vardera ände och en nod kan ha godtyckligt många nodportar. Sammankopplingen mellan referenslänksdel och nod går via detta länkport-nodport-par. Figur 2.1 visar hur referenslänksdelar sträcker sig över en referenslänk och hur portas används för att koppla samman noder och referenslänksdelar. Hädanefter antas portar koppla noder och referenslänksdelar även om de utelämnas i figurer. En referenslänk är ett stabilt objekt som inte förändras, så att om vägnätet byggs om försvinner inte information knuten till referenslänken. Istället är det referenslänksdelarna som förändras för att spegla verkligheten. Följande exempel illustreras i figur 2.2. R är en referenslänk mellan noderna A och B. R består av en enda referenslänksdel R 1. En ny väg byggs och ansluts via en T-korsning till den gamla. Den nya vägens referenslänk S ansluts till R via en nod C. Eftersom R är ett stabilt objekt förändras inte det. Referenslänksdelen R 1 ersätts av två referenslänksdelar R 2, mellan noderna A och C, och R 3, mellan noderna C och B. På så sätt går inte information knuten till referenslänken förlorad trots att dess referenslänksdelar har förändrats för att spegla en förändring i verkligheten då den nya vägen byggdes till. Ett LIVO, LInjärtVerksamhetsObjekt, är en mängd länkar och noder som tillsammans utgör en enhet i det verkliga gatunätet. Vanligt är att de utgör en hel gata i de fall då man vill se på gatan som helhet snarare än alla länkar som utgör den [2, 3, 9]. Företeelser och utbredningar En företeelse är en egenskap som ett vägavsnitt kan ha, till exempel bredd, slitlagerstyp, antal körbanor, parkeringsförbud eller påbjuden körriktning. Vissa företeelser kan vara överlappande och andra inte. Ett vägavsnitt kan till exempel ha flera namn 6

2.1. VÄGDATABASER R A R 1 B R A R 2 C R 3 B S S 1 D Figur 2.2. Referenslänksdelar återspegar förändringar i verkligheten men inte överlappande hastighetsbegränsningar. Företeelserna kopplas till referenslänkar och noder via utbredningar. Olika företeelser har olika sorters utbredningar. Företeelsen slitlager har till exempel en linjeutbredning då slitlagret på vägavsnittet utbreder sig längs med hela eller delar av referenslänken. Företeelsen brunn har en punktutbredning och finns på en specifik punkt längs med referenslänken. Företeelsen förbjuden vänstersväng har en svängutbredning som är knuten till en nod och har referenser till de två länkarna, frånlänk och tillänk, som förbudet gäller. LV kan beskriva trafikregler så som enkelriktning, förbud mot infart med fordon, påbjuden högersväng och körfält för linjetrafik, vilka kan tas med i beräkningen av en rutt. Information om brunnar, begränsad fri höjd, maximal tyngd för fordon och så vidare kan beskrivas och användas i ruttplanering för större fordon. Tillåten körriktning lagras inte för alla länkar, om inget förbud eller påbud är kopplat till länken anses den vara öppen i båda riktningar. Företeelser kan vara tidsbundna. Till exempel kan ett körfält vara bussfil 9:00-15:00 [8]. Arkitektur En databas byggs upp av tabeller och LV har en modell som tydligt separerar vägnätselement och dess egenskaper. Det finns en tabell för referenslänkar, en för referenslänksdelar, en för noder, en för nodportar, en för länkportar och en kopplingstabell för nod- och länkportar där den egentliga kopplingen mellan en länk och en nod sker. Detta utgör nätverksdelen. Alla typer av företeelser lagras i en företeelsetabell, där en koppling till olika rader i en företeelsetypstabell anger vilken sorts företeelse som avses. Företeelsetabellen kopplas till referenslänkstabellen respektive nodtabellen via en utbredningstabell [9]. 2.1.2 Tele Atlas databas Tele Atlas är ett holländskt företag som specialiserat sig på geografisk information. En av deras största produkter är en vägdatabas som täcker stora delar av 7

KAPITEL 2. TEORI världen. Den som vill veta mer än det som beskrivs i denna rapport hänvisas till http://www.teleatlas.com. Vägnätets representation Precis som i LV representeras vägavsnitt av länkar som knyts samman av noder vilka oftast representerar korsningar, men även kan representera en punkt på vägen där den byter karaktär av något slag eller en ändpunkt på en väg. Länkar och noder kopplas direkt till varandra som i en traditionell graf. Länkarna i Tele Atlas modell motsvarar referenslänksdelarna i LV men det finns även andra typer av länkar så som järnvägslänkar och färjelänkar. Dessa länkar är mycket detaljerade men önskas en översikt av vägnätet finns andra tabeller som abstraherar bort mer eller mindre av vägnätet. Där finns detaljeringsnivåer från gator, som inkluderar alla vägavsnitt, till huvudvägar av motorvägstyp, som enbart inkluderar större huvudleder [14]. Vägnätets egenskaper Tele Atlas databas har inte utbredningar, egenskaper knyts direkt till vägnätselementen via ett ID. Egenskaperna är ungefär desamma som i LV men Tele Atlas databas är i vissa fall mer detaljerad. Till exempel kan vissa egenskaper vara knutna till en fordonstyp. De flesta egenskaper kan anses tillhöra antingen en länk eller en nod men förbjudna manövrar kan inte det. En manöver lagras som en sekvens av nätelement och kan ha olika grader av lämplighet så som rekommenderad eller förbjuden. Manövern spänner över en mängd av länkar och noder som tillsammans utgör en väg eller en bit av en väg i verkligheten. En förbjuden sväng är en manöver som gäller två länkar och en nod, men även förbjuden genomfart kan beskrivas som en manöver. En grupp av vägnätsegenskaper som Tele Atlas har, men LV saknar, är intressanta platser, eller som Tele Atlas kallar det Points Of Interest. Här finns restauranger, affärer, biografer, flygplatser och dylikt. Om dessa finns väldigt detaljerad information så som typ av mat eller typ av varor, telefonnummer, faxnummer, hemsida, ineller utrikesterminal och så vidare. En avancerad ruttplanerare skulle kunna utnyttja dessa attribut för att till exempel besöka alla grekiska restauranger eller alla golfbutiker. Sker denna ruttplanering med tidsfönster kan även chaufförens lunchraster och övernattningar passas in på lämpliga ställen där restauranger och hotell finns. Arkitektur Till skillnad från i LV, där alla företeelser finns samlade i en och samma tabell, är vägnätets egenskaper i Tele Atlas modell uppdelade efter kategori. Det finns en tabell för vägskyltar, en för adresspunkter, en för förbjudna manövrar och så vidare. Dessa egenskaper kopplas direkt till vägnätet, det vill säga länkar och noder, med ett ID för nätelementet. 8

2.2. RUTTPLANERING De mest intressanta vägegenskaperna för en ruttplanerare finns duplicerade direkt i länktabellen som kallas Network. En rad i denna tabell innehåller bland annat länkens ID, start- och slutnod, länkens namn, längd, vägklass, eventuella vägtullsavgifter, vägnummer, vägunderlag, beräknad medelhastighet, tillåtna körriktningar och eventuella väghinder [15]. 2.1.3 Oracle Spatial Network Oracle Spatial Network levereras tillsammans med den nya versionen Oracle 10g och är speciellt lämpad för databaser med spatiell information, till exempel vägdatabaser. Med Oracle Spatial Network medföljer även ett paket för nätverksanalys. Ännu finns inga avancerade ruttplaneringsalgoritmer där men algoritmer för TSP och Kortaste vägen finns implementerade. Analysen kräver att nätverket finns representerat i tabeller på ett visst givet format. I centrum står en länktabell och en nodtabell på vilka nätverksanalys sedan kan ske. För att presentera LV på ett sätt som Oracle Spatial Network kan läsa får dessa tabeller skapas genom sammanslagningar av referenslänksdelar, noder och lämpliga företeelser. När tabellerna är skapade kan analysfunktionerna användas. En länk är, i Oracles modell, antingen en del av nätverket eller inte. Det går inte att låta en länk vara öppen för trafik en viss del av dygnet eller för en viss typ av fordon. Denna förenkling gör att mer avancerade ruttplaneringar inte kan göras med Oracles inbyggda funktioner men den fungerar dock för enklare typer av rutter. För att modellera begränsningar så som förbjuden sväng kan dessa ges som argument till analysfunktionerna. Algoritmerna tar då hänsyn till begränsningarna så att inte en förbjuden väg föreslås. Nätverksanalysen är implementerad i Java och kan användas lätt och smidigt utan allt för mycket kunskap om hur funktionerna är uppbyggda. Det finns några olika implementationer av Kortaste vägen där användaren kan välja algoritm, men TSP finns bara implementerad på ett sätt. Vilken algoritm som används för TSP och vilka förbättringar som görs på turen, om några, är inte dokumenterat. Båda problemen löses med ID för noder som indata och ger en stig respektive cykel som utdata [5, 11]. 2.2 Ruttplanering Ruttplaneringsproblem handlar oftast om att från en eller flera terminaler skicka ut ett eller flera fordon för att besöka givna punkter och sedan återvända till utgångsterminalen. Handlar det om distribution av varor till kunder är det även viktigt att ta hänsyn till att fordonen inte får överlastas, att de kommer i tid till kunderna och att chaufförerna får sina raster. De flesta ruttplaneringsproblem är svåra, tiden för att lösa ett problem kan i värsta fall växa exponentiellt med problemets storlek. 9

KAPITEL 2. TEORI Figur 2.3. Tur för ett fordon med metoden av Clarke och Wright Ofta är det inte rimligt att finna den optimala lösningen till problemet utan man får nöja sig med en approximation. Lundgren, Jörnsten och Madsen [10] beskriver några tillvägagångssätt för att distribuera varor från en terminal till flera kunder med ett eller flera fordon så att alla kunderna får sitt behov tillfredställt och varje kund blir besökt av endast ett fordon. Vidare får inget fordon överlastas vilket förutsätter att varje kunds efterfrågan ryms i ett fordon. De förutsätter också att alla fordon har samma lastkapacitet, inte får köra mer än en rutt och börjar och slutar vid terminalen. Målet är att leverera alla varor till kunderna med minsta möjliga resursinsats, vilket för detta problem antas vara körsträckan. Under dessa begränsningar kallas problemet för Det klassiska ruttplaneringsproblemet och klassas som ett optimeringsproblem där vi försöker minimera kostnaden för en given instans. Den första metoden som Lundgren m.fl. beskriver är en besparingsmetod av Clarke och Wright som utgår ifrån en lösning där varje fordon bara besöker en kund och alla kunder besöks av ett fordon, se figur 2.3. Därefter kopplas rutter samman parvis så att den körda sträckan minskar utan att lastkapaciteten överskrids. Från terminalen dras separata turer till samtliga övriga n 1 noder. Man kan se det som att n 1 fordon besöker varsin kund och återvänder till terminalen. Målet är att slå samman turer så att fordon friställs, till dess att inte fler fordon än som finns tillgängliga används. Till en början finns n 1 rutter och bland dessa finns (n 1) 2 möjliga par för sammanslagning med olika besparingsvärden. Två turer slås ihop genom att en kant i vardera tur tas bort. De två öppna ändarna i turerna kopplas därefter till varandra med en kant. Den besparing som görs vid en sammanslagning är summan av de två bortplockade kanterna minus kostnaden för den tillagda kanten som binder turerna till varandra. Sammanslagningarna betraktas i sjunkande ordning, efter hur stor besparing som görs, och kan göras på flertalet sätt. Antal sätt ökar med antalet kunder som ingår i de sammanslagna rutterna. Vid stora problem kan uppräkningar av alla möjligheter vara omöjligt och man får då använda sig av förenklingar. 10

2.2. RUTTPLANERING En annan besparingsmetod som beskrivs är en av Mole och Jameson. Den liknar den ovan beskrivna men skapar rutten sekventiellt istället för parallellt. Startlösningen är densamma där varje kund blir besökt av precis ett fordon. En tur i taget betraktas och fylls på med nya kunder. När en tur inte kan ta fler kunder utan att överlasta fordonet betraktas nästa tur. Då nya kunder inkluderas i en tur förändras den totala kostnaden, ett fordon får längre sträcka att köra medan ett annat friställs. Den kund som ger den största totala besparingen väljs att inkludera i aktuell tur. Ett tredje alternativ är svepmetoden av Gillet och Miller. Kundernas koordinater är kända och de delas upp i sektorer så att ingen sektors efterfrågan överskrider ett fordons lastkapacitet. En kund väljs som startposition och sedan sveps kunderna över som av en klockvisare och tilldelas ett fordon till dess att detta fordon är fullt. Varje sektor motsvarar ett fordon. Olika startkunder ger olika lösningar och eftersom svepningen går relativt snabbt kan den göras om för olika val av startkund. Varje sektor schemaläggs sedan för sig och ett alternativ till schemaläggning är att besöka kunderna i den ordningen de inkluderades i sektorn. Nästa metod är en så kallad tvåfasmetod som delar upp kunderna i grupper och skapar en tur för varje grupp. I den första fasen av metoden fördelas kunderna på de fordon som kommer att besöka dem. Varje fordon motsvarar en sektion av kunder. Några geografiskt eller på annat sätt viktiga kunder väljs som seed-kunder och tilldelas ett fordon. Detta fordon besöker sin seed-kund som enda kund i rutten initialt. Därefter görs uppskattningar av hur dyrt det vore att inkludera de obesökta kunderna i respektive sektion. Kostnadsuppskattningarna tillåter att olika fördelningar av kunder på fordon kan jämföras utan att en slutgiltig rutt för fordonets sektion måste läggas upp. Uppskattningsmåttet kan testas på problem med kända lösningar för att utvärdera hur bra uppskattningarna är. Besökskostnaden d ik är en uppskattning på hur mycket det kostar att inkludera kund i i rutten som fordon k tar. Kunder väljs in i fordonets sektion så att den totala kostnaden minimeras och inget fordon överlastas. I den andra fasen löses handelsresandeproblemet för varje sektion. Hur detta görs beskrivs mer utförligt senare i rapporten. En annan modell av andra generationens lösningsmodeller är kolumngenerering som börjar med att generera tillåtna rutter som besöker en eller flera kunder och sedan representerar dessa i en matris. En kolumn svarar mot en rutt och en rad mot en kund. Om kunden ingår i rutten representeras det av en 1:a, annars en 0:a. För varje rutt lagras också dess kostnad. En tillåten rutt är en rutt där inget fordon överskrider sin lastkapacitet. En rutt måste inte nödvändigtvis besöka alla kunder. Därefter väljs den kombination av rutter som täcker alla kunder och som är billigast. Vid små probleminstanser kan alla tillåtna rutter genereras, men detta blir allt för resurskrävande om antalet kunder är många, därför görs detta sällan. I praktiken, om man vill hitta den optimala turen och dess kostnad är känd, genereras 11

KAPITEL 2. TEORI några få tillåtna rutter som kombineras och kostnadsberäknas. Om kostnaden är över optimal upprepas förfarandet med några nya genererade rutter till dess att en optimal tur uppnåtts. Detta är både tids- och utrymmeskrävande och används därför inte i praktiken för några större problem. Det går att använda metoden som heuristik genom att avbryta innan den optimala rutten hittats, för att minska tidsåtgången. Detta i kombination med att bara generera några få tillåtna rutter, snarare än alla möjligheter, gör att heuristiken kan användas i praktiska tillämpningar [10]. 2.3 Kortaste vägen Det finns ett flertal algoritmer för att finna kortaste vägen mellan två punkter i en graf. Vissa fungerar bara för oriktade grafer, vissa bara för grafer med positiva vikter, och en del fungerar för både riktade och oriktade grafer med, eller utan, negativa kanter. Gemensamt för alla är att en negativ cykel (negativ kant i en oriktad graf) inte får finnas eftersom det ger möjlighet att färdas längs denna cykel upprepade gånger för att uppnå en godtyckligt låg kostnad. Problemet Kortaste vägen är lösbart på tid som är polynomisk i antal noder som ingår i nätverket. Eftersom problemet är snabblöst kan den optimala lösningen hittas. 2.3.1 Dijkstra Dijkstras algoritm beräknar Kortaste vägen från en nod v till samtliga noder i en enkel graf G med positiva vikter. Algoritmen startar med en överskattning av varje nods avstånd från v, D[u] =, u v, D[v] = 0, och håller en mängd C av noder vars korrekta avstånd till v är känt. Initialt gäller C =. Den nod i V \C som har det minsta avståndet D[u] adderas till C. Först adderas v till mängden C, avståndet till v är ju 0. Därefter uppdateras alla grannar till v så att deras korrekta avstånd från v är kantvikten. För varje nod u som adderas till C uppdateras varje granne z till u på följande sätt (känt som kantrelaxering): Om D[u] + w((u, z)) < D[z] uppdatera D[z] D[u] + w((u, z)). När en nod u adderas till C har den sitt korrekta avstånd till v i D[u] och genom kantrelaxationen får dess grannar sina avstånd uppdaterade. När alla noder är inkluderade i C har alla kortaste avstånd från noden v lagrats i D [7]. 2.3.2 Floyd Kortaste vägen är inte bara intressant i sig, utan är ofta ett delproblem i att hitta en TSP-tur. De flesta TSP-algoritmer behöver tillgång till en avståndsmatris, det vill säga en matris för alla parvisa avstånd mellan de punkter som ska besökas i turen. För att hitta dessa används till exempel Dijkstras algoritm från varje nod i tur och ordning. Ett annat sätt att lösa Kortaste vägen mellan alla par av noder är 12

2.4. TRAVELING SALESMAN PROBLEM Algoritm 1 Dijkstra(G = (V, E)) D[v] 0 Push v in PriorityQueue for u V such that u v do D[u] Push u in PriorityQueue while PriorityQueue not empty do u Pop from PriorityQueue Add u to C for each neighbour z / C to u do if D[z] > D[u] + w(u,z) then D[z] D[u] + w(u,z) att använda Floyds algoritm. Även här uppdateras en uppskattning på avståndet mellan två noder tills den korrekta kortaste vägen har hittats. Först låter vi för alla par av noder i och j avståndet dem emellan vara w ij det vill säga vikten på den sammanbindande länken, om den finns, D[i, j] = w ij, och D[i, j] = om i och j inte är grannar. Detta är en uppskattning av avståndet om inga mellanliggande noder får besökas. Därefter tillåts att söka närmaste vägen via en annan nod, och via ytterligare en och så vidare. När alla noder är tillåtna som mellanliggande noder i en kortaste väg har de korrekta avstånden mellan varje par av noder hittats. Vi låter D[i, j, k-1] vara den kortaste vägen från i till j där noder i mängden {0, 1,..., k-1} får besökas som mellanliggande noder. Nu vill vi beräkna D[i, j, k]. Då blir k en tillåten mellanliggande nod och den kortaste stigen från i till j går då via k eller så gör den inte det. I det första fallet är stigen från i till k en minimal stig och det är även stigen från k till j så D[i, j, k] = D[i, k, k-1] + D[k, j, k-1]. I det andra fallet så gäller D[i, j, k] = D[i, j, k-1]. På så vis utökas mängden av tillåtna mellanliggande noder till hela nodmängden är inkluderad [1]. 2.4 Traveling Salesman Problem I det klassiska handelsresandeproblemet vill man i en given graf besöka alla noder exakt en gång så att turen blir så billig som möjligt och resan börjar och slutar i samma nod. Turens kostnad är summan av vikten på de kanter som ingår i turen. Tiden för att lösa TSP optimalt växer i värsta fall exponentiellt med antal noder som turen ska besöka med de algoritmer som är kända idag. Detta gör att TSP inte kan lösas optimalt utan får approximeras för att hitta en tillräckligt bra tur. 13

KAPITEL 2. TEORI Algoritm 2 Floyd (G = (V, E)) for i 0 to n-1 do for j 0 to n-1 do if i == j then D[i, j] 0 else if (i, j) in E then D[i, j] w(i, j) else D[i, j] for k 0 to n-1 do for j 0 to n-1 do for i 0 to n-1 do if D[i, j] > D[i, k] + D[k, j] then D[i, j] D[i, k] + D[k, j] GTSP, eller Graphical Traveling Salesman Problem, handlar om att hitta en sluten tur i en generell, sammanhängande graf G där det är tillåtet att besöka noder och kanter fler än en gång. Detta är användbart i grafer som inte nödvändigtvis innehåller en Hamiltoncykel eller där det kanske inte går att ta sig från nod i till nod j direkt. Detta är precis det problem en ruttplanering för ett fordon vill lösa. Kantvikterna måste vara positiva för att undvika att få godtyckligt låg kostnad genom att resa längs en negativ kant fram och tillbaka. För att ha en praktisk graf att beräkna TSP-turer på används en fullständig graf av noderna som ska besökas. Skapa den fullständiga grafen K n genom att låta de n noderna motsvaras av de ursprungliga i G och kanten mellan nod i och nod j ges den vikt som den kortaste stigen mellan i och j har i G. Den billigaste TSP-turen i K n är nu den billigaste slutna turen som besöker alla noder i G. I denna graf kommer även triangelolikheten att gälla då varje kant representerar kortaste stigen mellan två noder och det därför aldrig kan vara billigare att gå via en annan nod. Dock finns ingen garanti för att triangelolikheten gäller i G. K n är inte nödvändigtvis en euklidisk graf, d.v.s. en graf där vikten på kanten mellan två noder är det euklidiska avståndet, eller fågelvägen, mellan dessa [12]. Eftersom TSP är ett välkänt problem har det studerats av många och det finns en stor mängd lösningsförslag som ger acceptabla turer. Många av dessa antar att indata är en graf som inte bara är fullständig utan även symmetrisk, det vill säga att det är lika långt från nod i till nod j som från j till i. I ruttplaneringar i verkligheten är det sällan så eftersom en del gator är enkelriktade. Därför behöver vi ett sätt att omvandla en asymmetrisk graf till en symmetrisk. Låt D = (W, A) vara den riktade grafen med noderna W = {1, 2,..., n} och kanterna A W W och låt d ij vara vikten på kanten från nod i till nod j. 14

2.4. TRAVELING SALESMAN PROBLEM Skapa en ny graf G = (V, E) så att V = W {n + 1, n + 2,..., 2n} E = {(i, n + i) i = 1, 2,..., n} {(n + i, j) (i, j) A} Varje kant, mellan i och j, i den gamla grafen ersätts med två nya, en mellan i och dess skuggnod n + i och en mellan n + i och j. Låt vikterna på kanterna vara c i,n+i = M för i = 1, 2,..., n och c n+i,j = d ij för (i, j) A, där M är ett tillräckligt stort tal, till exempel summan av alla vikterna d ij. Eftersom de gamla kanterna inte finns kvar så är grafen oriktad. Från varje nod i tar sig turen nu via dess skuggnod n + i eftersom det är en mycket billig kant och sedan vidare till j via den kant som har originalvikten d ij. På så sätt kommer alla kanter med vikt M användas och för varje riktad hamiltoncykel d D finns en hamiltoncykel c G = d D nm i G. Detta ger att asymmetrisk TSP kan lösas som symmetrisk [12]. Ett problem med denna lösning är att den introducerar negativa kanter och att den inte bevarar triangelolikhet. Eftersom kanterna med negativ vikt är så billiga blir stigen från i till j bara billigare och billigare ju fler skuggnoder den passerar. Detta kan skapa problem för vissa TSP-algoritmer. En lösning på det problemet skulle kunna vara att istället låta vikterna vara c i,n+i = 0 och c n+i,j = d ij + M. På så sätt finns inga negativa cykler eller kanter och en algoritm tjänar inget på att passera skuggnoder, det kostar bara att ta sig därifrån. För varje hamiltoncykel d D finns nu en motsvarande c G = d D + nm. Man kan se det som att alla kanter i föregående lösning har blivit M dyrare. Problemet med att triangelolikheten inte gäller i grafen kvarstår dock. 2.4.1 Kandidatmängder För att minska ned på de möjliga vägar en tur kan ta, kan man ur grafen G utvinna en kandidatmängd bestående av alla noder och de kanter som är lovande från vaje nod. Vissa kanter i G är kanske väldigt långa och är därför osannolika att ingå i en bra tur. På detta sätt minskas sökmängden i varje steg där en ny nod ska läggas till i turen vilket i sin tur minskar exekveringstiden. En vanlig kandidatmängd är delgrafen G k = (V, E) av de k närmsta grannarna till varje nod. För ett fixt k beräknas G k enkelt på Ω(n 2 ) tid. V = {1, 2,..., n} E = {uv v är bland de k närmsta grannarna till u} 2.4.2 Heuristiker baserade på närmsta grannen Ett vanligt sätt att lösa TSP är att använda konstruktionsheuristiker. I detta avsnitt och nästa presenteras heuristiker baserade på närmsta grannen och insättningsheuristiker. De ger normalt inte en optimal tur men väl en som oftast är acceptabel eller kan tjäna som starttur att försöka förbättra. 15

KAPITEL 2. TEORI Konstruktionsheuristiker bygger upp en rutt genom att enligt något givet kriterium lägga till nod efter nod i turen. Ofta används ovan nämnda kandidatgraf för att söka i istället för originalgrafen. På så sätt minskar sökmängden för varje nod och de längsta kanterna beaktas inte förrän som sista utväg. Nedanstående metoder beskrivs av Reinelt [12]. Standardversionen av närmsta grannen Den enklaste varianten på närmsta grannen börjar i en godtycklig nod i och lägger till dess närmsta granne j som inte redan är med i turen. För att sluta turen kopplas första och sista noden ihop. Varianten där noder under uppbyggnaden kan kopplas på i båda ändar av turen finns också. Tiden för konstruktion av en tur på detta vis är Ω(n 2 ). Dessa turer tenderar att börja bra men bli dyra mot slutet av konstruktionen där de noder som glömts bort läggs in via långa kanter. Förberäknade grannar Om man har tillgång till en k-delgraf av de k närmaste grannarna till varje nod kan Standardversionen av närmsta grannen snabbas upp lite genom att i första hand söka efter okopplade grannar i k-delgrafen. Om alla grannar i denna redan är inkluderade i turen söks grannar i originalgrafen. Tidsåtgången för det värsta tänkbara fallet förbättras inte men en viss förbättring kan ses i praktiska beräkningar. Grannar till föregångare Även här används en kandidatmängd, till exempel k-delgrafen. Om noden i saknar lediga grannar i denna söks lediga grannar till föregångaren till i. Om även denna nod saknar lediga grannar söks dess föregångares grannar och så vidare. Om ingen ledig granne hittats efter exempelvis 20 steg söks en ledig granne till i i originalgrafen eftersom en ledig granne i k-delgrafen sannolikt skulle vara långt bort från i. Inte heller här påverkas värstafallstiden men praktiska beräkningar kan vinna tid. Insättning av glömda noder För att undvika de dyra insättningarna av glömda noder långt bort sätts dessa in innan de blir glömda. En räknare hålls i varje nod och räknar hur många lediga grannar noden har i k-delgrafen. Om räknaren passerar någon gräns, exempelvis 2 eller 3, sätts aktuell nod omedelbart in i turen. Detta kan i sin tur resultera i att andra räknare passerar gränsen och andra noder sätts in. Värsta fallet är dock fortfarande kvadratiskt. 16

2.4. TRAVELING SALESMAN PROBLEM k j i Figur 2.4. Rotationsoperation Rotationsoperationer I denna variant byts kanter ut i turen då man i kandidatgrafen råkat på en nod i utan lediga grannar. En oanvänd kandidatkant från i till turnoden k sätts in i turen och för att undvika en cykel måste en annan kant tas bort, se figur 2.4. En del av turen byter härmed riktning. En ny nod j blir slutnod för turen och har inte heller j lediga grannar i kandidatgrafen upprepas förfarandet med kantutbyte. Om alla sådana försök misslyckas kan någon av ovanstående metoder användas. Olika typer av grafer Metoderna ovan antas få en fullständig graf som indata. På så vis kommer det alltid att finnas en granne som inte ännu är med i turen till dess att bara kopplingen mellan turens start och slut är kvar. En fullständig graf kan alltid fås ur en allmän sammanhängande graf genom att låta kanten mellan två noder representera den kortaste vägen mellan dessa i den allmänna grafen. Skapas den fullständiga grafen på detta sätt gäller även triangelolikheten i grafen, det vill säga att det från nod a till nod b aldrig kan vara billigare att gå via en annan nod c. Är originalgrafen inte sammanhängande kan ingen TSP-tur hittas varför sådana bortses från. Om metoderna ska fungera på en allmän graf som inte är fullständig behövs små anpassningar liknande de som beskrivits då en kandidatgraf används. Det är då inte alltid säkert att en nod har en obesökt granne. Detta inträffar till exempel varje gång man når en nod som bara har en granne. I det fallet kan föregångarens obesökta granne, och om ingen sådan finns, föregångarens föregångares obesökta granne besökas. På så vis kan man stega bakåt i turen till en obesökt granne hittas. Givetvis måste kravet på att passera varje nod exakt en gång släppas om denna situation uppstår och inga nya kanter får läggas till i grafen. I en Euklidisk graf är kantvikten mellan två noder längden av en rak linje som börjar i ena noden och slutar i den andra. Metoderna ovan fungerar lika bra för Euklidisk TSP som för icke-euklidisk TSP eftersom de alla använder kantvikt som ett mått på hur långt det är mellan två noder snarare än nodkoordinater. Hur kantvikten räknats fram är irrelevant. Metoden som bygger på rotationsoperationer är inte lämplig för asymmetrisk TSP eftersom delar av turen vid varje rotation byter riktning och det inte kan antas att den motsatta riktningen har samma kostnad som den ursprungliga, om det alls 17

KAPITEL 2. TEORI går att byta riktning i k-delgrafen. Övriga metoder löser asymmetrisk TSP lika väl som symmetrisk. Turerna byggs upp genom att gå från en nod till en granne och det görs aldrig några antaganden om att avståndet mellan två noder är lika långt i båda riktningar. För grafer där triangelolikhet inte gäller uppstår problem för vissa av metoderna som nämnts. Grannar till föregångare bygger på antagandet att den nod som till slut hittas inte ligger längre från aktuell nod än längden på stigen som man sökt bakåt på. Om kanten som förbinder aktuell nod och den hittade lediga noden är väldigt dyr kan metoden ge dåliga resultat. Ett liknande problem kan uppstå när Insättning av glömda noder används. När en nod passerar gränsen för antal tillåtna lediga grannar sätts den in i turen omedelbart. Detta kan ge upphov till att en dyrare kant används istället för att ta en billigare omväg genom att vänta med att lägga in noden i fråga. Närmaste grannens metod har dock inget problem med grafer utan triangelolikhet. Där kommer den billigaste grannen väljas och om en billigare omväg av lediga noder finns kommer den att tas istället för den dyrare kanten. Det samma gäller för metoden med förberäknade grannar som använder sig av en k-delgraf. Fördel ges till kortare kanter och därför kommer en billigare omväg undersökas före en dyrare kant även om inte alla kanter är representerade i delgrafen. Inte heller metoden baserad på rotationsoperationer har problem med grafer utan triangelolikhet. Riktningsändringen av delar av turen utnyttjar samma kanter som tidigare och påverkas därför inte av frånvaron av triangelolikhet. 2.4.3 Insättningsheuristiker Insättningsmetoder börjar med en grundtur på k noder, där k kan vara så litet som 1 eller 2, och utökar dessa genom att välja ut någon nod och addera den till turen. Det finns många olika sätt att välja ut denna nod och Reinelt har studerat nedanstående alternativ. Den utvalda noden sätts in på det ställe i turen där den orsakar den minsta ökningen i turens längd. Med avstånd till turen menas avstånd till någon nod i turen. Närmaste insättning: Välj den nod vars kortaste avstånd till turen är minimalt. Längsta insättning 1: Välj den nod vars kortaste avstånd till turen är maximalt. Längsta insättning 2: Välj den nod vars längsta avstånd till turen är maximalt. Längsta insättning 3: Välj den nod vars längsta avstånd till turen är minimalt. Billigaste insättning 1: Välj den nod som ger den minsta ökningen av turens längd. Håll uppdaterad information om billigaste insättningspunkt för alla noder som inte ännu är med i turen. En insättningspunkt är ett ställe där noden kan skju- 18