Effekt på ruteplanlægning ved skift til tvungen 14-dagesindsamling hos Reno Djurs
|
|
|
- Tobias Bonde
- 9 år siden
- Visninger:
Transkript
1 Kandidatafhandling MSc in Logistics and Supply Chain Management Business and Social Sciences Aarhus Universitet Forfatter: Michael Bastkjær Thomsen Vejleder: Sanne Wøhlk Effekt på ruteplanlægning ved skift til tvungen 14-dagesindsamling hos Reno Djurs The effect a change to collecting waste every 14'th day, has on Reno Djurs' route planning. Sideantal: 69 Department of Business Studies, Business and Social Sciences, Aarhus University August 2014
2 Indhold Forord... 1 Abstract Indledning... 3 Problemformulering... 4 Metode... 5 Afgrænsning Teori... 8 Waste management... 8 Capacitated arc routing... 9 Matematisk formulering Clustering Matematisk formulering Rural Postman Problem Matematisk formulering Improvement heuristics Forbedringer i ruter Forbedringer imellem ruter Reno Djurs Problemstilling Opsætning af data Løsning Klyngeopdeling VBA Rutelægning VBA... 45
3 Forbedring imellem ruter VBA Forskelle på de to modeller Resultater Økonomisk betydning Konklusion Litteraturliste Appendiks... 66
4 Forord Denne afhandling er skrevet i samarbejde med Reno Djurs, som ønskede at undersøge effekten af skift til tvungen 14-dagsindsamling for deres dagrenovation. Specifikt hvilken effekt dette vil have på planlægningen, og hvor mange kilometer den nye plan ville kunne spare. Reno Djurs var også interesseret i andre problemstillinger, hvor nogle bliver behandlet af andre afhandlinger. Den svære del i at løse denne problemstilling, er at teorien omhandlende CARP, ikke indeholder ligeså store datasæt som denne problemstilling har. Derfor er teorien blev tilpasset, så den kan løse et problem af denne størrelse, indenfor en overskuelig tidshorisont. Et stort problem i arbejdet med denne opgave, har været at løsningen har taget så lang tid at finde med koden. Til at starte med tog koden over to uger at køre, når den blev brugt på problemstillingen under den gamle serviceplan. Derfor er meget af arbejdet på koden, lagt i at få denne til at finde en bedre eller ligeså god løsning hurtigere. Dette er i høj grad lykkes, da koden nu tager ca. 18 timer at køre på en god computer. Derudover er resultatet hen ad vejen også blevet bedre, og koden er kun blevet gjort hurtigere, hvis det ikke har betydelige negative effekter på resultatet. Et andet problem har været arbejdet med den indledende løsning. Hvor de metoder der oprindeligt blev valgt, senere blev fravalgt til fordel for nogle metoder som selvom de var simplere, opnår bedre resultater. Dette førte til at afprøve flere metoder, for at se hvilke kunne opnå de bedste indledende løsninger. Dette er understøttet af teorien, men fører til at der ikke er ligeså stor mulighed for forbedringer, for de efterfølgende metoder. Dette er specielt tilfældet når der kigges på løsninger, hvor andelen af deadheading er blevet lav. Abstract This paper is about the effects of a change, in the company Reno Djurs' service scheme. Reno Djurs is located on Djursland in Denmark, and is responsible for the waste management for this region. The current service scheme is based on the customer being free to choose, between collection of normal waste every week or every other week. In the new service scheme, the customer will be forced to have the waste collected every other week. The goal of the paper, is to compare the distance being traveled under the two service schemes, and use this and other relevant factors to evaluate which Side 1 af 66
5 service scheme is best. This creates the problem of how to plan the waste collection, in a way as efficient and effective as possible. This is a problem because the exiting theory, some of which will be explained here, are not able to handle problems which has the large number of edges this problem have. Furthermore the solution should also be able to make sure that under the old service scheme, that each customer with service every week, is serviced on the same day every week. Therefore another goal of the paper, will be finding a way to make the planning work. It should give good results, and deliver these within a useable timeframe. Furthermore the results should also be comparable. This is relevant for Reno Djurs, since they asked students to find out, how much of a saving they can obtain by changing the service scheme. They would have trouble finding this out theme selves, since it is a comprehensive problem, and they are currently not responsible for the planning of the waste collection. The paper finds that a savings of 14 % of the total distance traveled, can be saved with the new service scheme. This comes from a 5 % saving on the part of the routes that have to be traveled over, and a saving of 28 % of the deadheading. This results are accomplished by using a combination of methods, to create a final solution. First a method called cheapest edge, is used to assign edges to different cluster all containing one route. This is chosen among a method for solving the Generalized Assignment Problem(GAP) and Path Scanning, where the GAP was 14 % longer. When these edges where assigned to the clusters, a route was formed and improved within each. Here a version of Nearest Neighbor was chosen instead of a Greedy Heuristic, which created a further saving of 23 %. On the solutions obtained with this the improvement heuristics, which was based on Partition and Drop-Add, an additional saving of 1-14 % depending on the starting solution was obtained. Finally on the best solution as suggested in the paper by Brandão & Eglese (2008), a Deterministic Tabu Search Heuristic was used. This used a variety of moves, to improve the solutions. Furthermore a number of variables and stopping criteria, was used to find this solution. This metaheuristic was modified, to be able to handle a problem of this size. This final improvement could improve the remaining total cost, by 1,6 % under the new service scheme and by 2,6 % under the old service scheme. This is respectively 4,9 % and 6,6 % of the remaining deadheading. Running the code necessary to find the solutions, takes for the old service scheme minutes for the clustering, at most four hours for the route planning, and about 18 hours for the metaheuristic on a high end computer. Running the code for the new service scheme takes Side 2 af 66
6 minutes for clustering, about two hours for the routing, and eight hours for the metaheuristic. Revealing that the solution under the new scheme is both much better, and has a both simpler and faster code. The paper will start with a introduction to the paper, following the abstract. The second section will be about the relevant theory. The third section will specify the problem, and the relevant data to this. The fourth section gives a walkthrough of the solution to the problem. The fifth section elaborates on the results and conclusions, which are summarized above. 1. Indledning Virksomheden Reno Djurs I/S står for affaldsindsamling, sortering, genbrug og genbrugsstationer på Djursland. Reno Djurs er en virksomhed ejet af Norddjurs og Syddjurs kommune, og deres opgave er at opfylde behovet for affaldsbehandling på Djurslands, uden at have hverken underskud eller overskud ( Denne opgave vil fokusere på dagrenovation, som er indsamling af almindeligt affald fra husstande. Dette er en omfattende opgave, da der skal indsamles store mængder af affald på et stort område. Det er Reno Djurs opgave at gøre dette med så få omkostninger som muligt, samtidigt med at husstandens behov bliver opfyldt. I den nuværende ordning kan det frit vælges hvilken størrelse skraldespand kunderne vil have, og der er en frihed til at have ekstra sække til indsamling. Hvis de bor i helårsbolig kan husstandene frit vælge, om de vil have indsamlet affald hver uge eller hver anden uge. Hvis de har sommerhus kan de vælge imellem en række forskellige ordninger, for hvor ofte de vil have indsamlet, og hvorvidt frekvensen skal variere imellem årstiderne. I denne opgave vil der ses på at lave en ændring, så kunderne med helårsbolig ikke selv kan vælge mellem serviceringsordning. Der skal vurderes om den besparelse dette vil give, er betydelig nok. I stedet for at vælge imellem serviceringsordning, vil kunderne kun have tvungen 14-dagsindsamling, lige meget hvad deres behov er. Der vil blive kigget på om dette kan lønne sig, ved at det mindsker det antal km der skal køres for lastbilerne. Der vil blive kigget på en periode på to uger, og dataet for sommerhuse, vil være det fra vinterperiode. Der skal vurderes, hvor meget denne ændring gør rutelægningen simplere, og giver mulighed for at opnå bedre ruter. For at kunne finde ud af dette, vil der i opgaven blive kigget på hvordan disse ruter kan laves. Baseret på dette og Side 3 af 66
7 data fra Reno Djurs, vil der laves en mulig løsning for begge serviceringsalternativer. Dette vil blive baseret på problemstilling, men uden at være sikker på hvordan det faktisk bliver gjort i dag, da indsamlingen bliver foretaget af en ekstern virksomhed. Der vil blive lavet de nødvendige ruter, for at foretage al indsamling i vinterperioden for deres geografiske område 3. Det vil sige at en del af sommerhusene vil blive ignoreret, da de ikke har indsamling så ofte om vinteren. Denne model vil lave rutelægningen både for tvungen 14-dagsindsamling og den nuværende serviceringsordning, og disse vil til slut sammenlignes. Så der kan ses hvilket serviceringsalternativ, der har de ruter med det mindste samlede antal kilometer der køres over. Denne opgave vil efter indledningen, lægge ud med et afsnit om teorien forbundet med problemstillingen og den valgte løsningsmetode. Dette skal give en forståelse af teorien generelt, hvordan denne relaterer sig til problemstillingen og hvorfor denne teori er valgt. I dette afsnit bliver teorien ikke brugt på problemstillingen, men der vil blive diskuteret hvordan den kan tilpasses hertil. Herefter kommer afsnit 3 som er om Reno Djurs, der vil lægges ud med en generel virksomheds beskrivelse. Dette skal lede til en mere specifik beskrivelse af problemstillingen, som vil være fokus for denne opgave. I afsnit 3 vil der komme en forklaring af hvilket data der er relevant, og en forklaring af hvordan dette vil anvendes. Afsnit 4 vil indeholde en løsning af problemstillingen. Denne vil bestå af en skridtvis forklaring af løsningsmetoden, hvor der vil argumenteres for hvorfor og hvordan teorien anvendes, og hvordan denne modificeres. Denne forklaring vil både være rent teoretisk og programmeringsmæssig. Dette skal lede til en forklaring af forskellen på modellerne, og forskellen i resultaterne af de to alternativer. Herefter og generelt igennem løsningen af problemstillingen, vil kvaliteten af resultaterne blive diskuteret. Dette vil resultere i en konklusion på løsningen af problemstillingen og problemformuleringen, som vil være i det femte afsnit. Heri vil der blive diskuteret resultatet af opgaven, samt resultaternes kvalitet. Herudover vil der blive givet et forslag til hvad Reno Djurs bør gøre, både i forhold til de to alternativer og eventuelt for at finde mere at basere deres beslutning på. Problemformulering Reno Djurs står med muligheden for enten at tilbyde en fleksibel afhentning af dagrenovation, hvor kunderne i helårsboliger selv kan vælge hvorvidt de vil have indsamlet affald hver eller hver anden uge. Alternativt kan Reno Djurs gå ind og lave det sådan at alle helårsboliger, skal have indsamlet affald hver anden uge. Altså en forringelse af den Side 4 af 66
8 udbudte service, ved at nedsætte fleksibiliteten på deres service. Hvilket så ses som en forringelse af kvaliteten på deres service. Dette skulle gerne resultere i en nedgang i omkostninger forbundet med dagrenovation, ved at det samlede antal kilometer der skal køres for at servicere kunderne kan nedsættes. Dette skulle kunne lade sig gøre igennem simplere ruteplaner, da de ikke behøver at køre til den samme kunde to gange på en to ugers periode. Men det er ikke sikkert at denne besparelse vil kunne opnås, og om denne vil være betydelig. Derudover har Reno Djurs begrænsede ressourcer til at teste dette, og det er et stort projekt. Da transporten og planlægningen af denne foregår eksternt, gør det testningen sværere, da de ikke kan basere det på noget de allerede har. Denne opgave vil derfor lave en ruteplan for begge alternativer, og sammenligne dem for at se om der en betydelig forskel på omkostningerne. Ruteplanen skal prøve at finde så gode ruter som muligt, som samtidig servicerer alle kunderne, og overholder alle kapacitetsbegrænsningerne. Dette skal føre til en løsning for hvert serviceringsalternativ, som så kan sammenlignes. Ud fra forskellen på hvor langt der skal køres i disse to planer, kan det vurderes hvor stor en besparelse i antal kilometer tvungen 14- dagsindsamling giver. Når antallet af kilometer sænkes, skal dette gerne lede til færre omkostninger i form af fx benzin og løn til chauffører. Disse besparelser skal vurderes i forhold til andre fordele og ulemper, ved ændring i serviceringsordningen. Research Questions: 1. Hvordan kan teorien, som ellers kun er vant til at håndtere små problemstillinger. Modificeres så den kan bruges på, et stort problem som affaldsindsamling for Reno Djurs. 2. Hvor meget kan der spares i antallet af kilometer der køres på ruterne, ved at lave serviceringsordning om til tvungen 14-dagsindsamling. 3. Vil besparelsen i antallet af kilometer, være stor nok, til at retfærdiggøre en overgang til den serviceringsordning. Når de andre effekter tvungen 14-dagsindsamling har, også tages højde for. Metode Indsamlingen af dagrenovation er et kantruteplanlægnings problem. Da det i modsætning til Punktruteplanlægning ikke er punkter der skal oprettes ruter imellem, men en række veje der skal serviceres. Ved dagrenovation er husstandene fordelt ud på vejene, Side 5 af 66
9 og målet er at finde den korteste rute, der rejser over alle veje der skal serviceres. På engelsk er dette kaldt et arc routing problem, og det er et capacitated arc routing problem(carp), da der er begrænsninger på hvor meget tid og kapacitet bilerne kan have, samtidig med at der skal laves flere ruter. Problemet i denne opgave er meget stort, med mange punkter, kanter, kunder og flere dage der skal serviceres. Som det kan ses i litteraturen der vil blive anvendt i denne opgave som fx (Prins 2013), arbejder de løsninger der findes i teorien ikke med så store problemer som der vil arbejdes med i denne opgave. Fx arbejder (Prins 2013) med højest 190 kanter og 140 punkter, hvorimod der i denne opgave vil blive arbejdet med 8968 kanter og 7583 punkter. For at gøre løsningen mere overkommelig, vil problemet blive delt op i mere overskuelige dele. Dertil vil der blive brugt en Klyngeopdelings(Clustering) teknik, til at fordele kunderne ud til forskellige klynger, som der så vil blive lavet ruter på. Klyngeopdelingen vil være baseret på geografisk fordeling, samtidig med at den skal tage højde for de periodemæssige forhold. Da planlægningen kommer til at foregå over en to ugers periode, skal klyngerne fordeles til en specifik dag, og de kunder der skal serviceres hver uge, skal serviceres den samme dag i hver uge. Kunderne skal fordeles ud til klynger, så der i hver klynge kun skal laves en rute. Dette gør at hver rute kan løses som et Rural Postman Problem(RPP), hvilket er væsentligt lettere. Derefter skal hver af disse ruter forbedres, ved at bruge improvement heuristics fra RPP. Så hver af disse ruter bliver så gode som muligt, uden at der bruges for meget tid. Efter dette skal der laves forbedringer imellem ruterne, ved at bruge improvement heuristics fra CARP. Ved at kombinere klyngeopdelingen og RPP, skal metaheuristikken der styrer forbedringerne imellem ruterne have lettere ved at finde en løsning. Men denne løsning skal stadig være i stand til at finde en løsning af høj kvalitet i ruterne, ved hjælp af improvement heuristikkerne fra RPP. Dette skal ikke bare gøre det lettere men også muligt, at finde en god løsning til et problem af denne størrelse. Løsningerne vil blive lavet i Excels visual basic for applications(vba). Hvilket er et programmerings program og sprog, som uddannelsen har givet erfaring med at løse problemer i. Der vil laves individuelle løsninger både til klyngeopdeling, RPP og metaheuristikken. Derudover vil VBA også bruges til at sætte dataet op i Excel, teste løsningernes kvalitet osv.. Side 6 af 66
10 Afgrænsning Der vil i opgaven kun blive arbejdet med et af det fem områder, som Reno Djurs servicerer. Dette bliver gjort, da dataet til de andre områder er begrænset. Derudover er det at finde en løsning til dette ene område, i forvejen en stor problemstilling. Problemet vil løses på en sådan måde, så at metoden med få ændringer, kan bruges på de andre områder, til at finde gode løsninger. Dette vil demonstreres ved, at i stedet bruge dem på nogle små data sæt. Selvom områderne er geografisk spredt, kunne det tænkes at nogle ruter ville køre i mere end et område. Dette kan der i denne løsning ikke tages højde for. Men hvis dataet til alle områder var tilgængelig, kunne koden blive brugt, til at lave en løsning til ruteplanlægning af hele territoriet, hvis dataet bliver sat op til det og koden bliver tilpasset dette. Det vil være nødvendigt at lave nogle få justeringer til koden, alt efter problemets størrelse og de data sæt der bruges. Ruteplanlægningen vil blive lavet for vinterperioden, hvilket betyder at en stor del af sommerhusene ikke vil være inkluderet. Dette er valgt da sommerhusejerne, kan vælge mellem flere indsamlingsalternativer. Dette ville unødvendigt komplicere databehandlingen og rutelægningen, uden formentlig at have en stor betydning for konklusionen omkring serviceringsalternativer for helårsboligerne. Derudover er det kun dagrenovation i form af almindelig affald, og ikke andre typer affald der kigges på som fx papir og pap eller emballageaffald. Der vil når der arbejdes med kantruteplanlægning kun fokuseres på et almindeligt problem, hvormed der menes at der ikke vil blive arbejdet med udvidelser til teorien. Dette betyder at der fx ikke er taget højde for ensrettede veje i løsningen. Dette er valgt at blive gjort, da problemstillingen allerede er så stor, at der er nok at arbejde med her. Der opstår også nogle naturlige begrænsninger i VBA og Excel, da det er begrænset hvor store datamængder den kan arbejde med. Derfor vil nogle tal blive afrundet til integers(hele tal imellem og ), for at gøre materialet de skal arbejde med mindre. Hvorimod hvis tallet var større end dette eller et komma tal, ville det bruge mere memory, og derfor ville Excel og VBA i de tilfælde hvor der er mange store filer med kode, ikke kunne arbejde med dem. Dette betyder at nogle programmer vil arbejde med 10-meter i stedet for meter. Dette kan betyde, at nogle tal der er forskel på i meter, ikke er forskel på når der arbejdes med 10-meter. Det er i klyngeopdelingen at dette vil få en betydning. Side 7 af 66
11 2. Teori Ruteplanlægning bliver løst som enten et node routing problem, hvilket tidlig forskning har fokuseret på(benavent et al. 1992), eller alternativt som et arc routing problem, hvilket har fået mere fokus i det nye årtusinde (Wøhlk 2008). Node routing er hvor efterspørgslen ligger i punkter, som skal serviceres. Hvorimod efterspørgslen i arc routing ligger på kanterne imellem punkterne, som derfor skal serviceres. Målet eller målene med disse kan fx være at mindske omkostninger, minimere antallet af biler (Monroy et al. 2013) eller fx maksimere profit (Aráoz et al. 2014). Dette afsnit vil fokusere på arc routing delen, da det passer bedst til dagrenovation, hvor affaldet skal indsamles på kanterne. Afsnittet vil starte ud med en gennemgang af teori omkring waste management generelt, for at vise hvilke problemer affaldsindsamling indeholder og hvilke løsninger der er fundet. Derefter vil afsnittet fokusere på det teori indenfor CARP, og teori der kan bruges indenfor dette område, der er relevant for at løse opgavens problemstilling. Der vil blive fokuseret på clustering, løsningen af rural postman problem som er et arc routing problem med kun en rute(brandão & Eglese 2008), og improvement heuristics både indenfor og imellem ruter hvor disse vil være en del af en metaheuristik. Derudover vil der hvor det er relevant, blive gennemgået den matematiske formulering af problemet. Waste management Waste management består af flere dele, både indsamlingen af affald, sortering af affald, lagring af affald og transport af affald for at nævne nogle centrale områder. Indsamling af affald også kaldet dagrenovation, vil der blive fokuseret på i denne opgave. Specifikt vil det være indsamlingen af restaffald for virksomheden Reno Djurs, der er fokus for denne opgave. Litteraturen indeholde både artikler der fokuserer specifikt på waste management (Ghiani et al. 2005), og artikler som kan bruges til waste management som fx (Monroy et al. 2013). Disse har tilfældes at de fokuserer på "mindre" problemer med fx 200 arcs, hvorimod problemet i denne problemstilling vil beskæftige sig med tæt på arcs. Denne opgave vil også kun fokusere på selve indsamlingen af affald, hvorimod waste management indeholder andre problemstillinger. Selve indsamlingen løses oftest som et arc routing problem(ismail & Fadzli 2011), hvilket også vil være fokus i denne opgave. Dette er beslægtet med klassisk node routing, men har fået væsentligt mindre fokus. Derfor er Side 8 af 66
12 der også flere metoder baseret på VRP(Prins 2013), eller baseret på at lave problemet om til et node routing problem. Der er selvfølgelig også problemer indenfor waste management, som er node routing som fx container indsamling(hemmelmayr et al. 2013). Litteraturen indeholder også forskellige underproblemer eller tilføjelser af begrænsninger til arc routing problemet. Som fx time windows (Kim et al. 2006), hvor indsamlingen skal foregå indenfor forskellige tids vinduer på specifikke arks. Det kunne være fordi at de vil undgå at indsamle på centrale veje, på tidspunkter hvor der er meget trafik. Et andet eksempel kunne være en tilføjelse af flere mulige depoter (Pia & Filippi 2006). Hvor der er flere muligheder for hvor de kan aflæse affald, og muligvis også hvor de skal begynde og kan ende ruterne. Denne opgave vil fokusere på standard Capacitated Arc Routing Problem(CARP), da det i forvejen er en så stort problemstilling, at denne har en tilfredsstillende størrelse, uden at skulle indeholde andre mulige begrænsninger. Derudover vil der i afsnittet om problemstillingen også fremgå, at der ikke er andre meget betydelige ekstraordinære begrænsninger at tilføje. Næste afsnit vil fokusere på CARP, både i form af teorien bag mulige løsningsmetoder, samt hvilket fokus der vil være i denne opgave og den matematiske formulering for CARP. Capacitated arc routing Arc routing handler om at finde den optimale rute, på et netværk af kanter, hvor nogle af disse kanter skal serviceres. Optimalitet opnås normalt ved at minimere rutens længde eller rutens omkostninger, men der kan også være andre mål som at minimere antallet af biler(monroy et al. 2013) eller maksimere profit på ruten(aráoz et al. 2014). Capacitated arc routing er hvor der er en begrænsning på den kapacitet vi har, fx igennem antallet af biler, hvor lang tid bilerne kan bruges en given periode, og hvor meget der kan være i bilerne(martinez et al. 2011). Selvom arc routing varianter kan spores længere tilbage, var der først rigtigt skrevet om capacitated arc routing af Golden & Wong i 1981(Wøhlk 2008). CARP er NP-hard( Prins 2013). CARP er beslægtet med VRP, hvor det er punkterne i stedet for kanterne der skal serviceres. VRP har tidligere fået mere fokus end CARP, som har fået mere fokus i de sidste to årtier(lacomme et al. 2005). CARP er vigtigt fordi det kan bruges til ruteplanlægning af flere problemer ud over dagrenovation, som vil være fokus i denne opgave. Dette er problemer som fx ruteplanlægning for skolebusser, vejvedligeholdelse, postomdeling, måleraflæsning(eiselt & Laporte 2000), saltning af veje(martinelli et al. 2013), sne pløjning(polacek et al. 2008) etc.. Side 9 af 66
13 I denne opgave er det relevant at overveje problemet som et periodisk capacitated arc routing problem, da planlægningen foregår for flere dage. Dette problem er planlægningen af ruter spredt ud på flere dage, hvor en kant måske skal besøges mere end en dag i perioden(chu et al.2006). Dette besøg kan derudover måske skulle foregå med et vist mellemrum, hvilket skal tages højde for i planlægningen. periodisk CAPR er ikke den eneste variant. Derudover er der fx også varianter som CARP med intermediate facilities(polacek et al. 2008), hvor der er en række service stationer hvor bilen kan blive fyldt op eller tømt, alt efter hvilket slags problem det er. Et andet eksempel er CARP med time windows(wøhlk 2008), hvor kanterne skal serviceres på et specifikt tidspunkt. At finde den optimale løsning til et CARP er en udfordring, og det er bl.a. derfor algoritmer kun bliver brugt på små problemer med få arcs til at finde den optimale løsning(lacomme et al. 2005). I stedet bliver heuristikker og metaheuristikker brugt, til at finde nogle gode løsninger med et lokalt minimum, uden at bruge for meget tid. Hvor gode disse er kan blive evalueret, ved at finde et lower bound for løsningen. Et lower bound er de omkostninger, som den optimale løsning ikke kan være lavere end. At finde et godt lower bound til at evaluere den endelige løsning er i CARP for omfangsrigt, til at blive brugt i denne opgave. I stedet vil der blive brugt de omkostninger, som er absolut nødvendige for serviceringsplanen. Der er en del heuristikker og metaheuristikker til at løse CARP med, og at gennemgå flere vil også være for omfangsrigt. I stedet vil der være fokus på at give en forståelse af hvordan de virker, og en forklaring af den løsningsmetode der bruges i denne opgave. Iblandt disse løsningsmetoder ligger der nogle constructive heuristics, som fx Path-Scanning(Prins 2013), som tilføjer den nærmeste ikke servicerede kant i en given rute, indtil ikke flere kanter kan blive tilføjet. Herudover er der en række flere valgkriterier, som bruges til at beslutte hvilken kant der skal vælges. Herefter startes en ny rute fra depotet, hvor kanter tilføjes på samme måde. Metaheuristikker består nogle gange af en rute som udgangspunkt, hvilket kan findes med en route construction heuristic. Denne rute kan der laves forbedringer og ændringer til, ved at kombinere flere improvement heuristics, til at lave forbedringer på og imellem ruterne. Hertz el at. (2000) demonstrer flere inner route improvement heuristics, som kan blive kombineret til at finde en løsning med. Fx proceduren shorten der baseret på en allerede eksisterende rute, laver et punkt om til det nye depot i denne rute, og laver det gamle depot om til en kant der skal serviceres. Baseret på denne nye rute, som er den gamle rute i en anden rækkefølge, med en kant der repræsenterer det gamle depot. Side 10 af 66
14 De kanter der skal besøges bliver herefter flyttet så sent som muligt i ruten, til en plads hvor disse bliver rejst over uden at blive serviceret senere. Hvis en besparelse er fundet, laves en ny rute baseret på denne rute, hvor depotet selvfølgelig er det originale depot. Dette bliver så startet forfra, så længe denne procedure ikke er blevet kørt et vist antal gange uden at finde forbedringer. I denne opgave vil der blive fokuseret på metoden cluster first route second, da problemet er så stort, at det derfor er besluttet at dele det op i mindre dele inden der laves ruter. Det kan ses at der i den gennemgåede litteratur ikke, er blevet arbejdet med problemer af den størrelse som denne opgave har. Hvilket understøtter tankegangen bag, at dele problemet op i flere dele. Denne metode fordeler først kanterne ud til klynger, hvorefter ruter er lavet i klyngerne(hertz & Mittaz 2000). Selve metoden til at lave klynger med, vil blive gennemgået i clustering afsnittet. Dette løser også problemet med at det er et periodisk CARP, da man kan lave en hvis antal klynger i hver periode, og tage højde for begrænsninger i mulige kombinationer af indsamlingsdage ved uddelingen til klynger(monroy et al. 2013). Det er målet at hver klynge skal ende med at være en rute, hvilket gør at ruteplanlægning på hver af disse skal foregå som løsningen af et Rural Postman Problem(RPP). RPP vil blive gennemgået i et senere afsnit. CARP er et problem der består af et ikke-orienteret forbundet netværk G=(V,E), hvor V er punkterne og E er kanterne(brandão & Eglese 2008). Iblandt kanterne er der et vist antal der skal serviceres, hvilket vil variere fra klynge til klynge. En kant skal serviceres, hvis den har en efterspørgsel q ij /q e >0. Enhver af disse kanter skal kun serviceres en gang, men kan blive rejst over flere gange uden at blive serviceret i en ruteplan. Derudover er der et depot d/v 0, hvor alle ruter skal starte og slutte. Normalt ligger der her en flåde af ens biler kaldet K, med den samme kapacitet Q, hvilket enhver af ruternes indsamling ikke må overstige. I denne opgave vil det være muligt at fra klynge til klynge beslutte, hvilken bil skal vælges og dermed hvilken kapacitet denne har. Hver kant er benævnt efter de to punkter der forbinder denne (v i,v j ), og disse har hver en omkostning c ij /c e forbundet med dem. Omkostningen kan være forskellig afhængig af om kanten bare bliver rejst over, eller om kanten bliver serviceret(benavent et al. 1992). Fx det tager væsentlig mindre tid at rejse over en kant, end det tager at rejse over kanten og tømme skraldespandene. S ij referer til omkostninger for at rejse den korteste rute mellem punkt i og j. Målet er at minimere disse omkostninger, forbundet med at servicere alle kanter i R. I denne opgave er kanterne ikke-orienteret, men man kunne i virkelighe- Side 11 af 66
15 den komme ud for fx ensrettet veje, sådan at kanterne var orienteret, men for simpelhedens skyld er det besluttet ikke at gøre dette. I det periodiske CARP har vi en række perioder, og i dette eksempel er der en række periode kombinationer. Disse gør at hvis kanten bliver serviceret i en periode, og kanten er en af de kanter der skal serviceres hver uge, skal denne kant også serviceres i en af ruterne i den tilsvarende periode. Altså hvis en kant der skal serviceres hver uge bliver serviceret mandag i den første uge, skal den også serviceres mandag i den næste(mei et al. 2011). Matematisk formulering Modellen der laves følger overordnet de modeller i (Martinez et al og Golden & Wong 1981), som modellerer CARP som et optimerings problem der er binært, lineært og skal minimeres. Martinez et al. (2011) er blevet valgt, da den er relativ ny, og da den kan blive tilpasset variationer af CARP. Golden & Wong (1981) er blevet valgt da Martinez et al. (2011) fokuserer på det retningsbestemte CARP, og deres formulering derfor ikke indeholder alt det nødvendige. Beslutningsvariablen kaldet x ijk fortæller hvorvidt kanten fra i til j bliver kørt på af bil k. Derudover bliver beslutningsvariablerne fra forrige afsnit brugt. Problemet kan defineres på følgende måde: 1) Minimer 2) 3) 4) 5) 6) 7) 7) 7) Side 12 af 66
16 8) Den første ligning siger at vi skal minimere de samlede omkostninger, ved at servicere ruterne. Hvilket i denne opgave og ofte er antallet af km. Dette gør den ved at kigge på alle kombinationer af to punkter. Hvis der bliver rejst mellem dem på nogle af bilernes ruter, bliver antallet af biler der rejser mellem disse, ganget med omkostningerne ved at rejse imellem disse punkter. Hvilket er antallet af kilometer mellem de to punkter. Ligning nummer to siger at hvis en rejse mellem to punkter, er indeholdt i sættet af rejser der skal serviceres kaldet R, skal en af bilerne servicere denne rejse. For at det er tilladt bilen at rejse over denne kant uden at servicere den, er en anden beslutningsvariabel y ijk tilføjet, der siger hvornår en bil rejser over kanten og servicerer denne. Dette kunne også hjælpe hvis en tidsbegrænsning tilføjes, da det tager mindre tid at køre over en kant uden at servicere den, end det gør at servicere kanten. Ligning tre siger at en kant kun kan bliver serviceret, hvis den bliver rejst på. Hvilket den skal gøre hvis den skal serviceres. Ligning fire udtrykker at antallet af biler der kører fra depotet, skal være lig med det antal af biler der er til rådighed, så ikke flere eller færre biler end der er tilgængelig bliver benyttet. Denne formulering kan være et problem, hvis en bil skal køre flere ruter, fx hvis den har lav kapacitet, og skal tømmes mere end en gang om dagen. Dette kan ligeledes løses, ved fx at tilføje et rutenummer a til ruten så beslutningsvariablen hedder x ijka, som så også kan bruges når fx tidsbegrænsningen opsættes. Ligning fem siger at hvis en bil servicerer en kant, skal den kvantitet denne kant indeholder tilhøre denne bil. Den brugte kapacitet på hver bil ligges sammen, og den samlede kvantitet der tilhører hver bil, skal være mindre end dennes kapacitet. Ligning seks siger at det antal der kører til hvert punkt, også skal køre fra hvert punkt. Ligning syv eliminerer subtours og indeholder flere ligninger, der tilsammen opnår dette. Ved at enten så kan z 1sk være lig med en, ellers kan z 2sk være lig med en, hvilket er det den sidste ligning siger. Den eliminerer subtours ved at sige at den første ligning sørger for, at hvis antallet af noter minus en i ethvert givet sæt af noter, skal være større eller lig med antallet af kanter der traverseres imellem disse noter. Hvis ikke dette er tilfældet, bliver z 1sk lig med en. Noterne i sættet S, kan ikke indeholde depotet. Hvis z 1sk Side 13 af 66
17 er lig med en kan z 2sk ikke være lig med en. Den anden ligning siger at hvis antallet af kanter der består af et punkt i sættet og et uden for sættet plus z 2sk, skal være større eller lig med en. Det vil sig at hvis vi har et tilfælde med en subotur, vil antallet af kanter være større end antallet af punkter minus en, og derfor vil z 1sk være lig med en. Da dette fører til at z 2sk skal være nul, vil det sige at subtouren skal forbindes med et punkt uden for denne, hvilket dermed eliminerer suboturen. Da dette er for ethvert givet sæt af punkter med undtagelse af depotet, sikrer det at alle ture er forbundet med depotet. Ligning otte siger at hver beslutningsvariabel enten skal være lig med en eller nul. Clustering Klyngeopdeling bliver refereret til i CARP literaturen som både Clustering(Monroy et al. 2013)(Benavent et al. 1992), sectoring(perrier et al. 2008) eller districting(muyldermans et al. 2003). Målet med at dele kanterne op i klynger, er at dele et stort problemet op i mindre overskuelige dele. Disse kan så fx løses som et RPP i stedet for et CARP. Muyldermans et al.(2003) foreslår at dele kanterne ud til nogle district centre, disse kan enten være fiktive eller være faktiske depoter. Benavent et al.(1992) foreslår at skabe nogle seed arcs, og fordele kanterne ud til disse. Seed arcs er fundet ved at finde det udvalg af kanter, der skaber den størst mulige afstand disse kanter imellem og mellem dem og depotet. Generelt handler det i artiklerne, om at finde en række punkter der er geografisk og rutemæssigt spredte. Så fordelingen til disse skaber nogle separate og ikke overlappende klynger, der hver især vil kunne indeholde nogle gode ruter, som vil minimere de overordnede omkostninger. Kanterne fordeles ud til de klynger de ligger tæt på. Det kan enten gøres ud fra at finde de kanter der ligger tættest på klyngen, eller finde den klynge der ligger tættest på kanten. Dette kan også refereres til som et generalized assignment problem(gap). I denne opgave vil fokus som udgangspunkt ligge på Monroy et al. (2013) og Benavent et al. (1992), til at lave klynger og fordele kanterne(kunderne) med. Benavent et al. (1992) har en metode til at finde seed arcs, og fordele kanterne til disse så hver klynge kan løses som et RPP. Monroy artiklen er en overbygning til dette, hvor tankegangen bag at der er flere perioder der skal tages højde for, samt at en kant muligvis skal serviceres i mere end en periode. Hvilket kan bruges til at løse problemet i denne opgave. Som nogle alternativer og til at vurdere kvaliteten af denne løsning, vil to andre løsninger blive undersøgt. Hvor den første der vil blive brugt er en variation af path scan- Side 14 af 66
18 ning(golden & Wong 1981)(Golden et. al. 1983). Den anden er en af metoderne til at fordele kanter ud til ruter, der bliver foreslået i Brandao & Eglese(2006), hvilket er artiklen hvor metaheuristikken der vil blive benyttet i denne opgave kommer fra. Denne artikel foreslår cheapest edge, som er en simplere version af path scanning, hvilket vil blive anvendt i denne opgave. Path scanning fungerer ved, at hver rute starter ved depotet. Herefter bliver de nærmeste kanter der skal serviceres valgt, indtil kapaciteten for en rute mødes, hvorefter bilen returnerer af den korteste vej til depotet. Hvilket er sådan cheapest edge fungerer. Path scanning gør det at den inkluderer nogle andre valgkriterier, for at give nogle alternative løsninger at vælge imellem. Derudover vil den når den kigger på afstand tage højde for efterspørgslen. Andre alternativer inkluderer at i stedet minimere afstanden, i forhold til efterspørgslen. Andre alternativer er at minimere eller maksimere afstanden til depotet. Eller at maksimere afstanden til depotet så længe bilen er mindre end halv fuld, og minimere den så længe bilen er mere end halv fuld. Matematisk formulering Den matematiske formulering for fordelingen af seed arcs følger overordnet den metode i Monroy et al.(2013) og Benavent et al.(1992). I Monroy et al.(2013) arbejdes der med en retningsbestemt graf, hvilket der ikke gøres i denne opgave, dette skal tages højde for i løsningen. Der arbejdes igen på et forbundet netværk G=(V,E), hvor afstanden mellem seed arcs skal maksimeres. Der er et antal af perioder P og et antal af ruter K. Målet er at finde et antal seed arcs K, som maksimerer den korteste distance imellem alle valgte kanter. Distancen mellem to kanter kaldes d ij, som er afstanden mellem kant i og j. Depotet refereres til som N, fordi det er den sidste kant, da den vil blive behandlet som en kant. 1) Maksimer: 2) 3) Ligning et maksimerer den afstand der er imellem kanterne og imellem kanterne og depotet, denne ligning gør at det kun er K kanter der vælges, da tilføjelsen af flere kanter ikke vil øge Z. Z øges ikke fordi det kun er antallet af K kanter, som bruges til at måle afstanden. Ligning to er tilføjet for at være sikker på, at et givet optimeringsprogram ikke vil vælge flere alligevel. Da ligning tre siger at hvis en kant er indehold i sæt- Side 15 af 66
19 tet, skal variablen s være lig med en og ligning to siger at summen af dem skal være lig med K. Ligning tre siger at s i 'erne enten skal være lig med en eller nul. Til fordelingen af kanter til seed arcs, bruges de foregående artikler også. Beslutningsvariablen x ak er lig med 1 hvis kant a tilføjes til rute k. Variablen d ak er omkostningerne ved at tilføje kant a til rute k. Variablen w j referer til sættet af ruter indehold i periode j. Variablen f j er antallet af serviceringer der skal foretages i periode j. T={Ω 1, Ω 2 }(eksempel) definerer antallet af kombinationssæt de kan tilhøre, som fx sæt Ω 1 ={1,2}, som siger at de kanter der tilhører Ω 1 skal bliver serviceret i uge 1 og uge 2. e c referer til sættet af perioder som hører til kant typen. Et og fem referer til underperioder som i dette tilfælde er dag et og seks, hvor kunden skal serviceres en gang hver hvis den er indeholdt her. Q er den maksimale kapacitet i en bil, og r k er den procent som det ønskes at bilen er fuld. q a er den kapacitet der bruges ved at servicere kant a. 1) minimer 2) 3) 4) Ligning et minimerer afstanden imellem kanterne og de seed arcs som er i den klynge de er blevet føjet til. Ligning to sørger for at alle kanter bliver serviceret i de perioder de skal serviceres. Ligning tre sørger for at den anvendte kapacitet på hver rute, ikke overstiger den maksimale kapacitet som ønskes at benyttes. Ligning fire sørger for at x ak enten er lig med et eller nul. Rural Postman Problem RPP ligner CARP meget, men adskiller sig ved at det kun er en rute der skal laves(brandao & Eglese). Det ligner også et chinese postman problem, men adskiller sig fra dette ved at kun nogle af kanterne skal serviceres (Pearn & Wu 1995). Da målet er at gennem clustering, at få et vist antal kanter af de kanter der skal services, puttet i kant sættet for hver klynge, så hvert klynge bliver et RPP. RPP blev først beskrevet i 1974 Side 16 af 66
20 (Pearn & Wu 1995), og det er derfor ældre end CARP. Ligesom CARP er det NP hard (Brandão & Eglese 2008). Der findes mange af de samme varianter af RPP som CARP, som fx det periodiske RPP (Ghiani et al. 2005(2)). Ligesom i CARP findes der flere heuristikker til at løse dette problem med, da det er svært at løse til optimalitet. Der er flere nævnt i de nævnte artikler, og route construction ligner hinanden, og som det nævnes i Brandão & Eglese (2008) er route imrpovement procedurer indenfor selve ruten i CARP nogle gange baseret på procedurer fra RPP. At lave en rute indebærer oftest at ruten skal starte og slutte i depotet, og dække alle de kanter der skal serviceres. Dette kaldes at lave en Euler tour(mohan et al. 2010). Formuleringen er nogenlunde den samme som i CARP, hvor der er en forbundet ikke retningsbestemt graf G=(V,E). Hvor V referer til punkterne og E referer til kanterne, hvor vi har en række kanter som skal serviceres. Der er nogle omkostninger forbundet mellem at rejse fra punkt i til j, hvilket er benævnt c ij. Hvilket alt sammen er ligesom i CARP. Derudover er det også værd at have defineret omkostninger d ij for den korteste vej l ij mellem punkt i og j(ghiani et al. 2006). Løsningen af ruteplanlægning i hver klynge vil blive løst som et RPP, ved først at lave ruten ved hjælp af en greedy heuristik(mohan et al. 2010). Denne starter i depotet, og tilføjer kanter til løsningen, alt efter hvad der giver den mindst forventede stigning i de samlede omkostninger. Dette gør den indtil alle de kanter der er serviceret er med, hvorefter ruten returnerer til depotet. Derefter vil der bruges nogle forbedrings heuristikker, til at gøre hvert enkel rute bedre. For at måle kvaliteten af denne, og som et alternativ, vil der blive brugt en version af nearest neighbour, som greedy er en udvidelse af. Matematisk formulering Formuleringen for RPP er en der har været under udvikling fra den originale af Christofides et al., og modifikationen til denne af Corberan & Sanchez(Ghiani & Laporte 2000). I disse er x ij /x e de ekstra ture som kanterne bliver rejst på, for at turen kan lade sig gøre. Dette refereres til som deadheading. Vi ved at per definition skal nogle af kanterne rejses på mindst engang, for at blive serviceret. Hvilket gør at de ikke behøver at blive benævnt i løsningen, da de altid vil være til stede. P er det maksimale antal punkter. G=(V,E) bliver lavet om til G R (V R,E), hvor V R er de punkter indeholdt i R. Disse har omkostningerne forbundet med den korteste vej i G mellem punkterne. 2z i er graden af punktet, hvilket betyder hvor mange kanter der ligger op ad punkt i. S er ethvert sæt Side 17 af 66
21 af punkter indeholdt i V R. δ(s) er de kanter med et punkt i S og et udenfor S. Derudover bliver variablerne fra det forrige afsnit også brugt. 1) Minimize 2) 3) 4) 5) Ligning et siger at omkostninger skal minimeres. Dette er omkostningerne for at rejse over alle kanterne der skal serviceres mindst en gang, samt omkostninger forbundet med de antal gange disse bliver rejst over uden at blive serviceret. Plus omkostningerne forbundet med at rejse over kanterne der ikke er nødvendige, de antal gange disse bliver rejst over. Ligning to siger at på hver punkt der ligger op til en kant der skal rejses over, skal rejses fra eller til dette minimum, være to ganget med det antal kanter der ligger op at punktet som der skal serviceres. Halvdelen af disse bliver automatisk opnået, og resten skal opnås ved at rejse over kanter der skal eller kanter der ikke skal serviceres. Ligning tre sørger for at ruten er sammenhængende. Dette gøres ved at have alle sammenhængende punkter, som der skal serviceres indeholdt i individuelle P'er. For et hvert antal af disse komponenter, tages foreningsmængden i alle de her komponenter. Altså alle de noder her, som hænger sammen med kanter der skal serviceres. Da summen af de kanter der er forbundet, med en kant der skal serviceres indenfor disse komponenter og et punkt udenfor disse komponenter, skal være større eller lig med 2, er vi sikker på at der vil rejses til og fra denne subtour. Ligning fire siger at antallet af gange en kant rejses over, skal være større eller lig med nul og være heltallig. Ligning fem siger at antallet af kanter der skal serviceres der ligger op ad et punkt, skal være større eller lig med nul og være heltallig. Side 18 af 66
22 Improvement heuristics For at løse et CARP eller et RPP problem optimalt, ved hjælp af en matematisk formulering, skal der som nævnt ovenfor mange ligninger til for at lave begrænsningerne. Da teorien kun indeholder væsentlig mindre problemer end denne opgave, og teorien kun kan løse små problemer til optimalitet(hertz et. al. 1999), vil det være uhensigtsmæssigt at prøve at løse dette problem på denne måde. I stedet for er der en række heuristikker og metaheuristikker, som der kan bruges til at løse CARP(Prins 2013). Derudover er der en række heuristikker til at løse RPP, som udover at lave ruten, laver forbedringer i ruten. Disse RPP heuristikker bruges nogle gange i CARP Metaheuristikker, til at have forskellige ruter som udgangspunkt for løsningen, eller til at lave forbedringer i de forskellige ruter som CARP finder(brandão & Eglese 2008). Der er alt for mange heuristikker, metaheuristikker og forskellige slags moves i og imellem ruterne, til at de alle kan gennemgås i denne opgave, eller til bare at give et bredt overblik af dem. I stedet vil der bliver fokuseret på A Deterministic Tabu Search Algorithm af Brandão & Eglese (2008), som er udgangspunktet for løsningen af denne opgave. Samt de forbedringer herfra og fra løsningsmetoden der laves imellem og i ruterne. Derudover vil der nævnes nogle alternativer måder som løsningen kunne gribes an på. Forbedringer i ruter Der findes flere måder at konstruere og forbedre ruterne på. Konstruktionen af en rute, er hvor der startes fra at have, et antal kanter der skal serviceres, hvilket til slut skal ligge på en rute der er mulig at rejse over. Målet med konstruktionsheuristikkerne er at lave en god rute, der opfylder alle begrænsningerne. Denne er ikke nødvendigvis optimal, men det er muligt at lave forbedringer på denne, senere ved at lave moves i selve ruten, for at gøre denne bedre. Et eksempel på en konstruktionsheuristik kunne være en greedy heuristik(mohan et al. 2010)., hvor noget lignende vil blive anvendt i denne opgave. Denne starter ruten ved at tilføje den kant der øges de forventede omkostninger mindst, hvorefter kanter tilføjes til ruten en efter en, alt efter hvilken der ved sin tilføjelse forøger de forventede omkostninger mindst. Kanter kan kun tilføjes så længe ruten er mulig at servicere, med det pågældende antal kanter. Til slut forbindes den sidste kant med depotet igen. En anden mulighed kunne være insert(brandão & Eglese 2008), som starter med at tage den nærmeste uservicerede kant, og danne en fuld rute med kun denne kant. Altså fra depot til kanten og tilbage til depotet igen. Herefter indsættes en kant af gangen, alt efter hvilken Side 19 af 66
23 kant der billigst kan indsættes imellem to punkter på ruten. Dette gøres indtil kapaciteten mødes. Chancen for at nogle af disse heuristikker vil lave den optimale rute er lav, men til gengæld kan de finde en god rute hurtigt. Disse kan så forbedres på ved at lave moves indenfor ruten. I denne opgave vil Drop-Add og Partition(Hertz et. al. 1999) blive brugt til at lave forbedringer i ruten. Derudover vil Switch(Pia & Fillipe 2006) også blive gennemgået, for at give et alternativt blik på hvordan forbedringer kan laves. Drop-Add fungerer ved for hver kant at fjerne denne, hvorved omkostninger gerne skulle falde. Denne kant skal derefter prøves at indsættes i nogle nye stedet på ruten, og omkostninger forbundet med disse nye ruter skal registreres. Dette skulle helst resultere i, at der findes nogle alternative løsninger til ruten, og hvis disse har lavere omkostninger skal ruten laves om til disse. Partition fungerer ved at der kigges på alle de kanter der rejses over, for at servicere de pågældende kanter. Hvis en kant skal serviceres, og den bliver rejst over flere gange i ruten, skal serviceringen rykkes til den sidste gang kanten bliver rejst over. Derefter skal der formes nye veje, mellem de kanter der plejede at ligge før og efter den pågældende kant. Dette skulle gerne resultere i at rejsen imellem kanterne før og efter den pågældende kant bliver kortere, fordi de ikke skal forbi den servicerede kant som bliver rykket. Selve rykningen af kanten bør ikke forøge omkostningerne, da der alligevel skulle rejses over denne kant, for at komme imellem to andre kanter i ruten. I Partinion kan det være en fordel at prøve at have forskellige af de servicerede kanter optræde som depot, og lade depotet være en serviceret kant. Da kanterne skal rykkes mod slutningen af ruten, kan det at have slutningen af ruten være et andet sted, gøre at kanter der før ikke kunne rykkes nu har nogle muligheder for at blive det. Partition kan køres flere gange hvor kæderne eventuelt vendes om og en kombination af flere kanter som depot afprøves. Switch er væsentlig anderledes end de moves beskrevet ovenfor. I stedet for at prøve at lave forbedringer indenfor ruten, ændrer denne bare på ruten, for at give andre procedurer mulighed for at lave forbedringer. Dette gør den ved at tage et punkt der rejses igennem flere gange på en rute, og vende kæden der begynder og slutter i dette punkt. Altså hvis der er en kæde der hedder , vil punkt 2 kunne bruges da det optræder flere gange. Dette vil kunne lede til en ny kæde der hedder , som er samme afstand med samme kanter men fra et andet perspektiv. Side 20 af 66
24 Dette bruges alt sammen til at gøre de individuelle ruter gode, men det kan være tilfældet at nogle kanter ligger langt fra resten af ruten, og derfor måske kunne være bedre i en anden rute. Eller at en bedre løsning kan findes, ved at tage udgangspunkt i andre kanter i ruterne. Hvordan dette kan ændres, skal undersøges i næste afsnit, men selve konstruktionen af ruterne og forbedringerne i disse, når de nye kanter til ruterne er fundet, er stadig de metoder fra dette afsnit, der vil blive brugt i denne opgave. Forbedringer imellem ruter Da problemet i denne opgave består af mere end en rute, vil det være nødvendigt at lave forbedringer imellem ruterne, udover de forbedringer i ruten der laves ovenfor. Da det ikke kan forventes at den klyngeopdeling der vil blive lavet, finder en optimal spredning af kanter til ruter. Men da problemet i denne opgave er så stort, er de forskellige skridt behandlet separat, hvilket de normalt ikke er i CARP. Teorien fra CARP vil blive brugt til at lave forbedringer imellem ruterne. Ved et mindre problem vil teorien fra CARP, kunne blive brugt til at gå fra at have individuelle kanter til at have de færdige ruter. I opgaven er der taget et perspektiv fra teorien der hedder Cluster first route second(monroy et. al. 2013), og metoden til at forbedre imellem ruterne er et Deterministics Tabu Search Algorithm brugt(brandão & Eglese 2008). Målet med dette som i tilfælde af andre eksempler af CARP, er at finde en god løsning, som ikke nødvendigvis er den optimale løsning(prins 2013). Udover at gennemgå teorien bag denne, vil et improvement move kaldet Paste-Cut (Pia & Fillipe 2006), også blive gennemgået da det er væsentligt anderledes end det der gøres i opgaven. Derudover vil der kommenteres på hvordan metaheuristikker som er baseret på Guided local search og Scatter search(prins 2013) kan adskille sig, for at give et andet perspektiv. A deterministic tabu search algorithm af Brandão & Eglese (2008) hvilket vil blive brugt i denne opgave, starter med som udgangspunkt at bruge nogle allerede oprettede ruter. Disse laver den forbedringer på, ved at lave moves imellem ruter. Efter hvert move optimeres hver enkelt rute, ved at lave forbedringer heri. Metoden indeholder tre forskellige moves imellem ruter. Det første er et Single Insertion move, der tager en serviceret kant fra en rute, og prøver at indsætte denne i en anden rute. Der vælges kun kanter som ikke ligger op ad andre kanter. Denne indsættelse kan foregå imellem alle servicerede kanter, der ikke ligger op ad hinanden. Det vil sige at hvis to servicerede kanter der ligger ved siden af hinanden, ikke har nogle kanter Side 21 af 66
25 imellem sig, vil den ikke prøve at ligge denne kant imellem dem. Det næste move er et Double Insertion, hvor to servicerede kanter der ligger ved siden af hinanden bliver flytter. Det fungerer præcist ligesom Single Intertion, bortset fra at det er to kanter. Det tredje move er et Swap move, hvor to servicerede kanter fra forskellige ruter bliver byttet. De kan byttes, så længe at de ikke ligger op ad andre kanter i deres rute. De bliver puttet ind i hinandens ruter, på en hvilken som helst plads imellem to servicerede kanter der ikke ligger op ad hinanden. I opgaven vil der kun blive testet for at byttet foregår imellem, deres egne placeringer i ruterne. Derudover vil der ikke blive prøvet at vende kanterne, hvilket metoden også foreslår. Da dette i kombination med koordination af ugedage, ville gøre koden meget indviklet. Hvis en kant skal serviceres hver uge, vil der lige meget hvilket move der bruges, blive brugt Single Intertion i den modsatte uge i opgaven. Målet med Metaheuristikken er at minimere, de samlede antal kilometer der bliver rejst. Men hvis den udelukkende laver moves der leder til en bedre mulig løsning, kan den havne i et lokalt minimum. Derfor er det muligt for den, også at undersøge moves der giver en bedre men umulig løsning. Samt undersøge moves, der giver en værre og muligvis umulig løsning, hvis denne ikke er på tabu listen. Hver gang en kant bliver rykket bliver den tilføjet til tabu listen, og er på denne i et antal af iterationer baseret på antallet af kanter der skal serviceres divideret med to. Hver gang der laves et move eller alle mulige moves er undersøgt, tæller det som en iteration af koden. Metaheuristikken burde blive ved med at undersøge moves, så lang tid at antallet af gentagelser er mindre end 900 gange kvadratroden af antallet af servicerede kanter, og antallet af gentagelser siden den bedste mulige løsning, er større en ti gange antallet af servicerede kanter. Alternativt kan Metaheuristikken stoppe hvis antallet af gentagelser siden den bedste løsning er lig med to gange det satte intensiveringspunkt. I denne opgave vil disse niveauer blive sat lavere, da antallet af servicerede kanter er meget stort i dette problem. Hvorimod teorien arbejder med væsentlig mindre problemstillinger. En af grundene til at denne Metaheuristik er valgt er at den finder gode løsninger relativt hurtigt(prins 2013), hvilket den ikke kan hvis der skal så mange gentagelser til. Derudover indeholder metaheuristikken en række parametre der skal hjælpe med at registrere hvor langt denne er nået, og sørge for at lave ændringer til søgningen så bedre løsninger kan findes. Hvis en meget specifik gennemgang af disse ønskes referes til artiklen af Brandão & Eglese Side 22 af 66
26 (2008), hvorimod denne gennemgang fokuserer på at give et overordnet billede af Metaheuristikken forløb. Paste-Cut(Pia & Fillipe 2006) er et eksempel på to moves der tilsammen, fungerer anderledes end de moves der er blevet gennemgået. I stedet for at flytte på en eller to kanter, tager den to hele ruter og slår sammen. Dette er Paste delen, som skaber en rute hvor kapacitetsbegrænsningerne måske ikke er overholdt. Cut delen fikser dette, ved at dele ruten op igen. Dette kan føre til to væsentligt anderledes ruter, hvilket kan give alternative og måske bedre løsninger. Guided local search(prins 2013) er en metaheuristik der ved at ændre omkostninger forbundet med ruten, prøver at undslippe et lokalt optima, for at finde en bedre løsning. Det kan fx gøres, ved at gøre den længste rejse uden servicering dyrere. Altså at den længste deadheading path koster mere, fordi den får strafomkostninger. Det vil sige at i modsætning til Tabu search hvor vi også prøver at komme ud af lokalt minimum, forsøges der i Guided local search at styre, hvilken del der fjernes for at komme ud. Dette kan være en fordel, da det må forventes at den dyreste del er den vi helst vil undgå. Til gengæld kan det ende med, at det er de samme dyre dele der bliver rykket rundt imellem ruter og straffet i disse. Scatter search derimod forsøger at bruge flere løsninger til at finde bedre løsninger, disse findes ved hjælp af heuristikker. Dette gør den ved at søge i op til fem løsninger, og kombinere resultaterne fra disse, til at finde de bedste ruter at placere kanterne i. Hvilket er væsentligt anderledes end Tabu search hvor der først findes ruter, som der derefter forbedres på. 3. Reno Djurs 1 Reno Djurs er et interessentskab ejet af Syddjurs og Norddjurs kommune. Deres opgave er at indsamle og håndtere forskellige typer affald for disse kommuner. De skal gøre dette uden at opnå et betydeligt under- eller overskud. Det vil sige at de omkostninger forbundet med indsamling af affald, sortering af affald, lagring af affald, genbrug osv., skal være fuldt dækket ind af deres indtægter fra dette, som fx salg af varme opnået ved afbrænding eller afgifter til borgerne for indsamlingen. Disse indtægter er i omegnen af 120 mio. kr. om året. Reno Djurs blev oprindelig startet af otte kommuner på Djurs- 1 Informationen i dette afsnit kommer hvis ikke andet angives, fra besøg hos Reno Djurs, deres hjemmeside og fra udleveret materiale. Side 23 af 66
27 land, og de er i dag stadig offentlig ejet og med en bestyrelse bestående af offentligt valgte byrådsmedlemmer. Det er derfor Reno Djurs opgave at opfylde det offentliges behov, og følge de ønsker det offentlige har til indsamling og behandling af affald. Fx har det offentlige et ønske om en høj andel af affald genanvendes. Reno Djurs står for indsamlingen af affald i Syddjurs og Norddjurs kommune. Dette er indsamling af restaffald, pap og papir, flasker og glas og småbatterier for de helårsboliger og sommerhuse på Djursland. Det er ca husstande og sommerhuse dette drejer sig om. Derudover er der tømninger for virksomheder, hvilket omfatter nogle anderledes tømningsordninger, som fx tømning af bundfældningstanke og indsamling af klinisk risikoaffald. Reno Djurs står også for en hjemmekompostordning. Reno Djurs har ti genbrugsstationer, hvor borgerne selv kan aflevere affald, hvilket de står for operationen af. Reno Djurs har deres eget behandlingsanlæg i Glatved, hvor der kan deponeres affald. Reno Djurs har derudover indgået aftaler med Aarhus kommune, Kolding kommune og Reno Syd, så de kan udnytte deres anlæg til affald der ikke skal deponeres. Det betyder at Reno Djurs fx kan afbrænde affald i Århus, imod at Århus kan deponere en tilsvarende mængde affald hos Reno Djurs. Reno Djurs baserer en del af deres drift på udliciteret arbejde, da de kun har 44 ansatte til at udføre alle disse opgaver. Derfor bliver fx indsamlingen af affald, primært foretaget af to eksterne virksomheder. Problemstilling Problemstillingen i denne opgave vil beskæftige sig med Reno Djurs dagrenovation, specifikt indsamlingen af restaffald. Her kan kunderne i helårsboliger i dag vælge imellem flere ordninger, bl.a. hvor ofte de skal have indsamlet restaffaldet. De kan vælge imellem at få indsamlet affald hver uge eller hver 14. dag. Denne opgave vil undersøge om det vil give betydelige besparelser, at lave dette om så alle helårsboliger har tvungen indsamling hver 14. dag. Disse besparelser skal være betydelige nok, til at kunne svare sig med nedgangen i serviceniveauet. Om det er muligt at opnå besparelser, vil blive baseret på en vurdering af det samlede antal km kørt, under hver af de to ordninger. Da indsamlingen er foretaget af eksterne leverandører, står disse også for planlægningen af dette. Derfor er der begrænset adgang til information om den nuværende planlægning, hvilket gør det nødvendigt at lave metoden for planlægningen af kørslen selv, baseret på den relevante teori. Planlægningen vil foregå for en af deres fem områder, som indeholder relevante kunder af deres samlede ca kunder. Dette område er område tre, som rent geografisk ligger i den mest sydlige del af Djursland (Ebeltoft, Knebel, Side 24 af 66
28 Balle). Problemstillingen skal løses, så løsningsmetoden kan bruges på enhver periode og ethvert område. Men det er på vinterperioden at løsningen vil blive testet og sammenlignet. Dette betyder at nogle kunder fx nogle sommerhuse er blevet fjernet, fordi de ikke har indsamling eller for sporadisk indsamling i perioden. Men da det ikke er deres serviceordning der ændres, forventes dette ikke at have stor betydning. Perioden der arbejdes med i problemstillingen er planlægningen for to uger, hvilket tillader at alternativer bliver testet. Samtidig med at problemstillingen ikke bliver for omfattende ved at tilføje ekstra, som ikke er nødvendigt for den pågældende problemstilling. Der skal i løsningen tages højde for flere elementer, specifikt for denne problemstilling. De kunder der skal have indsamlet affald hver uge, skal have indsamling den samme ugedag hver uge. Hvilket skal være en del af modellen og løsningen. Derudover skal der tages højde for hvor mange spande hver kunde har, og hvor store disse spande er. De kan vælge mellem flere forskellige spande, af forskellig størrelse. Tidligere kunne de også vælge sække, hvilket stadig er med i data sættet, da kvantiteten af affald ikke ændres, fordi de får en større spand. Tidligere var det sådan at en sæk tog et minut at tømme, hvilket så skal ignoreres i denne løsningen og i stedet skal tiden for en spand bruges, hvilket står til to min. Disse to min er ikke sikkert, da de i dag tømmer 210 spande per. dag. Hvilket ikke er muligt at nå på en otte timers arbejdsdag, da dette tager syv timer, og de derudover også skal køre imellem spandene og hen til ruten. Ruterne starter og slutter i Affaldscenter Århus, hvor forbrændingen af affaldet forgår. Dette ligger et stykke væk fra ruterne. Hver lille lastbil kan indeholde 12 kubikmeter, og hver mellem lastbil kan indeholde 14 kubikmeter. Det er disse to typer af lastbiler der vil blive anvendt i løsningen, og hvis en mellem lastbil anvendes vil der være to skraldemænd i denne. Det er meningen at de mellem lastbiler skal anvendes i byerne, hvor der er kort afstand imellem spande, og der derfor kan udnyttes at der er to skraldemænd i lastbilen. Ude på landet og imellem sommerhusene er det meningen at de små lastbiler skal køre, hvor der kun er en skraldemand i. Affaldet fra spandene bliver seks gange mindre, når det bliver puttet i lastbilerne, da det bliver komprimeret. Reno Djurs mener at skraldespandene er 75 % fulde, når indsamlingen foregår, men løsningen vil blive baseret på at skraldespandene er helt fulde. Dette kan let laves om, men det hjælper til at give en sikkerhed for at lastbilerne aldrig når maks. kapacitet. Hvilket kunne ske hvis der bruges en gennemsnitlig mængde på 75 %, men at en rute ville have helt fyldte skraldespande. Side 25 af 66
29 Når en kunde vil gå fra at få indsamlet affald hver anden uge, i stedet for hver uge, vil de sandsynligvis få en større skraldespand. Såfremt de har en der kan indeholde nok affald. I denne opgave vil skraldespandsstørrelsen fordobles, også selvom der ikke findes skraldespande af denne størrelse, men fordi at volumen forventes at være uændret. Der vil blive arbejdet med et sikkerhedsniveau for antallet af spande og kapacitet for hver rute, både for at få en ligelig fordeling af spande på ruterne, så der ikke findes meget små ruter. Men også fordi at der hos Reno Djurs, er mulighed for at kunden har en ekstra sæk med affald. Dette er regnet til at i gennemsnit være ti sække pr. rute, hvilket der også skal være plads til i lastbilerne. Dette er et kantruteplanlægningsproblem, hvilket traditionelt løses som et CARP. Dette er allerede blevet diskuteret i teori afsnittet, sammen med teori om klyngeopdeling og RPP. Pga. problemets størrelse vil det blive løst, ved at dele problemet op i nogle mere overkommelige dele, ved hjælp af klyngeopdeling. Hvilket så skal laves ruter for med RPP, og disse skal derefter forbedres. Men før dette kan gøres vil det udleverede data fra Reno Djurs blive behandlet, hvilket er gennemgået i næste afsnit. Opsætning af data Alle Excel ark er tilgængelig på det vedlagte USB stik, både de der er lavet til denne opgave, og de relevante for opgaven udleveret af Reno Djurs. Til at lægge ud med blev en regneark med generelt information relevant til ruteplanlægning lavet, hvilket hedder "general data". Her blev ført ind det tilgængelige information der skal bruges til rutelægningen, noget af dette information findes med makroer som gennemgås senere. I dette ark blev der fundet ud af baseret på dataet, at det er antallet af spande og dermed tiden, der er den begrænsende faktor. Det kan ses ved at der ifølge beregningerne kun behøves tre af de mindste lastbiler, til at indeholde alt affaldet. Imens at der behøves seks skraldemand, til faktisk at foretage indsamlingen. Antallet er rundet op fra det mindst mulige antal personer og biler, da vi ikke kan have et ikke heltaligt antal, og for at opnå et sikkerhedsniveau. Det kunne argumenteres at de eventuelt kunne have et forskelligt antal personer pr. dag, eller have nogle køre i et område en dag og et andet område andre dage, for at få en given løsning til at være bedre. Men på grund af den begrænsede information om dette, og for at gøre løsningen mere simpel, bliver det gjort på denne måde. Side 26 af 66
30 Regnearket for område 3 kaldet "Restaffald område 3 endelig", er blevet behandlet for at gøre det klar til brug. Dette ark bliver når det er indsat i andre regneark, kaldet "area 3". Dette ark indeholder information om kunderne, hvilket bliver sorteret efter hvilken kant disse har. Herudover fjernes de kunder, der ikke har indsamling hver uge, hver anden uge eller flere gange om ugen. Hvilket er nogle af sommerhusene. Derudover er der en makro i denne der finder den samlede vægt af affald og det samlede antal spande, hvilket bruges i "general data". Der er i arket lavet en makro, der finder hvilken kant hver kunde ligger på. Dette gør den ved at matche den vej de ligger på, og ud fra dette finde det tilsvarende Sanne ID. Når den har fundet dette kan den registrere, hvilken kant kunden ligger på. Derudover er der en makro der undersøger hvor mange kanter der udelukkende skal serviceres hver anden uge, og en makro der finder hvor mange kanter der har kunder med mere end en serviceordning. Dette er henholdsvis og 688, ud af kanter der skal serviceres. Dette er lavet for at undersøge hvordan klyngeopdelingen bedst kan laves, da der er en række muligheder for dette. Hvis det havde været sådan at der var få kanter, der udelukkende skulle serviceres hver anden uge. Kunne kanterne fordeles til klynger ved at sige, at efterspørgslen hver uge fra de kunder der skal serviceres hver anden uge, er det halve af den de har hver anden uge. Hvis det havde været sådan, at der var meget få kanter med kunder der både skal serviceres hver og hver anden uge. Kunne kanterne fordeles ud på dagene, og de kanter der så ville skulle serviceres hver uge. Skal så fordeles i hver uge til den samme dag, imens resten skal fordeles en gang i perioden, altså hver anden uge. I stedet vil der i klyngeopdeling blive fokuseret på, at fordele kunderne individuelt, så ingen af disse konflikter opstår. Dette ark vil også blive behandlet i de andre regneark der tilføjes. Fx vil der ved klyngeopdeling blive talt op hvor mange andre kunder der ligger inden for en 500 meters radius. I alternativet hvor alle får indsamling hver anden uge, vil de kunder der har indsamling hver uge få fordoblet størrelsen på deres spande. Dette er gjort så mængden passer, selvom de i praksis bare skal have en spand der kan indeholde den ønskede mængde. Derudover bliver der til klyngeopdeling også opsat en distancematrix, som bruger den udleverede distance imellem punkterne, til at finde afstanden mellem kanterne. Først skal afstandene laves om til integers, da Excel ellers ikke kan arbejde med en så stor datamængde. Derefter er der en række makroer til at lave afstanden imellem kanter. Baseret på den korteste afstand mellem punkterne på kanterne, og halvdelen af længden på kanterne. Disse kan ses i fx "Distancematrix4". Side 27 af 66
31 4. Løsning Løsningsmetoden er delt op i tre separate dele. Dette er gjort for at gøre effekten af hver del overskuelig, så det kan ses hvad ændringer har af effekt på hver af disse. Det skal også hjælpe til at gøre den samlede løsning simplere, da den kan udføres skridtvis. Hver af disse dele vil blive behandlet i hver sit afsnit. Hvor der vil blive argumenteret for, hvorfor og hvordan de afviger fra teorien som de gør. Der vil også blive diskuteret hvordan dette gøres i VBA. Derudover vil der laves nogle tests på kvaliteten af disse løsninger, og laves nogle alternative løsningsmetoder til disse. Der vil blive lagt ud med en gennemgang af klyngeopdeling, og de forskellige variationer af denne. Der vil i dette afsnit blive refereret til resultaterne fra RPP afsnittet, som er det næste afsnit. Dette vil gøres da klyngeopdelingen kun finder alternative spredninger af kanterne, og ikke finder ud af hvilken faktisk effekt på resultatet dette har. Herefter kommer som nævnt RPP afsnittet, der udellukkende fokuserer på at skabe og forbedre ruterne. Dette afsnit bruges som nævnt også til at se resultaterne af klyngeopdelingen, men også til at se om ruterne der er fundet i klyngeopdelingen kan lade sig gøre. Der vil også anvendes flere metoder i dette afsnit. Herefter kommer afsnittet med metaheuristikken, som består af forbedringer imellem ruterne, og forbedringerne i ruten som bliver gennemgået i RPP afsnittet. Derudover indeholder dette også parametre, der fortæller hvordan og hvor lang tid forbedringer til ruterne skal laves. Der vil i opgaven testes på to forskellige alternativer, den gamle serviceordning hvor kunderne kan vælge imellem indsamling af affald hver uge eller hver anden, eller den nye alternative ordning hvor de kun kan få indsamlet affald hver anden uge. Der vil løbende blive kommenteret på, hvordan modellerne for de to forskellige alternativer adskiller sig. Dette vil blive opsummeret efter metaheuristik afsnittet, og der vil blive diskuteret hvilken effekt, forskellen imellem metoderne kan have på resultaterne og tiden det tager at køre koden. Selve resultaterne af de forskellige metoder, vil blive diskuteret igennem afsnittene. Disse vil blive opsummeret og diskuteret, efter afsnittet om forskellene på modellerne. Resultaterne for de to forskellige ordninger vil blive sammenlignet, og der vil blive set på hvordan ruterne ser ud rent grafisk. Herudover vil der i dette afsnit kigges på, hvordan metoderne virker på alternative datasæt. For at se om de også finder resultater af Side 28 af 66
32 samme kvalitet her, og at disse resultater giver samme konklusioner. Til slut vil den økonomiske betydning af disse resultater blive diskuteret, for at se hvilken effekt dette vil have i praksis. Klyngeopdeling I klyngeopdeling blev der taget udgangspunkt i metoden af Benavent et al. (1992), til at fordele kunderne ud til klynger. Hvor hver klynge var en hel rute. Perioden de skal fordeles ud på er to uger, hvilket vil sige ti arbejdsdage. Over denne periode skal der indsamles spande indeholde i alt liter affald. Derudover skal der indsamles en række ekstra sække hver dag, hvor de hos Reno Djurs regner med ti ekstra sække pr. rute pr. dag. Antallet af liter er en begrænsning, da lastbilerne har begrænset plads. De mindste lastbiler har plads til 12 m 3, og de mellem biler har plads til 14 m 3. Derudover er den vægt de kan bære begrænset, men Reno Djurs forventer at plads bliver et problem før vægt. Når affald bliver smidt i lastvognen bliver det komprimeret, og det forventes at det bliver seks gange mindre. Hvilket vil sige at de små kan indeholde liter affald og de mellem kan indeholde liter affald. Dette svarer til at der hver dag skal bruges mindst tre af de små lastbiler. Antallet af spande er en begrænsning, da det er et mål på forventet tid en rute vil tage. Firmaet som Reno Djurs har outsorced deres affaldsindsamling til, forventer at kunne tage spande pr. mand på en uge, hvilket er 210 spande pr. dag. pr. mand. For at kunne indsamle den samlede mængde på disse to uger, skal der i gennemsnit være ansat en lille smule mere end fem personer. For simpelhedens skyld vil der derfor være ansat seks personer. Som det kan ses, er der langt flere skraldemænd end lastbiler i denne løsning. For at kunne have antallet af skraldemænd der skal være ansat blive udnyttet, vil antallet af lastbiler derfor forøges udover det nødvendige. Derfor vil der i resten af opgaven selvfølgelig holdes øje med, hvor meget affaldet vil fylde. Men tidsbegrænsningen som er antallet af spande, vil have større fokus. Det er ikke nødvendig at øge antallet af biler til seks, for at matche antallet af skraldemænd. Da der kan være op til to skraldemand i en mellem lastbil. Der vil derfor i løsningen blive anvendt to små lastbiler hver med en skraldemand, og to mellem lastbiler hver med to skraldemænd. Dette betyder at der vil være, fire ruter pr. dag, og altså 40 ruter i alt på en to ugers periode. Beslutningen om at fordele kunderne med metoden af Benavent et al. (1992), i stedet for at fordele kanter, blev taget ud fra den store mængde af kanter der har begge serviceringsordninger, eller udelukkende skal serviceres hver anden uge. For at teste om dette Side 29 af 66
33 faktisk har en betydning, er der lavet et regneark hvor kunderne er slået sammen, med kunder der har samme kant og samme serviceordning. Dette gav en omkostning efter metoden fra RPP er anvendt på , hvor den originale metode havde en omkostning på Altså er der næsten ingen forskel på disse resultater, med kun 0,00334 % forskel. Den samme kode som blev brugt til klyngeopdeling med kunder, kan bruges til klyngeopdeling med kanter. Dette resultat går imod forventningen om at der skulle være en forskel, men da der ikke er en betydelig forskel på resultatet, koden eller tiden koden tager, vil der arbejdes videre med det originale resultat. Metoden af Benavent et al. (1992) lægger ud med at finde nogle seed kanter, eller i dette tilfælde nogle seed kunder. I artiklen er dette baseret på at maksimere afstanden imellem kanterne, hvilket også gøres i opgaven. Afstanden imellem to kanter er beregnet som afstanden imellem de to nærmeste punkter, og halvdelen af kantens længde. Opgaven adskiller sig fra artiklen, ved at der tages også højde for antallet af kunder der ligger i nærheden af kunden, samt en minimumslængde for afstand imellem to kunder der optræder som seed kunde. Størrelsen af minimumslængden afhænger af antallet, af andre kunder i nærheden af denne kunde. Kun kunder som skal serviceres i den pågældende periode kan vælges, som seed kunde for en rute i denne periode. Periode referer til den dag ruten finder sted, og hver periode indeholde fire ruter, hvor to har små lastbiler med en skraldemand og to har mellem lastbiler med to skraldemænd. Hvis en kunde bliver serviceret i en periode i en uge, og denne skal serviceres hver uge, skal denne serviceres i den pågældende periode i næste uge. Derfor har de kunder der skal serviceres hver uge, fået en større vægt i uge to. Dette gør at der er større chance for at disse bliver seed kunde i uge to, hvilket gør at der er større chance for at når resten af kunderne der skal serviceres hver uge, skal fordeles ud til seedkunder. At der så er en seed kunde i perioden, som at de ligger tæt på. Først findes der seed kunder til uge et, og derefter fordeles kunder ud på denne uge. Efter dette er gjort, bliver der blandt de resterende kunder fundet seed kunder til uge to. Efter der er fundet seed kunder, bliver kunderne fordelt ud til klyngerne, alt efter hvor tæt de er på kanten som seed kunden er på. Dette foregår også anderledes end teorien, da der er to forskellige ordninger, og forskellige bil størrelser. Bil størrelsen i løsningen starter for alle ruter, med at være en lille bil med en chauffør. Halvdelen af bilerne bliver lavet om til en mellem bil med to chauffører, når en af bilerne når et niveau, som er en lille smule større end det sikkerhedsniveau der ønskes for bilerne. Sikkerhedsniveau- Side 30 af 66
34 et er baseret på at få en nogenlunde lige fordeling af kunder. De biler der bliver gjort større er de klynger der har de mindst spredte kunder, i forhold til hvor mange kunder de har. Jo flere kunder jo større chance er der, for at lastbilen bliver gjort større og der tilføjes en ekstra chauffør. Dette er gjort for at få de mellem lastbiler med to chauffører til at køre i byerne, hvor de vil være mere effektive end på landet. Kunderne fordeles ved først, at fordele alle kunderne der skal serviceres hver uge. Disse bliver fordelt en ad gangen, til den klynge der har den seed kunde de er nærmest. Der startes med at tage alle de kunder, der inden for et vist interval har en seed kunde liggende, hvortil disse fordeles. Derefter øges dette interval og kunderne køres igennem igen. Dette interval er gjort stort nok, til at alle kunder kan inkluderes. Men de kan kun fordeles til en seed kunde, hvis det passer med at ugedagen er den som de kan serviceres på. Samtidig med at der er kapacitet til at servicere kunden, plus lidt ekstra kapacitet som bibeholdes til dem af anden ordning. Der er altså flere begrænsninger, der tages højde for på en gang. Der blev også overvejet at tage højde for, forskellen mellem den rute som kunden ligger tættest på, og den som den ligger næst tættest på. Dette kunne gøre at hvis en kunde lå næsten lige tæt på to ruter, imens en anden kunde kun lå tæt på en af ruterne, ville den anden blive valgt frem for den første. Denne begrænsning havde ikke en positiv effekt på resultatet, ud fra det area mål der er lavet i VBA. Herefter køres de kunder igennem, der skal serviceres hver anden uge. Først ligges kunder i klynger, hvor den kant de er på allerede optræder. Såfremt der er kapacitet til dette. Herefter køres hver rute igennem, og der tilføjes kunder så længe der er kapacitet ud over sikkerhedsniveauet til at servicere flere. Kunderne bliver valgt alt efter hvilken der er tættest på ruten, indtil der ikke er mere plads i ruten. Det er altså omvendt end hvis de bliver serviceret hver uge, hvor der for en kunde bliver fundet en rute, hvor der her for hver en rute bliver fundet kunder. Dette foregår ligeledes i hver uge. Efter at dette bliver kørt igennem for den første uge, bliver der for hver af kunderne, der skal serviceres hver uge, registreret hvilken dag de bliver serviceret. Samtidig med at der tages højde for, at hver dag skal have to små lastbiler hver med en skraldemand, og to mellem lastbiler hver med to skraldemænd. Herefter bliver kunderne fordelt ud til uge to på samme måde som uge et, med nogle få forskelle. Som allerede nævnt får de kunder der skal serviceres hver uge, en større chance for at blive seed kunde. Derudover får begrænsningen om hvilken dag de kan blive serviceret, betydning i denne uge. Her- Side 31 af 66
35 udover skal alle de kunder som blev valgt i sidste uge og kun serviceres hver uge, ikke tages højde for. I valget af størrelsen på bil, er det i denne uge ikke sådan at der bare kan vælges halvdelen at gøre større. I stedet skal der vælges for hver dag, hvilke to biler der skal gøres større og have en ekstra chauffør. Efter at klyngeopdelingen var lavet som et Generalised Assignment Problem fra Benavent et al. (1992), blev kvaliteten af denne testet ved at lave fordelingen ved hjælp af en version af Cheapest Edge og Path Scanning(Brandao & Eglese 2006). Cheapest Edge starter hver rute ved depotet, og rejser derefter til den nærmeste kant. Efter dette rejser metoden til den kant der er nærmest til den forrige. Indtil der ikke er mere plads på ruten, hvorefter der rejses tilbage til depotet. Denne metode bruger de samme antagelser om kapacitet og ligelig fordeling, som den første metode. Når en rute er færdig startes en ny rute, indtil det ønskede antal af ruter er opfyldt og alle kanter er servicerede. Path Scanning minder meget om denne version, men hvis omkostninger for en kant er de samme. Tilføjes den kant der er længst fra depotet, når der er høj kapacitet tilbage i lastbilen. Hvis der er lav kapacitet tilbage i lastbilen, tilføjes den af kanterne der er tættest på. Denne metode er ikke helt ligetil, når der er to uger hvor nogle kanter har servicering i hver uge. For at kunne behandle dette, bliver kanterne delt op, så den samme kant både kan optræde som en der skal serviceres hver uge, og som en der skal serviceres hver anden uge. Alternativt kunne man have delt efterspørgslen, fra den del der skal serviceres hver anden uge ud til hver uge. Kanterne bliver herefter kun fordelt ud som om der var en uge, men kapaciteten holdes øje med som om der var to uger. Det vil sige at hvis en kant bliver tilføjet til en rute, og denne skal serviceres i begge ruter. Bliver kapaciteten opdateret i begge uger, og ruten tilføjes til begge uger. Hvis kanten kun skal serviceres i en uge, bliver kapaciteten kun opdateret i den ene uge, baseret på hvilken uge der ikke sidst fik en kant men denne serviceringsordning. Kanten bliver herefter tilføjet til denne uge. Dette gør også at selvom kanten kun optræder i den ene uge, bliver valget af den næste kant baseret på denne. Da valget af kant er baseret på den sidst valgte, men der samtidig skal være synkronisering imellem ugerne. Denne synkroniseringsmetode blev valgt, for at afprøve et alternativ til den der blev valgt i den forrige metode. Side 32 af 66
36 VBA General Assignment Problem Koden til Generalised Assigment Problem ligger i mapperne "clustering gammel plan" og "clustering ny plan". Derudover er det også denne kode der bruges i mappen "clustering gammel plan sammenlagte kanter". Gammel plan referer til planen hvor der både er kunder der skal serviceres hver uge, og kunder der skal serviceres hver anden uge. Ny plan referer til hvor der kun er kunder, der skal serviceres hver anden uge. Ingen af koderne burde i denne del af besvarelsen, tager mere end nogle få minutter, og der er derfor ikke kommenteret på løbende, hvor lang tid de tager at køre. I mappen "clustering gammel plan" er excel arkene "Distancematrix 4", "Clustering" og "Clusterdatabehandling". "Distancematrix 4" indeholder information om kanterne og kunderne, og bruges sammen med "Clustering" til at lave klynger. "Distancematrix 4" har arkene "Arcs", "Arc distance" og "Area 3". Arket "Arcs" indeholder generel information om kanterne, imens "Arc distance" er afstanden imellem disse. Arket "Area 3" optræder også i "Clusterdatabehandling", og dette indeholder information om kunderne. Samt en ekstra kunde der repræsenterer depotet, som er blevet oprettet til brug i klyngedannelsen. Denne fil indeholder også koden der er nødvendig, til at lave afstand imellem kanter. Denne kode er placeret i "module 1". Denne benytter også et ark kaldet "knude distance", som var afstanden imellem punkterne. Dette ark blev dog slettet for at filen ikke skulle være for stor, hvilket er samme grund til at tallene blev lavet om til integers. Denne afrunding forventes kun, at have en meget lille effekt på resultatet. Filen "Clustering" indeholder koden til at fordele kunder ud på ruter. Hvor dem i uge et havner i arket "ark1", og dem i uge to havner i arket "ark2". Koden til dette ligger i "module 1". Ud over at registrere kundenummeret, baseret på hvilket nummer de er i arket "Area 3", registreres også generel information om ruten. Der bliver registreret hvor mange spande der er plads til udover de brugte, og hvor mange liter der plads til udover det brugte. Derudover registreres det også hvor spredt ruten er fra seed kunden, hvilket opgøres som område dækket. Dette bruges som en foreløbig vurdering af kvaliteten af klyngeopdelingen. Det samlede område for alle klynger er registreret i "ark1", i cellen (20,2). Der står også over hver rute om det er en lille lastvogn kaldet small, eller om det er en mellem lastvogn kaldet medium. Derudover indeholder filen også koden i "module 2", som finder alle adresserne for seed kanterne, og skriver disse ind i arket Side 33 af 66
37 "ark3". Denne bruger filerne "Clustering" og "Distancematrix4". Disse kan ses indtegnet på et kort nedenfor, det skal nævnes at nogle punkter fra forskellige uger, ligger oven på hinanden og derfor kan være svære at se. De gule er fra uge et og de røde fra uge to. Til slut er der "Module 3" som tester om alle kunder bliver besøgt, og om nogle kunder bliver besøgt mere end en gang. Denne bruger kun filen "Clustering" Dette gør den ved at køre alle besøgte kunder igennem, og registrere dette besøg. Efter at have kørt uge et igennem, kommer den med en besked der siger 0 og Hvilket betyder at indtil videre er 0 kunder blevet gentaget og er blevet besøgt. Efter den har undersøgt uge to, kommer der en ny besked der siger og Hvilket betyder at kunder er blevet gentaget og er besøgt. De kunder der er blevet gentaget, er de der skal besøges hver uge. Grunden til at der bliver besøgt mere end de kunder der er, er at nogle kunder bliver besøgt hver uge. hvis de bliver trukket fra 9.629, giver det de kunder som skal besøges. Herefter kommer der er en besked der siger 0, hvilket er antallet af kunder der ikke besøges. Som der vil blive diskuteret senere, er dette ikke den bedste metode. Dette er bl.a. fordi den prøver at ligge seed kanterne, så langt fra depotet som muligt. Dette kommer fx til udtryk i det store antal seed kanter på Helgenæs, hvorimod som det kan ses senere, bør der kun være en eller maksimum to ruter om ugen her. Dette er også det der skaber problemet, når det kommer til planlægning for den nye serviceplan. Side 34 af 66
38 Filen "Clusterdatabehandling" indeholder arkene "kunde1", "kunde2", "edges1", "edges2" og "area3", hvor nummeret til slut i navnet referer til ugen den ligger i. Koden i denne fil arbejder sammen med informationen i filen "Clustering". Arkene kaldet "kunde#" indeholder det centrale information om kunderne i hver rute. Arkene kaldet "edges#" indeholder den centrale information om kanterne i hver rute. Arket "Area3" er det samme som i "Distancematrix4", med undtagelse af at der ikke er en kunde der repræsenterer depotet. Filen indeholder syv moduler, hvor de to første er til opsætning af ruterne, det næste og modul fire og fem er til test af ruterne, og det tredje og det sidste er til at forberede dataet. "Module 1" henter information om kunderne for hver rute, og indsætter dette i arkene "kunde#". Dette gør den ved at tage kunderne fra "clustering" filen, og finde det tilsvarende kunde information i arket "area" 3. Det finder antallet af spande for hver kunde, kanten kunden er på, dets "Sanne ID", og den gennemsnittelige størrelse af spandene. Derudover er størrelsen på lastbilen også nævnt for hver rute. "Module 2" går ind og tages dette information i arkene "kunde#", og sorterer det efter kant nummeret i dette Side 35 af 66
39 ark. Derefter ud fra størrelsen identificerer den hvilken dag, den hører til. Hvilket har effekt, når den skriver ruteinformationen ind i arkene "edges#". Det vil sige at de fire første ruter i "edges1", er de fire ruter der køres på i uge et dag et, og de fire næste er uge et dag to osv.. Herefter slås kunderne sammen, hvis de er på samme kant. Dette betyder at antallet af spande, bliver summeret op. Samt den samlede størrelse, af alt affaldet bliver fundet for hver kant. Derudover bliver det opgjort, hvorvidt der er en eller flere kunder der på denne kant, skal serviceres hver uge. Hvis dette er tilfældet, bliver kanten markeret med et 1-tal under kolonnen "hver uge". Efter den har gjort dette, starter den på samme måde med en ny rute. Hver rute starter ud med et nul, hvilket originalt var lavet for at inkludere depotet. Til at teste kvaliteten er der lavet fire moduler. "Module 3" tester hvor mange kanter der gentages i hver uge. Dette skal helst være lavt, da at servicere kanter på mere end en rute, kan skabe nogle ekstra omkostninger. Et tilfælde hvor to ruter ikke ville have større omkostninger, ved at servicere kunder på samme kant i forskellige uger. Var hvis begge ruter alligevel skulle rejse over denne kant, for at kunne servicere resten af deres kanter. I den originale fil bliver antallet af kanter der gentages 411 for begge ruter. Dette må siges at være noget højt, specielt taget i betragtning af at det kun er i omegnen af kanter der skal serviceres. "Module 5" undersøger kvaliteten, ved at kigge kunderne igennem, og tælle at ingen gentages. Samtidig bliver antallet af kunder der gentages fra uge et til uge to også talt, så der kan ses om det rigtige antal gentages. Til slut tæller den også om nogle kunder er udeladt. Der kommer tre beskeder, den første er nul, hvilket betyder at ingen kunder bliver gentaget i første uge. Den næste er 2.823, hvilket betyder at det rigtige antal gentages i uge to. Den sidste siger nul, hvilket betyder at ingen kunder er udeladt. "Module 6" indeholder to subs, hvor den første kigger på om det rigtige data er hentet om kunderne, og den næste kigger på om det rigtige data er samlet om kanterne. Den første sub finder fire tal, hvor kun de første to er af betydning. Disse indskrives i arket "kunde1", under den første rute. Det første tal er antallet af liter der indsamles, hvis disse kunder serviceres. På ruten skal der som nævnt indsamles liter, hvilket også er det antal liter der findes. Det næste tal er antallet af spande der indsamles, hvis disse kunder serviceres. Dette er som også nævnt , hvilket også er det antal spande der indsamles i denne løsning. Den anden sub går også ind og finder fire tal, hvor det kun er de første tre der har betydning. Denne sub skriver også resultatet under rute et, og finder også spande og liter, hvilket er Side 36 af 66
40 målet. Derudover finder den 3043 kanter, som skal serviceres hver uge i perioden. Grunden til at dette ikke er et lige tal, er at nogle kanter er blevet delt i to, hvilket kan være problematisk. Ud fra dette kan det ses at løsningen indeholder alt hvad den skal indeholde, men at der er nogle problemer i forhold til gentagelser af kanter. "Module 4" tæller antallet af kunder, der ligger indenfor en 500 meters radius af hver kunde. Dette skrives ind i arket "area3". Den skal bruge filen "Distancematrix4", for at kunne finde dette. Derudover er der "module 7" som finder antallet af kunder der skal serviceres hver uge, og giver dette i en msgbox. Dette antal er som nævnt Derudover indeholder mappen word filen "codedumb", hvor kode der ikke blev brugt blev lagt. Samt Excel filen "test af kvalitet" som blev brugt, til at lave en sammenligning af resultaterne mellem de to metoder Generalised Assigment Problem og Cheapest Edge. Dette gør den ved at finde de forventede omkostninger, hvis cheapest edge var blevet brugt. Den gør brug af filerne "Distancematrix4" og "GrafData - All after cleanup - dist". "Distancematrix4" bruger den til at finde og registrere information om kanter og kunder. "GrafData - All after cleanup - dist" bruger den til at finde afstanden mellem punkterne. Omkostningerne herfra kan sammenlignes med initial omkostningerne ved RPP, som er væsentligt højere. Mappen "Clustering gammel plan sammenlagte kanter" indeholder næsten det samme som "Clustering gammel plan", med undtagelse af at arkene "area3" er ændret, og derfor er resultaterne også anderledes. Der er lavet en kode som er i filen "Clusterdatabehandling" i "Module 8". Denne slår kunderne sammen i "area3", såfremt at de har samme kant og samme serviceringsordning. Mappen "Clustering ny plan" indeholder hovedsageligt de samme filer og kode som Clustering gammel plan. Filerne er navngivet anderledes, hvor de i stedet er kalder Distancematrix5, Clustering2 og Clusterdatabehandling2, altså samme navn andet nummer. Derudover er indholdet i Area3 arkene lavet om, ved hjælp af Module 2 i filen Distancematrix5. Denne sub finder de kunder der ikke skal serviceres hver anden uge, og laver deres servicering om til hver anden uge. Hvis arket gennemgås kan det ses, at nogle kunder står til at blive serviceret, mere end en gang om ugen. I disse tilfælde er kunden delt i to, så denne bliver behandlet som to kunder med samme adresse. Disse er begge inkluderet i opgaven, men det er ikke gjort sådan at de har servicering på forskellige dage, hvilket kunne være det Reno Djurs ønsker. For at mængden af af- Side 37 af 66
41 fald ikke ændrer sig, fordobler den antallet af liter. Dette er gjort for at antallet af liter skal passe, men i virkeligheden bliver spand størrelsen ikke bare fordoblet. I stedet kan det forventes at spanden skal erstattes med en spand, der kan indeholde mindst det dobbelte. Men selvom spanden bliver så meget større, resulterer det nødvendigvis ikke i, at kunderne smider mere affald ud end de plejer. Koden til Clustering2 er også lidt anderledes, da der ikke er nogle kunder der skal serviceres hver dag. Hvilket betyder at opgraderingen af bilerne er rykket, til at blive gjort efter en indledende fordeling af kunderne. Derudover er der ikke nogen nødvendig synkronisering, hvilket gør at fordelingen i uge to muligvis bliver gjort bedre. Derudover er koden til at lave fordelingen, hvis der er kunder der skal serviceres hver uge, ikke så indviklet som i Clustering. Dette er alt sammen gjort for overskuelighedens skyld, da kun det nødvendige kode er med. Disse to koder kunne slås sammen, og dermed virke under begge planer. Hvis dette gøres skal variablen assi, der bestemmer om biler må opgraderes, defineres et andet sted end den er i disse koder. For at undgå konflikter, hvor den prøver at opgradere lastbilerne flere gange. Derudover er alt koden til at forberede arkene ikke inkluderet, og koden til at teste kvalitet forbundet med servicering ved hver uge, er heller ikke inkluderet. Nedenfor kan set et billede af seed kunder for denne plan. Side 38 af 66
42 Cheapest edge Koden til Cheapest Edge ligger i mapperne "Clustering gammel plan anden metode" og "Clustering ny plan anden metode". Denne bliver både brugt på den gamle plan, hvor der er kunder med servicering hver uge og hver anden uge. Samt den nye plan hvor der kun er servicering hver uge. Der er lidt forskel på koden til de to planer, hvilket vil gennemgås nedenfor. Mappen "Clustering gammel plan anden metode" indeholder filerne Grafdata all after cleanup, Grafdata all after cleanup - dist, Clusterdatabehandling og Test af kvalitet. Grafdata all after cleanup bruges til at finde information om kanterne, hvor mange kanter der er og i hvilke punkter de starter og slutter. Grafdata all after cleanup - dist bruges til at finde ud af, hvor langt der er imellem punkterne. Clusterdatabehandling indeholder information om efterspørgsel for kunderne i arket Area3. Derudover skrives løsningen ind i denne fil i arkene edges1 og edges2. Filen indeholder også Module 8, som bruges til at behandle denne løsning, ved at slå kanterne sammen indenfor ruterne. Hvis en kant, har kunder med to forskellige serviceringsord- Side 39 af 66
43 ninger, bliver disse delt op. Men for at det er nemmere for koden at behandle senere, er det en fordel at slå disse kanter sammen indenfor ruterne, efter at disse er lavet. Derudover indeholder denne fil også de moduler, der blev brugt til teste kvaliteten og om koden giver et resultat der indeholder alt den skal. Filen test af kvalitet er den der finder og indskriver den faktiske løsning, ved brug af ovenstående filer. Det er en justering af filen test af kvalitet fra mappen Clustering gammel plan, som ikke indskrev løsningen, og halverede efterspørgslen på de der skulle serviceres hver anden uge. Denne var oprindeligt lavet, for at give et billede af hvor godt det fungerede, at lave seed kunder og fordele kunderne til disse. Men på grund af det gode resultat denne finder, blev det besluttet at lave en løsning med denne kode. Den omkostning den skriver ud, er det maksimale for de forventede omkostninger på denne rute. Koden som er i Module 1 fungerer ved at slå kunderne sammen, med de kunder der har samme kant og serviceringsordning. Herefter fordeler den kanterne til begge uger på samme tid, da nogle kunder skal serviceres i hver uge. For hver rute behandler den kapaciteten for begge på samme tid. Den starter med ti små lastbiler og tager derefter ti mellem lastbiler som ruternes kapacitetsbegrænsninger. Men skriver dem ind så de to første små lastbiler og de to første mellem lastbiler, hører til dag et. Den skriver resultaterne ind i Clusterdatabehandling, så de står på samme måde, som de gjorde i den oprindelige metode. Altså først to små lastbiler, og derefter to mellem, herefter to små igen, osv.. Herefter køres Module 8 fra denne fil, som slår kanter sammen. Mappen "Clustering ny plan anden metode" har de samme filer, med undtagelse af Clusterdatabehandling2, som indeholder det justerede ark Area3. Hvis der i nogle af mapperne er problemer med at få Grafdata all after cleanup, eller filer med tilsvarende navn til at virke, kan de fra andre mapper bruges, da de gerne skulle være de samme. I denne version af test af kvalitet tager den de to uger hver for sig, da der ikke er nogle kunder der skal serviceres i hver uge. Altså kører den 40 ruter igennem i stedet for 20. Path Scanning Koden til Path Scanning ligger i mapperne " Clustering ny plan tredje metode" og " Clustering gammel plan tredje metode", som indeholder de samme filer som mapperne Side 40 af 66
44 fra Cheapest Edge. Her er koden lavet om, så den tager højde for afstanden til depotet, sammenlignet med den resterende kapacitet, hvis omkostningerne er de samme. Rutelægning Efter klyngerne er dannet, bliver hver rute behandles som et Rural Postman problem. Her bliver der først fundet en rute i hver klynge, hvorefter hver rute bliver optimeret. Selve rutelægningen vil blive løst ved hjælp af to metoder, en greedy heuristik(mohan et al. 2010) og en metode baseret på denne som ligner nearest neighbour fra Traveling Salesman Problem. Hvor den endelige løsning der vil blive anvendt, er den baseret på nearest neighbour. Argumenterne for dette kan findes nedenfor. Efter hver enkel rute er lavet, vil disse forbedres med nogle inner route improvements. Dette gøres for at optimere hver rute, og disse vil også blive brugt i metaheuristikken. Her vil blive brugt to forskellige forbedringsteknikker, hvor begge kan ses i Hertz et. al. (1999). Disse er en variation af Partition og en variation af Drop-Add, som også vil blive gennemgået nedenfor. Selve gennemgangen af løsningsmetoden i denne opgave, vil blive gennemgået efter konstruktionsheuristikkerne og forbedringsprocedurerne er gennemgået. Dette vil blive gjort, for at der er en fuld forståelse for hvorfor der bliver taget disse valg, og hvordan disse metoder interagerer. En Greedy Heuristik(Mohan et al. 2010) er en konstruktions heuristik, hvis mål er at tage et antal kanter der skal serviceres, og lave en rute af dem. Heuristikken starter med at stå i depotet, og have en tom tur. Alle de kanter som turen skal indeholde, skal herefter tilføjes. Dette gøres ved at tilføje dem en ad gangen, alt efter hvilken kants tilføjelse, øger turens forventede omkostninger mindst. Alle kanter der skal serviceres, og endnu ikke er blevet serviceret, bliver set på når løsningen laves. Den forventede forøgelse af omkostningerne, er beregnet ud fra flere faktorer. Den første faktor er afstanden fra den allerede eksisterende rute, til kanten som er i betragtning. Så kanter der er tættere på denne rute, bliver tilføjet før kanter der er længere væk. Den næste faktor er hvor lang kanten er, altså kortere kanter bliver tilføjet før længere kanter. Derudover tages det i betragtning hvor sandsynligt, at det er at kanten skal serviceres på denne rute. Dette kan fx beregnes ud fra, hvor langt kanten ligger fra rutens centrum. Hvis rutelægningen er en del af en metaheuristik, kunne dette være baseret på hvor ofte kanten er blevet flyttet imellem ruter. Alternativt hvis der var usikkerhed i efterspørgslen, kunne denne faktor beregnes ud fra en forventet sandsynlighed for at kanten bliver serviceret. Altså hvis kanten har stor sandsynlighed for at blive serviceret, vil denne ligge før i ruten end kan- Side 41 af 66
45 ter med mindre sandsynlighed for at blive serviceret. Derudover er der en variabel kaldet P inkluderet i beregningerne, som bestemmer vægten de forskellige faktorer skal have. P kan justeres, for at finde den optimale vægt imellem faktorerne, for at skabe den bedst mulige rute. Efter alle kanterne er tilføjet kører ruten tilbage til depotet, fra det sidst besøgte punkt. I artiklen af Mohan et al. (2010) foreslås det, at anvende forbedrings heuristikker på ruterne bagefter, for at finde nogle gode ruter. Hvilket også vil blive gjort i denne opgave, hvor procedurerne der anvendes som nævnt vil blive Drop- Add og Partition. I artiklen foreslås Drop-Add og Shorten, hvilket ligner det som gøres i løsningen i denne opgave. Da Drop-Add anvendes på nogenlunde samme måde, og proceduren Shorten indeholder proceduren Partition(Hertz et. al. 1999). Nearest Neighbour er normalt brugt til at løse et Traveling Salesman Problem(TSP), men vil blive brugt i denne opgave ligesom En Greedy Heuristik. Ændringen er bare at der ikke længere tages højde for, hvor lange kanterne er, og sandsynligheden for at de bliver serviceret. Dette undgår at korte kanter, der ligger langt fra den sidst servicere kant, ikke bliver valgt frem for en lang kant, der ligger tæt på den sidst servicerede kant. Dette kan muligvis give besparelser, eller et andet resultat, og er derfor værd at teste. Specielt taget i betragtning hvor tæt løsningerne er på hinanden, i forhold til deres metode. Så det kun tager en lille ændring i koden, at løse problemet med denne metode, som kan give et helt andet resultat. Kant rutelægning med den metode er næsten som i TSP, med nogle få variationer der er lavet til denne opgave. Ruten starter som i En Greedy Heuristik, med at være i depotet. Herefter findes det nærmeste punkt, på en af de kanter der skal serviceres, og som ikke allerede bliver serviceret. Herefter går den til dette punkt, og rejser over kanten så ruten nu står i kantens andet punkt. Herefter finder den det nærmeste punkt til dette punkt, i de kanter der skal men ikke allerede er blevet serviceret. Hvorefter dette skridt gentages. Dette gør den indtil alle kanterne der skal serviceret er blevet inkluderet, hvorefter den går tilbage til depotet. Partition tager en fuldt dannet rute, og kigger på de kanter, som der ligger imellem de kanter der bliver serviceret(hertz et. al. 1999). Hvis en af de kanter der bliver serviceret, også bliver rejst over uden at blive serviceret, kan denne kant blive flytte her. Så længe det er senere i ruten, end denne kants oprindelige plads, kan der muligvis opnås en besparelse. Denne besparelse opnås ved, at afstanden mellem de to kanter der skal serviceres før og efter den flyttede kant, muligvis er mindre, end afstanden mellem den flytte kant og disse to kanter. Selve flytningen skaber ingen ekstra omkostninger, da kanten Side 42 af 66
46 alligevel skulle rejses over, for at komme mellem to andre kanter der skal serviceres. Denne køres igennem for hver rute, og starter med den første kant der skal serviceres. Derefter kigges der på alle kanter der rejses over, som ikke bliver serviceret, startende med den sidste kant der rejses over. Hvorefter den tjekker alle kanter, som ikke serviceres fra rutens slutning, indtil den kant der prøves at flyttes findes. Hvis kanten bliver flyttet, oprettes der en ny rute, imellem de to kanter som skal serviceres der ligger før og efter den flyttede kant. Efter dette tages den næste kant der skal serviceres, og der bliver lavet ændringer på samme måde, indtil alle kanter er tjekket. I den teoretiske model prøves der, at flytte depotet efter det hele er kørt igennem. Dette kan gøre at kanter så kan rykkes et nyt sted hen, hvor denne rykning kan sænke omkostningerne. Dette ryk kan muligvis foretages, da det nu er en anden kant der er sidst i ruten, hvilket åbner nye muligheder i form af alternative kanter, der rejses over uden at blive serviceret. Fx hvis en rute rejste over kanterne der skulle serviceret , hvor kanterne der ikke serviceres ikke er nævnt. Ville den have begrænsede muligheder for hvor den kunne rykke fx kant nummer 8, da den kun kan rykkes til at ligge mellem kant 9 og depotet benævnt 1. Men hvis kant 7 laves om til depotet, kan kant 8 rykkes imellem mange flere kanter. Dette vil ikke inkluderes i opgaven, da opgaven har et så stort et datasæt, at løsningsmetoden i forvejen kommer til at tage lang tid at køre. Derfor vil der i opgaven fokuseres på at opnå så store besparelser som muligt, med et tidsforbrug der er overskueligt, samtidig med at forskellig teori kan demonstreres. Hvis Partition skulle køres igennem med variation af depotet, ville der ikke være tid til at have mere end en forbedringsprocedure, hvilket ville give en løsning uden nok variation. Drop-Add tager kanterne der skal serviceres en ad gangen, og tager dem ud af ruten(hertz et. al. 1999). Herefter bliver det prøvet at indsætte denne kant igen, imellem de andre kanter der skal serviceres. Kanten indsættes det sted, hvor indsættelsen giver den laveste forøgelse af omkostningerne, ved at have kanten der. Derefter tages den næste kant og det samme gøres for denne. I denne opgave vil alle kanter ikke nødvendigvis blive prøvet at flytte, selvom den går kanterne igennem en efter en. Dette gør den ikke, fordi at rækkefølgen på kanterne ændrer sig. Dette gør at en kant der tidligere lå tidligt i ruten, kan blive flyttet til slutningen af ruten. Dermed tager en anden kant den flyttede kants plads i rækkefølgen, og derfor bliver den anden kant sprunget over. Dette kunne undgås, ved at have alternative formuleringer i koden. Men dette ville enten tage mere tid, eller bruge mere af computerens hukommelse, hvilket ville blive et problem Side 43 af 66
47 for metaheuristikken. Derudover prøver denne formulering, en masse forskellige alternativer igennem alligevel, hvilket er det der ønskes at gøre. Alt dette tilsammen virker, ved at der først laves en rute startende ved depotet, hvor kanterne tilføjes en ad gangen, alt efter hvilken der øger omkostningerne mindst. Herefter køres der tilbage til depotet igen. Hver gang en kant der skal serviceres tilføjes, findes der information om kanten, og om de kanter imellem denne kant og den kant før denne der skulle serviceres. Efter dette er gjort, er der information om hvilke kanter der bliver kørt over, uden disse bliver serviceret. Derfor kan Partition bruges til at se på hvilke kanter, der kan blive rykket. Dette gør den ved at tage de servicerede kanter fra start til slut, og se fra slut til kantens plads, om de kan blive rykket til et nyt sted, hvor kanten allerede bliver rejst over. Hvis dette er tilfældet flyttes kanten, og de led der før opdelte de to servicerede kanter som denne kant lå imellem, bliver slettet. Herefter findes den korteste rute imellem disse kanter, og ruten bliver opdateret med denne information. Herefter køres Drop-Add, hvor kanterne tages en ad gangen, og hives ud af ruten. Herefter laves der en ny rute, hvor kanten har fået en ny plads. Herefter findes omkostningerne for denne rute, og hvis de er lavere end de gamle omkostninger. Flyttes denne kant til den nye plads. Lige meget om kanten bliver flyttet eller ej, tages den kant der nu har den anden kants plads, og flytninger prøves af for denne. Det er altså kun hvis kanten der flyttes tager den helt sidste plads, uden at den kant der ligger efter er blevet flyttet før, at scenariet hvor en kant ikke bliver prøvet at flytte opstår. Efter alle pladser er blevet prøvet at blive rykket til alle nye pladser, findes information om den bedste fundne rute igen. Herefter bliver Partition kørt igen, ligesom den blev før. For at se om kanter kan blive rykket, uden at skabe ekstra omkostninger. Der er i løsningen ikke særlig stor fokus på, hvordan kanterne vender. Når ruten ligges i starten, vil kanterne være vendt, sådan at kanten har det punkt først, som er nærmest til det sidste punkt i den forrige kant eller depotet. Dette er også tilfældet når Drop-Add løsningen, skrives ind igen. Når Partition bruges, vil kanterne være vendt som de allerede er i forvejen. At vende kanterne kunne give besparelser, og er også foreslået i forbindelse med metaheuristikken. Men det er valgt ikke at gøre dette, da det tager tid, og samtidig vil det gøre koden meget indviklet i metaheuristikken, når der også skal tages højde for synkroniseringen af ugedage. Side 44 af 66
48 VBA Koden og filerne til rutelægningen er i mapperne "RPP gammel plan", som bruger ruterne fundet i "Clustering gammel plan". Mappen "RPP gammel plan anden metode" bruger ruterne fra "Clustering gammel plan anden metode". Mappen "RPP gammel plan sammenlagte kanter" bruger ruterne fra "Clustering gammel plan sammenlagte kanter". Mappen "RPP gammel plan tredje metode" bruger klyngerne fra "Clustering gammel plan tredje metode". Mappen "RPP ny plan" bruger ruterne fra "Clustering ny plan". Mappen "RPP ny plan ny metode" bruger ruterne fra "Clustering ny plan anden metode". Mappen "RPP ny plan tredje metode bruger ruterne fra "Clustering ny plan tredje metode". I hver mappe bruges filerne fra meta mapperne "GrafData - All after cleanup - dist" som indeholder distancen imellem punkterne. Filen "GrafData - All after cleanup - pred" som indeholder de punkter som der skal rejse over, for at komme fra et punkt til et andet. Filen "GrafData - All after cleanup" som indeholder information om alle kanterne i netværket. Derudover indeholder hver mappe også filen "rutelægning", som indeholder koden og den løsning denne finder til problemet. Hver løsning er selvfølgelig forskellig, men koden kan også være lidt anderledes, alt efter hvor løsningen kommer fra. Hver mappe indeholder nemlig, deres egen fil med klynger. Denne er enten kaldt "Clusterdatabehandling" eller "Clusterdatabehandling2", og er hentet fra Clustering mapperne. Derudover indeholder mappen "RPP gammel plan", også mappen kaldet "retry". Denne mappe indeholder alternative løsningsmetoder som fx En Greedy Heuristik. Løsningen til en Greedy heuristik, kan findes i mappen "RPP dårlig metode". Hvor denne er anvendt på klyngerne fra "Clustering gammel plan anden metode". Den indeholder også backup versioner af koden, samt andre versioner hvor fx tiden er det de fra Reno Djurs side foreslår. I mapperne kan også findes kode, til at tegne ruterne ind i diagrammer, og teste kvaliteten. Rutelægning Koden til at lave RPP kan som nævnt findes i filen kaldet rutelægning, og denne ligger i "Module 1". Den tager ruterne en ad gangen, og skriver dem ind i filen rutelægning. Hvor ruterne fra uge et bliver lagt i "ark1", og ruterne fra uge to bliver lagt i "ark2". Ruterne starter i depotet som er punkt fem, og hver punkt der herefter rejses til skrives under dette i den første kolonne. Hvor den hver gang slutter med punkt fem igen. I den anden kolonne skrives den afstand, der er imellem punktet i den forrige række og denne række. Dette er den variabel der ønskes at sænke, hvilket gør den vigtigst. Side 45 af 66
49 I den tredje kolonne, skriver den kantnummeret på den kant der rejses på, imellem punktet i den forrige række og punktet i denne række. I den fjerde kolonne skrives der et et-tal, hvis der er en servicering på denne kant. Der skrives også et et-tal i den første række, for at koden skal fungere. I den femte kolonne skrives der, hvor mange spande bilen samler op på denne kant. Der samles kun spande op, på en kant hvis den bliver serviceret. I den sjette kolonne skrives det samlede antal liter, der bliver samlet på denne kant. I den syvende kolonne skrives tiden, der bruges på denne kant. Tiden i den endelige version er beregnet ud fra en gennemsnitsfart på 60 km i timen, og at det tager et min at samle hver spand ind. Dette er væsentligt hurtigere end Reno Djurs regner med, men hvis tiden Reno Djurs regner med bliver brugt, vil der ikke være nok tid på mange af ruterne. Dette blev fundet ved hjælp af koden i mappen "retry". Her bliver der i "Module 3" af filen rutelægningslowcode", flyttet informationen fra en rutelægnings fil over til denne fil. I dette bliver tiden lavet om, til at de kører langsommere på kanter der skal serviceres, og at det tager to min at tømme hver spand. Originalt to det et min at tømme hver sæk, men de har hos Reno Djurs ikke længere sække. Herefter bliver den nye tid regnet ud, og det kan ses at hvis fx ruterne fra mappen "RPP gammel plan" bruges, tager 37 af ruterne for lang tid. Alternativt hvis ruterne fra mappen "RPP gammel plan anden metode", tager stadig 30 ruter for lang tid. Alternativt kunne dette findes, ved at køre ruterne fuldt ud med den anderledes tids beregning. Selvom denne kode er tilgængelig, blev det ikke gjort, da ruterne ikke ville ændre sig. Dette gør de ikke, da kun tiden ændrer sig, da ruternes opbygning ikke har noget med tiden at gøre. Det ville altså tage væsentligt længere tid at køre denne kode, uden at det ville give andre resultater. Den næste kolonne benævner om en kant var blevet flyttet, hvilket bruges i koden. Der kan også ses at hvis denne kant, bliver der efter at løsningen har lavet nye sammenhænge imellem ruterne, har rykningen af denne kant ikke skabt en besparelse. Dette kan ses da denne kant ud fra dette, stadig skal ligge på sin gamle plads, for at ruten kan rejses over. Den sidste kolonne som er nummer ni, fortæller hvorvidt en kant skal serviceres i begge uger. Dette skal bruges i metaheuristikken. Efter dette er der en tom kolonne, hvorefter den næste kolonne indeholder den næste rute, indtil alle ruter er inkluderet. Efter den er vendt tilbage til depotet i punkt fem, bruges næste række til at ligge alt dataet om ruten sammen. Dette ligges sammen for alle ruterne, under rute et, hvor der står det samlede resultat. Dette gøres i "Module 7", som køres efter "Module 1". Denne finder de samlede omkostninger og det der er indsamlet, og skriver det ind som nævnt under rute et. Først står det samlede rejste antal meter. Hvor øverst står det endelige resultat, og ne- Side 46 af 66
50 denunder står det antal meter som ruten rejste over, inden de to forbedringsprocedurer blev anvendt. Herefter står det samlede antal serviceringer, plus 40 hvilket er antallet af gange en rute startes ud. Det næste tal der står er antallet af spande der indsamles på ruten, hvilket gerne skulle være under den gamle serviceringsplanog under den nye. Til slut står det indsamlede antal liter, hvilket gerne skulle være Der kan for hver rute ses hvor meget tid der bruges på denne, og hvor mange liter der indsamles på denne. Dette niveau kan fx ses i mappen "RPP gammel plan", hvordan det passer overens med den originale "Clustering" fil. Som fandt ud af fx at rute 3 ville være tættest på at møde kapacitet i form af antal liter, hvilket også er tilfældet i "Rutelægning" filen. Rutelægningen med metoden hvor kanterne vælges ud fra den forventede påvirkning af omkostninger, kantens længde og chancen for at den flyttes ligger som nævnt i mappen "RPP dårlig metode". Her beregnes omkostninger først for hver kant, ud fra den foreslåede beregningsmetode i Mohan et. al. (2010). Herefter tilføjes de ud fra en Greedy metode, altså at de med den laveste forventede forøgelse af omkostningerne tilføjes først. Grunden til at den er kaldt dårlig metode, er at den i hver test har haft væsentlig højere omkostninger, hvilket vil blive yderligere diskuteret nedenfor. Beregningen af de forventede omkostninger, er baseret bl.a. på de kanter der allerede er besøgt. Omkostninger fra disse og til den kant, som der tjekkes efter, har voksende betydning jo senere kanten er besøgt. Derudover har kantens længde, en hvis betydning for resultatet. Der er sat til at der er 100 % sikkerhed, for at kanten vil blive serviceret i denne rute. Dette er valgt, da det ikke er sikkert om nogle af kanterne skal serviceret i ruten, og de derfor har lige stor sandsynlig. Derfor er det lige meget om den er stor eller lav, så længe den er det samme. P værdien er sat til 0,9, da en højere p-værdi giver, større vægt til de ekstra omkostninger end kantens længde. Denne kan tunes for at finde en bedre værdi, men jo større den bliver jo mere vægt vil der blive lagt på kantens længde. Dette vil gøre at løsningen gik længere væk fra originalen, hvis denne nedsættes. Test af resultater I mappen "RPP gammel plan" ligger filen "Kvalitetstest". Denne fil indeholder en makro i "Module 1", som skal bruges til at teste hver enkel rute. Denne ser på alle ruterne i enhver fil kaldet "Rutelægning", hvilket betyder at den også, kan bruges efter metaheuristikken er kørt. For hver rute, kigger den først på om antallet af spande er oversteget 210 for en lille lastbil eller 420 for en mellem. Herefter kigger der på om antallet af Side 47 af 66
51 liter er oversteget for en lille lastbil, eller for en mellem lastbil. Til slut kigges der på om ruten tager længere end 8 timer, altså om den er længere end 480 min. Koden tæller hvor mange gange disse begrænsninger er oversteget, og giver dette antal i en msgbox. Dette er testet på rutelæsnings filerne, hvor de alle gave 0. Hvis en overskridelse skulle finde sted, kan stoppekriterier laves ved hver mulig forøgelse af variablen, så det kan ses hvor overtrædelsen finder sted. I hver af rutelægnings filerne ligger der en række moduler ud over "Module 1", som bliver brugt til at lave ruterne, og "Module 7" som finder de samlede omkostninger for ruterne. Disse skal begge køres, inden metaheuristikken køres. Disse moduler er forskellige forsøg, på at tegne ruterne pænt ind i "ark3" og "ark4". Disse kan ignoreres, da det i stedet vil blive gjort i en separat fil kaldet "tegning af ruter". Denne ligger i mappen "RPP gammel plan anden metode", og kan bruges i forbindelse med alle rutelægnings filer. Denne går ind og tegner ruterne ind i en graf, som sættes ind i "ark1". Den skal bruge filen "GrafData - All after cleanup" for at kunne finde koordinaterne og tegne ruterne. Der er to modules i filen, hvor det første tager og kigger på en rute, og det næste kigger på alle ruterne i en uge. "Module1" startes som resten af koderne fra VBA. Først spørger den hvilken uge den skal kigge på, og herefter spørger den efter rutenummeret i denne uge. Den går herefter ind og finder informationen om hver kant, og opdeler disse i servicerede og ikke servicerede kanter. Først tegnes hele kantnetværket ind, dette bliver tegnet ind med rødt. Herefter tegnes det som ikke bliver serviceret ind i ruten, hvor dette bliver tegnet ind med grønt. Til slut bliver det der bliver serviceret, tegnet ind i ruten, og dette bliver tegnet ind med blåt. Nedenfor kan ses et udsnit af et eksempel på en rute, hvor rute et for uge et er tegnet ind. Rute et kan forventes at se meget pæn ud, da den vælger kanter først. Hvilket kan ses på grafen i nedenstående billede at den er, og at den servicerer nogle kanter der ligger tæt på hinanden, og at den kører i en nogenlunde pæn cirkel. Det kan også ses, at der ikke kører for meget rundt på mange unødvendige kanter. Side 48 af 66
52 Koden i "Module2" virker som koden i "Module1", men tager alle ruterne i en uge. Den starter med at spørge om hvilken uge den skal tage, og den henter herefter informationen om denne uge. Først tegner den også hele netværket ind med rødt. Herefter tegnes hver enkel rute ind, og de får hver deres farve. Farverne kan være lidt svære at se forskel på, men tegningen er lavet for at give et billede af netværket. Grafen for uge et kan ses nedenfor. Det kan her ses, at ruterne ser nogenlunde pæne ud, men at der er noget overlap. Dette kan forventes, da det kun er RPP der er kørt. Side 49 af 66
53 Dette kan ses tydeligere når "Module 3" anvendes, som er ligesom "Module 2", den tegner bare kun kanterne der bliver serviceret ind. Denne kan ses i grafen på billedet nedenfor. Side 50 af 66
54 Resultater Når der kigges på resultaterne, skal der først tages højde for det samlede antal kilometer, som det er nødvendigt at rejse, for at komme over alle kanter der skal serviceres. Dette er beregnet i "Module 3" fra filen "Restaffald område 3 endelig", som finder alle kanter der skal serviceres, og derefter finder længden af disse. Denne længde er ca. 312 kilometer, hvor der ikke er taget højde for at nogle kanter skal køres på hver uge. Den anden sub i dette modul, finder længden hvis de kanter der skal serviceres hver uge, tæller dobbelt. Dette bliver til ca. 497 kilometer, som skal rejses over lige meget hvad. Dertil skal ligges at ruterne altid skal fra depotet i Århus hen til ruterne, og tilbage igen når ruten er kørt. Hvilket er en betydelig længde, som skal rejses to gange per rute. Med fire ruter per dag, fem dage pr. uge over en to ugers periode, hvor der skal rejses frem og tilbage fra ruten hver gang, bliver det til at denne rejse skal foretages 80 gange. Den- Side 51 af 66
55 ne rejse er ikke altid lige lang, da det kommer an på hvor ruten ligger. Turen lader til altid at være mindst 36 kilometer, og nogle gange være væsentligt mere end dette. Men som et meget konservativt bud, kan det siges at der mindst skal køres 36 gange 80, for at komme frem og tilbage imellem ruterne. Det bliver dermed til kilometer, som det mindst er nødvendigt for at komme fra depotet til ruten og tilbage igen. Det vil sige at der i alt er kilometer, som ruten lige meget hvad skal rejse over. Eller kilometer hvis der er servicering hver uge. Dette kan der tages højde for, når løsningerne og deres resultater evalueres. At køre selve koden, kan variere betydeligt i tid. Det gør den, da det er forskelligt hvor mange kanter der optræder, og hvor mange beregninger der skal foretages. Fx skal der foretages flere beregninger, i metoden med En Greedy Heuristik, end der skal hvis Nearest Neighbour bruges. Fordi En Greedy Heuristik skal beregne omkostningerne og derefter sammenligne dem, hvorimod Nearest Neighbour kun skal sammenligne omkostninger. Antallet af kanter varier fx mellem de to serviceringsalternativer, hvor det alternativ hvor kunder kan serviceres hver uge har flest kanter. Dette er tydeligt da nogle kanter i denne plan, skal serviceres to gange i stedet for en enkel. Hvilket betyder at hver rute indeholder flere kanter. For at lave alle ruterne for begge uger, tog det derfor to til fem timer. Dette kan være anderledes, hvis dette køres på en anden computer. Computeren koden blev kørt på, er en stationær computer med Windows 7 64-bit operativ system. Computeren processor er en AMD Phenom(tm) II X6 1100T Processor 3.30 GHz(6 kerner). Den har hvad burde være 8.00 GB DDR ram. Det var ikke udelukkende koden der kørte på computeren, da andre programmer også fik lov at køre ved siden af. I artiklen(brandão & Eglese 2008) om metaheuristikken bliver det foreslået at konstruere en række forskellig ruter, som udgangspunkt for løsningen med metaheuristikken. Ud af disse foreslås det at vælge den bedste rute, og basere løsningen på denne. Alternativt kunne metaheuristikken køres på alle løsninger, så denne har forskellige udgangspunkter til dens endelige løsning. Resultaterne for de forskellige metoder er skrevet ind i Excel filen "Resultater", hvor beregningerne på procentforskelle også er lavet. Først er En Greedy Heuristik blevet sammenlignet med Nearest Neighbour, hvor de begge er blevet brugt på klyngeopdelingen med Cheapest Edge. Det er her tydeligt at Nearest Neighbour er bedst, da denne har en væsentlig bedre løsning. Den fulde løsning efter Improvement procedurer er kørt, er 12 % bedre end En Greedy heuristik. Hvis det Side 52 af 66
56 antal kilometer som beskrevet tidligere i opgaven der skal rejses over, tages ud af ruten, er Nearest Neighbour 26 % bedre. Baseret på denne store forskel, blev det besluttet at arbejde videre med Nearest Neighbour. Det kan ses at En Greedy Heuristik, opnår væsentlig højere besparelser med improvement procedurerne end Nearest Neighbour. Hvilket også kan forventes, når En Greedy Heuristik starter ud med en løsning der er så meget dårligere. Det kan ses at disse opnår en besparelse på 2 %, når alt er inkluderet, og en besparelse på 5 % når det der er nødvendigt at rejse over er taget ud af resultatet. Det der skal rejses over, er som nævnt tidligere i opgaven ca kilometer af ruten med servicering hver uge, hvilket udgør omkring 40 % af ruten med Nearest Neighbour. Den originale metode som er Generalised Assignment Problem, blev kørt både hvor det var kunderne og hvor det var kanterne der blev fordelt. Der kan ses at der er mindre end 1 % forskel på resultaterne, hvilket betyder at det ikke gør megen forskel hvilken metode anvendes. Derudover skal denne metode ikke anvendes, da metoden baseret på Cheapest Edge som er den anden metode, er % bedre for den gamle plan, hvilket betyder at der er omkring 28 % mere deadheading. Den er 6-7 % under den nye serviceringsplan. Den tredje metode som er en variation af Path Scanning, har mindre end 1 % forskel fra den anden metode. I nogle tilfælde er omkostningerne endda større. Fordi forskellen er så lille, vil Cheapest Edge blive anvendt, da den er bedst under begge scenarier. Andre procentregninger og forskelle kan ses i filen "Resultater", her kan også ses de kilometer og meter der er under hver metode på hver rute i gennemsnit. Det er beregnet at forbedrings procedurerne, fjerner 2-5 % af deadheading på de bedre løsninger. Dette ligger i intervallet 33 til 150 kilometer. De to ruter der vil arbejdes videre med, som er "Gammel plan anden metode" og "Ny plan ny metode", er dette henholdsvis 104 kilometer, og 43 kilometer. Dette er henholdsvis 2 % og 1 % af den fulde rute, hvilket er 5 % og 3 % af deadheading. Dette er som allerede nævnt, nogle af de bedre ruter, hvilket betyder at den besparelse, der kan opnås er begrænset. Derudover laves der kun forbedringer indenfor hver rute, hvilket også begrænser de besparelser der kan opnås. På den rute der er længst, hvilket for den gamle plan er den anden metode, hvor En Greedy heuristik er anvendt. Opnår forbedringsheuristikkerne besparelser på 26 % af deadheading. Efter forbedringerne har ruten for den gamle serviceringsplan, omkostninger på kilometer. Efter forbedringerne har ruten for den nye serviceringsplan, omkostninger på kilometer. Der er altså allerede inden metaheuristikken køres en forskel på 15 %, eller 30 % når der kun kigges på deadheading. Når der refere- Side 53 af 66
57 res til deadheading i dette afsnit, er det kun det der med det nuværende antal ruter er 100 % sikkerhed på ikke kan undgås, og ikke alt af det deadheading der ligger fra hver rute og frem og tilbage til depotet. Forbedring imellem ruter Til at lave forbedringer imellem ruter, er metaheuristikken af Brandão & Eglese (2008) valgt. Der er brugt en version af denne, med egen tilpasning. Den er fx lavet om til at kunne tage højde for, synkronisering af ugedage mellem de to uger. Dette gør koden længere, og får den til at tage mere tid. Dette er blevet afhjulpet, ved fx at tage den del af artiklen ud, som foreslår at der hele tiden afprøves at vende kanterne. Den tager en af metoderne der har fundet ruter, og arbejder videre med denne løsning for at finde bedre løsninger. Til at starte med initialiserer den en række variabler, fx k som fortæller hvor mange gange der er lavet en iteration, og kbf som fortæller hvor mange iterationer der er siden at ruten sidst har kunnet lade sig gøre(er feasible). En anden variabel er fsi, som fortæller hvor ofte metode et skal bruges til flytninger. Herudover opretter den en tabuliste, til at registrere hvilke kanter der er blevet flyttet. Herefter kigger koden på tre metoder til at flytte variabler. Den første metode kigger på en enkel kant, og ser om den kan finde en bedre plads i en anden rute. Hvis denne kant har kunder der skal serviceres hver uge, skal flytningen af denne i den anden uge også kigges på. Dette gør også at kanten kun kan rykkes, indenfor sin egen uge. En kant der har en anden kant der skal serviceres til at ligge helt op ad sig, bliver denne ikke rykket med i denne metode. Først forsøger den at finde en flytning, der skaber et fald i omkostninger og gør at løsningen stadig kan lade sig gøre altså at den er feasible. Herefter kigger den på om rykningen skaber et fald i omkostningerne, selv om den ikke er feasible. Hvis en af disse to scenarier er tilfældet, stopper metaheuristikken med at lede efter mulige moves i denne omgang, og bruger dette move til at ændre ruten. Denne løsning adskiller sig fra artiklen, da den siger at i de første 300 iterationer, skal den kun stoppe hvis det første scenarie er opfyldt. Hvis scenarierne ikke er opfyldt, registrer den dette move, såfremt at denne har lavere omkostninger end det bedste move som er fundet indtil dette, og at denne kant ikke er på tabulisten. Den overvejer hvert move på samme måde, uanset hvilken metode der er brugt. Den anden metode virker som den første, med undtagelse af at den ser på to kanter som ligger op ad hinanden. Så længe de ikke ligger op ad andre kanter, der skal service- Side 54 af 66
58 res. Hvis disse skal serviceres hver uge, skal den i den modsvarende uge også rykkes. I denne uge bruges den første metode, til at kigge på hvor kanten skal ligges henne, da der ikke er nogen garanti for, at kanterne vil ligge op ad hinanden her. Hvis den ene eller dem begge skal serviceres i den anden uge, kan de kun rykkes indenfor den samme uge. Kanterne rykkes til en ny rute, hvor der kigges på hvilke besparelser der er, og om ruten er feasible. Den tredje metode prøver at bytte to kanter, der ligger i hver sin rute. Her skal der også tages højde for, om en eller flere af kanterne skal serviceres i hver uge. Hvis en af disse skal dette, skal kanterne der byttes ligge i samme uge. På kanterne i den modsatte uge, bruges metode et til at kigge på rykningen, da der ikke er nogen garanti for at de begge skal serviceres hver uge, og der derfor ikke bare kan foretages en bytning. Måden om move skal laves bliver også besluttet på samme måde. Efter disse metoder er kørt, eller den har fundet et move der skaber et fald i omkostninger og er feasible, eller et move der skaber et fald i omkostninger, er infeasible og mere end 300 iterationer har fundet sted. Bliver dette move foretaget, og tabulisten opdateres. For at koden skal køre hurtigere, er der i denne løsning lavet sådan, at hvis den finder et move uden at søge alle ruterne igennem. Starter den med at søge igennem ruterne næste gange, startende fra ruten efter den rute hvor den fandt dette move i. Dette gør løsningen hurtigere, og dette gør at den ikke kun søger de første ruter igennem. Herefter opdateres i denne løsning, de variabler som blev lavet til at starte med, og generel information om løsningen registreres. I artiklen foreslås det at der hver gang et move findes, laves inner route improvement heuristics for at finde en ny løsning. Det forventes, at det vil tage for lang tid uden at give store forbedringer, og derfor gøres dette kun hver 100 iteration. Som inner route improvements metoder, bruges de samme som blev brugt i RPP. Til slut tjekkes det om ruten er nået til kriterierne der gør at den kan stoppe, og hvis den ikke har gjort det, går den tilbage og søger efter et nyt move. I artiklen afhænger stoppe kriterierne, af hvor mange kanter der skal serviceres. Da der i teorien ikke er så mange kanter, som der er i denne opgave. Er dette ikke realistisk at bruge som en del af stoppe kriterierne, da disse vil være alt for høje. Derudover tager løsningen væsentlig længere tid, når antallet af kanter er så stort. Derfor er koden sat til at stoppe, når antallet af iterationer er 800 eller derover og antallet af iterationer siden den bedste feasible løsning er 51 eller derover. Dette skal hjælpe til at give en løsning, uden at tage for lang tid. Derudover skal koden stoppe, hvis antallet af iterationer siden en bedre løs- Side 55 af 66
59 ning blev fundet, er lig med to gange kl, hvor kl er en variabel hvis størrelse og vækst afhænger af antallet af kanter. VBA Løsningen arbejder videre med ruterne fra mapperne "RPP gammel plan anden metode" og "RPP ny plan ny metode". De er i mapperne "Metaheuristik gammel plan" og "Metaheuristik ny plan", og bruger filerne "GrafData - All after cleanup - dist", "Graf- Data - All after cleanup - pred", "GrafData - All after cleanup", "Meta" og "Rutelægning". Filen "Meta" indeholder koden i "Module1", hvor det er sub'en "tabusearch" der køres. Denne indeholder også sub'en "whriting" som bruges til at skrive løsningen ind, og lave inner route forbedringer. Dette er en modificeret version af koden fra rutelægning. Filen "rutelægning" er den originale løsning fra RPP, som Metaheuristikken finder forbedringer til. Det er i "rutelægning" at den nye løsning bliver skrevet ind, som den blev gjort under RPP. Derudover bliver for hver iteration skrevet ind i "ark3", hvilket niveau den bedste mulige løsning og den bedste umulige løsning er på. Dette er variablerne henholdsvis sbf i kolonne et og sb i kolonne 2. Rækken tallet står i er den iteration som tallet kommer fra. Derudover er der information om moves i de andre kolonner, alt efter hvordan de blev bugt til at rette i koden. På disse kan filen "kvalitetstest" fra mappen "RPP gammel plan" bruges, til at se om begrænsningerne overholdes. Hvilket de bliver i begge tilfælde. Filen fra mappen "RPP gammel plan anden metode", kan bruges til at tegne ruterne ind, og disse kan sammenlignes med ruterne fra RPP. De skulle helst se pænere ud, og indeholde mindre deadheading. Resultaterne bliver indsat i filen "Resultater", hvor resultaterne fra RPP også er indsat. Her er lavet beregninger på, hvor stor besparelse metaheuristikken opnår. Både ud af de totale omkostninger, og hvor stor besparelse der opnås på deadheading. Det kan ses at for den nye plan, hvor der kun er servicering hver anden uge, opnås der en besparelse på 1,6 % af de totale omkostninger. Dette svarer til en besparelse på 4,9 % af deadheading. Den gamle plan hvor der er servicering hver uge og hver anden, opnår en besparelse på 2,6 % af de totale omkostninger. Hvilket svarer til 6,6 % af deadheading. Det vil sige at den nye plan er 14 % bedre, ud af de totale omkostninger. Målt af deadheading er den 28 % bedre, end den gamle plan. Koden tager fra 8 timer til 18 timer at køre på en god computer. Side 56 af 66
60 Nedenfor kan der ses to stregdiagrammer, som er baseret på "ark 3" fra løsningerne. Det første er fra den gamle serviceringsordning, og det andet er fra den nye serviceringsordning. De indeholder hver to linjer, hvor den blå er sbf og den røde er sb. Sbf er den bedste feasible løsning, og sb er den bedste løsning indtil videre. Hver 100 iteration bliver sb til sbf, da der bliver anvendt inner route improvement heuristikker på løsningen. Dette har den betydning at der laves moves indenfor ruterne, hvilket kan resultere i markant anderledes løsninger. X-aksen viser hvor mange iterationer der er gået, og Y- aksen viser resultatet i meter på denne iteration. Der kan ses hvordan løsningens omkostninger, markant falder til at starte med i begge grafer. Hvorefter hver iteration mindsker omkostninger mindre og mindre, hvis de overhovedet stadig bliver mindre. Udover at demonstrere hvor effektiv løsningen er, viser dette også at et fornuftigt antal iterationer er valgt. Dette kan ses, da en øgning af antallet af iterationer, ville øge tiden det tager at køre koden, uden at dette vil have stor betydning for resultatet. Det er specielt vigtigt, når det tages i betragtning at de sidste iterationer tager længst tid, da der i hver iteration stoppes med at søge, når en bedre løsning er fundet. Det vil sige at de sidste iterationer, søger hvert eneste mulige move igennem. Hvorimod de første iterationer kun søger de igennem de skal, for at finde en bedre løsning. Side 57 af 66
61 Forskelle på de to modeller Der er i opgaven forsøgt at holde koden til de to modeller så ens som muligt, derfor er der kun en lille forskel i klyngedannelsen. Men selvom koden er den samme, bruger modellen til den nye plan ikke alt koden. Da alt koden til at lave synkronisering imellem ugerne, ikke behøves for denne plan. Dette gør at koden til den originale plan, er mere omfangsrig, og derfor tager længere tid at køre. Et eksempel på dette er, at når der er en kant der skal flyttes imellem ruter, og kanten skal serviceres hver uge. Skal koden gå ind og undersøge besparelsen på begge uger. Derudover tager koden for den gamle plan også længere tid, da der er flere kanter der skal serviceres. Resultater Som det kan ses i filen "Resultater", bliver det endelige resultat under den nuværende serviceringsordning km. Hvorimod resultat under den nye serviceringsordning bliver km. Dette svarer til en besparelse på 14 % ved skift til den nye serviceringsordning. Hvis der kun tages højde for unødvendig deadheading, er besparelsen på 28 %. Resultaterne bliver når der kigges på deadheading km, for den gamle serviceringsordning. For den nye serviceringsordning er der km i deadheading. Dette er alt sammen målt i kilometer. For den gamle serviceringsordning er dette 134 km pr. tur i alt. For den nye serviceringsordning er dette 116 km pr. tur i alt. Ud fra dette og de færre antal spande den nye serviceringsordning skal indsamle, kan det tydeligt ses, at denne potentielt kan klare samme område med færre ture. Dette kan ses da vægten ikke er den mest begrænsende faktor i opgaven, og turene er så meget kortere. Det samme antal ture er benyttet, for at give en mere fair sammenligning, da stykket der rejses fra Side 58 af 66
62 depotet i Århus til Djursland, har så meget betydning. Men potentialet for besparelse ved færre ture, bør ikke ignoreres. Løsningsmetoden opnår en besparelse på henholdsvis 4,4 % fra den indledende løsning til den endelige. Herudover er den bedste indledende løsning valgt, hvor denne er 14 % bedre end den værste. Endvidere er den bedste løsning anvendt til at finde en indledende rute, hvor denne er 23 % bedre end den anden. Dette er alle procenttal fra den gamle plan, med de fulde omkostnniger. Det er kun et af de fem områder der er data på, hvilket medfører at det kun er dette område, som kan bruges til at drage generelle konklusioner. Den endelige løsningsmetode under den gamle serviceringsplan er også anvendt, på en række små data sæt. Disse har hver sin mappe i mappen "små datasæt". Disse er mapperne kaldet BA_W_1140, som har radius på 1 km, 2 km og 5 km. Der er to løsninger for hver radius. Der findes en løsning for hver, ved først at finde klynger og herefter lave rutelægning på hver. På disse løsninger anvendes metaheuristikken, for at optimere disse. På de to første mapper der kun har 1 km i radius, er metaheuristikken ikke i stand til at forbedre løsningen. Til gengæld finder den ud af dette hurtigt, og stopper med at søge efter nye løsninger. Dette kan forventes, da deadheading kun udgør ca 1,6 % af løsningen. Derfor er der ikke meget der kan fjernes fra løsningen. For de datasæt med en radius på 2 km, kan løsningen forbedres en smule. Men stadigvæk identificeres der et punkt, hvor metaheuristikken stopper med at køre, fordi der ikke kan findes bedre løsninger. For datasætene med en radius på fem kilometer, køres alle 800 iterationer. Disse er i stand til at forbedre løsning med 8,8 % og 9,5 %. Økonomisk betydning Der kan ses på løsningen at der er en besparelse på 14 %, på antal kilometer der køres. Dette giver besparelse i form af benzin, slid på dæk, og andre omkostninger til lastbiler. Hvis de skal køre kortere, vil det også forventes, at de skal køre i kortere tid. Dette giver en besparelse på timeløn, til chaufførerne der kører for dem. Hvis de kan sænke antallet af ruter indenfor hvert område, som det forventes. Kan de have færre lastbiler, hvilket nedsætter deres kapitalbinding og faste udgifter. Ligeledes kan antallet af ansatte måske mindskes, hvilket nedsætter lønudgifter. Dette er mere sandsynligt, hvis de samme konklusioner er gældende for alle fem områder. Dette er alle besparelser som de firmaer Reno Djurs har outsourced deres dagrenovation til, vil opnå. Det forventes at hvis disse firmaer opnår besparelser, vil det lede til at de sænker deres priser til Reno Djurs. Side 59 af 66
63 Ændringen til en ny serviceringsordning, vil også have en direkte effekt på Reno Djurs økonomi. For det første skal de ud og investere i nye spande, til de kunder der går fra at have ugentlig indsamling, til at få indsamlet affald hver anden uge. Da de skal have dobbelt så store skraldespande. Derudover skal de indsamle de gamle spande, og omdele de nye. Reno Djurs kan forhåbentligt bruge nogle af de gamle spande igen. Hvis fx en kunde har en stor spand og indsamling hver uge. Kan denne gives, til en kunde der har en lille spand og indsamling hver uge. Fx har kunde med Sanne ID 12, en spand på 110 liter der skal fordobles. Denne spand kunne kunden få fra kunde med Sanne ID 22, som har en spand på 240 liter, som også skal fordobles. Denne kunne fås fra kunde med Sanne ID 5, som har en spand på 600 liter. Alternativt kunne kunden med Sanne ID 5, beholde spanden, og få en ekstra, da der ikke er en liters eller større spand. Der er ikke en let fordobling af spandene med Reno Djurses nuværende ordning, hvor intervallet går 140, 240, 400 og 600 liter. Her skal spandene gøres væsentligt større, for at den mulige plads skal fordobles. For det andet vil dette også have en direkte effekt på Reno Djurs, i form af det gebyr kunderne betaler. Fx hvis en kunde skal gå fra en 140 liter, til en 400 liters spand. Skal kunden ifølge de nuværende regler, betale kr. pr. år, i stedet for kr. pr. år. Selv hvis de fik to 140 liters beholdere til indsamling pr. 14 dag, vil det koste kunden kr. pr. år. Dette er for Reno Djurs en stigning i deres indtægt, men kan give problemer. Kunderne kan forventes at have en negativ reaktion, på en stigning i deres udgifter, for at skrifte til en serviceordning de ikke foretrækker. Til gengæld kan Reno Djurs muligvis sænke de gennemsnitlige priser, da de kan sænke omkostninger og øge indtægterne. Dette kan forventes, da de er eget af kommunerne, og derfor er målet ikke at opnå overskud. 5. Konklusion Reno Djurses to serviceringsalternativer er blevet sammenlignet i denne opgave. Det første alternativ er deres nuværende ordning, hvor kunden selv kan vælge mellem indsamling af affald hver uge eller hver anden. Det nye alternativ er, at de kun kan få indsamlet hver anden uge. Til at sammenligne disse, er der, baseret på teorien fra CARP, lavet nogle metoder til planlægning af indsamling af dagrenovation. Af disse er den bedste valgt, og denne er brugt til at finde antallet af kilometer, der køres under begge serviceringsalternativer. Til at løse problemet, er metoderne fra teorien tilpasset de Side 60 af 66
64 mange kanter der er i problemstillingen, i forhold til teorien som indeholder væsentlig færre kanter. Først er området opdelt i nogle ruter, der ligger så kompakt som muligt. Dette er gjort for at skabe nogle klynger, som kan behandles individuelt, og en ny løsning kan baseres på. Det større antal kanter, har den betydning at tiden det tager at køre koden, vil vokse ekspotentielt. Da hver kant har en række moves der kan foretages for denne, og tilføjer en række moves til de andre kanter. Den anvendte teori afhænger af antallet af kanter, til at lave stoppe kriterierne. Hvilke ville være alt for høje, med antallet af kanter i denne problemstilling. Derfor er disse nedsat, til at være det tidspunkt hvor hver ny iteration ikke længere forbedrer løsningen betydeligt. Derudover er løsningsmetoden tilpasset, så der kan laves synkronisering af ugedage, for de kanter der skal serviceres hver uge. Løsningen er lavet for et af de fem territorier, som Reno Djurs servicerer. Dette blev gjort pga. begrænset adgang til data fra resten. De sammen konklusioner forventes at kunne drages på de andre territorier, og det forventes at kapacitet frigjort i et territorium kan anvendes i et andet territorium. Der er under hver serviceringsordning valgt at have det samme antal ruter, for at lave en fair sammenligning. Men som det bliver diskuteret i opgaven, vil den nye serviceringsordning, kunne klare sig med færre ruter. Dette vil mindske antallet af kilometer, og muligvis det nødvendige antal lastbiler og antal ansatte, hvis antallet af ruter også mindskes i andre territorier. Dette vil føre til besparelser i form af mindre kapitalbinding, og færre faste udgifter til lastbiler og ansatte. Til at sammenligne resultaterne, bruges både de totale omkostninger i kilometer, og det af antallet af kilometer der udgør deadheading. Deadheading udgør ca. 40 % af den originale serviceringsordning, og ca. 33 % af den nye serviceringsordning. Begge serviceringsordninger skal rejse over, de kanter som skal services, og det stykke der ligger mellem ruterne og depotet. Hvis antallet af ruter bliver sænket under den nye serviceringsordning, kan dette altså forbedres. Men med metoden som er anvendt nu, er det der skal rejses over på den nye serviceringsordning 5 % kortere. Metoden lægger ud med at fordele kanterne ud til en række ruter. Her er afprøvet tre metoder, Cheapest Edge, Path Scanning og Generalised Assignment Problem. Af disse er der valgt den bedste, som er Cheapest Edge. Cheapest Edge opnår en 14 % besparelse på de totale omkostninger og 28 % på Deadheading, i forhold til Generalised Assignment. Det var kun en lille smule anderledes end Path Scanning, som ligner den meget men bare er mere kompliceret. Herefter bruges en variation af Nearest Neighbour og to forbedrings procedurer, til at Side 61 af 66
65 lave og forbedre disse ruter. Nearest Neighbour opnår en besparelse på 23 % af de totale omkostninger og 43 % af deadheading, i forhold til den alternative rutelægning som er en Greedy Heuristik. De to forbedrings procedurer er en variation af Partition og Drop- Add. Disse skaber en besparelse på 1 % til 14 % af de totale omkostninger, alt afhængig af hvilke løsningsmetode og serviceringsalternativ de forbedrer ruterne på. Denne besparelse er på 2 % til 26 % når der kigges på deadheading. Jo bedre løsning disse bliver brugt på, jo mindre besparelse kan disse finde. Hvilket er grunden til, at besparelserne der findes i de metoder der bruges er begrænsede. Da de bedste metoder udvælges til at arbejde videre på. Det samme gør sig gældende for metaheuristikken. Metaheuristikken finder forbedringer imellem ruterne, og optimerer ruterne hver 100 iteration. Her er valgt en Deteterministics Tabu Search Algorithm, der ligesom de andre dele bruges på begge serviceringsalternativer. Denne opnår under den gamle serviceringsordning en besparelse på 2,6 % af de totale omkostninger, og en besparelse på 6,6 % af deadheading. På løsningen for den nye serviceringsordning, opnår den en besparelse på 1,6 % af de totale omkostninger, og 4,9 % af deadheading. Disse procenttal er endnu højere, hvis de tages højde for at ruterne allerede er blevet forbedret, og at det er de bedste metoder der er valgt. Under de tidligere dele, har den nye serviceringsordning, hele tiden været bedre ende den gamle uanset metode. Hvilket den også er til slut, hvor den gamle serviceringsordning har omkostninger på km, og den nye serviceringsordning har omkostninger på km. Dette er i alt for alle ruter, på en to ugers periode. Herudaf udgør deadheading henholdsvis km og km. Dette er en besparelse på 14 % af de totale omkostninger og 28 % af deadheading, den nye serviceringsplan opnår over den gamle. Dette kan føre til nedsætning af omkostninger, i form af benzin og andre omkostninger forbundet med lastbil, derudover kan de nedsætte lønudgifterne da indsamlingen bør tage kortere tid. Der er andre fordele og ulemper, ved at skifte serviceringsordning. For det første er planlægningen under det nye serviceringsalternativ simplere, og kørslen af koden tager kortere tid. Derudover vil Reno Djurs med deres nuværende prissætning, blive betalt mere for serviceringen af de nuværende kunder under den nye serviceringsordning. Dette kan forventes at have en negativ effekt på kundernes tilfredshed, da de skal betale mere for en ringere service. Reno Djurses mål er ikke at opnå overskud, da de er ejet af kommunerne. Derfor vil det forventes at besparelserne, leder til en nedsætning af den Side 62 af 66
66 gennemsnitlige pris. Hvilket vil afhjælpe denne utilfredshed. Derudover kan besparelserne kun opnås, hvis de virksomheder som Reno Djurs har outsourced dagrenovation til, sænker deres priser som følge af besparelserne. Reno Djurs skal hvis ordningen ændres, ud og investere i nye skraldespande. Dette skal gøres for i hvert fald nogle af de kunder, der før blev serviceret hver uge. Der er samtidig omkostninger forbundet med at indsamle de gamle spande, og omdele de nye spande. At tage beslutningen ud fra en sammenligning af disse besparelser og fordele med ulemperne, er op til Reno Djurs. Men pga. at den nye serviceringsordning opnår besparelser i det totale antal af kilometer der køres på 14 %, virker denne serviceringsordning som det bedre valg. Dette kommer fra en besparelse på 5 % af det der skal rejses over, og en besparelse på 28 % af deadheading. Dertil kommer at den er planlægningsmæssigt er nemmere, og tager mindre tid at køre koden for. Der er som nævnt andre fordele og ulemper ved at skifte til den nye serviceringsordning, som fx en nedgang i serviceniveauet og nogle omkostninger forbundet med selve overgangen. Men pga. den betydelige bedre løsning for serviceringsordning med tvungen 14-dagsindsamling, virker denne til at være langt det bedste valg. Litteraturliste Aráoz, Julián, Fernández, Elena, Franquesa, Carles, (2014). The clustered prize - collecting arc routing problem. Transportation Science 43(3): s Benavent, E., Campos, V., Corberan, A., Mota, E., (1992). The Capacitated Arc Routing Problem: Lower Bounds. NETWORKS, Vol. 22: s Brandão, José, Eglese, Richard, (2008). A deterministic tabu search algorithm for the capacitated arc routing problem. Computers & Operations Research 35: s Chu, Feng, Labadi, Nacima, Prins, Christian, (2006). A Scatter Search for the periodic capacitated arc routing problem. European Journal of Operational Research 169: s Eiselt, H.A., Laporte, Gilbert, Chapter 1, Arc routing theory, solutions and applications, Kluwer academic publishers, Side 63 af 66
67 Ghiani, Gianpaolo, Guerrierob, Francesca, Improta, Gennaro, Musmanno, Roberto, (2005). Waste collection in Southern Italy: solution of a real-life arcrouting problem. Intl. Trans. in Op. Res. 12: s Ghiani, Gianpaolo, Laganà, Demetrio, Musmanno, Roberto, (2006). A constructive heuristic for the Undirected Rural Postman Problem. Computers & Operations Research 33: s Ghiani, Gianpaolo, Laporte, Gilbert, (2000). A branch-and-cut algorithm for the Undirected Rural Postman Problem. Math. Program., Ser. A 87: s Ghiani, Gianpaolo, Musmanno, Roberto, Paletta, Giuseppe, Triki, Chefi, (2005(2)). A heuristic for the periodic rural postman problem. Computers & Operations Research 32: s Golden, B. L., DeArmon, J. S., Baker, E. K., (1983). COMPUTATIONAL EXPERI- MENTS WITH ALGORITHMS FOR A CLASS OF ROUTING PROBLEMS. Computers & Operations Research 10: s Golden, Bruce L., Wong, Richard T., (1981). Capacitated Arc Routing Problems. NETWORKS, Vol. 11: s Hemmelmayr, Vera, Doerner, Karl, F. Hartl, Richard, F. Rath, Stefan, (2013). A heuristic solution method for node routing based solid waste collection problems. J Heuristics 19: s Hertz, Alain, Laporte, Gilbert, Hugo, Pierrette Nanchen, (1999). Improvement Procedures for the Undirected Rural Postman Problem. Informs journal on computing; 11, 1: s Hertz, Alain, Laporte, Gilbert, Mittaz, Michel, (2000). A tabu search heuristic for the capacitated Arc routing problem. Operations Research; 48, 1: s Hertz, Alain, Mittaz, Michel, Chapter 9, Arc routing theory, solutions and applications, Kluwer academic publishers, 2000, Hertz, Alain, Mittaz, Michel, Chapter 9. Ismail, Zuhaimy, Fadzli, Mohammad, Ramli, (2011). Implementation Weather-Type Models of Capacitated Arc Routing Problem via Heuristics. American Journal of Applied Sciences 8 (4): s Side 64 af 66
68 Kim, Byung-In, Kim, Seongbae, Sahoo, Surya, (2006). Waste collection vehicle routing problem with time windows. Computers & Operations Research 33: s Lacomme, Philippe, Prins, Christian, Ramdane-Cherif, Wahiba, (2005). Evolutionary algorithms for periodic arc routing problems. European Journal of Operational Research 165: s Martinelli, Rafael, Poggi, Marcus, Subramanian, Anand, (2013). Improved Bounds for Large Scale Capacitated Arc Routing Problem. Computers & Operations Research, 40; 8: s Martinez, C., Loiseau, I., Resende, M.G.C., Rodriguez, S., (2011). BRKGA Algorithm for the Capacitated Arc Routing Problem. Electronic Notes in Theoretical Computer Science 281: s Mei, Yi, Tang, Ke, Yao, Xin, (2011). A Memetic Algorithm for Periodic Capacitated Arc Routing Problem. IEEE TRANSACTIONS ON SYSTEMS, MAN, AND CYBER- NETICS PART B: CYBERNETICS, VOL. 41, NO. 6.: s Mohan, Srimathy, Gendreau, Michel, Rousseau, Jean-Marc, (2010). Heuristics for the Stochastic Eulerian Tour Problem. European Journal of Operational Research 203: s Monroy, I.M., Amaya, C.A., Langevin, A., (2013). The periodic capacitated arc routing problem with irregular services. Discrete Applied Mathematics 161: s Muyldermans, L, Cattrysse, D, Oudheusden, D Van, (2003). District design for arcrouting applications. Journal of the Operational Research Society 54,: s Pearn, W. L., Wu, T. C., (1995). Algorithms for the rural postman problem. Computers Ops Res. Vol 22, No. 8,: s Perrier, Nathalie, Langevin Andre, Campbell, James F., (2008). The sector design and assignment problem for snow disposal operations. European Journal of Operational Research 189: s Pia, Alberto Del, Filippi, Carlo, (2006). A variable neighborhood descent algorithm for a real wastecollection problem with mobile depots. Intl. Trans. in Op. Res. 13: s Side 65 af 66
69 Polacek, Michael, Doerner, Karl F., Hartl, Richard F., Maniezzo, Vittorio, (2008). A variable neighborhood search for the capacitated arc routing problem with intermediate facilities. J Heuristics 14: s Prins, Christian, (2013). Chapter 7: The Capacitated Arc Routing Problem: Heuristics. Wøhlk, Sanne, (2008). A Decade of Capacitated Arc Routing. The Vehicle Routing Problem: Latest Advances and New Challenges. Hjemmesider: Appendiks Se udlevere USB-stik eller bilag på hjemmesiden Side 66 af 66
Basic statistics for experimental medical researchers
Basic statistics for experimental medical researchers Sample size calculations September 15th 2016 Christian Pipper Department of public health (IFSV) Faculty of Health and Medicinal Science (SUND) E-mail:
Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM528)
Skriftlig Eksamen Kombinatorik, Sandsynlighed og Randomiserede Algoritmer (DM58) Institut for Matematik og Datalogi Syddansk Universitet, Odense Torsdag den 1. januar 01 kl. 9 13 Alle sædvanlige hjælpemidler
Privat-, statslig- eller regional institution m.v. Andet Added Bekaempelsesudfoerende: string No Label: Bekæmpelsesudførende
Changes for Rottedatabasen Web Service The coming version of Rottedatabasen Web Service will have several changes some of them breaking for the exposed methods. These changes and the business logic behind
Analyse af transportomkostninger ved indsamling af kildesorteret organisk affald og restaffald ved anvendelse af et enkelt- og dobbeltkammersystem
Case study: Reno Djurs I/S Analyse af transportomkostninger ved indsamling af kildesorteret organisk affald og restaffald ved anvendelse af et enkelt- og dobbeltkammersystem Forfattere: Vejleder: Katrine
Logistik og optimering
Logistik og optimering JENS LYSGAARD Professor Institut for Økonomi Aarhus Universitet Forskningscentret CORAL v. Institut for Økonomi Logistik og optimering CORAL: Cluster for Operations Research And
Sammenligning af indsamlingsomkostninger for to scenarier ved indsamling af ressourcefraktioner
Forfatter: Morten Kofod Frank Bjerregaard Nielsen Vejleder: Sanne Wøhlk Sammenligning af indsamlingsomkostninger for to scenarier ved indsamling af ressourcefraktioner Case study: Reno Djurs Department
Aktivering af Survey funktionalitet
Surveys i REDCap REDCap gør det muligt at eksponere ét eller flere instrumenter som et survey (spørgeskema) som derefter kan udfyldes direkte af patienten eller forsøgspersonen over internettet. Dette
Project Step 7. Behavioral modeling of a dual ported register set. 1/8/ L11 Project Step 5 Copyright Joanne DeGroat, ECE, OSU 1
Project Step 7 Behavioral modeling of a dual ported register set. Copyright 2006 - Joanne DeGroat, ECE, OSU 1 The register set Register set specifications 16 dual ported registers each with 16- bit words
Engelsk. Niveau C. De Merkantile Erhvervsuddannelser September 2005. Casebaseret eksamen. www.jysk.dk og www.jysk.com.
052430_EngelskC 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau C www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation
Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov.
På dansk/in Danish: Aarhus d. 10. januar 2013/ the 10 th of January 2013 Kære alle Chefer i MUS-regi! Vores mange brugere på musskema.dk er rigtig gode til at komme med kvalificerede ønsker og behov. Og
Det er muligt at chekce følgende opg. i CodeJudge: og
Det er muligt at chekce følgende opg. i CodeJudge:.1.7 og.1.14 Exercise 1: Skriv en forløkke, som producerer følgende output: 1 4 9 16 5 36 Bonusopgave: Modificer dit program, så det ikke benytter multiplikation.
Avancerede bjælkeelementer med tværsnitsdeformation
Avancerede bjælkeelementer med tværsnitsdeformation Advanced beam element with distorting cross sections Kandidatprojekt Michael Teilmann Nielsen, s062508 Foråret 2012 Under vejledning af Jeppe Jönsson,
Engelsk. Niveau D. De Merkantile Erhvervsuddannelser September Casebaseret eksamen. og
052431_EngelskD 08/09/05 13:29 Side 1 De Merkantile Erhvervsuddannelser September 2005 Side 1 af 4 sider Casebaseret eksamen Engelsk Niveau D www.jysk.dk og www.jysk.com Indhold: Opgave 1 Presentation
Generalized Probit Model in Design of Dose Finding Experiments. Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US
Generalized Probit Model in Design of Dose Finding Experiments Yuehui Wu Valerii V. Fedorov RSU, GlaxoSmithKline, US Outline Motivation Generalized probit model Utility function Locally optimal designs
Hvor er mine runde hjørner?
Hvor er mine runde hjørner? Ofte møder vi fortvivlelse blandt kunder, når de ser deres nye flotte site i deres browser og indser, at det ser anderledes ud, i forhold til det design, de godkendte i starten
The X Factor. Målgruppe. Læringsmål. Introduktion til læreren klasse & ungdomsuddannelser Engelskundervisningen
The X Factor Målgruppe 7-10 klasse & ungdomsuddannelser Engelskundervisningen Læringsmål Eleven kan give sammenhængende fremstillinger på basis af indhentede informationer Eleven har viden om at søge og
Help / Hjælp
Home page Lisa & Petur www.lisapetur.dk Help / Hjælp Help / Hjælp General The purpose of our Homepage is to allow external access to pictures and videos taken/made by the Gunnarsson family. The Association
Gusset Plate Connections in Tension
Gusset Plate Connections in Tension Jakob Schmidt Olsen BSc Thesis Department of Civil Engineering 2014 DTU Civil Engineering June 2014 i Preface This project is a BSc project credited 20 ECTS points written
To the reader: Information regarding this document
To the reader: Information regarding this document All text to be shown to respondents in this study is going to be in Danish. The Danish version of the text (the one, respondents are going to see) appears
PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU
PARALLELIZATION OF ATTILA SIMULATOR WITH OPENMP MIGUEL ÁNGEL MARTÍNEZ DEL AMOR MINIPROJECT OF TDT24 NTNU OUTLINE INEFFICIENCY OF ATTILA WAYS TO PARALLELIZE LOW COMPATIBILITY IN THE COMPILATION A SOLUTION
Portal Registration. Check Junk Mail for activation . 1 Click the hyperlink to take you back to the portal to confirm your registration
Portal Registration Step 1 Provide the necessary information to create your user. Note: First Name, Last Name and Email have to match exactly to your profile in the Membership system. Step 2 Click on the
Vina Nguyen HSSP July 13, 2008
Vina Nguyen HSSP July 13, 2008 1 What does it mean if sets A, B, C are a partition of set D? 2 How do you calculate P(A B) using the formula for conditional probability? 3 What is the difference between
X M Y. What is mediation? Mediation analysis an introduction. Definition
What is mediation? an introduction Ulla Hvidtfeldt Section of Social Medicine - Investigate underlying mechanisms of an association Opening the black box - Strengthen/support the main effect hypothesis
DM559/DM545 Linear and integer programming
Department of Mathematics and Computer Science University of Southern Denmark, Odense June 10, 2017 Marco Chiarandini DM559/DM545 Linear and integer programming Sheet 12, Spring 2017 [pdf format] The following
Side 1 af 9. SEPA Direct Debit Betalingsaftaler Vejledning
Side 1 af 9 SEPA Direct Debit Betalingsaftaler Vejledning 23.11.2015 1. Indledning Denne guide kan anvendes af kreditorer, som ønsker at gøre brug af SEPA Direct Debit til opkrævninger i euro. Guiden kan
Trolling Master Bornholm 2016 Nyhedsbrev nr. 5
Trolling Master Bornholm 2016 Nyhedsbrev nr. 5 English version further down Kim Finne med 11 kg laks Laksen blev fanget i denne uge øst for Bornholm ud for Nexø. Et andet eksempel er her to laks taget
Trolling Master Bornholm 2016 Nyhedsbrev nr. 3
Trolling Master Bornholm 2016 Nyhedsbrev nr. 3 English version further down Den første dag i Bornholmerlaks konkurrencen Formanden for Bornholms Trollingklub, Anders Schou Jensen (og meddomer i TMB) fik
Optimering af transportomkostningerne ved reducering af mulige tømningsordninger for sommerhuse
Vejleder: Sanne Wøhlk Forfatter: Mia Ellegaard Optimering af transportomkostningerne ved reducering af mulige tømningsordninger for sommerhuse Case Study: Reno Djurs Department of Business Studies, Business
TM4 Central Station. User Manual / brugervejledning K2070-EU. Tel Fax
TM4 Central Station User Manual / brugervejledning K2070-EU STT Condigi A/S Niels Bohrs Vej 42, Stilling 8660 Skanderborg Denmark Tel. +45 87 93 50 00 Fax. +45 87 93 50 10 [email protected] www.sttcondigi.com
Statistik for MPH: 7
Statistik for MPH: 7 3. november 2011 www.biostat.ku.dk/~pka/mph11 Attributable risk, bestemmelse af stikprøvestørrelse (Silva: 333-365, 381-383) Per Kragh Andersen 1 Fra den 6. uges statistikundervisning:
IBM Network Station Manager. esuite 1.5 / NSM Integration. IBM Network Computer Division. tdc - 02/08/99 lotusnsm.prz Page 1
IBM Network Station Manager esuite 1.5 / NSM Integration IBM Network Computer Division tdc - 02/08/99 lotusnsm.prz Page 1 New esuite Settings in NSM The Lotus esuite Workplace administration option is
USERTEC USER PRACTICES, TECHNOLOGIES AND RESIDENTIAL ENERGY CONSUMPTION
USERTEC USER PRACTICES, TECHNOLOGIES AND RESIDENTIAL ENERGY CONSUMPTION P E R H E I S E L BERG I N S T I T U T F OR BYGGERI OG A N L Æ G BEREGNEDE OG FAKTISKE FORBRUG I BOLIGER Fra SBi rapport 2016:09
HTX, RTG. Rumlige Figurer. Matematik og programmering
HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with
Sport for the elderly
Sport for the elderly - Teenagers of the future Play the Game 2013 Aarhus, 29 October 2013 Ditte Toft Danish Institute for Sports Studies +45 3266 1037 [email protected] A growing group in the population
Skriftlig Eksamen Diskret matematik med anvendelser (DM72)
Skriftlig Eksamen Diskret matematik med anvendelser (DM72) Institut for Matematik & Datalogi Syddansk Universitet, Odense Onsdag den 18. januar 2006 Alle sædvanlige hjælpemidler (lærebøger, notater etc.),
SEPA Direct Debit. Mandat Vejledning 2013.03.15. Nets Lautrupbjerg 10 DK-2750 Ballerup
SEPA Direct Debit Mandat Vejledning 2013.03.15 Nets Lautrupbjerg 10 DK-2750 Ballerup Indholdsfortegnelse 1. Indledning... 3 1.1 Tilknyttet dokumentation... 3 1.2 Kontakt til Nets... 3 2. Krav til SEPA
Trolling Master Bornholm 2016 Nyhedsbrev nr. 3
Trolling Master Bornholm 2016 Nyhedsbrev nr. 3 English version further down Fremragende vejr og laks hele vejen rundt om øen Weekendens fremragende vejr (se selv de bare arme) lokkede mange bornholmske
Our activities. Dry sales market. The assortment
First we like to start to introduce our activities. Kébol B.V., based in the heart of the bulb district since 1989, specialises in importing and exporting bulbs world-wide. Bulbs suitable for dry sale,
Bilag. Resume. Side 1 af 12
Bilag Resume I denne opgave, lægges der fokus på unge og ensomhed gennem sociale medier. Vi har i denne opgave valgt at benytte Facebook som det sociale medie vi ligger fokus på, da det er det største
DM559/DM545 Linear and integer programming
Department of Mathematics and Computer Science University of Southern Denmark, Odense June 10, 2017 Marco Chiarandini DM559/DM545 Linear and integer programming Sheet 12, Spring 2017 [pdf format] The following
Skriftlig Eksamen Beregnelighed (DM517)
Skriftlig Eksamen Beregnelighed (DM517) Institut for Matematik & Datalogi Syddansk Universitet Mandag den 31 Oktober 2011, kl. 9 13 Alle sædvanlige hjælpemidler (lærebøger, notater etc.) samt brug af lommeregner
Bachelorprojekt. Forår 2013 DMD10
+ Bachelorprojekt Forår 2013 DMD10 +! 1. Om at skrive bachelorprojekt! 2. Typer af bachelorprojekter! 3. To eksempler på DMD-projekter! 4. Overvejelser over samarbejdsformer, proces, sprog! 5. ITUs generelle
Trolling Master Bornholm 2015
Trolling Master Bornholm 2015 (English version further down) Sæsonen er ved at komme i omdrejninger. Her er det John Eriksen fra Nexø med 95 cm og en kontrolleret vægt på 11,8 kg fanget på østkysten af
Financial Literacy among 5-7 years old children
Financial Literacy among 5-7 years old children -based on a market research survey among the parents in Denmark, Sweden, Norway, Finland, Northern Ireland and Republic of Ireland Page 1 Purpose of the
Trolling Master Bornholm 2015
Trolling Master Bornholm 2015 (English version further down) Panorama billede fra starten den første dag i 2014 Michael Koldtoft fra Trolling Centrum har brugt lidt tid på at arbejde med billederne fra
DET KONGELIGE BIBLIOTEK NATIONALBIBLIOTEK OG KØBENHAVNS UNIVERSITETS- BIBLIOTEK. Index
DET KONGELIGE Index Download driver... 2 Find the Windows 7 version.... 2 Download the Windows Vista driver.... 4 Extract driver... 5 Windows Vista installation of a printer.... 7 Side 1 af 12 DET KONGELIGE
MEDLEY CHALLENGE 2016/2017
For English version, see p. 3 MEDLEY CHALLENGE 2016/2017 I vores Medley Challenge turnering dystes der i år mellem Gladsaxe- (GSC) og Gentofte- (GSK) svømmere. Turneringen er et samarbejde på tværs af
Trolling Master Bornholm 2014
Trolling Master Bornholm 2014 (English version further down) Den ny havn i Tejn Havn Bornholms Regionskommune er gået i gang med at udvide Tejn Havn, og det er med til at gøre det muligt, at vi kan være
Nyhedsmail, december 2013 (scroll down for English version)
Nyhedsmail, december 2013 (scroll down for English version) Kære Omdeler Julen venter rundt om hjørnet. Og netop julen er årsagen til, at NORDJYSKE Distributions mange omdelere har ekstra travlt med at
Trolling Master Bornholm 2012
Trolling Master Bornholm 1 (English version further down) Tak for denne gang Det var en fornøjelse især jo også fordi vejret var med os. Så heldig har vi aldrig været før. Vi skal evaluere 1, og I må meget
Undersøgelse af de økonomiske konsekvenser ved parallel indsamling af organisk og restaffald samt obligatorisk 14-dages tømning.
Vejleder: Sanne Wøhlk Forfattere: Jesper Lervad Pedersen Kenneth Bach Villadsen Undersøgelse af de økonomiske konsekvenser ved parallel indsamling af organisk og restaffald samt obligatorisk 14-dages tømning.
Trolling Master Bornholm 2016 Nyhedsbrev nr. 8
Trolling Master Bornholm 2016 Nyhedsbrev nr. 8 English version further down Der bliver landet fisk men ikke mange Her er det Johnny Nielsen, Søløven, fra Tejn, som i denne uge fangede 13,0 kg nord for
Trolling Master Bornholm 2016 Nyhedsbrev nr. 7
Trolling Master Bornholm 2016 Nyhedsbrev nr. 7 English version further down Så var det omsider fiskevejr En af dem, der kom på vandet i en af hullerne, mellem den hårde vestenvind var Lejf K. Pedersen,
SKEMA TIL AFRAPPORTERING EVALUERINGSRAPPORT
SKEMA TIL AFRAPPORTERING EVALUERINGSRAPPORT OBS! Excel-ark/oversigt over fagelementernes placering i A-, B- og C-kategorier skal vedlægges rapporten. - Følgende bedes udfyldt som del af den Offentliggjorte
Dagens program. Incitamenter 4/19/2018 INCITAMENTSPROBLEMER I FORBINDELSE MED DRIFTSFORBEDRINGER. Incitamentsproblem 1 Understøttes procesforbedringer
INCITAMENTSPROBLEMER I FORBINDELSE MED DRIFTSFORBEDRINGER Ivar Friis, Institut for produktion og erhvervsøkonomi, CBS 19. april Alumni oplæg Dagens program 2 Incitamentsproblem 1 Understøttes procesforbedringer
Cross-Sectorial Collaboration between the Primary Sector, the Secondary Sector and the Research Communities
Cross-Sectorial Collaboration between the Primary Sector, the Secondary Sector and the Research Communities B I R G I T T E M A D S E N, P S Y C H O L O G I S T Agenda Early Discovery How? Skills, framework,
Vejledning til Sundhedsprocenten og Sundhedstjek
English version below Vejledning til Sundhedsprocenten og Sundhedstjek Udfyld Sundhedsprocenten Sæt mål og lav en handlingsplan Book tid til Sundhedstjek Log ind på www.falckhealthcare.dk/novo Har du problemer
Molio specifications, development and challenges. ICIS DA 2019 Portland, Kim Streuli, Molio,
Molio specifications, development and challenges ICIS DA 2019 Portland, Kim Streuli, Molio, 2019-06-04 Introduction The current structure is challenged by different factors. These are for example : Complex
Projekt DATA step view
Projekt DATA step view Af Louise Beuchert Formål Formålet med dette projekt, er at sammenligne tid/ressourcekonsekvenser ved at køre SASjobs på data hentet som henholdsvis en fysisk kopi af data filen
Analyse af værket What We Will
1 Analyse af værket What We Will af John Cayley Digital Æstetisk - Analyse What We Will af John Cayley Analyse af værket What We Will 17. MARTS 2011 PERNILLE GRAND ÅRSKORTNUMMER 20105480 ANTAL ANSLAG 9.131
Totally Integrated Automation. Totally Integrated Automation sætter standarden for produktivitet.
Totally Integrated Automation Totally Integrated Automation sætter standarden for produktivitet. Bæredygtighed sikrer konkurrenceevnen på markedet og udnytter potentialerne optimalt. Totally Integrated
Remember the Ship, Additional Work
51 (104) Remember the Ship, Additional Work Remember the Ship Crosswords Across 3 A prejudiced person who is intolerant of any opinions differing from his own (5) 4 Another word for language (6) 6 The
Modtageklasser i Tønder Kommune
Modtageklasser i Tønder Kommune - et tilbud i Toftlund og Tønder til børn, der har behov for at blive bedre til dansk TOFTLUND TØNDER Hvad er en modtageklasse? En modtageklasse er en klasse med særligt
Løsning af skyline-problemet
Løsning af skyline-problemet Keld Helsgaun RUC, oktober 1999 Efter at have overvejet problemet en stund er min første indskydelse, at jeg kan opnå en løsning ved at tilføje en bygning til den aktuelle
User Manual for LTC IGNOU
User Manual for LTC IGNOU 1 LTC (Leave Travel Concession) Navigation: Portal Launch HCM Application Self Service LTC Self Service 1. LTC Advance/Intimation Navigation: Launch HCM Application Self Service
Martin Lohse. Passing. Three mobile for accordion. Composed
Martin Lohse Passing Three mobile for accordion Composed 2011-12 Passing Three mobile for accordion The score is in exact pitch, and the proposed registers can be changed according to room and instrument
Tilmelding sker via stads selvbetjening indenfor annonceret tilmeldingsperiode, som du kan se på Studieadministrationens hjemmeside
BK3 Theory of natural al science e (NIB) Om kurset Subject Activitytype Teaching language Registration Den internationale naturvidenskabelige bacheloruddannelse basic course English Der sker løbende opdatering
Admission criteria for the Danish Section For at blive optaget på Europaskolen skal du have aflagt Folkeskolens Adgangsprøve eller lignende.
KØBENHAVNS KOMMUNE Børne- og Ungdomsforvaltningen Center for Policy NOTAT 30. august 2018 Optagelseskriterier til uppersecondary S5-S7 (gymnasiet) på Europaskolen København Optagelseskriterierne til uppersecondary
Kap4: Velfærdseffekten af prisdiskriminering i flybranchen
Side 1 af 5 Kap4: Velfærdseffekten af prisdiskriminering i flybranchen Når flyselskaberne opdeler flysæderne i flere klasser og sælger billetterne til flysæderne med forskellige restriktioner, er det 2.
ATEX direktivet. Vedligeholdelse af ATEX certifikater mv. Steen Christensen [email protected] www.atexdirektivet.
ATEX direktivet Vedligeholdelse af ATEX certifikater mv. Steen Christensen [email protected] www.atexdirektivet.dk tlf: 7220 2693 Vedligeholdelse af Certifikater / tekniske dossier / overensstemmelseserklæringen.
Eksempel på eksamensspørgsmål til caseeksamen
Eksempel på eksamensspørgsmål til caseeksamen Engelsk niveau E, TIVOLI 2004/2005: in a British traveller s magazine. Make an advertisement presenting Tivoli as an amusement park. In your advertisement,
Brug sømbrættet til at lave sjove figurer. Lav fx: Få de andre til at gætte, hvad du har lavet. Use the nail board to make funny shapes.
Brug sømbrættet til at lave sjove figurer. Lav f: Et dannebrogsflag Et hus med tag, vinduer og dør En fugl En bil En blomst Få de andre til at gætte, hvad du har lavet. Use the nail board to make funn
Nanna Flindt Kreiner lektor i retorik og engelsk Rysensteen Gymnasium. Indsigt i egen læring og formativ feedback
Nanna Flindt Kreiner lektor i retorik og engelsk Rysensteen Gymnasium Indsigt i egen læring og formativ feedback Reformen om indsigt i egen læring hvordan eleverne kan udvikle deres evne til at reflektere
SAS Corporate Program Website
SAS Corporate Program Website Dear user We have developed SAS Corporate Program Website to make the administration of your company's travel activities easier. You can read about it in this booklet, which
Special VFR. - ved flyvning til mindre flyveplads uden tårnkontrol som ligger indenfor en kontrolzone
Special VFR - ved flyvning til mindre flyveplads uden tårnkontrol som ligger indenfor en kontrolzone SERA.5005 Visual flight rules (a) Except when operating as a special VFR flight, VFR flights shall be
Implementing SNOMED CT in a Danish region. Making sharable and comparable nursing documentation
Implementing SNOMED CT in a Danish region Making sharable and comparable nursing documentation INTRODUCTION Co-operation pilot project between: The Region of Zealand Their EHR vendor - CSC Scandihealth
Danish Language Course for International University Students Copenhagen, 12 July 1 August Application form
Danish Language Course for International University Students Copenhagen, 12 July 1 August 2017 Application form Must be completed on the computer in Danish or English All fields are mandatory PERSONLIGE
