Allokering af kajplads i containerhavne. Clement Gram Christensen & Cecilie Terese Holst

Størrelse: px
Starte visningen fra side:

Download "Allokering af kajplads i containerhavne. Clement Gram Christensen & Cecilie Terese Holst"

Transkript

1 Allokering af kajplads i containerhavne Clement Gram Christensen & Cecilie Terese Holst Kongens Lyngby IMM, DTU 1. april, 2008

2 Technical University of Denmark Informatics and Mathematical Modelling Building 321, DK-2800 Kongens Lyngby, Denmark Phone , Fax

3 Abstract In this thesis we develop an algorithm to solve the Berth Allocation Problem. The Berth Allocation Problem consists of deciding when and where arriving ships should berth along the quay at a maritime container terminal. The algorithm is based on a combination of column generation and Branch & Bound; Branch & Price. The algorithm is designed so it can take into account differentiated handlingtimes along the quay, required water depth and other physical constraints. It is also possible to associate each ship with a weight which makes it possible to affect the solution based on different preferences. We have also developed a sliding window approach which splits the problem into smaller subproblems that are easier to solve. An overlap between the subproblems makes sure of decent boundary conditions. Both the discrete and continuous versions of The Berth Allocation Problem are solved and the solutions are compared to results from the litterature. In the discrete case the optimal solution is found in 47 of 50 instances with running times of a few seconds. The continuous problem is not solved to optimality but with a time limit of 30 minutes the average integer gap is 8.3%. We examine what the reason is for the problem being so hard to solve to optimality. It shows that instances where the handling times are very similar along the quay are harder to solve than instances with varying handling times. Additionally, we show that it is easier to solve problems with few ships than with many ships even if the density of the problems is maintained. Finally, we show that instances where many ships arrive at the same time is harder to solve than problems where the ships arrive scattered over the planning horizon.

4 ii

5 Resumé I denne afhandling har vi udviklet en løsningsmetode til at løse Kajallokeringsproblemet. Kajallokeringsproblemet består i at bestemme, hvor og hvornår skibe, der ankommer til en containerhavn, skal lægge til kaj. Løsningsmetoden er baseret på en kombination af søjlegenerering og Branch & Bound; Branch & Price. Løsningsmetoden er designet, så der kan tages højde for differentierede betjeningstider langs kajen, påkrævet vanddybde, samt lignende fysiske begrænsninger. Det er også muligt at vægte skibene, hvilket giver mulighed for at påvirke løsningen udfra forskellige præferencer. Der er udviklet en sliding window metode, hvor et problem kan deles op i mindre delproblemer, der er lettere at løse. Ved at benytte et overlap mellem hvert delproblem sikres der gode randbetingelser. Kajallokeringsproblemet bliver både løst diskret og kontinuert, og løsningerne sammenlignes med resultater fra litteraturen. I det diskrete tilfælde findes den optimale løsning i 47 af 50 instanser med køretider på få sekunder. De kontinuerte problemer bliver ikke løst til optimalitet, men med en tidsgrænse på 30 minutter findes løsninger med et gennemsnitligt gab til den nedre grænse på 8,3%. Det undersøges, hvad det er, der gør problemet svært at løse til optimalitet. Det vises, at instanser med meget ensartede betjeningstider langs kajen er sværere at løse end instanser med varierede betjeningstider. Herudover vises det, at det er lettere at løse problemer med få skibe end mange skibe, selvom tætheden af problemet bevares. Endelig vises det, at instanser, hvor mange skibe ankommer samtidig, er sværere at løse end instanser, hvor skibene ankommer spredt over planlægningshorisonten.

6 iv

7 Forord Denne afhandling er udført på Institut for Informatik og Matematisk Modellering (IMM) på Danmarks Tekniske Universitet (DTU) i perioden fra 1. september 2007 til 1. april Afhandlingen er skrevet for at færdiggøre vores uddannelse til cand.polyt. Lektor Jesper Larsen fra IMM, DTU, har været vejleder på afhandlingen. Vi vil gerne takke Jesper for kyndig vejledning gennem hele projektfasen. Kgs. Lyngby, April 2008 Clement Gram Christensen Cecilie Terese Holst s s022048

8 vi

9 Indhold Abstract i Resumé iii Forord v 1 Indledning Formål med afhandling Struktur af afhandling Optimering i containerhavne Shippingindustrien Maritime containerterminaler - containerhavne Kajallokeringsproblemet - The Berth Allocation Problem (BAP) 12 3 Kajallokeringsproblemet - modeller og metoder 15

10 viii INDHOLD 3.1 Introduktion til BAP modeller Litteraturgennemgang - modelformuleringer Litteraturgennemgang - løsningsmetoder og resultater Søjlegenerering og BAP Generel søjlegenerering To BAP modeller til søjlegenerering Vurdering af modeller og løsningsmetoder Branch & Price Søjlegenerering Branch & Bound Snit Sliding window Test af løsningsmetode Data til test Test af subproblem Test af forgreningsregel og søgestrategi Test af nedre grænse Test af snit Test af sliding window Evaluering af tests

11 INDHOLD ix 7 Sammenligning med resultater fra litteraturen Diskrete resultater Kontinuerte resultater Problemer ved løsning af BAP Undersøgelse og diskussion af resultater Følsomhedsanalyse - Antal skibe Følsomhedsanalyse - Ankomsttider Prioritetsvægtning af skibe Sliding window og praktisk optimalitet Diskussion Projektforløbet Opnåede resultater Fremtidigt arbejde Konklusion 111 A Bilag 113 A.1 Pseudokode til løsning af subproblem A.2 Løsning af det diskrete datasæt i A.3 Resultater til følsomhedsanalyse Referencer

12 x INDHOLD

13 Kapitel 1 Indledning Varer og andet gods transporteres i dag gerne over store afstande fremfor at blive produceret, hvor efterspørgslen er. Store globale forskelle i prisen på arbejdskraft medvirker, at varer bliver eksporteret og importeret i høj grad. Transport med containerskibe, shipping, er ofte foretrukket, hvis varer skal transporteres over store afstande, da dette som regel sker ved de laveste omkostninger. Containerhavne verden over oplever et øget pres med flere skibe og tilhørende containere, der skal behandles. Shipping er en branche i stadig udvikling, indenfor hvilken effektivisering kan have store økonomiske konsekvenser. Transport af en vare med containerskib er en kompliceret proces, der består af mange led. Effektivisering kan derfor ske på mange måder og indenfor mange områder. Optimering af en delproces behøver ikke kun være økonomisk motiveret, men kan også være en nødvendighed. Det kan fx være en containerhavn, der skal kunne efterkomme den stigende efterspørgsel på servicering af indgående containerskibe. Til dette formål kan disciplinen operationsanalyse være et relevant værktøj. Operationsanalyse er en anvendelse af matematik med det formål at optimere eller forbedre et systems præstation. Det gøres ved at opstille en matematisk model for den ofte praktiske problemstilling og finde en løsning til den. Operationsanalyse er ofte anvendt på problemstillinger indenfor logistik og planlægning og er yderst brugbar i forbindelse med shipping.

14 2 Indledning I denne afhandling er fokus på en problemstilling i selve containerhavnen - at bestemme, hvor og hvornår de indgående skibe skal lægge til kaj. Problemet er kendt som Kajallokeringsproblemet. En god kajallokeringsplan kan have mange positive konsekvenser; skibe kan tilbringe mindst mulig tid i havnen, kajen kan udnyttes bedst muligt, skibsejere er tilfredse med servicen i havnen, osv. På samme måde kan en dårlig kajallokeringsplan naturligvis resultere i de modsatte, negative omstændigheder. 1.1 Formål med afhandling Formålet med denne afhandling er at udvikle en løsningsmetode, der kan generere gode løsninger til kajallokeringsproblemet. Løsningerne skal kunne opnås inden for forholdsvis kort tid. Løsningsmetoden består af en kombination af en søjlegenereringsalgoritme og Branch & Bound, også kaldet Branch & Price. Resultater fundet med denne løsningsmetode vil blive sammenlignet med resultater fra en tabusøgning, [3]. 1.2 Struktur af afhandling I kapitel 2 gives en introduktion til afhandlingen. Denne indeholder en præsentation af shippingindustrien og containerhavne. Herunder en beskrivelse af hvilke problemstillinger, der bl.a. skal tages stilling til ved planlægning og drift af en containerhavn. Endelig beskrives den for afhandlingen centrale problemstilling, kajallokeringsproblemet, mere detaljeret. Kapitel 3 indledes med en beskrivelse af, hvordan modellering af kajallokeringsproblemet kan variere, hvilket lægger op til en litteraturgennemgang af matematiske formuleringer og løsningsmetoder til problemet. Efter at have gennemgået de matematiske modeller i det forudgående kapitel udvælges to, der egner sig til søjlegenerering. I kapitel 4 beskrives først en grundlæggende søjlegenereringsalgoritme, hvorefter det forklares, hvordan den kan anvendes på de to udvalgte modeller. Endelig laves en vurdering af, hvilken der er mest interessant at undersøge i afhandlingen. Kapitel 5 giver en grundig beskrivelse af alle aspekter af den løsningsmetode, der er udviklet i afhandlingen. Der bliver først givet en detaljeret præsentation af den udvalgte model af kajallokeringsproblemet. Derefter omhandler

15 1.2 Struktur af afhandling 3 kapitlet, hvordan søjlegenerering og Branch & Bound er udviklet til modellen ned til mindste detalje. Efterfølgende præsenteres en mulig forbedring til løsningsmetoden i form af generering af snit. Til sidst bliver redegjort for en anvendelse af den oprindelige løsningsmetode, hvor kajallokeringsproblemet inddeles i mindre delproblemer, der løses individuelt. Denne kaldes for sliding window metoden. I kapitel 6 bliver løsningsmetoden testet. Der er i det forudgående kapitel beskrevet forskellige komponenter af løsningsmetoden, hvor der er udviklet flere strategier for, hvordan komponenten kan løses. Testene har til formål at bestemme hvilke strategier, der gør, at løsningsmetoden præsterer bedst. Disse valg af strategier vil blive bevaret i den resterende del af afhandlingen, når der genereres resultater. I [3] er kajallokeringsproblemet løst med en tabusøgning. Vi har fået adgang til de testinstanser, der er benyttet i artiklen. I kapitel 7 sammenlignes resultaterne fra [3] og tilsvarende resultater opnået med løsningsmetoden, der er udviklet i afhandlingen. Da det viser sig at være svært at løse det kontinuerte problem til optimalitet, bliver der desuden kigget nærmere på, hvad der kan ligge til grund for dette. Kapitel 8 indeholder en undersøgelse og diskussion af resultater. I kapitlet er opstillet to følsomhedsanalyser for kajallokeringsproblemet. Det undersøges, hvordan forskellige faktorer i modellen vil afspejles i køretiderne. Herudover vurderes det, hvordan en prioritering af skibene kan udnyttes. En sidste undersøgelse har til formål at vurdere, hvordan løsninger fundet med sliding window metoden er i forhold til løsninger fundet med den originale løsningsmetode. Dette leder til en vurdering af selve sliding window fremgangsmåden. Kapitel 9 indeholder en opsamling på og diskussion af projektforløbet og de observationer, der er gjort undervejs i afhandlingen. Efterfølgende er forslag til fremtidigt arbejde. Afsluttende opsummeres afhandlingen i en konklusion i kapitel 10.

16 4 Indledning

17 Kapitel 2 Optimering i containerhavne I kapitlet gives først en introduktion til den verdensomspændende shippingindustri, som ligger til baggrund for denne afhandling. Idet afhandlingen omhandler en problemstilling inden for containerhavne, fokuseres efterfølgende på disse. Der bliver redegjort for forskellige aspekter inden for planlægning og drift af en containerhavn, der kan danne grundlag for effektivisering og optimering. At drive en containerhavn effektivt er yderst kompliceret. Det er umuligt at kombinere alle processer i en containerhavn til et samlet problem for derefter at løse det ved brug af computerkraft. Derfor fokuseres ofte på en særskilt problemstilling ad gangen som i denne afhandling. En præsentation af kajallokeringsproblemet afslutter kapitlet. 2.1 Shippingindustrien Indførelsen af containere til fragt af varer har haft en stor indflydelse på shippingindustrien, dvs. distributionen af varer ved brug af containerskibe. Ved at transportere lasten i standardiserede containere er især effektiviteten i havnene i forbindelse med af- og pålæsning af last fra skibene blevet forøget. Lasten er nemt håndterbar, hvilket især er en fordel, hvis den skal af- og pålæsses flere gange på sin vej. Idet lasten ikke skal overflyttes til andre beholdere, men allerede er

18 6 Optimering i containerhavne samlet i containerne, er ufleksible opbevaringsfaciliteter i containerterminalerne unødvendige. Samtidig kan standardiserede kajkraner og køretøjer til transport af containere benyttes, hvorved håndteringen af containere kan optimeres. Endelig kan gods i havnene opbevares på forholdsvis lidt plads, idet containerne kan stables. Brugen af containere med kølefunktion er desuden udbredt, hvilket har gjort det muligt at transportere varer, der ellers kun ville kunne transporteres over korte afstande. Dette har naturligvis især fremmet distributionen af fødevarer mellem kontinenter. Alt i alt har indførelsen af containere til transport af gods gjort afstandene mindre og givet globaliseringen et ekstra boost. Udvikling og effektivisering af shippingindustrien har gjort, at omkostningerne ved transport af varer over lange afstande er blevet minimeret. Det har bevirket, at produktionen af varer er blevet flyttet til fabrikker i lande, hvor produktionsomkostningerne, deriblandt lønningerne, er lavere end det land, hvor produkterne egentlig skal benyttes. Især i Asien bliver der produceret varer til salg i Europa og Nordamerika. Verdens første skib, der blev bygget decideret til containerfragt, blev sat i drift i Danmark i Oprindeligt havde næsten hvert land deres egen type containere. Denne variation af dimensionerne besværliggjorde transporten mellem landene. Nutildags opereres praktisk talt kun med containere af standardmål. Udtrykket TEU (twenty-foot equivalent unit) benyttes ofte, hvilket henviser til en standardcontainer af længden 20 fod ( 6,1 meter). Det danske shippingfirma A.P. Møller-Mærsks største containerskib Emma Mærsk kan fragte op til TEUs, se figur 2.1. Siden 1951 har der været en rivende udvikling på shippingmarkedet. I 2006 blev der på verdensplan transporteret 7,4 milliarder tons gods, hvoraf transport med containere udgjorde 1,13 milliarder tons, [25]. Det er en stigning på 11,2% i løbet af Den samlede flåde af containere er på dette tidspunkt nået 23,3 millioner TEUs, hvilket svarer til en stigning på 7,8% alene i Det er anslået, at handelen med containere i 2006 svarede til 129 millioner TEUs. I alt havde containerterminalerne globalt set et gennemløb på 440 millioner TEUs, hvilket er en stigning på 13,4% i løbet af Shipping er altså en stor, verdensomspændende industri. Alene A.P. Møller- Mærsk Gruppen havde en nettoomsætning på ca. 131 milliarder kroner i første halvår af Eventuelle forbedringer, der kan effektivisere branchen, kan derfor have store økonomiske effekter. Der er naturligvis utallige processer ved

19 2.2 Maritime containerterminaler - containerhavne 7 Figur 2.1: Emma Mærsk er med sine 397,7 meter verdens største containerskib. Det kan transportere op til TEUs. rørende drift af containerskibe, der kan optimeres. Det kan være ruterne, som skibene skal følge, men også selve behandlingen af skibene i containerterminalerne kan have en stor indflydelse. Skibene skal naturligvis helst bevæge sig mellem sine destinationer fremfor at ligge stille i terminalerne, hvorfor terminaloperationer er et centralt emne indenfor optimering af containershipping. Denne afhandling vil omhandle optimering af en operation i containerhavnen; mere konkret kajallokering til de ankommende containerskibe. I det følgende beskrives maritime containerterminaler og forskellige terminaloperationer med fokus på kajallokering. 2.2 Maritime containerterminaler - containerhavne I takt med udviklingen af økonomien i de asiatiske lande er især eksporten af varer fra denne verdensdel steget. I løbet af blot 2006 steg fx Kinas eksport med hele 22%, [25]. Den stigende eksport resulterer i en tilsvarende udvikling i shippingindustrien, idet eksportvarerne skal fragtes til deres kunder. I 2006 blev der fragtet 13,9 millioner TEU s fra Asien til USA, men kun 4,5 millioner TEUs i den modsatte retning, [25]. Det er derfor ikke overraskende, at de største containerterminaler findes i Asien. I tabel 2.1 ses verdens ti største containerhavne

20 8 Optimering i containerhavne målt på travlheden (antallet af containere der gennemløber dem årligt) i Det er bemærkelsesværdigt, at der først på 7. pladsen findes en containerhavn udenfor Asien, nemlig Rotterdam i Holland. Data i tabel 2.1 er som angivet fra Containerterminal Land Antal TEUs (i mio.) 1 Singapore Singapore 23,2 2 Hong Kong Kina 22,4 3 Shanghai Kina 18,1 4 Shenzhen Kina 16,2 5 Busan Sydkorea 11,8 6 Kaohsiung Taiwan (Kina) 9,5 7 Rotterdam Holland 9,3 8 Hamburg Tyskland 8,1 9 Dubai De Arabiske Emirater 7,6 10 Los Angeles USA 7,5 Tabel 2.1: Top 10 maritime containerterminaler i år Shippingindustrien er i en stadig udvikling, så gennemløbet af containere kan meget vel være større i dag. Gennemløbet af containere i verdens største havn, Port of Singapore, er fx steget yderligere til 27,9 millioner TEUs i For at kunne imødekomme det store antal skibe og tilhørende af- og pålæsning af containere er containerhavne nødt til at have store, fysiske kapaciteter på flere områder. Dette kan gælde længden af kaj, opbevaringsplads til containere og udstyr såsom kraner og køretøjer. Selve opbygningen af en containerhavn omtales nærmere i afsnit Længden af kajen kan variere betydeligt afhængigt af, hvor mange skibe der ankommer og skal betjenes. Men for at give et indtryk af størrelsesordenen gives her to eksempler. Port of Singapore består af flere terminaler, dvs. flere mindre containerhavne. Pt. udgør de en samlet kajlængde på meter, og der er planer om at udbygge med yderligere kajplads indenfor de næste fem år. På meter af kajen er placeret 143 kajkraner 5. I dette projekt vil bl.a. blive anvendt testinstanser baseret på data fra den syditalienske containerhavn Gioia Tauro, hvilket også er tilfældet i flere artikler, se afsnit 3.3. Gennemløbet af containere i Gioia Tauro var i 2007 på 3,7 millioner TEUs fra over skibe 6. Den samlede kajlængde er meter, som

21 2.2 Maritime containerterminaler - containerhavne 9 er udstyret med 22 faste kajkraner og tre mobile kraner 7. Testinstanserne der benyttes i dette projekt samt i diverse artikler gælder dog kun for 2850 meter af kajen. Figur 2.2 viser containerhavnen i Gioia Tauro. Figur 2.2: Containerhavn i Gioia Tauro i Syditalien. I det følgende vil blive gennemgået forskellige problemstillinger, der opstår i forbindelse med planlægning og drift af en containerhavn Terminaloperationer i containerhavne En maritim containerterminal kan inddeles i tre hovedområder: Kajområdet (hvor skibene lægger til), containerområdet (hvor containerne opbevares) og landområdet (hvor lastbiler og tog bliver læsset). På figur 2.3 er en illustration af, hvorledes en containerterminal kan være opbygget med disse tre områder. En containerhavn skal opfylde flere funktioner. Skibe skal lægge til kaj, af- og pålæsses, containere skal stables, lastvogne og tog skal læsses til videre transport på land, osv. Containerterminaler er i dag ofte af en sådan størrelse, at logistikken bliver så indviklet, at det kan være uoverskueligt at administrere manuelt. Operationsanalyse kan derfor med fordel anvendes på forskellige processer, hvilket bliver mere og mere udbredt. De forskellige delprocesser indenfor 7

22 10 Optimering i containerhavne Figur 2.3: Containerterminal. Figuren er fra Louise Sibbesens præsentation i kurset Matematisk modellering af godstransport, den samlede logistik i terminalen omtales ofte som terminaloperationer. I det følgende vil blive redegjort for et udvalg af forskellige terminaloperationer og andre omstændigheder i en containerhavn, der kan være genstand for effektivisering og optimering. Disse forskellige problemstillinger i forbindelse med opbygning og drift af en maritim containerterminal er beskrevet i [23]. Indledningsvis skal der tages strategiske beslutninger vedrørende selve strukturen af containerterminalen. Dette kan fx være forholdet mellem placeringerne af kaj, containere og togskinner, længden af kajen, størrelsen af containerområdet, osv. Ligeledes skal besluttes, hvilket udstyr terminalen skal benytte. Dette gælder både typen af udstyret, antallet og evt. placeringen. Sådanne maskiner kan være containerkraner på kajen, køretøjer til transport af containere eller kraner, der kan køre ombord på skibene. Når strukturen af terminalen og udstyret er fastlagt, kan driften af terminalen planlægges. I det følgende beskrives et udpluk af terminaloperationer fra [23] i så vidt muligt kronologisk rækkefølge fra skibet ankommer, til containerne bliver læsset på transportmidler på land. Indledningsvis ankommer et containerskib til havnen. Det skal bestemmes, hvor og hvornår skibet skal lægge til kaj og påbegynde af- og pålæsning. Dette leder videre til næste problem: Hvordan skal containerne placeres på skibet? Containerne skal gerne placeres på en sådan måde, at de ønskede containere er lettilgængelige. Samtidig skal containerne fordeles nogenlunde ligeligt over skibet, så

23 2.2 Maritime containerterminaler - containerhavne 11 det ikke tipper eller ligefrem knækker. Kraner benyttes til at flytte containere til og fra skibe. Disse kræver også en plan for, hvilke skibe de skal betjene og evt. også hvilken del af skibet de skal betjene. Nutidens skibe er ofte af en sådan størrelse, at de betjenes af flere kraner simultant. I containerområdet opbevares både tomme og fyldte containere, som kan stables i højden. De opbevares i havnen, indtil det skib ankommer, hvorpå de skal læsses. I gennemsnit opbevares containere mellem tre og fem dage, [23]. Containerne skal gerne transporteres over så korte afstande som muligt i terminalen. Det er derfor ønskeligt, at de er placeret i nærheden af, hvor skibet lægger til, hvis dette vides på forhånd. Udover placeringen i containerområdet er det også vigtigt, i hvilket lag containeren stables. De skal gerne stables således, at når en given container skal bruges til et skib, skal der ikke flyttes rundt på en masse andre for at få adgang til den. Positionen af en container er som regel givet ved et område, en bås, en række og et niveau. Endelig kan alle former for transport af containere i terminalen optimeres. Afstandene og tidsforbruget skal gerne være mindst muligt. Der kan fx opdeles i tre former for transport, som i [23], nemlig transport indenfor hvert af de tre områder: Kajen, containeropbevaringen og landstransporten. Transporten på kajen består i at flytte containerne fra skibet til en stak. Transporten på kajen planlægges ikke udelukkende baseret på transporttiderne men også på synkronisering med kranerne for at kunne udnytte disse bedst muligt. I de større kajer benyttes ofte chaufførløse, automatiserede køretøjer (AGV) kombineret med de mere traditionelle menneskebetjente (såkaldte straddle carriers). Køretøjerne kan enten nøjes med at fragte containere i én retning (skib til stak eller stak til skib) eller i begge retninger. Sidstnævnte er mest kompliceret, idet køretøjerne så skal servicere mere end én kran. Transporten i containerområdet foregår som regel med kraner, der opererer på skinner kaldet en kranbane, se figur 2.4. En plan for en sådan kranbane består af en rækkefølge af jobs, dvs. containere der skal hentes fra eller bringes til en AGV eller et andet køretøj, der opererer mellem containerområdet og kranerne. Endelig er der transporten mellem containerområdet og køretøjerne på landjorden. Containerne transporteres videre fra terminalen med tog eller lastbil. Denne problemstilling stemmer overens med den i kajområdet omhandlende optimering af transporten med containere. I landområdet gælder også, at planen for køretøjerne skal synkroniseres med, i dette tilfælde, kranbanerne eller et andet transportmiddel til containere fra containerområdet.

24 12 Optimering i containerhavne (a) Automated Guided Vehicle - AGV (b) Straddle carrier Figur 2.4: Kranbane i en containerterminal. Kranbanen opererer i det område af terminalen, hvor containerne opbevares i stakke. Den transporterer havnens opmagasinerede containere til og fra køretøjer i terminalen, både mod kajen og landsiden. 2.3 Kajallokeringsproblemet - The Berth Allocation Problem (BAP) Kajallokeringsproblemet er den problemstilling, der vil være fokus på i denne afhandling. Problemstillingen er ofte omtalt som Berth Allocation Problem i litteraturen. Berth Allocation Problem forkortes til BAP, og denne betegnelse vil være anvendt i afhandlingen. Problemet går i sin enkelhed ud på at bestemme, hvor og hvornår hvert skib, der ankommer til havnen, skal lægge til kaj.

25 2.3 Kajallokeringsproblemet - The Berth Allocation Problem (BAP) 13 Inden en kajallokeringsplan kan lægges, skal det overvejes, hvilke omkostninger man ønsker at mindske. Omkostningerne behøver ikke kunne oversættes direkte til økonomiske konsekvenser, men kan også være andre forhold såsom skibsejernes tilfredshed, den samlede tid tilbragt i havnen af skibene, andelen af skibe der afgår til tiden, antallet af passeringer (passeringer betyder, at et skib ankommer senere end et andet, men lægger til kaj tidligere), fuld udnyttelse af kajpladsen, osv. Målfunktionen skal afspejle hvilke forhold, der ønskes optimeret. Det kan desuden være ønskeligt at indføre en vægtet målfunktion, så fx store skibe bliver prioriteret højere end mindre skibe. Problemstillingen bliver svær at overskue for en planlægger, da der er mange omstændigheder at tage højde for ved udarbejdelse af en kajallokeringsplan. Ofte bliver problemet så komplekst, at det kan være vanskeligt at lægge en omkostningsmæssig god plan manuelt. Skibene ankommer løbende over planlægningshorisonten, som ofte har en længde på en uge. Skibene kan først lægge til kaj efter deres ankomst. Derefter skal skibet tildeles en plads på kajen til et givet tidspunkt. Kajen skal gerne udnyttes optimalt, men skibene kan heller ikke overlappe langs kajen. Skibene varierer desuden i størrelse. Når et skib lægger til, skal det af- og pålæsses med containere. Tiden, det tager at gøre dette, kaldes for skibets betjeningstid. Betjeningstiden vil som regel variere alt efter, hvor på kajen skibet lægger til. Der kan desuden være visse fysiske begrænsninger, der gør, at skibene kun kan benytte særlige dele af kajen. Det kan fx være vanddybden eller typen af kraner. En dårlig udnyttelse af kajpladsen i en containerhavn kontra en god udnyttelse kan have store økonomiske konsekvenser. I denne afhandling vil kajallokeringsplanerne blive evalueret på basis af den samlede tid tilbragt i havnen af skibene i planen. Samlet set forsøges altså at få skibene ekspederet videre så hurtigt som muligt. Det koster skibsejerne penge at ligge stille i havnen, så optimeringen kan opfattes som værende fra skibsejerens synspunkt. Kajallokeringsproblemet kan modelleres på utallige måder. Alle formuleringer er baseret på forskellige antagelser og simplificeringer, hvilke omtales i afsnit 3.1. Det varierer mellem formuleringerne, hvilke begrænsninger kajallokeringsplanen skal overholde. Matematiske formuleringer i litteraturen omtales i afsnit 3.2.

26 14 Optimering i containerhavne

27 Kapitel 3 Kajallokeringsproblemet - modeller og metoder Dette kapitel beskriver, hvorledes BAP kan modelleres og løses ved forskellige metoder beskrevet i litteraturen. Når en matematisk model anvendes til at beskrive en praktisk problemstilling, vil det altid være nødvendigt med antagelser og simplificeringer. Dette gælder også BAP. Forskellige aspekter af problemstillingen kan modelleres på forskellig vis, der i mindre eller højere grad afspejler virkeligheden. I dette kapitel vil der indledningsvist blive redegjort for aspekter af BAP, der kan modelleres på forskellige måder. Disse bruges ofte til at karakterisere en BAP model. Herefter vil idéen bag forskellige matematiske BAP modeller fra litteraturen blive gennemgået. Disse modeller har naturligvis alle til formål at konstruere en kajallokeringsplan, men omkostningen ved en sådan og de tilgrundlæggende egenskaber kan variere. Endelig omtales forskellige løsningsmetoder ligeledes foreslået i videnskabelige artikler.

28 16 Kajallokeringsproblemet - modeller og metoder 3.1 Introduktion til BAP modeller Ved modellering af BAP er det, som med alle matematiske modeller, nødvendigt med visse simplificeringer og antagelser af virkeligheden. Disse varierer fra model til model. Især tre modelleringsaspekter kan siges at karakterisere en BAP model. Det er, hvorvidt skibenes ankomster er statiske eller dynamiske, hvorvidt kajen er diskret eller kontinuert og hvorvidt tiden er diskret eller kontinuert. En BAP model er ofte omtalt ved den måde, ankomsttiderne samt kajen er modelleret, fx et statisk, diskret BAP. Hvad dette indebærer, forklares i det følgende. En model for og løsning til BAP kan siges at have to dimensioner: Tid og kaj. Hvornår skibet skal lægge til, og hvor på kajen dette skal ske? Det er især modelleringen af disse to dimensioner, der er centrale karakteristika for en BAP model. Ved en statisk model er det antaget, at alle skibe befinder sig i havnen fra planlægningsperiodens start. Ved en dynamisk model kan skibene ankomme senere i planlægningsperioden og kan dermed først lægge til kaj efter deres ankomsttidspunkter. Tiden kan som nævnt modelleres diskret eller kontinuert. Kontinuert vil betyde, at et skib kan lægge til kaj til hvilket som helst tidspunkt samt kun optage det pågældende stykke af kajen i den tid, det tager at af- og pålæsse containere. Tiden kan dermed siges at blive udnyttet kontinuert. I det andet tilfælde diskretiseres tidsdimensionen ved at inddele denne i mindre tidsenheder. Her vil et skib kun kunne lægge til kaj til faste tidspunkter og ikke fortløbende som ved den kontinuerte tidsdimension. Et skib vil så optage et stykke af kajen i det antal tidsenheder, der skal til for at kunne betjene skibet. Skibet vil altså højst optage kajen i mindre end én tidsenhed for meget i forhold til betjeningstiden. Størrelsen af tidsenhederne kan så sættes til at være tilpas lille, så diskretiseringen nærmer sig kontinuitet, da skibene kun optager et tidsinterval med en lille margin i forhold til den egentlige betjeningstid. Denne form for diskretisering kan anses for at være tilnærmelsesvist kontinuert, hvis tidsdimensionen diskretiseres med tilpas små stykker. Udtrykket tilnærmelsesvis kontinuitet vil blive anvendt i projektet for denne form for diskretisering. Når en BAP model betegnes som diskret eller kontinuert er det et udtryk for modelleringen af kajen. Med diskret menes, at kajen er inddelt i mindre segmenter, som i den tilnærmelsesvist kontinuerte version. Den store forskel er dog, at der i det diskrete tilfælde kan ligge netop ét skib af gangen ved hvert segment. Et skib vil således altid optage en del af kajen svarende til længden af segmentet,

29 3.2 Litteraturgennemgang - modelformuleringer 17 selvom skibet kan være kortere eller længere end segmentet. Den diskrete inddeling kan således resultere i, at kajen udnyttes suboptimalt, hvis segmenterne er for lange. Hvis segmenterne derimod er for korte, kan den fremkomne plan ikke udføres i praksis, da det vil skabe kollisioner mellem skibene. Hvis kajen er modelleret kontinuert, kan skibene derimod lægge til alle steder langs kajen. På denne måde optager skibet kun en del af kajen svarende til dets længde, og kajen kan således udnyttes bedre, samtidig med en i praksis gyldig løsning er garanteret. En kontinuert kajdimension er altså baseret på samme princip som for en kontinuert tidsdimension. Kajen kan dog også modelleres på samme tilnærmelsesvist kontinuerte vis som tiden. Dvs. kajen inddeles i mindre segmenter, hvor skibene optager et antal svarende til dets længde. Er kajsegmenterne tilpas små, kan kajen anses som tilnærmelsesvist kontinuert efter samme argumentation som den benyttet for tidsaksen. En dynamisk, kontinuert model vil være at foretrække. Som nævnt henviser kontinuitet til kajen, idet tiden altid kan anses som mindst tilnærmelsesvist kontinuert. Idet en planlægningsperiode ofte er af en længde på omkring en uge, vil det være en meget grov antagelse, at samtlige skibe befinder sig i havnen til periodens begyndelse, hvorfor BAP helst skal være dynamisk. En kontinuert kaj vil samtidig være at foretrække fremfor en diskret kaj af tidligere nævnte grunde: Kajen udnyttes bedst muligt med planer, der er garanteret mulige i praksis. En dynamisk, kontinuert formulering vil dog også være et N P-hårdt problem, hvorimod en statisk formulering fx vil resultere i et langt lettere problem. 3.2 Litteraturgennemgang - modelformuleringer En matematisk model til BAP kan formuleres på op til flere måder og med forskellige af de ovenfor nævnte egenskaber. I det følgende vil forskellige formuleringer fra litteraturen blive gennemgået med fokus på dynamiske modeller, da resten af projektet vil omhandle løsningen af dynamiske modeller.

30 18 Kajallokeringsproblemet - modeller og metoder Statisk BAP Det statiske BAP er ikke interessant i dette projekt, idet der bliver udviklet en løsningsmetode, der kan løse dynamisk BAP. Som nævnt ovenfor er det dynamiske BAP at foretrække, og desuden kan det på enkelt vis omformuleres til et statisk BAP ved at sætte alle skibes ankomsttider til nul. Der gives derfor blot et eksempel på en artikel omhandlende statisk BAP. I [9] opstilles en model, der adskiller sig fra de andre modeller i litteraturen på to punkter: Den er statisk og indeholder desuden en to-kriterie målfunktion bestående af den samlede flowtime og et udtryk for utilfredsheden blandt skibsejerne. Flowtime er en betegnelse for, hvor lang tid et skib tilbringer i havnen, bestående af betjeningstid og evt. ventetid, og er givet ved forskellen mellem ankomst- og afgangstidspunktet. Udtrykket for utilfredsheden for en given skibsejer er defineret som antallet af skibe, der ankommer senere end det pågældende skib, men lægger til kaj tidligere. Dette kaldes passeringer. Modellen er statisk og diskret. Modellen er en multikriterie non-linear integer programming (NLIP) model. Beslutningsvariablen i denne model angiver, om et givet skib lægger til en given kaj i en given position. Afhængig af denne er en anden variabel, der udtrykker utilfredsheden blandt skibsejerne. Først er to basale typer begrænsninger: Hvert skib skal lægge til kaj én og netop én gang samtidig med, at der kun kan ligge ét skib ad gangen ved hvert kajsegment. To typer begrænsninger sørger for, at forholdet mellem beslutnings- og hjælpevariablen etableres. Beslutningsvariablen angiver en løsning og udfra denne beregnes antallet af passeringer, der angiver utilfredsheden. I en sidste type begrænsning beregnes forskelle mellem de tidspunkter, hvor forskellige skibe lægger til. Disse størrelser bruges i de to begrænsninger, hvor antallet af passeringer bestemmes Dynamisk BAP Størstedelen af artikler omhandlende BAP opstiller dynamiske modeller. Modellerne kan inddeles i tre kategorier. Først beskrives de diskrete modeller, som omtalt i afsnit 3.1. Herefter modeller, hvor kajen er diskretiseret på en sådan måde, at modellen kan anses for værende tilnærmelsesvist kontinuert. Disse modeller vil være baseret på et pakningsproblem, hvilket beskrives nedenfor samt i detaljer i afsnit Endelig omtales kontinuerte modeller.

31 3.2 Litteraturgennemgang - modelformuleringer Diskrete formuleringer I [3], [10], [11] og [16] præsenteres en dynamisk, diskret model. Modellen er en mixed-integer linear programming (MIP) model. Den samlede flowtime søges minimeret. Modellen er baseret på en beslutningsvariabel, der angiver, om et givet skib lægger til en given kaj i en given position. Positionen angiver, hvilket nummer skibet er i rækkefølgen af skibe, der skal lægge til en given kajplads. Fx angiver positionen tre, at skibet skal lægge til som det tredje skib på den pågældende kaj. Modellen har et åbnings- og lukketidspunkt for kajen, og skibe kan kun påbegynde serviceringen indenfor dette tidsrum. Modellen indeholder fire begrænsninger. Den første begrænsning dikterer, at hvert skib skal placeres én og kun én gang. Dernæst sørges der for, at hver kajplads højst har ét skib i en given position; dvs. der kan ikke ligge flere skibe ad gangen. Den tredje begrænsning sørger for, at kajen kun bliver benyttet indenfor sin åbningstid. Endelig har en sidste begrænsning til funktion at beregne for hvert skib, hvor længe det venter i havnen, før det kan lægge til. I [16] forstærkes formuleringen ved at indføre en ny variabel, der angiver spildtiden på en kajplads mellem to på hinanden følgende skibe. Med denne variabel, kan den ene begrænsning omskrives, og det vises, at den nye formulering er stærkere end den oprindelige. [3] formulerer en anden dynamisk, diskret model, som også minimerer den samlede flowtime. Målfunktionen afviger dog fra den forrige model, idet skibene kan tildeles en vægt. Disse vægte kan fx afspejle, at moderskibe prioriteres før mindre skibe. Formuleringen er baseret på et Multi Depot Vehicle Problem Routing with Time Windows (MDVRPTW). Dette kræver ligeledes en diskretisering af kajen. VRP-modellen kan så indses ved at opfatte hver diskretisering af kajen, hvilket svarer til en kajplads, som et depot med én bil tilknyttet. Hver bil besøger/servicerer så nogle givne skibe i en given rækkefølge, hvilket vil svare til, at disse skibe lægger til den tilsvarende kajplads i samme rækkefølge. Foruden åbnings- og lukketidspunktet for kajen indeholder denne model også en øvre grænse for, hvornår skibet må lægge til kaj. Så foruden de klassiske VRP begrænsninger indeholder modellen også fire typer begrænsninger, der sørger for, at ankomsttidspunkt, åbnings- og lukketid samt seneste tidspunkt for servicering respekteres. En alternativ dynamisk og diskret model, [7], minimerer en sum af omkostninger. Disse omkostninger er for henholdsvis ventetid, betjening og omkostninger forbundet med tidlig eller sen ankomst i forhold til et, mellem havneoperatøren og skibsejeren, aftalt tidspunkt. De sidstnævnte omkostninger består af, at operatøren af havnen modtager en sum penge fra skibsejeren, hvis skibet er færdigbetjent før det aftalte tidspunkt, mens havneoperatøren skal betale skibsejeren

32 20 Kajallokeringsproblemet - modeller og metoder en sum penge, hvis skibet først er klar til afgang efter det aftalte tidspunkt. Det skal bemærkes, at der i målfunktionen er medtaget både betjeningstiden og de økonomiske omkostninger ved betjeningen. Modellen er et MIP. En binær beslutningsvariabel angiver, om et givet skib lægger til en given kaj i en given position. Som tidligere angiver positioner, hvilken rækkefølge skibe skal lægge til i ved en given kajplads. Modellen indeholder ni typer begrænsninger. Tilsammen sørger disse for, at der højst bliver betjent et skib ad gangen på hver kajplads; at skibe er ankommet til havnen, før betjeningen kan påbegyndes; at betjeningen først kan påbegyndes, når kajpladsen har åbnet; og at de i målfunktionen anvendte omkostninger bliver beregnet. I [17] beskrives en dynamisk, diskret model, som er en NLIP model. Diskretiseringen afviger i forhold til de tidligere nævnte diskrete modeller, idet flere skibe kan lægge til samme kajsegment på samme tid, så længe deres samlede længde ikke overskrider længden af kajsegmentet. Desuden tages der i modellen højde for, at skibe kun kan lægge til kajsegmenter, hvor vanddybden tillader det. I målfunktionen minimeres den samlede flowtime. Der er i modellen tre beslutningsvariable. En angiver, om et givet skib betjenes ved et givet kajsegment. En anden angiver, hvornår betjeningen af et givet skib påbegyndes, og den sidste angiver, hvorvidt et givet skib starter sin betjening samtidig med et andet givet skib betjenes. Modellen indeholder seks typer begrænsninger. Der skal sikres, at samtlige skibe indgår i planen. Derudover skal skibe først betjenes efter deres ankomst, og dette kan kun ske ved kajsegmenter, hvor vanddybden er tilpas stor. Flere skibe kan som nævnt betjenes ved samme kajsegment, hvor der blot skal overholdes, at deres samlede længde ikke overstiger kajsegmentets længde. Begrænsningerne, der garanterer denne egenskab, gør, at modellen bliver ikke-lineær. Endelig haves to typer begrænsninger, der definerer forholdet mellem to skibe, der serviceres på samme tid Tilnærmelsesvist kontinuerte formuleringer I flere artikler opstilles en model, hvor skibene opfattes som et rektangel med dimensionerne svarende til længden af skibet og betjeningstiden. Disse rektangler skal så placeres i et plan, hvor x-aksen angiver tiden og y-aksen kajen, uden at overlappe. Herved vil der ikke være noget sted på kajen, hvor der ligger mere end ét skib ad gangen, dvs. ingen kollisioner. Et BAP kan dermed anses som et form for pakningsproblem. Tankegangen bag BAP som et to-dimensionelt pakningsproblem beskrives nærmere i afsnit En sådan model til BAP kan formuleres på flere måder, som vil blive redegjort for i det følgende.

33 3.2 Litteraturgennemgang - modelformuleringer 21 I [13] og [18] præsenteres en dynamisk model baseret på opfattelsen af skibe som rektangler. I målfunktionen optimeres en sum af, hvad der kan anses for værende to vægtede straffe: Første led er afstanden mellem det punkt på kajen, hvor skibet faktisk lægger til, og det optimale punkt for skibet. Andet led i målfunktionen er en straf for overskridelse af det senest tilladte afgangstidspunkt. Det er værd at notere, at betjeningstiden i denne model ikke er afhængig af, hvor på kajen skibet lægger til. Modellen er et MIP. I modellen findes således to beslutningsvariable: En x-koordinat svarende til tidspunktet, hvor skibet lægger til, og en y-koordinat svarende til placeringen på kajen. Begrænsningerne i modellen har til formål at kontrollere placeringen af rektangler i planet. Rektanglerne skal placeres, så de ikke ligger før deres ankomsttidspunkt eller bryder kajens fysiske rammer. Desuden må rektanglerne ikke overlappe, da det i praksis vil svare til kollisioner. Endelig skal hvert skib naturligvis placeres. I [12] findes endnu en dynamisk MIP model baseret på skibe som rektangler. Igen minimeres den samlede flowtime. Der er to beslutningsvariable, der angiver, henholdsvis hvornår og hvor et skib lægger til kaj. Modellen er baseret på, at givet to rektangler må de kun overlappe i én dimension, dvs. enten på tid- eller kajaksen. Der indføres to hjælpevariable. Disse vil antage værdien 1, hvis der er krævet en begrænsning, der dikterer, at to rektangler ikke må overlappe på henholdsvis kaj- eller tidsaksen. Hvis en sådan begrænsning ikke skal gælde, vil variablen være lig 0. I modellen er der dermed to begrænsninger, der dikterer, at to rektangler ikke må overlappe på tids- eller kajaksen. Idet to rektangler kun må overlappe i én dimension, er der desuden en begrænsning, der sørger for, at én af overlapningsbegrænsningerne altid er aktiveret. To begrænsninger har til formål at sikre, at skibe kun kan placeres, så hele deres længde ligger indenfor kajens dimensioner. Endelig findes en begrænsning, der sørger for, at ankomsttidspunktet respekteres. En sidste egenskab er, at betjeningstiden er givet som en funktion af placeringen på kajen. I [6] præsenteres to dynamiske modeller. Den ene er tilnærmelsesvist kontinuert, hvor planet inddeles i mindre (tid, kaj)-felter, den anden fuldstændig kontinuert. I begge modeller minimeres den vægtede, samlede flowtime. Fælles for disse to modeller er, at behandlingstiden for skibene ikke afhænger af, hvor på kajen de lægger til. Den tilnærmelsesvist kontinuerte model i [6] er kaldet Position assignment formulation. Der er tale om et MIP problem. Denne model er baseret på en beslutningsvariabel defineret for hvert (tid,kaj)-felt for hvert skib. Denne antager værdien 1, hvis det nederste, venstre hjørne af rektanglet præsenterende skibet er placeret i det givne felt, ellers 0. En anden variabel er også defineret for hvert

34 22 Kajallokeringsproblemet - modeller og metoder (tid,kaj)-felt for hvert skib. Denne antager værdien 1, hvis et givet felt er dækket af skibet, ellers 0. Modellen indeholder fire typer begrænsninger. Først skal sikres, at hvert skib bliver placeret i planet, dvs. lagt til kaj. Desuden skal gælde, at et felt ikke må dækkes af mere end ét skib. En såkaldt Store-M-begrænsning har til formål at sørge for, at beslutningsvariablen bliver koblet med hjælpevariablen. Dvs. givet en placering af nederste, venstre hjørne af skibet skal det bestemmes, hvilke felter der bliver dækket af det pågældende skib. Den sidste begrænsning er ikke strengt nødvendig, da den uden besvær kan indkorporeres i målfunktionen. Denne beregner skibets flowtime ud fra placeringen og behandlingstiden, hvilket lige så vel kan gøres i målfunktionen Kontinuerte formuleringer Den kontinuerte model præsenteret i [6] kaldes Relative position formulation og er ligeledes et MIP problem. De to beslutningsvariable i denne angiver henholdsvis, hvorvidt et givet rektangel ligger til venstre for et andet givet rektangel uden at overlappe, og hvorvidt et givet rektangel ligger under et andet givet rektangel uden at overlappe. Denne model definerer dermed de relative positioner af skibene/rektanglerne i forhold til hinanden, hvilket i sidste ende kan konverteres til en konkret plan. Der er dermed en begrænsning, der sørger for, at der for to givne skibe vil gælde, at mindst ét af skibene skal ligge helt til venstre for eller under det andet uden at overlappe, hvilket svarer til, at skibe højst må overlappe langs én akse. Derefter sørger to begrænsninger for, at den relative placering af de to skibe kun defineres én gang. Dvs. hvis et af skibene er angivet til at ligge fuldstændig til venstre for det andet, kan det modsatte naturligvis ikke gælde samtidig. Der indføres desuden to hjælpevariable, der angiver, hvor og hvornår skibet lægger til. I to begrænsninger benyttes de to beslutningsvariable til at sætte hjælpevariablene. Dette gøres ved at betragte forholdet mellem to skibe. Hvis fx beslutningsvariablen indikerer, at de to skibe ikke overlapper i tidsretningen, kan det andet skib ikke lægge til kaj, før det første er afgået igen. Det samme gælder langs aksen, der repræsenterer kajen, og er defineret på samme vis ved brug af den anden beslutningsvariabel. En sidste begrænsning beregner afgangstidspunktet som starttidspunktet for aflæsningen plus behandlingstiden. Denne beregning kunne dog foretages i målfunktionen, hvorfor denne type begrænsning vil udgå. I [15] er BAP formuleret ved brug af en graf. Det antages, at kajen er inddelt i

35 3.3 Litteraturgennemgang - løsningsmetoder og resultater 23 sektioner indenfor hvilke, skibene kan lægge til kaj kontinuert. En given mængde skibe skal lægge til en sektion, og hver sektion optimeres derfor uafhængigt af de resterende. Målet er at minimere den maksimale længde af sektionen, der bruges på hvilket som helst tidspunkt. Modellen er som de foregående formuleringer baseret på et to-dimensionelt pakningsproblem, der her transformeres til en graf. Grafen er konstrueret med ikke-orienterede kanter, og formålet er at bestemme retningen på kanterne på en sådan måde, at der opstår en ikke-cyklisk orienteret graf med en kortest mulig længste sti BAP med kajkraner I [19] er formuleret en model, der kombinerer kajallokering med tildeling af kajkraner til skibe. Idet antallet af kajkraner, der betjener et givet skib, påvirker betjeningstiden, har forfatterne valgt at behandle problemstillingerne simultant. Resultatet er en kajplan, som i det klassiske BAP, samt en plan for kranerne. Kranplanen angiver for en given mængde tidssegmenter hvilke kraner, der skal betjene hvilke skibe. Det er antaget, at betjeningstiden af et skib aftager omvendt proportionalt med antallet af tildelte kraner. Modellen bliver løst i to faser: Først bestemmes en kajplan samt antallet af kraner til hvert skib. Baseret på dette bestemmes så en konkret plan for kranerne. Omkostningerne, der søges minimeret, er en vægtet sum af betjeningsomkostninger, strafomkostninger ved at planlægge skibe før eller efter deres ankomst og strafomkostninger ved afgang senere end senest aftalte tidspunkt. Denne model og dens formål afviger på flere områder fra problemstillinger, der bliver behandlet i dette projekt. En endelig bemærkning går på de artikler, hvor der beskrives en model med en multikriterie-målfunktion. Disse modeller løses ikke som egentlige multikriteriemodeller, men målfunktionen omskrives til en vægtet funktion af de forskellige kriterier. Dette reducerer modellen til en traditionel enkelt-kriterie-målfunktion. 3.3 Litteraturgennemgang - løsningsmetoder og resultater Ligesom der findes mange forskellige modeller i litteraturen, findes der også mange forskellige metoder til at løse dem. I det følgende vil der blive redegjort for de i litteraturen anvendte løsningsmetoder.

36 24 Kajallokeringsproblemet - modeller og metoder Simulering Simulering er et godt værktøj til at analysere, hvordan et system vil opføre sig i forskellige scenarier. Det kan bruges til at teste forskellige løsninger uden at prøve dem i praksis, hvilket kan være både tidskrævende og dyrt, samt være grundlag for beslutningsstøttesystemer. Denne fremgangsmåde er også forsøgt indenfor kajallokering. I [14] benyttes Discrete event simulation. Problemstillingen tilgås som et køsystem og er simuleret i sproget Visual slam. Simuleringen er baseret på containerhavnen Gioia Tauro i Syditalien, hvor scenarieanalyser blev udført bl.a. som støtte til beslutningen om at forøge antallet af kajkraner. I [8] bliver to forskellige kajallokeringsregler evalueret ved simulering under forskellige scenarier såsom varierende kajlængde, ankomst af skibene og afstand mellem skibene på kajen. Simuleringen er lavet i sproget bams og har til formål at undersøge både flowtime og den afstand, som kranvognene skal tilbagelægge. Simuleringerne er lavet for Skandia Harbour i Göteborg Diskrete heuristikker Størstedelen af de i litteraturen forsøgte løsningsmetoder kan kategoriseres som heuristikker. I [10] foreslås en Lagrange-baseret subgradient optimeringsprocedure, og tre forskellige varianter testes. Data indeholder problemer med fem, syv og ti kajstykker og 25 og 50 skibe. Ankomst- og betjeningstider er genereret tilfældigt fra sandsynlighedsfordelinger baseret på en undersøgelse fra en containerhavn i Kobe. Der bliver lavet tre sæt data, hvor betjeningstiderne varieres. Den bedste metode resulterer i et gab mellem de bedste, gyldige løsninger og en nedre grænse på henholdsvis ca. 20%, 10% og 20% for de tre datasæt. De mindre datasæt med 25 skibe løses på cirka et minut, mens de store med 50 skibe i de fleste tilfælde resulterer i køretider mellem ti og 20 minutter. Samme forfattere har i [17] udviklet en genetisk algoritme med to forskellige kromosomrepræsentationer. Problemet deles op i mindre delproblemer, der løses ved brug af den genetiske algoritme. Populationen udgøres af forskellige løsninger/kajplaner, og individet/løsningen vurderes på sin målfunktionsværdi. Hver generation indeholder 30 individer. Med den genetiske algoritme kan der løses problemer, hvor det er tilladt for flere skibe at lægge til samme kajsegment simultant, så længe deres samlede længde ikke overstiger segmentets. For

37 3.3 Litteraturgennemgang - løsningsmetoder og resultater 25 at sammenligne med en Lagrange-baseret algoritme, [10], løses der dog også problemer, hvor førnævnte ikke er tilladt, dvs. et diskret BAP. Testinstanserne er de samme som i [10]. Resultaterne viser, at den Lagrange-baserede algoritme resulterer i løsninger, der er bedre end de genetiske algoritmer. Dog er forskellen ikke signifikant. Endelig anvendes de genetiske algoritmer på faktiske data fra Kobe, hvilket viser, at kvaliteten af service i havnen kan blive bibeholdt med to færre kajpladser, end hvad der faktisk er tilgængeligt i virkeligheden. Der er ikke angivet køretider for resultaterne. Samme forfattere foreslår i [11] igen en Lagrange-baseret heuristik og en heuristisk genetisk algoritme til løsning af BAP. Denne gang er formålet at undersøge, hvordan en prioriteringsrækkefølge af de ankommende skibe kan indkorporeres i dynamisk BAP. Den resulterende model viser sig at være ikke-lineær, og de vælger derfor at løse den med en genetisk heuristik. Den genetiske algoritme stemmer overens med den, der er beskrevet i [17]. En forstærket formulering af dynamisk BAP bliver løst med en Lagrange-baseret heuristik i [16]. Instanser til test af den lagrange-baserede algoritme udgøres af 50 instanser med 20 skibe og fem kajstykker og 20 instanser med 30 skibe og syv kajstykker. cplex er i stand til at bestemme den optimale løsning indenfor to timer for 44 af de små testinstanser, hvor algoritmen i fire tilfælde er over 15% dårligere, men kun 6% dårligere i gennemsnit i de resterende 46 tilfælde. Algoritmens køretider ligger under halvandet minut, bortset fra et enkelt tilfælde. I seks tilfælde er løsning ved cplex signifikant hurtigere. I de store testinstanser finder cplex den optimale løsning for tre instanser. Algoritmen er i gennemsnit 6% dårligere end cplex, men køretiderne ligger mellem to og elleve minutter mod de to timer, som cplex bruger i størstedelen af tilfældene. I [3] er implementeret to tabusøgninger, se [5]: En for det diskrete og en for det kontinuerte tilfælde. Det kontinuerte tilfælde omtales i afsnit Den diskrete heuristik sammenlignes med en trunkeret cplex løsning. Et sæt af instanser er af størrelsen 25 skibe, fem, syv eller ti kajstykker og 35 skibe, syv eller ti kajstykker. Disse løser heuristikken i gennemsnit for hver størrelsesgruppe mellem 17% og 42% bedre end den bedste løsning, cplex kan finde på to timer. Heuristikken bruger kun mellem 4 og 8 sekunder. Testinstanser er baseret på Gioia Tauro, Italien. Resultater fra denne artikel vil blive sammenlignet med de resultater, vi finder med vores løsningsmetode, i kapitel 7. En grafisk præsentation af problemet er benyttet i [15], se afsnit Der beskrives en heuristik, der transformerer grafen fra værende ikke-orienteret til en orienteret, acyklisk graf med en kortest mulig længste sti. Denne testes på instanser baseret på data fra Port of Singapore Authority. Kajen består af 13 kajsegmenter, og der forsøges med 78 instanser indeholdende mellem 25 og 250 skibe. Algoritmen var ikke i stand til at komme frem til en gyldig løsning i to

38 26 Kajallokeringsproblemet - modeller og metoder af testinstanserne. Kvaliteten af løsningerne kendes ikke. Ant colony optimization er forsøgt anvendt på BAP i [24]. Størrelsen af testinstanserne er ukendt, men de betegnes som kompakte. Heuristikken gentages ti gange på seks testinstanser, hvor gennemsnittet af løsningerne ligger mellem 0% og 17% fra optimum. Heuristikken kører mellem et og fire minutter alt efter instansens størrelse. I [7] sammenlignes den genetiske algoritme fra [17] med en mindre ændring i form af en fitness funktion med yderligere tre heuristikker: en Variable Neighborhood Search, en Multi-start Variable Neighborhood Descent og en udvidelse af den genetiske algoritme til en Memetic Search algoritme. De mindre testinstanser er af størrelsen fem eller ti kajstykker med {5, 10,..., 50} skibe. Endelig testes også på større testinstanser med 20 kajstykker og mellem 60 og 200 skibe. Resultaterne indikerer, at Variable Neighborhood Search generelt løser instanserne bedre end de andre heuristikker. For de store testinstanser findes altid den optimale løsning, mens det gennemsnitlige gab i de mindre testinstanser er på under 0.01%. Køretiderne for Variable Neighborhood Search er på under 4 sek. for de mindre instanser og op til 34 sek. for de større testinstanser. En træsøgningsprocedure samt en samlet heuristik bestående af en træsøgningsprocedure og en parvis ombytningsheuristik er præsenteret i [6]. Metoderne prøves på testinstanser med ti kajstykker og en tidshorisont på en uge. Heuristikken kan løse problemer med op til 15 skibe, hvilket sammenholdes med cplex, som kun kan løse problemer med op til fire skibe. Heuristikken bruges på testinstanser med mellem 12 og 42 skibe. Det gennemsnitlige gab mellem løsninger og en nedre grænse varierer mellem 5% og 17%. Til den største instans bruger træsøgningen ca. 28 minutter Kontinuerte eller tilnærmelsesvist kontinuerte heuristikker I [13] er der implementeret en simuleret udglødningsheuristik. Nabolaget udgøres af tilfældige parvise ombytninger af rektangler/skibe i planen. Numeriske eksperimenter er foretaget på data, hvor størrelsen af skibe og kaj er samlet fra Pusan East Container Terminal, som er en af de største i Korea. Desuden er det optimale punkt på kajen for skibene baseret på undersøgelser fra Pusan. Ankomsttider, betjeningstider og senest aftalte afgangstider er genereret tilfældigt. Resultater viser, at køretiderne og kvaliteten af løsningerne gør metoden anvendelig i praksis. De største problemer, der blev forsøgt løst, indeholdte mellem 38 og 40 skibe. Køretiderne lå mellem fire og 141 sekunder.

39 3.3 Litteraturgennemgang - løsningsmetoder og resultater 27 I [18] er implementeret en Lagrange-baseret heuristik. Denne er testet på samme data som i [13]. Løsningen af 50 real-size problemer, hvor antallet af skibe varierer mellem elleve og 20 skibe og en planlægningshorisont på en uge, giver et gennemsnitligt gab mellem den primale- og duale løsning på 32%. Køretiderne varierer mellem ti og 515 sek. med et gennemsnit på 167 sek. I [3] udvikles som tidligere nævnt både en diskret og en ifølge forfatterne kontinuert tabusøgning. Hvad der i artiklen betegnes som en kontinuert tabusøgning i artiklen, kan dog ikke klassificeres som kontinuert efter definitionen i afsnit 3.1. Kajen inddeles i m segmenter, der svarer til den gennemsnitlige størrelse af skibene. Derefter inddeles hvert segment i to delsegmenter. Afhængigt af skibets længde kan et kajsegment m således udvides og optage halvdelen af kajsegment m 1 eller m+1 eller begge to. På samme måde kan et skib nøjes med at optage halvdelen af segment m. Nabolaget for en given løsning er konstrueret ved at flytte et skib i fra et kajsegment k til et andet kajsegment k. Den diskrete og kontinuerte heuristik sammenlignes på 30 tilfældigt genererede instanser. Den diskrete opnår i gennemsnit løsninger, der er 16% bedre end den kontinuerte. Disse løsninger er dog ikke garanteret gyldige. Herudover sammenlignes der med en metode der skulle reflektere hvorledes manuelle planlæggere arbejder. Ved sammenligning med disse løsninger, er den kontinuerte tabusøgning 8% bedre end planer fundet med en grådig algoritme, der stemmer overens med opførslen af menneskelige planlæggere. Den kontinuerte heuristik kører i to minutter. I [12] foreslåes en heuristisk algoritme, der udnytter kajen kontinuert. Data er genereret tilfældigt med mellem ti og 60 skibe og tre forskellige kajlængder. Den kontinuerte løsning sammenlignes med en diskret løsning, hvor kajen inddeles i et varierende antal kajstykker. Resultaterne viser, at jo flere stykker kajen inddeles i ved den diskrete løsning, samtidig med at den fundne diskrete løsning også er løsning til det kontinuerte tilfælde, jo mindre er forskellen mellem den diskrete og kontinuerte løsning. Dvs. jo bedre kajen inddeles i den diskrete model, jo mindre er der at vinde ved at løse den kontinuerte. Resultaterne sammenlignes ikke med en nedre grænse.

40 28 Kajallokeringsproblemet - modeller og metoder

41 Kapitel 4 Søjlegenerering og BAP Vi har valgt, at vi vil udvikle en løsningsmetode baseret på søjlegenerering, da der herved er mulighed for at opnå optimale løsninger. Der er ingen, der tidligere har forsøgt at løse det kontinuerte BAP til optimalitet, hvorfor dette vil være spændende. Samtidig kan BAP modelleres på måder, der egner sig til søjlegenerering. Der er derfor udvalgt to matematiske modeller, der er velegnede til løsningsmetoden: Modellen Position Assignment Formulation (PAF) fra [6] og Multi Depot Vehicle Routing Problem with Time Windows (MDVRPTW) fra [3]. Først vil princippet bag søjlegenerering blive forklaret. Efterfølgende undersøges, hvorledes søjlegenerering kan bruges til at løse de to udvalgte formuleringer af BAP. Endelig vil blive lavet en vurdering af, hvilken model og tilhørende fremgangsmåde, der vil være mest interessant at undersøge i denne afhandling. 4.1 Generel søjlegenerering Dette afsnit vil omhandle de generelle principper bag søjlegenerering. Søjlegenerering er en metode til at løse optimeringsproblemer, der indeholder et

42 30 Søjlegenerering og BAP stort antal søjler (variable) og relativt få begrænsninger, hvilket gør det yderst tidskrævende, hvis overhovedet muligt, at løse til optimalitet i fx cplex. Til løsning af optimeringsproblemer benyttes ofte simplexmetoden, hvortil søjlegenerering kan relateres. I simplexmetoden tages afsæt i en gyldig basisløsning. En løsning består af en mængde søjler svarende til variable, der antager værdier forskellig fra nul. Dermed er disse søjler i basis. De resterende variable er sat til nul, og de tilsvarende søjler er således ikke i basis. Udfra en given basisløsning er ønsket så at finde en ny ikkebasis-variabel, der kan indgå i en ny, bedre basisløsning. Herved vil en tidligere basis-variabel udgå af basis. Formålet med indførelsen af en ny basis-variabel er, at målfunktionsværdien skal forbedres. For hver basisløsning er første trin at undersøge, hvorvidt der findes fordelagtige ikkebasis-variable, og hvilken der evt. skal indgå i den nye basis. I det følgende anskues et minimeringsproblem, da dette stemmer overens med den problemstilling, der behandles i afhandlingen. En fordelagtig ikkebasis-variabel kan findes udfra de reducerede omkostninger. De reducerede omkostninger for en ikkebasisvariabel angiver ændringen i målfunktionsværdien, hvis den pågældende variabel hæves med en enhed. Eftersom målfunktionen skal minimeres, skal en variabel have negative reducerede omkostninger, hvis den skal indgå i basis, da en forøgelse af denne variabel vil svare til en sænkning af målfunktionsværdien. Denne indføres i basis, den nye basisløsning bestemmes, og de reducerede omkostninger for ikkebasis-variable opdateres. Denne proces gentages, indtil der ikke forekommer flere variable med negative reducerede omkostninger. Dette vil betyde, at den optimale løsning er fundet, da der ikke findes variable udenfor basis, der kan forbedre målfunktionsværdien. Søjlegenerering kan benyttes i situationer, hvor problemet bliver så stort, at simplexmetoden bliver ineffektiv. De mange søjler vil kræve meget oplagring og opdatering af informationer, hvilket både er hukommelses- og tidskrævende. Søjlegenerering udnytter, at i den optimale løsning til et sådant problem vil størstedelen af søjlerne være ude af basis, og den tilsvarende variabel vil antage værdien nul. Det er altså kun en lille delmængde af variablene, og dermed søjlerne, der er nødvendige for at komme frem til den optimale løsning. I søjlegenerering opereres der med to problemer: Masterproblemet og subproblemet. Masterproblemet er en LP-relaksering, der teoretisk set svarer til det oprindelig problem med kun en delmængde af søjlerne. Subproblemet har så til funktion at generere gunstige variable/søjler til masterproblemet, når de behøves. Masterproblemet kan dog godt afvige fra det oprindelige problem på flere måder, hvis der fx tages forbehold for nogle begrænsninger i subproblemet, når der genereres søjler. Det første masterproblem, der opstilles, skal ligesom simplexmetoden have en

43 4.2 To BAP modeller til søjlegenerering 31 gyldig basisløsning, for at søjlegenereringen kan initialiseres. Ved løsning af et masterproblem fås den bedst mulige løsning med de i masterproblemet givne søjler. Dette er dog ikke nødvendigvis den optimale løsning til det oprindelige problem, da det ikke kan garanteres, at masterproblemet indeholder de søjler, der vil indgå i denne. Når masterproblemet løses, beregnes en dual variabel for hver begrænsning. Disse duale multiplikatorer føres ned til subproblemet og er grundlaget for beregningen af de reducerede omkostninger og dermed favorable ikkebasis-søjler. Målfunktionen i subproblemet skal som nævnt afspejle gunstige søjler til masterproblemet, og koefficienterne tilknyttet hver variabel/søjle vil dermed være de reducerede omkostninger. De reducerede omkostninger kan beregnes udfra den oprindelige omkostning ved variablen og de for den givne basisløsning duale variable, hvilket omtales nærmere i afsnit 5.1. Søjlegenereringen fortsætter derfor, indtil subproblemet ikke kan identificere flere gunstige søjler, dvs. løsninger med en negativ målfunktionsværdi. Den sidste optimering af masterproblemet vil derfor være den optimale løsning til det oprindelige problem. Hvis det oprindelige problem var et IP problem, vil denne løsning dog ikke nødvendigvis være heltallig, da masterproblemet er LP-relakseret. Der kræves derfor efterfølgende en procedure til at finde frem til en heltallig løsning, fx Branch & Bound. Her vil søjlegenereringsalgoritmen skulle bruges igen i hver knude af B&B-træet, hvilket vil resultere i en Branch & Price løsningsmetode. 4.2 To BAP modeller til søjlegenerering Som beskrevet i kapitel 3 kan BAP modelleres på flere måder. Vi har blandt disse valgt to interessante modeller, der begge egner sig til løsning ved søjlegenerering: Modellen kaldet PAF i [6] og MDVRPTW i [3], se afsnit 3.2. Modellerne er baseret på forskellige antagelser, hvilket der også vil blive redegjort for i vurderingen af de to modeller. I det følgende afsnit vil vores forslag til, hvordan de to modeller kan løses med søjlegenerering, blive beskrevet. Efterfølgende vil de to modeller og tilhørende løsningsmetode blive vurderet med henblik på, hvilken afhandlingen skal omhandle. Efter valg af model følger en detaljeret beskrivelse af søjlegenerering til denne i afsnit 5.1.

44 32 Søjlegenerering og BAP Søjlegenerering til MDVRPTW I [4] beskrives søjlegenering til løsning af MDVRPTW, hvor problemet omskrives til en Set Partitioning model. En søjle vil i denne formulering svare til en rute for et givent depot. Det vil i vores problem være en rækkefølge af skibe, der lægger til ved den givne kajplads. Man kan se det som, at en kajplads besøger en given sekvens af skibe. I masterproblemet, der så er et LP-relakseret Set Partitioning problem, er hensigten at vælge den billigste kombination af søjler, så samtlige skibe bliver serviceret af en kajplads, samt at ingen kajplads servicerer mere end en sekvens af skibe. Omkostningen ved en søjle er givet ved summen af omkostningen for de enkelte skibe, der lægger til ved kajen. Et skibs omkostning er givet ved den samlede tid skibet har tilbragt i havnen; afgangstidspunktet minus ankomsttidspunktet. Subproblemet skal generere nye søjler, der kan forbedre den nuværende løsning. Dette gøres ved, for hver kajplads, at løse et korteste vej problem, hvor hver enkel skib (knude) maksimalt må optræde én gang. Herudover er der for hvert skib et tidsvindue, givet ved ankomst- og afgangstiden, hvori skibet skal besøges. Dette problem kendes som Elementary Shortest Path Problem with Time Windows og skal altså løses for de kajpladser, der ønskes genereret nye søjler for. Ulempen ved denne fremgangsmåde er som nævnt, at kajen skal inddeles i segmenter, hvor der kan ligge ét skib af gangen. Størrelsen af disse segmenter er vigtige for udnyttelsen af kajen, da kajen gerne skal udnyttes bedst muligt (dvs. små segmenter), samtidig med at løsninger skal være mulige i praksis (dvs. ikke for små segmenter). En mulighed kunne være at inddele kajen i segmenter af forskellige størrelser, hvor skibe kan lægge til de segmenter, der har samme længde eller længere end skibet. Ved denne fremgangsmåde vil der forekomme mindre sektioner til mindre skibe, så de ikke optager lange segmenter. Dog vil fremgangsmåden også begrænse løsningen, da store skibe vil være fastlåst til ligeledes store segmenter. Der er, så vidt forfatterne af denne afhandling ved, ikke tidligere nogen, der har prøvet sig med denne fremgangsmåde. En overvejelse er således gået på at ændre inddelingen af kajen i løbet af planlægningsperioden. Det vil medføre, at der skal findes en løsning for hver tidsperiode med en given kajinddeling for derefter at kombinere disse individuelle løsninger til en samlet løsning for hele planlægningsperioden. Der arbejdes altså med et sliding window, hvor kun en del af problemet betragtes af gangen. Det skal være tilladt for et skib at lægge til kaj i en given tidsperiode men først være færdig med serviceringen i løbet af efterfølgende perioder. Derfor skal en delperiode enten initialiseres med eventuelle skibe fra forrige delperiode, der ikke er færdige med serviceringen, eller de to delperioder skal overlappe. Hvis der vælges et overlappende sliding window, skal der samtidig tages højde for, at

45 4.2 To BAP modeller til søjlegenerering 33 der i overlapningen vil forekomme to forskellige kajinddelinger. Er et skib blevet placeret to forskellige steder i overlapningen, kan det kræve reoptimering af den første delperiode, hvis placeringen fundet i den efterfølgende er bedre, men er inkompatibel med en del af løsningen fra den forrige periode. Samtidig behøver skibe ikke nødvendigvis at blive serviceret i den aktive delperiode. De kan godt vente med at blive skemalagt til et senere tidspunkt, men viser det sig ved de efterfølgende perioder, at dette ikke er en god idé, kræver det igen reoptimeringer. Ekstra begrænsninger såsom vanddybde og skibe, der ikke kan lægge til givne kajsegmenter kan inkorporeres i subproblemet ved at fjerne kanter mellem de pågældende elementer Søjlegenerering til PAF Søjlegenereringen til PAF er baseret på inddelingen af (tid, kaj)-planet i tidsog kajsegmenter som forklaret i afsnit En søjle i masterproblemet vil svare til en placering af et skib givet ved de felter, som skibet vil dække ved den pågældende placering. Når der genereres søjler i subproblemet, vil der blive taget højde for ankomsttidspunkter og betjeningstider, samtidig med at den tilhørende omkostning ved placeringen beregnes. På denne måde har masterproblemet kun til funktion at vælge de søjler, der placerer skibene i planet billigst muligt, uden at de overlapper. Masterproblemet vil dermed svare til en kombination af et LP-relakseret Set Partitioning og Set Packing problem. Dette bliver beskrevet i detaljer i afsnit Søjlegenerering er afhængigt af, at subproblemet er forholdsvist hurtigt at løse. En mulighed kunne i dette tilfælde være dynamisk programmering. En søjle svarer som nævnt til en given placering af et givet skib, hvor de reducerede omkostninger kan bestemmes ved at summere over de duale multiplikatorer for de pågældende dækkede felter samt skibet og fratrække disse fra omkostningen ved placeringen. Skibet kan så flyttes rundt i planet, og de reducerede omkostninger kan beregnes dynamisk for hver placering af skibet. Der kan tages højde for fx ankomsttidspunktet a ved kun at forskyde skibet rundt i området efter tiden a, og på samme vis for andre begrænsninger; vanddybde, seneste afgang, skibe der ikke er kompatible med visse kajsegmenter, osv. En mere detaljeret gennemgang af subproblemet og den tilhørende dynamiske programmering er beskrevet i afsnit

46 34 Søjlegenerering og BAP 4.3 Vurdering af modeller og løsningsmetoder Flere faktorer har spillet en rolle i vurderingen af modeller og løsningsmetoder. Modellen skal gerne afspejle virkeligheden og kunne udnytte ressourcerne bedst muligt. Samtidig skal den tilhørende søjlegenerering kunne implementeres med gode resultater samt en rimelig køretid. Modellerne er baseret på forskellige antagelser og simplificeringer, som naturligvis spiller en rolle i valg af model. De mest centrale er tidligere beskrevet i afsnit 3.1. Den mest fremtrædende faktor er diskretiseringen, der finder sted i begge modeller. Som beskrevet i afsnit skal kajen diskretiseres i MDVRPTW, så hvert segment svarer til en kajplads, hvortil der kan lægge ét skib. I det tilfælde er problemet at bestemme, hvorledes kajen skal inddeles. Laves der for store segmenter, udnyttes kajen suboptimalt, men laves der for små segmenter, kan løsningen ikke lade sig gøre i praksis. Til gengæld er modelleringen af tiden kontinuert. I PAF skal kajen også diskretiseres. Men som forklaret i afsnit kan kajen dog inddeles i mindre segmenter, hvor skibe kun optager antallet af segmenter svarende til deres længde. Denne form for diskretisering kan derfor anses for at være tilnærmelsesvist kontinuert, hvis kajen inddeles i et passende stort antal små segmenter. Til gengæld skal tiden diskretiseres på samme vis, hvorved modelleringen af denne kun er diskret sammenholdt med MDVRPTW; dog kan et tilpas stort antal diskretiseringer igen resultere i en tilnærmelsesvis kontinuert modellering. Når et skib lægger til kaj, vil betjeningstiden, dvs. tiden det tager at læsse containere af og på, som regel variere alt efter, hvor der lægges til pga. den varierende afstand til de aktuelle containere. Desuden kan antallet/typen af kraner også variere. I MDVRPTW afhænger betjeningstiden rigtigt nok både af skibet og placering langs kajen, mens den i formuleringen af PAF i [6] kun afhænger af skibet. Dette kan dog afhjælpes i subproblemet, hvilket forklares i afsnit Nedenfor er opstillet en sammenfatning af fordele og ulemper ved de to forskellige modeller.

47 4.3 Vurdering af modeller og løsningsmetoder 35 MDVRPTW Fordele Få diskretiseringer af kaj lettere at løse Ulemper Diskret kaj - suboptimal/ugyldig løsning Søjlegenerering/VRP er set før - Uoriginalt Fuldstændig tidskontinuerlig Intuitiv tankegang som VRP Kendt teori og søjlegenerering - en sikker fremgangsmåde Ikke-triviel opdeling af kaj: Hvornår, hvordan? Usikre (og mange) reoptimeringer med sliding window Mange usikre parametre - sliding window: Længde, overlap, osv.? Svært at garantere optimalitet pga. mange parametre Indførelse af ekstra begrænsninger i subproblem kræver meget bogføring af kanter PAF Fordele Tilnærmelsesvis kontinuert udnyttelse af kaj Grafisk intuitiv model Intuitivt subproblem Nemt at indføre begrænsninger i subproblem Mulighed for at finde optimal løsning Ulemper Tidsdiskret - dog tilnærmelsesvist kontinuert! Mange små diskretiseringer Stor model Usikkerhed om sværhedsgrad af subproblem Da det fra start af var ønsket at løse problemet til optimalitet, faldt valget hurtigt på PAF, da det vil være svært at garantere optimalitet med kajdiskretiseringen i MDVRPTW. I PAF derimod kan kajen ved inddeling i små segmenter

48 36 Søjlegenerering og BAP nærme sig kontinuitet. Derudover finder vi det mere interessant at forsøge at løse PAF med søjlegenerering end blot at lave endnu en søjlegenerering til VRPTW.

49 Kapitel 5 Branch & Price Dette kapitel vil redegøre for den løsningsmetode til BAP, som er blevet udviklet og implementeret i denne afhandling. Først beskrives den overordnede løsningsmetode, mens der i de følgende afsnit vil blive gennemgået de komponenter, som er indeholdt i løsningsmetoden. I afsnit 5.1 behandles søjlegenerering, i afsnit 5.2 Branch & Bound og endelig i afsnit 5.3 og 5.4 forsøg på at forbedre løsningsmetoden mht. køretid og evnen til at løse problemer. Disse forbedringer indebærer tilføjelse af snit og opdeling af løsningsområdet i mindre tidsperioder for derefter at kombinere dem til en samlet løsning for hele planlægningsperioden. Den samlede løsningsmetode er baseret på en kombination af søjlegenerering og Branch & Bound (B&B). Kombinationen af disse kaldes Branch & Price (B&P). B&B har til formål at bestemme en heltallig løsning for det oprindelige BAP baseret på LP-løsninger for mindre underproblemer. LP-løsningen til underproblemerne findes ved brug af søjlegenerering, da deres størrelse ellers kan resultere i lange køretider. Løsningsmetoden er således baseret på, at der i hver knude af B&B-træet løses et LP-problem ved brug af søjlegenereringen. LP-problemet i en given knude er bestemt af stien i B&B-træet, da denne angiver, hvilke forgreninger der skal gælde. Dette omtales nærmere i afsnit B&B skal dermed bruge LP-løsninger fra søjlegenereringen, mens søjlegenereringen skal bruge informationer om foregreningerne til det givne LP-

50 38 Branch & Price Figur 5.1: Branch & Bound og søjlegenerering er de to hovedkomponenter, der arbejder sammen i løsningsmetoden. I B&B defineres underproblemer udfra en forgreningssti. Underproblemerne løses ved brug af søjlegenerering. problem, se figur 5.1. LP-problemet i en given knude tager afsæt i det LP-problem, der senest blev løst i den forrige aktive knude. Stien i B&B-træet vil således angive det næste LPproblem ved, hvis nødvendigt, at fiksere nogle variable til nul, hvis de overtræder de regler, som forgreningsstien definerer. Derudover skal også subproblemet tilpasses, således at der ikke kan blive genereret nye søjler, der overtræder reglerne givet ved forgreningerne, se afsnit I et forsøg på at forbedre køretiden af løsningsmetoden er der som nævnt implementeret to typer snit, hvorefter Branch & Price i stedet kan benævnes som Branch, Cut & Price, (BC&P). Snit kan genereres i en knude i B&B-træet hvis ønsket. I så fald findes en LP-løsning først med søjlegenereringen, hvorefter det undersøges, hvorvidt der kan tilføjes snit. Dette forklares i afsnit 5.3. Hvis der findes gyldige snit, der kan forbedre den nedre grænse, dvs. udelukke LPløsninger, tilføjes disse til LP-problemet, og det løses igen med søjlegenereringen. Sådan fortsættes, indtil der ikke kan findes flere gyldige snit. Når det er tilfældet, fortsættes til næste knude. Som nævnt forsøges også at inddele hovedproblemet i mindre delproblemer og til sidst kombinere løsningen af disse til en samlet løsning. Metoden benævnes som sliding window og er ikke en del af, hvad der betegnes som løsningsmetoden. Sliding window benytter BC&P løsningsmetoden til at løse delproblemerne for derefter at kombinere løsningerne til en samlet løsning. Ved benyttelse af sliding window kan den endelige løsning ikke længere garanteres værende optimal. Løsningsmetoden er udviklet i C# og ILOG cplex 10.0 er benyttet som LPog heltals-løser. Koden er vedlagt på en cd.

51 5.1 Søjlegenerering Søjlegenerering I afsnit er tankegangen bag søjlegenerering til BAP formuleret som PAF beskrevet. I dette kapitel vil søjlegenereringen og den bagvedliggende teori om BAP blive beskrevet i detaljer. Først opstilles og forklares den matematiske model, hvorefter master- og subproblemet vil blive defineret. Endelig beskrives, hvorledes de to problemtyper bliver løst samt den kostruktionsheuristik, der er benyttet til at danne startløsninger BAP og pakningsproblemer BAP kan formuleres som en form for pakningsproblem. I en sådan BAP model anses skibene for værende rektangler med dimensionerne givet ved skibets længde og dets betjeningstid. Disse rektangler skal så placeres i et todimensionelt rum, hvor den ene dimension svarer til kajen og den anden tiden, uden at overlappe hinanden. En løsning til et sådant pakningsproblem kan illustreres som på figur 5.2. Idet der kan drages paralleller mellem BAP- og pakningspro- Figur 5.2: Illustration af en løsning til et pakningsproblem. Centralt er, at kasserne ikke overlapper hinanden. blemstillingen, kan løsningsmetoder til pakningsproblemer ligeledes bruges som inspiration til udvikling af løsningsmetoder til BAP. En stor forskel ligger dog i, at kassernes dimensioner i pakningsproblemstillinger er konstante, mens den ene dimension af skibets rektangel i BAP som regel ændrer sig alt efter, hvor på kaj-aksen det placeres. I afsnit vil blive beskrevet en BAP model, der tager udgangspunkt i en model fra [6]. I modellen

52 40 Branch & Price i [6] er dimensionerne af rektanglerne faste, idet betjeningstiden kun afhænger af skibet, men dette vil dog blive ændret i den model, som bliver løst i dette projekt. En anden forskel på pakningsproblemer og BAP ligger i, hvad der ønskes optimeret. Pakningsproblemer handler ofte om at maksimere udnyttelsen af det givne areal, hvor det i BAP er et spørgsmål om at minimere den samlede flowtime. Et lignende problem findes dog i pakningslitteraturen; strip-packing. Her er arealet givet ved én fast dimension, og målfunktionen består i at placere den yderste kasse givet ved den anden dimension tættest muligt på nulpunktet. Den største mellem det problem og BAP ligger som nævnt i de ikke-konstante dimensioner på kasserne samt det dynamiske aspekt, hvor nogle kasser først kan placeres efter et givent punkt i den ikke begrænsede dimension Position Assignment Formulation I [6] beskrives bl.a. modellen kaldet Position Assigment Formulation (PAF), som er baseret på tankegangen ved pakning. Som ved pakning skal gælde, at rektanglerne ikke må overlappe hinanden i planet, da dette vil svare til kollisioner mellem skibene. Begge akser er diskretiseret, således at et givet koordinatsæt (t,k) i (tid, kaj)-planet vil svare til kajssegment k i tidsrum t. Første kaj- og tidssegment har koordinaten 0. Et skib optager det antal kajsegmenter og tidsrum, der er nødvendige for, at det henholdsvis kan være på pladsen og dets containere blive læsset af eller på. Dette vil svare til en mængde felter givet ved længden af skibet, s i, multipliceret med serviceringstiden, p ik. Målet er at minimere den totale flowtime. Figur 5.3 illustrerer, hvorledes et skib repræsenteres ved et rektangel og placeres i (tid, kaj)-koordinatsystemet. Skibet lægger til kaj startende ved kajsegment 3, til tiden 6. Skibet fylder herefter fire længdeenheder, og betjeningen tager syv tidsenheder. Hvert kajsegment kan fx svare til længden 25 m, hvorved skibet vil optage 100 m af kajen. Hvert tidssegment kan svare til en time, hvorved betjeningen vil tage 7 timer. Felterne i rektanglet fra kajsektion 3 til og med kajsektion 6 og fra tidsenheden 6 til og med tidsenheden 12 optages således af skibet. Alle skibe skal placeres i koordinatsystemet uden overlap. Den matematiske model tager udgangspunkt i modellen opstillet i [6]. Vi har dog valgt at lade y-aksen være positiv i nedadgående retning som på figur 5.3. Hvor en placering af et skib i [6] er angivet ved rektanglets nederste, venstre hjørne, vil det i den følgende model være givet ved det øverste, venstre hjørne. Først indføres parametre og variable.

53 5.1 Søjlegenerering 41 Figur 5.3: Skib givet ved rektangel. Længde på 4 kajsegmenter, betjeningstid på 7 tidsenheder. Skibet lægger til startende ved kajsegment 3 til tiden 6. Første kaj- og tidssegment er angivet med 0. N: Mængden af skibe, i. M: Mængden af kajsegmenter, k. U: Mængden af tidsrum, t. S: Længden af den samlede kaj. T : Længden af den betragtede tidsperiode/planlægningshorisont. y ikt : Binær beslutningsvariabel, der er lig 1, hvis øverste, venstre hjørne af rektanglet for skib i er placeret på kajsegment k i tidsintervallet t. x imn : Binær variabel, der angiver, om skib i dækker feltet givet ved kajsektion m i tidsintervallet n. a i : Ankomsttidspunktet for skib i. e k : Åbningstidspunktet for kajsegment k. E ik : Matrix med tidspunkter for, hvornår et skib i tidligst kan lægge til med øverst, venstre hjørne ved kajsegment k. p ik : Tiden, det tager at servicere skib i ved kajsegment k givet ved antal tidssegmenter. c i : Variabel der angiver afgangstidspunktet for skib i. v i : Vægten/prioriteten af skib i. s i : Længden af skib i givet ved antal kajsegmenter.

54 42 Branch & Price Herefter kan modellen opskrives som følger. min i N v i (c i a i ) (5.1) s.t. k+s i 1 m=k S s i+1 k=1 t+p ik 1 T p ik +1 t=e ik y ikt = 1 i N (5.2) x imn p ik s i (y ikt 1)BigM ik 0 i N, k M t E ik (5.3) n=t x imn 1 m M, n U (5.4) i N S s i+1 k=1 T p ik +1 t=e ik (p ik + t) y ikt = c i i N (5.5) x imn {0,1} i N, k M, t U (5.6) c i R i N (5.7) y ikt {0,1} i N, k M, t U (5.8) (5.9) Den samlede tid tilbragt i havnen, flowtime, er givet ved differensen mellem afgangs- og ankomsttidspunktet. Målfunktion (5.1) minimerer den akkumulerede, vægtede flowtime for skibene. På en grafisk fremstilling af en løsning, se figur 5.3, kan afgangstidspunktet aflæses som tids-koordinatet for det første felt efter rektanglet langs tids-aksen; på figur 5.3 er t = 13. Antaget at skibet har lagt til direkte efter ankomst til tiden seks, vil flowtime blive 13 6 = 7 svarende til betjeningstiden. Begrænsning (5.2) sørger for, at alle skibe bliver placeret i det todimensionelle rum én og kun én gang. En placering af et skib svarer til, at skibet bliver tildelt en kajplads givet ved starttidspunktet t samt den første sektion k på kajen, som skibet optager, dvs. placeringen af øverst, venstre hjørne af rektanglet. Placeringen af et skib vil i det følgende være angivet ved koordinatsættet (t,k) for det øverst, venstre hjørne. I begrænsning (5.2) er det to-dimensionelle rum indskrænket for hvert skib vha. summationernes grænser, således at visse begrænsninger overholdes. Grænserne på den første sum over kajen sørger for, at skibet lægger til uden at overskride kajens dimensioner. Grænserne på den anden summation over tiden tager højde for tre omstændigheder: Skibet kan først lægge til kaj efter dets ankomst; samtlige af de kajsegmenter, som skibet vil benytte, skal være åbne; og skibet skal være klar til afgang inden tidshorisontens udløb. Matricen E ik er konstrueret på baggrund af ankomsttiderne a i og åbningstiderne e k. Et element (i,k) angi-

55 5.1 Søjlegenerering 43 ver det tidssegment, hvor skib i kan påbegynde sin betjening, hvis det øverste, venstre hjørne er placeret ved kajsegment k. Elementets værdi vil være bestemt som maksimum af skibets ankomsttidspunkt og åbningstiderne for alle de kajsegmenter, som skibet vil optage, når det starter ved segmentet k. Udfra et startpunkt (t,k) skal der bestemmes, hvilke p ik s i felter skibet vil optage. Dette gøres i begrænsning (5.3) ved brug af en Store-M notation. For hvert skib i betragtes de mulige felter, hvori det øverste, venstre hjørne af rektanglet kan placeres, dvs. t E ik, da skibet naturligvis skal være ankommet og kajsegmenterne åbnet. Hvis y ikt = 1, vil skibet have det pågældende felt som sit startpunkt. Denne situation betragtes i det følgende. Hermed bliver leddet med BigM-faktoren nul, hvorefter følgende begrænsning opnås for placeringen (t,k) af skib i. k+s i 1 k =k t+p ik 1 t =t x ik t p iks i 0 i N Denne begrænsning sørger for, at x-variablene svarende til de p 1 efter t følgende felter i tids-aksen og s 1 efter k følgende felter langs kaj-aksen bliver sat til 1. Hermed optages de givne kajsegmenter i de givne tidsperioder. Hvis der betragtes et felt (t,k), som ikke er startpunkt for skib i, vil y ikt = 0, hvorved BigM vil træde i kraft i (5.3). BigM ik er defineret som BigM ik = p ik s i, i N, k M. Dermed skal summen af x-variablene blot være større end eller lig nul, og der er således ikke nogen x-variable, der vil blive tvunget til at være lig 1. Der bliver altså ikke optaget nogle felter. Begrænsning (5.3) kan omskrives til følgende udtryk ved at ophæve parentesen. k+s i 1 m=k t+p ik 1 n=t x imn p ik s i y ikt 0 i N, k M t E ik Begrænsning (5.4) dikterer, at et felt højst kan optages af ét skib af gangen, dvs. ingen rektangler kan overlappe hinanden. I begrænsning (5.5) beregnes afgangstidspunktet for skib i ved at bestemme starttidspunktet t for, hvornår skibet lægger til kaj, og dertil lægge serviceringstiden. Begrænsninger (5.6) og (5.8) definerer variablene x og y til at være binære. I forhold til modellen i [6] er (5.1)-(5.8) er blevet udvidet, idet betjeningstiden ikke kun kommer til at afhænge af skibet, men også af placeringen på kajen, dvs. variablen benævnes i stedet p ik, hvor k svarer til et kajsegment. Dette stemmer

56 44 Branch & Price bedre overens med praksis, da skibets placering i forhold til de aktuelle containere naturligvis vil have indflydelse på betjeningstiden, da transportafstanden vil variere. Herudover kan antallet af kraner forskellige steder på kajen have indflydelse på hvor hurtigt et skib kan betjenes. Indførelsen af hvert kajsegments åbningstid er desuden en tilføjelse Masterproblem Som skrevet i afsnit vil masterproblemet for PAF have til funktion at placere skibene i planet, mens subproblemet skal generere mulige placeringer. Målfunktionen i subproblemet er baseret på duale værdier fra masterproblemet, hvorfor dette skal være et lineært problem. Masterproblemet kan formuleres som følger. min i I L i x i (5.10) s.t. i I A ij x i = 1 j J (5.11) B ik x i 1 k K (5.12) i I 0 x i 1 (5.13) hvor omkostningen L i = c i a i er flowtime, og I er mængden af søjler i masterproblemet. J er mængden af skibe, og K er mængden af felter i (tid, kaj)-planet. Masterproblemet vil indeholde J, en per skib, GUB (Generalized upper bound) eller set partitioning begrænsninger (5.11). Disse sørger for, at hvert rektangel bliver placeret i planen. Dog kan placeringer være fraktionelle, så et givet skib ligger flere steder med visse fraktioner, der skal summe op til 1. Derefter K set packing begrænsninger (5.12) svarende til antallet af (tid,kaj)-felter i planen. På hvert felt i planet må samlet set kun ligge svarende til ét skib. Idet fraktionelle løsninger er tilladt som konsekvens af LP-relakseringen, kan flere skibe dog optage samme felt, så længe summen af deres fraktioner ikke overstiger 1. En søjle i masterproblemet kan opfattes i to dele. Først en vektor bestående af J elementer, dvs. en søjle i matricen A ij, svarende til GUB begrænsningerne (5.11). Disse er efterfulgt af en vektor med K elementer, dvs. en søjle i matricen B ik, svarende til set packing begrænsningerne (5.12). For den første del af søjlen i vil gælde, at der vil være netop ét j J, hvor A ij er 1, mens de resterende vil være nul. Dette 1-tal angiver, hvilket skib søjlen giver en placering for.

57 5.1 Søjlegenerering 45 Figur 5.4: Figuren viser, hvordan felterne i koordinatsystemet bliver overført til søjler. De efterfølgende K elementer vil svare til felterne i koordinatsystemet. Det antages, at kajen er inddelt i M kajsegmenter og U tidssegmenter. K vil være lig M U. På figur 5.4 er illustreret, hvordan en plads i en vektor i fra matricen B ik svarer til et felt i koordinatsystemet. Fx vil de første M pladser i vektoren i rækkefølge repræsentere alle kajsegmenterne til tidsrum 0 og så fremdeles. I implementeringen af søjlegenereringen er der ofte brug for at omregne en given plads i en søjle om til et (t,k)-koordinatsæt. Dette kan gøres ved følgende udregninger, hvor n svarer til en plads i søjlen, J antallet af skibe og M antallet af kajsegmenter. t = (n J )/ M k = (n J ) mod M En søjle kan konstrueres som følger. Tallet givet ved p ik s i vil svare til antallet af felter, som det respektive rektangel dækker. Der vil være et tilsvarende antal værdier i søjle i i matricen B, der er lig 1, resten er 0. Placeringen af 1-tallerne i søjlen fra matricen B vil angive en placering af skibet. Omkostningen L i (flowtime) forbundet med hver søjle angiver, hvor længe skibet vil ligge i havnen, hvis den respektive placering vælges. På figur 5.5 er et eksempel på, hvordan en placering af et skib omsættes til en søjle, som forklaret i det foregående. Denne praktiske fortolkning af en søjle gør det intuitivt lettere at forstå, hvorledes søjlegenereringen er strukturet. Desuden udnyttes det i løsningen af subproblemet.

58 46 Branch & Price Figur 5.5: Eksempel på en søjle til variabel x i for skib 1, der fylder fire felter og er placeret som vist på figuren. Masterproblemet er implementeret i C# og løst vha. cplex Subproblem Fordelagtige søjler til masterproblemet er karakteriseret ved at have negative, reducerede omkostninger. Subproblemet har til formål at bestemme sådanne søjler. En reduceret omkostning for en placering af et skib, dvs. en søjle, angiver, hvor meget målfunktionsværdien vil ændre sig, hvis denne variabel forøges. Hvis en søjle derfor har negative, reducerede omkostninger, vil den være gunstig for masterproblemet, idet målfunktionsværdien vil aftage, hvis denne variabel/søjle tages i brug. Det vil dog ikke altid være sådan, at den samlede omkostning af masterproblemet bliver lavere, når der tilføjes en ny søjle. Dette skyldes, at de pladser, som den nye søjle vil bruge, ikke nødvendigvis er ledige, hvorfor et andet skib muligvis skal finde en ny position. Dette fænomen er kendt som degenerering. Givet er et LP-problem: min cx Ax 1 x R For en optimal løsning x vil de reducerede omkostninger for en ikke-basisvariabel x j være givet ved følgende udtryk. c j = c j (y ) T A j 0

59 5.1 Søjlegenerering 47 hvor y er de duale varible for løsningen x. De reducerede omkostninger er ikke-negative, da variablen x j ellers ville indgå i den optimale løsning. For at forbedre løsningen x skal der derfor findes en ny variabel x a, som opfylder: c a = c a (y ) T A a < 0 (5.14) En reduceret omkostning for en søjle beregnes altså som omkostningen af søjlen fratrukket de duale værdier multipliceret med koefficienten i søjlen for de respektive begrænsninger, jvf. (5.14). Figur 5.6 er en illustration af masterproblemet (5.10)-(5.13), hvor der for hver begrænsning er angivet den tilhørende duale variabel α eller β og for hver søjle den tilhørende omkostning L. Første søjle er ment som et eksempel på, hvorledes den reducerede omkostning beregnes for en søjle. Denne søjle indgår naturligvis allerede i masterproblemet, men princippet er det samme for de søjler, som skal genereres i subproblemet. Figur 5.6: Illustration af masterproblemet (5.10)-(5.13). α og β er de duale variable for hver begrænsning, og L omkostningen for hver søjle. Værdierne i matricerne A og B er enten 0 eller 1, hvorfor der i beregningen af de reducerede omkostninger blot skal fratrækkes de duale værdier for de begrænsninger, hvor den pågældende variabel indgår. Dette vil i praksis, for en given variabel/søjle i, svare til den duale værdi for skibet, dvs. α j hvor A ij = 1, og de duale værdier for de felter, som skibet dækker, dvs. β k hvor B ik = 1. De reducerede omkostninger rc 1 for den første søjle på figur 5.6 beregnes som defineret i (5.14). rc 1 = L 1 α 1 β 1 β K

60 48 Branch & Price Der er nu redegjort for, hvordan de reducerede omkostninger, der ligger til grund for subproblemet, kan beregnes. Nu skal subproblemet løses ved at identificere søjler med negative, reducerede omkostninger. Et subproblem kan opstilles som en matematisk model og løses med en solver som fx cplex. Alt efter subproblemets udformning kan dette være meget tidskrævende. Et subproblem behøves dog ikke løst til optimalitet, da enhver søjle med negative, reducerede omkostninger vil være fordelagtig i masterproblemet og ikke bare søjlen med den mest negative, reducerede omkostning. Af samme grund kan der tilføjes flere søjler med negative, reducerede omkostninger til masterproblemet ad gangen fremfor blot én. Ved (5.15)-(5.21) er formuleret en matematisk model for subproblemet. Modellen bestemmer den søjle, der har de mest negative, reducerede omkostninger, hvis en sådan eksisterer. Hvis dette ikke er tilfældet, vil løsningen have en målfunktionsværdi på nul, og søjlegenereringen terminerer. min i N st. i N k+s i 1 m=k S s i+1 k=1 S s i+1 k=1 S s i+1 k=1 t+p ik 1 n=t T p ik +1 T p ik 1 t=e ik T p ik 1 y ikt (c i a i α i k+s i 1 m=k t+p ik 1 n=t x imn β mn ) (5.15) t=e ik y ikt 1 (5.16) x imn p ik s i y ikt 0 i N, k M t E ik (5.17) t=e ik (p ik + t) y ikt = c i i N (5.18) x imn {0,1} i N, k M, t U (5.19) y ikt {0,1} i N, k M, t U (5.20) c i R i N (5.21) Ved søjlegenerering kan det ofte være subproblemet, der er den mest tidskrævende del, da det skal løses mange gange. Det er derfor vigtigt at finde en metode, hvorved subproblemet kan identificere søjler på en passende tid. I dette tilfælde kan subproblemet med fordel løses med en afart af dynamisk programmering. Selve beregningen af en reduceret omkostning for et skib på en placering kan foretages i konstant tid. Denne beregning skal så gentages et antal gange alt efter hvilke eller hvilken søjle, der ønskes returneret til masterproblemet. Værste fald er, hvis en søjle med mindst mulige reducerede omkostninger skal bestemmes, hvorved de reducerede omkostninger for alle mulige søjler skal beregnes. Værste-fald scenariet vil have O( N M U ) beregninger. Et færre antal be-

61 5.1 Søjlegenerering 49 regninger og dermed en kortere køretid kan opnås ved blot at returnere en søjle med negative, reducerede omkostninger fremfor søjlen med de mest negative, reducerede omkostninger. Når de reducerede omkostninger er beregnet for en placering af et skib, kan de også nemt beregnes for den placering, der resulterer af at forskyde skibet ét tidssegment ud, se figur 5.7. De reducerede omkostninger for den nye placering kan beregnes ved at lægge de duale værdier til for de felter, som er dækket ved den nye placering, og fratrække de duale værdier for de felter, der nu ikke længere er dækket. Idet skibet er forskudt en tidsenhed ud, skal omkostningen/flowtimen desuden hæves med 1, da det forlader havnen én tidsenhed senere. På figur 5.7 er givet et eksempel på, hvordan de reducerede omkostninger kan beregnes og opdateres dynamisk. Figur 5.7: Eksempel på beregning af reducerede omkostninger for skib 0 med ankomst til tiden 0. Fra omkostningen fratrækkes den duale værdi for skibet samt de dækkede felter. Placeringen af skib 0 forskydes et felt langs tidsaksen og de reducerede omkostninger opdateres. Dvs. omkostningen øges med én tidsenhed, de duale værdier for felt 0 og 1 udgår, mens de duale værdier for felt 6 og 7 lægges til. Detaljeret pseudokode for den dynamiske programmering til løsning af subproblemet, hvor der blot ønskes fundet den første negative, reducerede omkostning, kan ses i bilag A.1. Subproblemet kan modificeres således, at det overholder givne begrænsninger eller restriktioner. Dette gøres ved at udelukke visse placeringer af skibet. Det kan opfattes som at begrænse søgeområdet i (tid, kaj)-planet, når skibet forskydes rundt som led i den dynamiske programmering. Søgeområdet kan fx afskæres således, at der kun søges i den del af planet, der er efter skibets ankomsttidspunkt. På samme måde kan flere typer begrænsninger inkorporeres. Det kan være fysiske begrænsninger, der gør, at visse dele af kajen er udelukket for det givne skib. Sådanne restriktioner på søgeområdet gør, at der ikke bliver genereret ulovlige eller uønskede søjler. Indgrænsninger af søgeområdet i subproblemet udnyttes også i forbindelse med forgreningsregler i Branch &

62 50 Branch & Price Bound, se afsnit 5.2.1, og i sliding window metoden, se afsnit 5.4. I afsnit 6.2 vil blive testet, hvilke søjler subproblemet skal identificere til masterproblemet for at minimere den samlede køretid for søjlegenereringen Konstruktionsheuristik En startløsning givet ved en mængde søjler er nødvendig for at initialisere søjlegenereringen. Vi har udviklet en simpel grådig konstruktionsheuristik til at bestemme en startløsning. Denne tager udgangspunkt i mængden af skibe sorteret efter deres ankomsttidspunkt i stigende rækkefølge. Skibet med laveste ankomsttidspunkt forsøges som udgangspunkt placeret i (tid, kaj)-planet til ankomsttidspunktet og på den kajplacering, der vil resultere i den laveste betjeningstid. Hvis denne placering ikke er tilladt eller allerede optaget, forskydes skibet ét kajsegment ud af kaj-aksen. Dette fortsættes, indtil der findes en gyldig placering, eller der ikke længere er plads til skibet på kajen. Hvis sidstnævnte er tilfældet, forskydes skibet én tidsenhed ud langs tids-aksen, og kajplaceringen nulstilles, dvs. skibet forsøges placeret med øverste, venstre hjørne ved det første kajsegment, k = 0. Når en placering er fastsat for skibet, reserveres de pågældende felter, således at der efterfølgende ikke kan placeres skibe på disse, hvorved det er sikret, at løsningen er gyldig. Denne procedure gentages for hvert skib, indtil samtlige skibe er placeret i planen. Masterproblemet initialiseres med de pågældende søjler, og hermed er søjlegenereringen i gang. Der kan dog være tilfælde, hvor konstruktionsheuristikken ikke finder en gyldig løsning. Der er derfor i modellen indført nogle dummy-søjler, der har til formål at garantere, at der altid kan findes en gyldig startløsning. Der vil være en dummysøjle med en høj omkostning, i dette tilfælde 1000, for hvert skib. En dummysøjle har i den pågældende søjle i A-matricen (GUB begrænsningerne (5.11)) et 1-tal. Dette angiver, hvilket skib dummy-søjlen repræsenterer. På alle pladserne i søjlen i B-matricen (set packing begrænsningerne (5.12)) er værdien nul, dvs. søjlen svarer ikke til nogen egentligt placering af skibet. Et skib kan altså altid indgå i en gyldig løsning ved at lade dens dummy-søjle indgå, da denne ikke optager nogle (tid, kaj)-felter. Dette sker dog med høje omkostninger, hvorfor subproblemet nemt vil kunne identificere alternative og billigere placeringer for skibet efterfølgende. En dummy-søjle kan siges at repræsentere et skib, der ikke bliver placeret. Indgår

63 5.2 Branch & Bound 51 en dummy-søjle i en løsning, vil resultatet stadig være en gyldig kajallokeringsplan blot med ét skib mindre. Hvis der derimod ikke er indført dummy-søjler i problemet, vil der kunne forekomme situationer, hvor der ikke findes en gyldig løsning. I sådan et tilfælde vil resultatet derfor være, at man slet ikke har en kajallokeringsplan. Det må formodes at være bedre trods alt at have en gyldig plan for flest mulige skibe, hvilket vil være tilfældet med dummy-søjler. Dummy-søjler kan derfor også bruges til at undersøge andre problemstillinger indenfor BAP. Det kan fx være en undersøgelse af, hvor mange skibe en containerhavn vil have kapacitet til at betjene. 5.2 Branch & Bound I dette afsnit vil vi kort gøre rede for idéen bag B&B samt beskrive de enkelte komponenter, der tilsammen udgør vores B&B metode. B&B benyttes, hvis den løsning vores søjlegenerering ender med, ikke er heltallig. Er dette tilfældet, så deles det oprindelige problem op i to eller flere delproblemer, der igen løses vha. søjlegenerering. Hvorledes denne opdeling af problemet foregår, bestemmes af forgreningsreglen, der beskrives i afsnit Efter opdelingen løses det næste delproblem. Hvilken rækkefølge delproblemerne bliver løst i, bestemmes af hvilken søgestrategi, der benyttes. De to søgestrategier, vi har anvendt, beskrives i afsnit Delproblemerne er organiseret i et træ, hvor roden er det oprindelige problem, og hver knude angiver et delproblem. Aktive knuder angiver de knuder, der endnu ikke er blevet besøgt, dvs. de delproblemer der endnu ikke er blevet løst. Omkostningen af den optimale, fraktionelle løsning i et givent delproblem angiver den nedre grænseværdi for dette problem. Den optimale løsning i rodknuden er således en nedre grænse for hele problemet. Er den optimale løsning i et delproblem heltallig, så er den en gyldig løsning til det oprindelige heltalsproblem, og dermed en øvre grænseværdi for den optimale løsning. B&B fortsætter, indtil der ikke er flere delproblemer, der har en nedre grænse, der er lavere end den bedst fundne øvre grænse, der i så fald vil være den optimale løsning. Hvis et delproblem resulterer i en nedre grænse, der er højere end den hidtil bedst fundne heltallige løsning (den øvre grænse), behøves undertræet af delproblemet ikke undersøges og kan derfor afskæres. Idéen bag B&B er, at store dele af træet forhåbentlig kan afskæres, så en optimal løsning opnås på begrænset tid. For hurtigt at finde en god gyldig løsning til heltalsproblemet, dvs. en god øvre

64 52 Branch & Price grænse, har vi implementeret muligheden for at løse det oprindelige problem heltalligt med cplex, hvor kun de søjler, der allerede er blevet genereret i roden, bliver medtaget Forgreningsregel Forgreningsreglen bestemmer, hvordan et givent (del)problem skal opdeles i nye, mere begrænsede, delproblemer. Den klassiske måde at gøre dette på er at fiksere en variabel til én i det ene nye delproblem og nul i det andet, når beslutningsvariablene er binære. I vores løsningsmetode er dette dog ikke umiddelbart en god idé, da nul-fikseringen generelt vil være meget svag. Dette skyldes, at selv om en given søjle, dvs. en placering af et skib, bliver fikseret til nul, vil skibet ofte kunne flyttes en lille smule op eller ned ad kajen til praktisk talt samme omkostning. Vi har derfor udviklet to andre forgreningsregler, som vil blive beskrevet i det følgende Inkluderering af felt (IAF) Den første forgreningsregel, vi har udviklet, finder for et givent skib, s, et enkelt felt, f, i (tid, kaj)-planet. I det ene barn, 1-forgreningen, skal s optage f, mens det modsatte er tilfældet i det andet barn, 0-forgreningen, hvor s ikke må optage f. Modelleringsmæssigt betyder dette, at i 1-forgreningen fikseres alle variable, der placerer s andetsteds, samt de variable der placerer andre skibe på f, til nul. Tilsvarende vil alle variable, der placerer s, så det optager f, blive fikseret til nul i 0-forgreningen. Samtidig skal det sikres, at der i subproblemet ikke bliver genereret nye søjler, der overtræder forgreningsreglen. Dette gøres ved at begrænse søgeområdet i subproblemet for s således, at det i 0-grenen ikke indeholder placeringer, der dækker felt f, mens den mere restriktive 1-gren indebærer, at søgeområdet indskrænkes til placeringer, der indbefatter felt f. I 0-grenen vil søgeområdet for de andre skibe, der ikke forgrenes på, ikke ændre sig, mens de placeringer, der dækker felt f, vil være overflødige i 1-grenen for de andre skibe. Skibet og feltet, der forgrenes på, findes ved at betragte LP-løsningen i den givne knude. Her findes et felt, som et enkelt skib optager med en stor fraktion, hvor der samtidig ligger minimum ét andet skib. Denne kombination af felt og skib findes ud fra følgende funktion. max s,f ( F (s, f) + γ(f) ) (5.22)

65 5.2 Branch & Bound 53 hvor F (s,f) angiver, hvor stor en fraktion s optager f med i LP-løsningen. γ(f) udregnes som 1 ψ AS(f). Her er AS(f) antallet af skibe, der deles om f. Hvis AS(f) er lig 0 eller 1, sættes γ(f) til 0. Hermed vægtes felter med to eller flere skibe højere end felter med blot et enkelt skib. Antallet af skibe skal samtidig gerne være så tæt på to som muligt, hvilket forklares i det følgende. Parametren ψ er sat til 0.1. Ønsket med denne vægtning er at finde et skib, der næsten allerede er blevet placeret, og så tvinge dette igennem i 1-forgreningen samt forhindre det i 0- forgreningen. Idéen med at finde et felt, hvor der helst er placeret to skibe, bunder i tanken om, at både 1- og 0-forgreningen i så fald vil have mulighed for at placere et skib heltalligt. 1-forgreningen vil selvfølgelig indgrænse s til at skulle optage f, og 0-forgreningen vil åbne op for, at det andet skib, der optager f, vil kunne ligge der heltalligt. Som nævnt kan søgeområdet i subproblemet for IAF indskrænkes. Men hvor en 1-forgreningsregel begrænser søgeområdet, for det skib reglen er pålagt, til området umiddelbart rundt om regelfeltet, er 0-forgreningen meget svag. Dette ses ved at betragte, hvor lidt denne begrænser søgeområdet efter nye søjler; for det pågældende skib er det kun området rundt om regelfeltet, der kan undlades, mens søgeområdet for de andre skibe slet ikke begrænses Opdeling af kaj (OAK) En alternativ forgreningregel er baseret på en opdeling af kajen. Ved denne opdeling skal et givent skib, s, være placeret over et punkt på kajen, k, i det ene barn og under samme punkt i det andet barn. s findes som det skib, der indgår med flest fraktionelle værdier i LP-løsningen, og k findes som udgangspunkt som det punkt, hvor halvdelen af skibet er placeret på hver side. Skibet, der forgrenes på, har ofte mange fraktionelle placeringer. Vi har valgt at finde en opdeling af kajen, hvor summen af fraktionerne over opdelingen er tættest mulig på 0,5. Dette gøres ved at lave en form for sweep sum. Fra kajens start vandres langs kajen. Når en placering af forgrenings-skibet nås, lægges den fraktionelle værdi til en sum S. Når denne sum overskrider 0,5 stoppes. Skibets sidste placering, hvis fraktion er blevet summeret, noteres som n. Herefter bliver det undersøgt, hvorvidt placeringen n skal tilhøre den nedre eller øvre del, dvs. skal opdelingen ske ved startpunktet for placering n eller ved den efterfølgende fraktionelle placering n + 1. Lad f(n) angive fraktionen for placering n og S summen, der er opnået ved placering n. Med andre ord, bliver differensen mellem summen S og 0,5 mindst, hvis f(n) er inkluderet i summen

66 54 Branch & Price eller ej? Følgende tjek udføres. S 0,5 > 0,5 (S f(n)) (5.23) Hvis (5.23) er opfyldt, opdeles kajen ved startpunktet for placering n, dvs. n tilhører den nedre del. Ellers opdeles kajen ved startpunktet for placering n + 1, dvs. n tilhører den øvre del. På figur 5.8 er givet to eksempler på opdeling af kajen for et givet forgreningsskib. Placeringen af skibet markeret med blå angiver den position, hvor summen S overstiger 0,5. I eksempel A) er (5.23) opfyldt, og opdeling sker over den blå, fraktionelle placering n. Det modsatte gælder i eksempel B), og opdelingen sker ved placering n + 1. Figur 5.8: Eksempler på hvorledes kajen opdeles i forgreningsreglen OAK. Opdelingen sker således, at summen af skibets fraktionelle placeringer på hver side af opdelingen er tættest muligt på 0,5. Efter opdelingen svarer 0-grenen til, at skibet skal lægge til på den lille del af kajen, mens 1-grenen dikterer, at skibet skal lægge til på det store del af kajen. Et skib lægger til på en given del af kajen, hvis dets øverste række af felter ligger inden for den del. Dvs. dele af et skib fra den øverste del kan godt lægge på den nederste del, hvis blot den øverste række af skibets felter ligger ovenfor opdelingen. Koordinaten k for et skibs placering på kajen afgør altså, på hvilken side af opdelingen skibet ligger. Hvis opdelingen sker ved kajsegment n, vil en placering, hvor k < n, være på den øvre del, mens k n vil være på den nedre del. Der kan med denne forgreningsregel forekomme situationer, hvor der ikke kan forgrenes på et givet skib. Dette sker, hvis et skib optræder fraktionelt i LPløsningen, og samtlige af disse fraktionelle placeringer ligger på samme kajplads. Skulle dette forekomme, vil der dog altid være minimum ét andet fraktionelt skib i løsningen, da den billigste af disse placeringer nødvendigvis må overlappe

67 5.2 Branch & Bound 55 med et andet skib. For dette andet skib kan dog også gælde, at samtlige af dets fraktionelle placeringer ligger på samme kajplads, og der kan derfor heller ikke forgrenes på dette. I et sådant tilfælde, hvor løsningen er fraktionel, men ikke indeholder nogle skibe, hvorpå forgreningsreglen OAK kan benyttes, opstår altså et problem i B&B-knuden. En mulig løsning på problemet kunne være i stedet at benytte forgreningsregel IAF i denne knude, men vi har valgt en anden løsning. Hvis der nås en knude, hvor den fraktionelle løsning ikke gør det muligt at benytte OAK, løses problemet heltalligt med de søjler, der allerede er tilgængelige i knuden. Dvs. LP-problemet, der resulterede i den pågældende fraktionelle løsning, løses i stedet som IP, hvorved en heltallig løsning opnås, og undergrenen afskæres. En fordel ved denne løsning er, at den er nem at implementere og har en hurtig køretid. Ulempen er dog, at idet IP-problemet løses uden at tilføje yderligere søjler, kan det ikke længere garanteres, at B&B kommer frem til den optimale løsning. Håbet er dog, at det kun er et meget begrænset antal instanser og knuder, hvor situationen, hvor OAK ikke kan benyttes, vil forekomme. Ved angivelse af resultater i projektet vil det blive indikeret, hvis situationen er opstået og IP-problemet løst, da løsningen dermed ikke kan garanteres som værende optimal. Ved benyttelse af forgreningsregel OAK vil søgeområdet i subproblemet kunne begrænses betragteligt i både 0- og 1-forgreningen, da det kun er nødvendigt at søge efter nye søjler, der overholder de aktuelle regler for det givne delproblem. For hvert delproblem svarer et sæt forgreningsregler. Disse vil kunne implementeres i subproblemet ved at undersøge hvilke to forgreninger, der er mest restriktive mht. hvor højt oppe og langt nede på kajen, skibet må placeres. Hvis disse er overholdt, er de resterende forgreningsregler også overholdt. På figur 5.9 er vist et eksempel på søgeområdet i et subproblem for et delproblem defineret af forgreningsregler Søgestrategi Vi har implementeret to forskellige søgestrategier til vores B&B-træ. Den første og mest simple er dybde-først-søgning, hvor træet gennemsøges ved at fortsætte ned ad en enkelt gren, indtil delproblemet enten bliver forkastet grundet grænseværdi, eller en gyldig løsning er fundet. Herefter vandres tilbage gennem træet, indtil der nås en forælder med et aktivt barn, dvs. en gren der endnu ikke har været undersøgt. Søgningen fortsætter så ned gennem denne gren. Den anden søgestrategi, vi har valgt at implementere, er bedste-først-søgning. Denne vælger altid at undersøge den knude i træet, der ser mest lovende ud, dvs. den knude der har den laveste nedre grænseværdi.

68 56 Branch & Price Figur 5.9: Søgeområdet i et subproblem for et delproblem defineres af forgreningsreglerne. Søgeområdet er bestemt af de mest restriktive forgreningsregler - Her angivet med rød. I de næste afsnit vil de to søgestrategier blive præsenteret, og fordele og ulemper ved begge vil blive diskuteret, [21] Dybde-først-søgning Dybde-først-strategien er simpel at implementere, da aktive knuder kan lagres i en stak. Når der oprettes nye børn, så lægges de øverst i stakken, og den næste knude, der skal undersøges, vil så altid ligge øverst. Stakstrukturen er en yderst simpel måde at implementere backtracking på, når der afskæres knuder. Figur 5.10 illustrerer, hvorledes en stak kan benyttes til implementering af en dybde-først-søgning. Hver knude skal indeholde information om, hvilken effekt den givne forgreningsregel har i det pågældende delproblem. I implementeringen af løsningsmetoden svarer dette til en liste, der angiver, hvilke søjler der er blevet fikseret til enten nul eller ét i det pågældende delproblem. Når der skal backtrackes op gennem træet, frigives disse søjler blot, hvorved forældrens delproblem genskabes. Fordelene ved dybde-først er udover den lette implementering, at en gyldig, heltallig løsning bliver fundet relativt hurtigt. Dette skyldes, at delproblemerne bliver mere og mere begrænsede, jo længere ned i træet der kigges. En anden fordel ved dybde-først er, at antallet af aktive knuder ikke kan overstige O(m), hvor m er dybden af træet. Denne dybde afhænger selvfølgelig af, hvilken forgreningsregel der benyttes.

69 5.2 Branch & Bound 57 Figur 5.10: Eksempel på dybde-først-søgning implementeret i form af en stak. Der vandres ned i en gren til knude 4, og de aktive knuder lagres i en stak som forklaret. Knude 4 afskæres, og der backtrackes til forælder 2, hvorefter søgningen fortsætter til det andet barn, knude 3. Den primære ulempe ved dybde-først er, at søgningen på ingen måde bliver ledt i retning af den optimale løsning, hvilket kan resultere i, at en meget stor del af søgetræet skal gennemsøges, inden den optimale løsning bliver fundet. I værste tilfælde skal samtlige delproblemer gennemsøges. Netop fordi dybdeførst-søgningen søger i dybden først, har det stor indflydelse, hvorvidt det er 0-forgreningen eller 1-forgreningen, der bliver lagt øverst på stakken, når der skabes nye delproblemer i en knude. Dette gælder især, hvis IAF forgreningsreglen benyttes, hvor der er meget stor forskel på styrken af de to forgreninger Bedste-først-søgning I forhold til dybde-først-søgning, så er bedste-først lidt sværere at implementere. I stedet for en stak til de aktive knuder skal der bruges en sorteret liste. Denne liste skal være sorteret efter knudernes nedre grænseværdi i tiltagende rækkefølge. Blandt de aktive knuder vælges den med den laveste nedre grænseværdi, dvs. den første knude i den sorterede liste. Med denne fremgangsmåde kan søgningen altså springe rundt i træet, hvorfor en given knude skal kende til alle de regler, der definerer det givne delproblem. Når en knude besøges, så fjernes alle fikseringer fra det forrige delproblem, og samtlige regler for det nye delproblem bliver applikeret. Den nedre grænseværdi for en ny knude kan bestemmes på to forskellige måder; doven og ivrig. Disse vil blive forklaret i det efterfølgende. Ved ivrig forstås, at den nedre grænseværdi for et delproblem udregnes ved at løse LP-problemet, så snart knuden oprettes, hvorimod den blot nedarves fra forældren i doven. Fordelen ved den ivrige fremgangsmåde er, at den rigtige grænseværdi udregnes,

70 58 Branch & Price hvorfor det virkelig vil blive en bedste-først-søgning, hvilket ikke kan garanteres, hvis grænseværdien nedarves. Ligeledes kan knuden forkastes med det samme, hvis grænseværdien er højere end omkostningen af den hidtil bedste fundne løsning. Ulempen ved ivrig er, at det tager tid at udregne den rigtige grænseværdi, og denne tid kan være spildt, hvis der senere findes en gyldig løsning, der er billigere end forældrens grænseværdi. Fordelene ved bedste-først er, at kun knuder, der har en nedre grænseværdi, der er lavere end den optimale værdi - de såkaldte semikritiske delproblemer - besøges. Dette er bevist i [21, Sætning 9]. Bedste-først-søgningen resulterer altså oftest i et klart mindre søgetræ end ved dybde-først-søgning. Til gengæld kan antallet af aktive knuder stige til bredden af søgetræet. Søgestrategien har desuden en indvirkning på LP-problemet. Ved en dybdeførst-søgning ændrer LP-problemet sig som regel ikke meget, når den næste knude skal besøges. Dette skyldes, at den næste knude, der skal besøges, ofte er barn til den forrige. Hvis dette er tilfældet, vil LP-problemet kun ændres svarende til en enkelt forgrening som beskrevet i afsnit Den anden mulighed er, at undertræet skal afskæres, og der skal backtrackes. I så fald vil LP-problemet skulle ændres i henhold til de forgreninger, som kan afskæres. Ved en bedste-først-søgning i B&B-træet kan LP-problemet dog ofte ændre sig betydeligt, når den næste knude skal besøges. Som tidligere beskrevet kan søgningen springe rundt i træet, dvs. gå fra en knude i en del af træet til en anden knude et helt andet sted i træet, hvilket vil resultere i, at alle forgreninger i det forrige problem skal fjernes, og alle nye forgreninger til det nye delproblem skal påtvinges. LP-problemet kan derfor ændre sig betydeligt. cplex har en hotstart-funktion, der gør, at den kan bruge løsningen til det forrige LP-problem som basis til det næste. Dette er en fordel, når LP-problemet ikke ændrer sig meget, og kan medvirke til, at det kan løses hurtigere end ellers. Hotstart kan derfor være gunstigt at bruge ved dybde-først-søgningen, mens effekten højst sandsynligt er mindre ved bedste-først-søgningen. Hotstart-funktionen er altid slået til i denne afhandling. 5.3 Snit For at forbedre køretiden og dermed være i stand til at løse større probleminstanser har vi implementeret en række forbedringer til vores løsningsmetode. Da det største problem ud fra vores tests, se kapitel 6, ikke har været at finde den optimale løsning men derimod at lukke heltalsgabet, startede vi med at

71 5.3 Snit 59 implementere nogle snit. Da de viste sig ikke at have den ønskede effekt, har vi desuden udviklet et sliding window system, se afsnit 5.4, hvor det oprindelige problem bliver delt op i mindre, overlappende problemer, der er lettere at løse. Løsningerne til disse delproblemer kombineres så til en samlet løsning for hele problemet. Vi har implementeret to forskellige slags snit, i håb om at forbedre den nedre grænseværdi, LP-løsningen. Idéen med disse snit er, at de skal fraskære en del af det fraktionelle løsningsområde, hvori der ikke ligger nogen heltalsløsninger. De to forskellige typer snit er: odd hole (ulige hul), der definerer en flade i det konvekse hylster, jf. [1, theorem 2.1.3], og Chvátal-Gomory rank-1 snit, som er beskrevet til et søjlegenereringsframework i [20] Ulige hul snit Et hul i en graf er defineret som minimum fire knuder, der er forbundet i en cirkel uden korder. Et ulige hul (odd hole[1]) er et hul, hvor antallet af knuder, der indgår, er ulige. For at finde et ulige hul snit, der er overtrådt, er det nødvendigt at lave en konfliktgraf. Denne bliver lavet ud fra en fraktionel LP-løsning. For hver søjle, der er i basis i denne løsning, oprettes der en knude. Der vil være forbindelse mellem to knuder, hvis de to tilhørende søjler overlapper i (tid, kaj)-planet. Vægten af denne kant mellem knuderne v og w er givet som 1 x v x w, hvor x er den fraktionelle værdi, søjlen har i LP-løsningen. Hvis der i denne konfliktgraf findes et ulige hul, er følgende begrænsning en forstærkning af LP-relakseringen. x j N 1 (5.24) 2 j N hvor N er mængden af de knuder, der indgår i det ulige hul. Fremgangsmåden til at finde et ulige hul i en graf er som følger. Da denne fremgangsmåde kræver, at grafen er orienteret, så erstattes hver oprindelige ikke-orienterede kant i konfliktgrafen med to nye, modsatrettede kanter. For hver knude v V i konfliktgrafen oprettes der herefter to nye knuder, v 1 og v 2. Hvor der før var en orienteret kant (v,w) A, laves nu to nye orienterede kanter mellem de opsplittede knuder, (v 1, w 2 ) og (v 2, w 1 ), begge med samme vægt som den oprindelige kant. Figur 5.11 viser, hvordan den endelige konfliktgraf med opsplittede knuder og orienterede kanter dannes udfra den oprindelige konfliktgraf.

72 60 Branch & Price Figur 5.11: En ikke orienteret kant i den oprindelig konfliktgraf erstattes med to modsatrettede kanter. Herefter opdeles hver knude i to knuder, som forbindes som vist på figuren. Alle kanter har samme vægt. Herefter findes den korteste sti mellem v 1 og v 2 for samtlige af de oprindelige knuder. Hvis den korteste af disse stier har en samlet vægt på under én, så vil stien iflg. [2] markere en overtrådt ulige hul ulighed. Findes en overtrådt ulighed, så tilføjes denne til LP-relakseringen, og problemet løses igen, hvorefter der tjekkes for flere overtrådte uligheder. Herudover er det værd at bemærke, at set packing begrænsningerne (5.12) udgør klikesnit, der også definerer en flade på det konvekse hylster, [1, Theorem 2.1.1]. Dette indses ved igen at betragte den originale konfliktgraf. Her er en klike en komplet delgraf. Grundet definitionen af vores set partitioning formulering og konfliktgrafen, så kan en klike kun opstå, hvis alle de inkluderede søjler har minimum ét punkt tilfælles. Er dette tilfældet, så findes begrænsningen allerede i form af vores (tid, kaj) set packing begrænsninger, (5.12) Chvatal-Gomory rang 1 snit Chvatal-Gomory rang 1 snit er i [20] anvendt på masterproblemet for et VRP- TW. I det følgende vil snittet blive benævnt som CG1. Snittene betegnes som rang 1, idet de kun er baseret på de originale begrænsninger i problemet. Snittene stiger i rang, hvis de også baseres på snit af lavere rang. Således vil snit

73 5.4 Sliding window 61 med rang 2 være baseret på systemer, der både indeholder de oprindelige begrænsninger samt snit af rang 1. CG snit med rang 1 forsøger vi at anvende på masterproblemet for PAF, (5.10)-(5.13). Givet er et LP-problem, hvor løsningsrummet er defineret af set packing-begrænsninger. min{cλ : Aλ b, λ 0, λ R n } (5.25) Et CG snit til dette problem kan formuleres som følger. ua λ ub Vektoren λ er en løsning til LP problemet (5.25), og vektoren u er såkaldte CG-multiplikatorer. Det er CG-multiplikatorerne u, der skal identificeres for at bestemme et gyldigt snit. Dette kan gøres ved at formulere et passende separationsproblem og løse det. Der haves en fraktionel løsning λ til (5.25). De to variable γ = ud og γ 0 = ub bliver indført, og separationsproblemet kan formuleres således, [20]. max γλ γ 0 (5.26) γ j ud j j N (5.27) γ 0 > ub 1 (5.28) u i 0 i M (5.29) γ j Z j N {0} (5.30) Den optimale løsning u til (5.26)-(5.30) vil definere det CG snit, der er mest overtrådt. Enhver gyldig løsning til problemet vil identificere et CG snit. Masterproblemet til PAF, (5.10)-(5.13), indeholder både set partitioning, (5.11), og set packing begrænsninger, (5.12). Som formuleret ovenfor gælder CG snittet for et system bestående udelukkende af set packing begrænsninger, se (5.25). Derfor ses der bort fra begrænsningerne (5.11) fra masterproblemet, når separationsproblemet (5.26)-(5.30) opstilles, og det er således matricen B i (5.12), der svarer til matricen D i (5.27). Separationsproblemet er implementeret og løst i cplex. 5.4 Sliding window Da det er begrænset, hvilken problemstørrelse der kan løses til optimalitet, har vi valgt at forsøge at dele det overordnede problem ind i mindre delproblemer.

74 62 Branch & Price Håbet er, at de mindre delproblemer er forholdvis nemme at løse, og kombinationen af delløsninger til en samlet løsning giver et godt resultat. Ved benyttelse af denne fremgangsmåde kan optimalitet ikke længere garanteres. I forbindelse hermed kan det undersøges, hvorvidt teoretisk optimalitet stemmer overens med praktisk optimalitet. I afsnit 8.4 vil disse begreber blive præsenteret. Sliding window og vores oprindelige løsningsmetode vil blive undersøgt med hensyn til disse to former for optimalitet. Fremgangsmåden, hvor problemet inddeles i mindre delproblemer, kaldes her for sliding window. Problemet inddeles efter skibenes ankomsttider, så kun en mindre mængde af skibene planlægges af gangen. Planlægningsvinduet dækker således en tidsperiode, og skibene med en ankomsttid indenfor denne periode indgår i modellen for dette delproblem. To på hinanden følgende tidsvinduer vil have et tidsinterval tilfælles; de vil overlappe. På figur 5.12 kan ses, hvorledes sliding window forskydes til de forskellige tidsvinduer. Længden af overlappet samt det egentlige tidsvindue angives som parametre. Formålet med at definere et overlap er at forbedre samspillet mellem løsningerne af tidsvinduerne. I det følgende forklares, hvordan der kan frigives skibe fra overlappet i et tidsvindue til det efterfølgende tidsvindue. Dette gøres for at modvirke, at optimeringen af et tidsvindue sker alt for meget på bekostning af det efterfølgende. Overlappet kan siges at være et forsøg på at forbinde deloptimeringerne af de individuelle tidsvinduer, så det tilnærmer sig en mere samlet optimering af hele planlægningshorisonten. Samtidig er overlappet implementeret på en sådan måde, at det er garanteret, at kombinationen af gyldige løsninger til delproblemer giver en gyldig løsning til det samlede problem. Figur 5.12: Et såkaldt sliding window forskydes langs tidsaksen. Dette angiver et tidsvindue, der vil lægge til grund for et delproblem. Mellem to på hinanden følgende placeringer af sliding window vil være et overlap.

75 5.4 Sliding window 63 Skibe fra et givet tidsvindue kan være planlagt, så de optager kajplads på tidspunkter, der tilhører det efterfølgende tidsvindue. Disse kan være placeret u- fordelagtigt i forhold til skibene i det efterfølgende tidsvindue. Skibe, der er planlagt, så deres begyndelsestidspunkt ligger indenfor overlappet, bliver således frigivet til modellen for det efterfølgende tidsvindue og bliver dermed planlagt på ny. Derudover skal garanteres, at løsningerne for delproblemer kan kombineres til en fælles, gyldig løsning for det samlede problem. Dette kræver, at skibe ikke kolliderer, når løsningerne sammensættes. Skibe, hvis begyndelsestidspunkt ligger inden tidsvinduets start og afgangstidspunkt efter tidsvinduets start, bliver ikke frigivet til efterfølgende planlægning. De optager dermed nogle (tid, kaj)-felter i tidsvinduet, som ikke kan benyttes i planlægningen. På figur 5.12 er illustreret, hvilke skibe der fikseres, og hvilke der frigives. Figur 5.13: Givet er en placering af sliding window. Delproblemet vil udgøres af de skibe, der i den forrige placering af sliding window blev planlagt indenfor overlappet, samt de skibe der har ankomsttidspunkt i løbet af tidsvinduet. Grønne skibe fra forrige placering af vinduet bliver frigivet til omplanlægning i den nuværende placering, mens de røde dele af skibe angiver, hvor felter bliver fikseret. De felter, der er optaget af skibe fra den foregående periode, må altså ikke benyttes i planlægningen af skibene i tidsvinduet. Dette ordnes ved at tilføje en overlapnings-variabel i masterproblemet, som altid vil antage værdien 1. Omkostningen for søjlen er nul. De første J elementer vil alle være nul, da søjlen ikke angiver placeringen af et givet skib. Blandt de efterfølgende K elementer vil være 1-taller på pladserne svarende til de optagede felter, ellers nul. Da denne søjle altid indgår i løsningen af masterproblemet, vil der ikke kunne vælges andre søjler, hvor de fikserede felter indgår. Løsningerne til delproblemerne kan derfor umiddelbart sammensættes, idet der allerede er taget højde for, at løsningerne

76 64 Branch & Price skal være kompatible i overlappet. Sliding window metoden er testet i afsnit 6.6 og diskuteret i afsnit 8.4.

77 Kapitel 6 Test af løsningsmetode Dette kapitel omhandler test af den samlede løsningsmetode. Formålet er at finde den kombination af indstillinger, hvor løsningsmetoden præsterer bedst. Ved hver test er der sat en tidsgrænse på 30 minutter. Ved test af den samlede løsningsmetode rapporteres både køretiden og målfunktionsværdien. Hvis programmet terminerer inden de 30 minutter, rapporteres den optimale løsning og tiden, det tog at bestemme denne. Kører programmet længere end 30 min, angives tidsforbruget som N/A samt den hidtil bedst fundne heltallige løsning. Indledningsvist vil selve søjlegenereringen blive testet. Dette indebærer en test af, hvilke søjler der skal returnes fra subproblem til masterproblem for, at søjlegenereringen finder frem til den optimale LP-løsning hurtigst. Efterfølgende vil Branch & Bound implementeringen blive testet. Først undersøges de grundlæggende strategier, forgreningsregel samt søgestrategi i B&Btræet. Når denne struktur er bestemt, testes forskellige muligheder for at forbedre køretiden. Følgende tests vil blive udført. 1. Forgreningsregel - Inkludering af felt (IAF) eller Opdeling af kaj (OAK), se Søgestrategi - Dybde- eller bedste-først, se

78 66 Test af løsningsmetode 3. Nedre grænse - Nedarve fra forældre (doven) eller løse LP i hver knude (ivrig), se Tilføjelse af snit, se Indførelse af sliding window, se 5.4. De testinstanser, der ligger til grund for testene, vil blive præsenteret i det følgende. 6.1 Data til test Til test af den samlede løsningsmetode benyttes egne genererede data. Data er fremstillet på samme form som i [3] således, at den samme filindlæser kan benyttes til begge sæt data. Det vil i det følgende blive forklaret, hvordan data bliver tilpasset til vores tilnærmelsesvist kontinuerte løsningsmetode. Data i [3] består af i alt 80 instanser. Disse er inddelt i to sæt. Det ene sæt, i3, består af 30 instanser, der alle indeholder 60 skibe og 13 kajsegmenter. Det andet sæt, i2, indeholder 50 instanser af varierende antal skibe og kajsegmenter. Der er 30 instanser med 25 skibe (ti á fem, syv og ti kajsegmenter) og 20 instanser med 35 skibe (ti á syv og ti kajsegmenter). Der er givet en betjeningstid for hvert skib for hvert kajsegment svarende til det diskrete BAP samt længden af hvert kajsegment. Skibslængder og betjeningstider er genereret ud fra fordelinger, der er baseret på indsamlet data fra Gioia Tauro. Den samlede løsningsmetode kan løse et BAP, som er tilnærmelsesvist kontinuert. Data skal derfor behandles, så det også kan bruges problemstillingen hvor kajen er delt ind i mindre kajsegmenter, og skibene kan optage flere segmenter. I den tilnærmelsesvist kontinuerte løsningsmetode skal gælde en betjeningstid for hver mulig placering af et skib. Vi har valgt at basere disse betjeningstider på, at der for hvert delsegment skal svare en betjeningstid. Den resulterende betjeningstid for en placering beregnes derefter som et gennemsnit af betjeningstiderne for de kajsegmenter, som skibet ligger udfor. Figur 6.1 illustrerer, hvorledes betjeningstiden beregnes for et skib, der er lagt til kaj udfor en given mængde kajsegmenter. For at kunne bestemme en betjeningstid for hvert kajsegment udfra det diskrete data foretages nogle mellemregninger. Vi har antaget, at det ikke vil være nødvendigt at regne med kajsegmenter mindre end fem meter. Hvert af de store kajsegmenter fra det diskrete data inddeles således i mindre kajsegmenter á

79 6.1 Data til test 67 Figur 6.1: Betjeningstid for hvert kajsegment omregnet til tilnærmelsesvist kontinuert betjeningstid for en given position af skibet. fem meter med samme betjeningstid som det store segment. Kajsegmenterne á fem meter kan herefter sammensættes til større kajsegmenter, alt efter hvilken størrelse der ønskes anvendt. Kravet til længden af kajsegmenterne er dermed, at det skal være et multiplum af fem. Betjeningstiden for de endelige kajsegmenter beregnes som et gennemsnit af betjeningstiden for de små fem meters-segmenter, de består af. Beregningen foregår altså på samme vis, som når den resulterende betjeningstid for en placering beregnes. På figur 6.2 er et eksempel på, hvordan et stykke af den diskrete kaj opdeles i små stykker á fem meter, for derefter at blive omregnet til stykker á 15 meter til den tilnærmelsesvist kontinuerte løsningsmetode. Figur 6.2: Betjeningstiden for hvert segment beregnes ud fra delsegmenter á fem meter. Den oprindelige kaj inddeles i fem meters segmenter, der nedarver betjeningstiden.

80 68 Test af løsningsmetode Egen data er som nævnt genereret på samme form som data for Gioia Tauro. Værdier er genereret tilfældigt efter forskellige fordelinger. Ti testinstanser er genereret med henholdsvis 15, 20 og 25 skibe og fem eller syv kajsegmenter svarende til kajlængder på henholdsvis 1225 meter og 1725 meter. Længden af skibene er af samme størrelsesorden som i Gioia Tauro ({150, 175, 200,..., 400} meter), dvs. elleve forskellige længder. Svarende til hvert skib bliver et tilfældigt tal fra en normalfordeling med middelværdi 5 og spredning 1,7 genereret og rundet op til nærmeste heltal, minimum nul, maksimum ti. Dette tal angiver en plads i vektoren med skibslængder, og den tilsvarende længde tildeles skibet. Ankomsttiderne bestemmes som et tilfældigt tal fra en uniformfordeling mellem 0 og 180. Endelig skal betjeningstiden bestemmes for hvert af de overordnede kajsegmenter, som efterfølgende brydes ned til fem meters segmenter. Betjeningstiderne genereres fra en normalfordeling, med middelværdi svarende til skibets længde delt med ti og spredning på 10, og rundes op til nærmeste heltal. Hvis værdien er mindre end ti, rundes op til dette. I tests til optimering af løsningsmetoden benyttes følgende ti testinstanser: 2 15 skibe, fem kajsegmenter (15x5-01 og 02) 2 20 skibe, fem kajsegmenter (20x5-01 og 02) 2 20 skibe, syv kajsegmenter (20x7-01 og 02) 2 25 skibe, fem kajsegmenter (25x5-01 og 02) 2 25 skibe, syv kajsegmenter (25x7-01 og 02) Vi har i alle testene valgt at opdele kajen i stykker af 25 meter. Eftersom skibenes størrelse går fra 150 til 400 meter med et spring på 25 meter, og betjeningstiderne ligeledes er opdelt i minimum 25 meters intervaller, vil denne opdeling kunne give en løsning, der er lige så god som med enhver anden finere opdeling. Alle test og resultatkørsler er foretaget på en PC med en AMD Athlon 64bit 2,40GHz processor og 4GB RAM. 6.2 Test af subproblem Med vores implementering af den dynamiske subproblemsløser har vi mulighed for at vælge, hvilke søjler der skal tilføjes efter hver enkelt gennemkørsel. Det

81 6.2 Test af subproblem 69 gælder om at finde de bedste søjler men samtidig ikke at bruge for lang tid i subproblemet og ikke tilføje så mange søjler, at masterproblemet bliver for stort. I nedenstående er en negativ søjle en søjle med negativ reduceret omkostning. De forskellige scenarier, vi har testet, er følgende. 1. Den første negative søjle for hvert skib. (FirstFE) 2. Den mest negative søjle for hvert skib. (MinFE) 3. De fem mest negative søjler for hvert skib. (Min5FE) 4. De ti mest negative søjler for hvert skib. (Min10FE) 5. Den mest negative søjle i alt. (Min-1) 6. De 20 mest negative søjler i alt. (Min-20) 7. De 100 mest negative søjler. (Min-100) 8. Samtlige negative søjler. (All) I testen bliver LP-relakseringen i roden løst, og det interessante er hermed, hvor mange søjler det har været nødvendigt at tilføje, samt hvor lang tid det har taget. Resultatet af denne test kan ses i tabel 6.1 og 6.2, hvor Min5FE viser sig at være en smule hurtigere end MinFE. Som forventet genererer den dog også en del flere søjler. Da det er uvist, hvorvidt de ekstra søjler kan blive værdifulde senere hen i løsningsprocessen, eller om de blot gør problemet unødvendigt stort, har vi valgt at holde os til Min5FE - på trods af de 40% ekstra søjler. Min10FE tilføjer endnu flere søjler, men her bliver tidsforbruget forværret i to af de svære instanser, hvilket resulterer i et betragtelig større samlet tidsforbrug. Idéen bag FirstFE, hvor den første brugbare søjle, der findes, tilføjes, viser sig ikke at være god. Det er kun i halvdelen af de ti testinstanser, at LP-relakseringen i rodknuden bliver løst inden for tidsgrænsen på 30 minutter. Tiden, der bliver sparet ved ikke at skulle undersøge hele (tid, kaj)-planet igennem, bliver altså hurtigt brugt i de mange ekstra cplex kørsler til løsning af LP-problemet. De tre indstillinger, der ikke tager højde for, hvilket skib de mest negative søjler tilhører, giver alle betragtelig dårligere resultater end Min5FE. Det er kun Min20, der er i stand til at løse alle ti testinstanser inden for tidsgrænsen og på trods af, at den ikke tilføjer særlig mange søjler mere end Min5FE, så bruger den alligevel mere end 13 minutter mere i alt. Endelig er der den sidste indstilling, der tilføjer samtlige søjler med en negativ reduceret omkostning. Dette resulterer i, at kun fem af de ti instanser bliver

82 70 Test af løsningsmetode FirstFE MinFE Min5FE Min10FE Data Tid (s) Søjler Tid (s) Søjler Tid (s) Søjler Tid (s) Søjler 15x , , , , x , , , , x5-01 N/A N/A 111, , , x5-02 N/A N/A 239, , , x , , , , x , , , , x5-01 N/A N/A 490, , , x5-02 N/A N/A 422, , , x , , , , x7-02 N/A N/A 21, , , Samlet N/A N/A 1368, , , Tabel 6.1: De første fire subproblemsindstillinger. Der angives, hvor lang tid der er brugt på at løse LP-relakseringen i roden, samt hvor mange søjler der er blevet tilføjet. Min-1 Min-20 Min-100 All Data Tid (s) Søjler Tid (s) Søjler Tid (s) Søjler Tid (s) Søjler 15x , , , , x , , , , x , , , N/A N/A 20x , , , N/A N/A 20x , , , , x , , , , x , , N/A N/A N/A N/A 25x5-02 N/A N/A 495, , N/A N/A 25x , , , , x , , , N/A N/A Samlet N/A N/A 1994, N/A N/A N/A N/A Tabel 6.2: De sidste fire subproblemsindstillinger. Der angives, hvor lang tid der er brugt på at løse LP-relakseringen i roden, samt hvor mange søjler der er blevet tilføjet. løst og på trods af, at de fem instanser bliver løst rimelig hurtigt, så bliver der tilføjet så mange søjler til problemet, at det utvivlsom vil give problemer senere hen, når der skal forgrenes og tilføjes endnu flere søjler.

83 6.3 Test af forgreningsregel og søgestrategi Test af forgreningsregel og søgestrategi Da valget af forgreningsregel og søgestrategi ikke kan garanteres at være uafhængige, har vi valgt at teste samtlige fire kombinationer. Resultatet af denne test kan ses i tabel 6.3. DFS / IAF DFS / OAK BFS / IAF BFS / OAK Data Tid (s) Pris Tid (s) Pris Tid (s) Pris Tid (s) Pris 15x , , , , x5-02 N/A , N/A , x5-01 N/A 691 N/A 691 N/A 691 N/A x5-02 N/A 562 N/A 562 N/A 562 N/A x , , , , x , , , , x5-01 N/A 685 N/A 673 N/A , x5-02 N/A 721 N/A 721 N/A 721 N/A x , , , , x , , , , Tabel 6.3: Resultat af forgrenings- og søgestrategitest. DFS = dybde-først-søgning, BFS = bedste-først-søgning, IAF = Inkludering af felt, OAK = opdeling af kaj. Det ses, at den bedste kombination af søgestrategi og forgreningsregel er bedsteførst-søgning og OAK. Det er den eneste kombination, der når at finde den optimale løsning til syv af de ti instanser. Dybde-først-søgning med OAK når at løse seks af instanserne til optimalitet, mens de to kombinationer med IAK forgreningsreglen kun formår at løse halvdelen af de ti instanser. 6.4 Test af nedre grænse Når bedste-først søgestrategien benyttes, kan den nedre grænse for et barn findes på to måder, som beskrevet i afsnit Ved ivrig udregnes den nedre grænse i barnet, når det oprettes, hvorimod den nedre grænse blot nedarves i doven. Det er disse to forskellige fremgangsmåder, vi har testet mod hinanden. Testresultaterne kan ses i tabel 6.4, hvor det fremgår, at de to metoder er meget lig hinanden i tidsforbrug,lige bortset fra en enkelt instans; 25x5-01. Her er det tilsyneladende en meget dårlig idé at udregne den nedre grænse i en knude, idet den oprettes, dvs. den ivrige fremgangsmåde. Godt nok er den optimale løsning fundet, men optimaliteten er ikke bevist inden for de 30 minutter - med den dovne fremgangsmåde bliver problemet løst på lidt over syv minutter. Baseret på dette har vi valgt at holde os til den dovne fremgangsmåde.

84 72 Test af løsningsmetode Doven Ivrig Data Tid (s) Pris Tid (s) Pris 15x , , x , , x5-01 N/A 691 N/A x5-02 N/A 562 N/A x , , x , , x , N/A x5-02 N/A 721 N/A x , , x , , Tabel 6.4: Resultat af nedarvningstest. Der er angivet, hvor lang tid det har taget at løse problemet samt den bedste løsning, der er fundet. Dette er enten den optimale løsning, hvis problemet er blevet løst indenfor tidsgrænsen, og ellers er det den bedste fundne løsning efter de 30 minutter. 6.5 Test af snit I vores test af de to snit, vi har implementeret, har vi kigget på, hvilken effekt snittene har på den nedre grænse i rodknuden af vores B&B træ. I tabel 6.5 kan resultaterne af testen ses, hvor de to snit er blev testet hver for sig, samt kombinationen af begge. Da separationsproblemet til at finde det mest overtrådte CG rang-1 snit er N P-komplet, og vi derfor kan komme ud for, at problemet kører i meget lang tid uden at finde et gyldigt snit, har vi valgt at indføre en tidsgrænse på ti sekunder. Det ses, at det kun er i en enkelt af de ti testinstanser, at der er fundet et overtrådt ulige hul snit. Her har de to snit, der er blevet tilføjet, ikke haft nogen effekt på den nedre grænse. Det kan altså konkluderes, at det ulige hul snit for sig selv er en dårlig idé, da det generelt forværrer køretiden af løsningsmetoden. CG rang-1 snittene giver ikke meget bedre resultater, men de bliver dog indført i tre af instanserne. Desværre er effekten af snittene til at overse, mens tidsforbruget er ganske stort. Synergieffekten ved at indføre begge snit samtidigt udebliver også. Godt nok bliver den nedre grænse en smule strammere i et enkelt tilfælde, men det er igen på bekostning af et meget stort tidsforbrug. Ydermere bliver effekten af CG rang-1 snittene på den ene testinstans fjernet med den samtidige indførsel af ulige hul snittene. Efter denne test har vi besluttet ikke at benytte os af nogen af de to typer snit, da effekten ikke står mål med tidsforbruget.

85 6.6 Test af sliding window 73 Ulige hul CG rang-1 Begge Data LB S t (s) LB S t (s) LB S t (s) 15x , , ,13 15x , , ,28 20x ,88 3, ,46 1, ,28 20x ,65 3, , ,17 20x , , ,50 20x , , ,05 25x , , ,89 25x , , ,00 25x , , ,12 25x , , ,32 Tabel 6.5: LB angiver, hvor meget den nedre grænse er blevet forstærket ved indførelse af det pågældende snit. S angiver, hvor mange snit der er blevet tilføjet, og t angiver, hvor meget ekstra tid det har taget at tjekke for overtrådte snit samt indførelsen af disse. 6.6 Test af sliding window I testen af vores sliding window har vi valgt at fokusere på, hvorvidt det er muligt at genskabe de optimale løsninger, vi allerede har fundet med vores ikke opdelte løsningsmetode. Herudover er det selvfølgelig interessant at se, om vi med sliding window frameworket er i stand til at løse nogle af de instanser, der ellers har voldt os problemer. I denne test og fremover vil den oprindelige løsningsmetode uden sliding window blive benævnt OL, mens sliding window vil blive benævnt SW x/y, hvor x og y er henholdsvis vindues- og overlapstørrelsen. Indledningsvist er i tabel 6.6 angivet de bedste løsninger fundet med OL for det samlede problem indenfor tidsgrænsen. Ligeledes er angivet køretiden samt den nedre grænse ved terminering. I de tilfælde, hvor OL finder den optimale løsning inden for tidsgrænsen, svarer den nedre grænse naturligvis til den optimale løsning. I de tre tilfælde, hvor en løsning ikke er fundet inden for tidsgrænsen, vil den nedre grænse være interessant ift. den løsning, som sliding window metoden finder. I tabellerne vil værdier fremhævet med fed skrift være den optimale løsning, mens en understregning angiver, at løsningen er den bedste, der er fundet, i de ti forskellige metoder (OL og ni indstillinger af sliding window). I tabel kan resultaterne af testen ses, hvor vi har testet tre forskellige sliding window størrelser på henholdsvis 25 timer, 75 timer og 150 timer. Hver sliding window størrelse er blevet testet med tre tilhørende overlapslængder.

86 74 Test af løsningsmetode OL Data Tid (s) Pris LB 15x , x , x5-01 N/A x5-02 N/A x , x , x , x5-02 N/A x , x , Tabel 6.6: Løsninger fundet med oprindelig løsningsmetode for det samlede problem. SW 25/2 SW 25/4 SW 25/10 Data Tid (s) Pris Tid (s) Pris Tid (s) Pris 15x5-01 5, , , x5-02 4, , , x , , , x , , , x7-01 3, , , x7-02 5, , , x , , , x , , , x7-01 6, , , x , , , Tabel 6.7: Sliding window med en vindueslængde på 25 timer og et overlap på henholdsvis 2, 4 eller 10 timer. SW 75/10 SW 75/20 SW 75/30 Data Tid (s) Pris Tid (s) Pris Tid (s) Pris 15x5-01 7, , , x , , , x5-01 N/A - N/A - N/A - 20x5-02 N/A - N/A - N/A - 20x7-01 6, , , x7-02 6, , , x , , , x5-02 N/A - N/A - N/A - 25x7-01 7, , , x7-02 8, , , Tabel 6.8: Sliding window med en vindueslængde på 75 timer og et overlap på henholdsvis 10, 20 eller 30 timer.

87 6.6 Test af sliding window 75 SW 150/25 SW 150/40 SW 150/55 Data Tid (s) Pris Tid (s) Pris Tid (s) Pris 15x5-01 6, , , x , , , x5-01 N/A - N/A - N/A - 20x5-02 N/A - N/A - N/A - 20x7-01 6, , , x7-02 6, , , x , , , x5-02 N/A - N/A - N/A - 25x7-01 7, , , x , , , Tabel 6.9: Sliding window med en vindueslængde på 150 timer og et overlap på henholdsvis 25, 40 eller 55 timer. OL er i stand til at løse syv af de ti testinstanser til optimalitet inden for de afsatte 30 minutter. I de tre resterende instanser, 20x5-01, 20x5-02 og 25x5-02, finder OL en løsning, der er bedre end eller lige så god som den bedste, der bliver fundet i nogen af de ni sliding window kørsler. Dette er markeret med en understregning. OL resulterer i dette tilfælde i et gab på 0.47%. Generelt kan det siges, at der ikke er én af de ni sliding window indstillinger, der er den bedste. Med en vindueslængde på 25 timer kan samtlige problemer løses, men det er kun et enkelt, hvor den optimale løsning findes. Sættes vindueslængden til 75 timer med et 30 timers overlap, SW 75/30, kan den optimale løsning findes i seks tilfælde. Dog vil tre af instanserne i så fald ikke blive løst inden for tidsgrænsen. Ved den største afprøvede vindueslængde, 150 timer, findes næsten alle de optimale løsninger, som standardmetoden fandt, men de tre instanser, som ikke blev løst til optimalitet i standardmetoden, når slet ikke at blive løst. Metode 25/2 25/4 25/10 75/10 75/20 75/30 150/25 150/40 150/55 Gab a (%) 4,8 4,1 1,9 0,12 0,12 0,034 0, a Udregnet som (øvre grænse - nedre grænse)/nedre grænse. Tabel 6.10: Gennemsnitligt gab mellem løsning og nedre grænse for de ti testinstanser for hver metode. angiver, at tre af testinstanserne ikke kunne løses. I tabel 6.10 er for hver sliding window metode beregnet det gennemsnitlige gab i forhold til den nedre grænse i tabel 6.6 for de ti testinstanser. De beregnede gab for en vindueslængde på 75 og 150 meter er markeret med en, der angiver, at der var tre instanser, der ikke blev fundet en løsning til. Tendensen er, at jo

88 76 Test af løsningsmetode større vindueslængden er, jo mindre bliver forskellen mellem den nedre grænse og løsningen. Dog kan de større vindueslængder resultere i, at der ikke bliver fundet en løsning indenfor tidsgrænsen. Generelt gælder det, at sliding window løsningerne bliver fundet hurtigere end løsningerne ved den oprindelige løsningsmetode, hvor hele problemet løses på én gang. Til gengæld kan løsningerne så ikke garanteres at være optimale. Det har vist sig i testfasen, at nogle problemer ikke kan løses til optimalitet med OL inden for tidsgrænsen på 30 min, hvor sliding window med de rette indstillinger har været i stand til at bestemme en ligeså god løsning inden for tidsgrænsen, i tilfældet 25x5-02 på under 16 sek. Testinstanserne har indeholdt maksimalt 25 skibe, mens data fra [3] indeholder op til 60 skibe. Ved større problemer kan sliding window metoden vise sig at være fordelagtig, hvis køretiderne for den almindelige løsningsmetode gør denne ineffektiv i form af dårlige løsninger. Dette undersøges i afsnit 8.4. Testen viser dog også som forventet en markant ulempe ved SW fremfor OL. Hvis SW ikke når at køre færdig indenfor tidsgrænsen, fås ikke en gyldig løsning til problemet. Med OL fås altid en gyldig løsning i form af en øvre grænse, dog kan kvaliteten af den være ringe. I det følgende vil vi derfor konsekvent forsøge med både OL og SW. Værd at bemærke er også, at køretiderne for sliding window varierer meget for et givet problem alt efter vinduets og overlappets størrelse. Med basis i denne test, hvor der ikke er én enkelt indstilling der er bedst, har vi valgt at benytte forskellige indstillinger til vores resultatkapitel. Eftersom valget af vinduesstørrelse er meget dataafhængigt, vælges disse først i resultatafsnittet, hvor vi afprøver forskellige størrelser. 6.7 Evaluering af tests Efter disse tests er vi nu i stand til at sammensætte vores løsningsmetode optimalt. Dette indebærer følgende indstillinger. Tilføj de fem søjler med største negative reducerede omkostning for hvert skib, hver gang subproblemet løses. Forgreningsregel: opdeling af kaj, OAK. Søgestrategi: bedste-først-søgning - med doven udregning af nedre grænse. Ingen snit forsøges tilføjet.

89 6.7 Evaluering af tests 77 Sliding window metoden er ikke en parameter i løsningsmetoden, som de fire ovenstående, men en alternativ anvendelse af det. Der er derfor ikke tale om en indstilling, som skal reguleres, men en alternativ løsningsmetode. Når sliding window anvendes, bevares de fire ovenstående indstillinger. Mht. at bruge sliding window fremgangsmåden eller ej, har det vist sig at være fordelagtigt med små vindueslængder, hvis svære problemer skal løses hurtigt. Dette resulterer dog ikke nødvendigvis i den bedste løsning. Lette problemer kan tilsvarende løses hurtigt, hvis større vindueslængder benyttes. Det har ikke været muligt at bestemme en entydig, god længde af vinduet, da dette er meget afhængigt af data. Da det ikke på forhånd er muligt at vide, hvor svært et givent problem er - hvilket vi dog vil kigge nærmere på i kapitel 8 - har vi valgt at benytte forskellige indstillinger til sliding window teknikken i vores resultatafsnit. Derudover vil vi også undersøge, hvor godt vores oprindelige løsningsmetode, der ikke opdeler problemet på tidsaksen, klarer sig i forhold til sliding window.

90 78 Test af løsningsmetode

91 Kapitel 7 Sammenligning med resultater fra litteraturen I dette kapitel vil vi undersøge, hvorledes vores løsningsmetode klarer sig i forhold til den tabusøgning, der er udviklet i [3]. Data fra denne artikel består af to sæt, i2 og i3, hvor førstnævnte bliver løst diskret og sidstnævnte bliver løst med deres såkaldte kontinuerte tabusøgning. Strukturen af data er beskrevet i afsnit 6.1. Det kontinuerte datasæt, i3, vil også blive løst som et diskret BAP for at undersøge forholdet mellem en diskret og en kontinuert løsning for samme instans. De kontinuerte instanser viser sig at være svære at løse. Kapitlet afsluttes derfor med en undersøgelse af, hvad dette kan skyldes. 7.1 Diskrete resultater Som beskrevet i forrige kapitel er sliding window teknikken meget dataafhængig, når det kommer til valget af længden på vindue og overlap. Til kørslerne på datasættene fra [3] blev først prøvet med en lille vindueslængde på 25 timer og en stor vindueslængde på 150 timer med overlap på henholdsvis 10 og 55 timer.

92 80 Sammenligning med resultater fra litteraturen Det viste sig dog, at i langt de fleste instanser, ville den store vindueslængde svare til at løse hele problemet på én gang, da samtlige skibe ankom inden for de første 150 timer. Vi har derfor valgt, at vores store vindueslængde er 75 timer med et overlap på 30. I tabel 7.1 ses en opsummering af resultaterne fra det diskrete datasæt i2. Alle gab angivet i dette kapitel er beregnet i forhold til en øvre grænse, dvs. den bedst fundne løsning, da alle gab er beregnet på denne måde i [3]. En direkte sammenligning er derved lettere. Hele testen kan ses i bilag A.2. Det ses, at to af de tre indstillinger finder bedre resultater end T 2 S. Løsningerne, der er fundet med vores tre fremgangsmåder, er 2,80% bedre for OL, 4,08% dårligere for SW 25/10 og 0,31% bedre for SW 75/30 i forhold til tabusøgningen fra [3], T 2 S. Gennemsnitligt er både OL og den hurtige SW 75/30 altså bedre end T 2 S. OL SW 25/10 SW 75/30 T 2 S[3] Data Pris Tid (s) Pris Tid (s) Pris Tid (s) Pris Tid (s) 25x , , , x , , , x , , , x , , , x , , , Snit , , , ,2 Tabel 7.1: Opsummering af resultaterne fra det diskrete datasæt, i2. OL finder den optimale løsning i 47 ud af de 50 instanser. I de tre instanser, der ikke kan garanteres at være løst til optimalitet, er dog fundet en nedre grænse med en værdi, der ligger én under den øvre grænse. Dvs. hvis ikke løsningen er optimal, er den i hvert fald meget tæt på. SW 75/30 finder den optimale løsning i 29 af de 50 instanser, mens SW 25/10 kun finder den optimale løsning i 3 instanser. Dette bliver til gengæld gjort lynhurtigt, med en gennemsnitlig køretid på lidt under et halvt sekund. Den gennemsnitlige køretid af OL er stærkt påvirket af de tre instanser, der ikke når at blive løst til optimalitet. Ses der bort fra disse tre, er køretiden kun marginalt længere end køretiden for SW 25/10. Disse enkelte meget lange køretider optræder ikke med vores sliding window fremgangsmåde, og selv den langsomme af de to sliding window indstillinger løser problemerne hurtigere end den forholdsvis simple tabusøgning. Sammenlignes der på instansbasis, så er OL bedre end T 2 S i 45 instanser, og i de resterende fem instanser har begge løsningsmetoder fundet den optimale løsning. SW 75/30 er bedre i 38 og finder den samme løsning som T 2 S i 4 instanser, og

93 7.2 Kontinuerte resultater 81 SW 25/10 er bedre end T 2 S i 10 af de 50 instanser. Overordnet må det siges, at vores løsningsmetode er betydeligt bedre end [3] ved løsning af de diskrete datasæt. 7.2 Kontinuerte resultater I det kontinuerte tilfælde skal der tages højde for to knæk, der optræder ca. midt på kajen i Gioia Tauro, se figur 7.1. Da et skib ikke kan lægge til henover et sådan knæk, svarer det altså til at løse problemet med tre separate kajstykker. Figur 7.1: Kajen i Gioia Tauro containerhavn, hvorpå der forekommer to knæk. Skibe kan ikke lægge til henover et knæk. Disse knæk er implementeret ved at modificere betjeningstiderne. Hvis et skib ikke kan ligge ved en given placering på kajen, vil betjeningstiden sættes til nul. Dette gøres for alle placeringer, hvor skibet vil dække knækket angivet med den røde streg. Hvis betjeningstiden er sat til nul, indikerer det i den implementerede løsningsmetode, at denne placering ikke er lovlig for skibet. Værdien nul er valgt, da dette stemmer overens med, hvorledes testinstanser fra [3] er konstrueret. Resultaterne for det kontinuerte tilfælde skal sammenlignes med resultaterne fra [3] med forbehold. Dette skyldes, at betjeningstiden i data fra artiklen er angivet som beskrevet i afsnit 6.1, dvs. med en betjeningstid for hver diskrete kajplads. Det vides ikke, hvordan disse tider omsættes til brug i den kontinuerte løsningsmetode i [3]. Det er beskrevet i afsnit 6.1, hvorledes vi har omdannet betjeningstiderne til brug i vores tilnærmelsesvist kontinuerte løsningsmetode. Vi har forsøgt med flere forskellige løsningsmetoder til de kontinuerte tilfælde, og resultaterne heraf vil blive beskrevet i det følgende.

94 82 Sammenligning med resultater fra litteraturen SW 25/10 og SW 75/30 Ved brug af de samme to sliding window indstillinger som i det diskrete tilfælde - SW 25/10 og SW 75/30 - blev der ikke fundet nogen løsninger inden for 30 minutter. Eftersom det ikke var muligt at løse nogen at finde en gyldig løsning med SW 25/10 og SW 75/30, har vi forsøgt os med at opdele problemet i flere, mindre delproblemer, dvs. med en mindre vinduesstørrelse i sliding window. Disse indstillinger er SW 5/5, SW 10/4 og SW 15/7. Herudover er OL selvfølgelig også benyttet OL, SW 5/5, SW 10/4 og SW 15/7 Ved sammenligning med den kontinuerte tabusøgningsheuristik fra [3], (T S) 2 (ej at forveksle med den diskrete tabusøgning, T 2 S), kan følgende observationer fremhæves. OL er som sædvanlig med en diskretisering på 25 meter. OL er i gennemsnit 4,4% dårlige end (T S) 2. I otte ud af 30 instanser er OL bedre end (T S) 2. OL finder den bedste løsning blandt vores metoder til 11 instanser. Løsninger fundet med OL har et gennemsnitligt gab på 12,7%. SW 5/5 kan løse ni ud af 30 instanser - to af disse er bedre end OL, ingen er bedre end (T S) 2. SW 10/4 kan løse 12 ud af 30 instanser - otte af disse er bedre end OL, tre er bedre end (T S) 2. SW 15/7 kan løse tre ud af 30 instanser - to af disse er bedre end OL, tre er bedre end (T S) 2. Samlet set finder vi bedre løsninger end (T S) 2 til elleve instanser. Samtlige instansresultater fundet med disse indstillinger kan ses i tabel 7.2.

95 7.2 Kontinuerte resultater 83 OL SW 5/5 SW 10/4 SW 15/7 (T S) 2 Data LB Pris Gab Tid Pris Gab Tid Pris Gab Tid Pris Gab Pris Gab (%) a (s) (%) a (s) (%) a (s) (%) a (%) a i ,6 83, ,2 N/A - - N/A ,8 i ,4 29, ,7 N/A , , ,6 i ,8 N/A - - N/A - - N/A ,8 i ,5 43, ,6 130, ,1 N/A ,2 i ,5 N/A - - N/A - - N/A ,7 i ,1 N/A - - N/A - - N/A ,7 i ,7 34, ,8 N/A - - N/A ,2 i ,2 N/A , ,8 N/A ,5 i ,8 N/A - - N/A - - N/A ,2 i ,4 N/A - - N/A - - N/A ,7 i ,8 N/A - - N/A - - N/A ,6 i ,9 N/A - - N/A - - N/A ,9 i ,0 50, ,9 66, ,0 N/A ,6 i ,7 N/A , ,4 869, , ,4 i ,2 153, ,5 138, ,5 N/A ,3 i ,7 N/A , ,7 N/A ,8 i ,1 N/A - - N/A - - N/A ,7 i ,3 N/A , ,8 N/A ,8 i ,4 176, ,5 139, ,5 N/A ,4 i ,0 N/A - - N/A - - N/A ,8 i ,3 N/A - - N/A - - N/A ,1 i ,8 N/A - - N/A - - N/A ,6 i ,9 N/A , ,2 N/A ,5 i ,4 N/A , ,8 1551, , ,2 i ,2 N/A - - N/A - - N/A ,5 i ,2 N/A - - N/A - - N/A ,6 i ,7 319, ,0 377, ,4 N/A ,6 i ,6 N/A , ,7 N/A ,4 i ,7 134, ,7 N/A - - N/A ,5 i ,6 N/A - - N/A - - N/A ,0 a Udregnet som (øvre grænse - nedre grænse)/øvre grænse. Tabel 7.2: Kontinuert løsning af i3 datasættet. OL samt de tre små sliding window indstillinger. Understregede løsninger angiver den bedste fundne løsning til den pågældende instans OL med 50 meters kajsegmenter Ydermere har vi forsøgt at løse instanserne med en grovere kajinddeling, da dette måske kan gøre os i stand til at løse flere instanser. Hvor kajen hidtil har været delt op i kajsegmenter á 25 meter, prøves nu med en opdeling, hvor hvert kajsegment er 50 meter. Den oprindelige løsningsmetode med den denne diskretisering benævnes OL 50. Kontinuiteten lægger sig dermed tættere opad det diskrete tilfælde, men er stadig betydeligt bedre, idet skibene er af størrelsesordenen 150 til 400 meter. Skibe med størrelser, der ikke er et multiplum af 50, er blevet rundet op til nærmeste multiplum. Dvs. at skibe på 175 meter bliver betragtet som værende 200 meter lange. Hermed er en gyldig løsning til problemet med 50 meters diskretisering stadig en gyldig løsning til det oprindelige problem. Med kajen delt op i kajsegmenter á 50 meter fås løsninger, som kan ses i tabel 7.3. Med den grovere kajdiskretisering er der betydeligt flere instanser, der bliver løst med de forskellige sliding window indstillinger. En opsummering af sliding window resultaterne er:

96 84 Sammenligning med resultater fra litteraturen OL 50 SW 5/5 50 SW 10/4 50 SW 15/7 50 Data Pris Gab Tid Pris Gab Tid Pris Gab Tid Pris Gab (%) a (s) (%) a (s) (%) a (s) (%) a i ,4 267, ,7 N/A - - N/A - - i ,5 17, ,9 9, ,2 N/A - - i ,3 72, ,4 9, ,3 N/A - - i ,9 19, ,8 107, ,9 1471, ,7 i ,1 N/A , ,0 N/A - - i ,4 1276, ,2 995, ,3 N/A - - i ,4 14, ,9 25, ,8 N/A - - i ,6 176, ,8 348, ,2 N/A - - i ,6 N/A - - N/A - - N/A - - i ,2 524, ,2 12, ,7 1623, ,8 i ,0 1520, ,3 563, ,6 N/A - - i ,6 25, ,1 335, ,7 N/A - - i ,5 80, ,7 10, ,9 N/A - - i ,9 176, ,3 10, ,6 N/A - - i ,4 33, ,2 8, ,4 74, ,1 i ,3 381, ,1 29, ,0 N/A - - i ,0 7, ,5 4, ,4 N/A - - i ,2 257, ,2 868, ,7 274, ,6 i ,5 106, ,0 16, ,0 1196, ,0 i ,0 1091, ,8 1349, ,0 N/A - - i ,8 860, ,8 N/A - - N/A - - i ,8 N/A , ,8 N/A - - i ,5 402, ,4 46, ,1 N/A - - i ,0 676, ,7 14, ,9 309, ,4 i ,6 N/A - - N/A - - N/A - - i ,5 414, ,1 65, ,7 N/A - - i ,8 20, ,7 15, ,1 N/A - - i ,3 253, ,9 411, ,1 N/A - - i ,4 116, ,8 198, ,6 149, ,0 i ,9 1135, ,8 60, ,3 N/A - - a Udregnet som (øvre grænse - nedre grænse)/øvre grænse. Tabel 7.3: Kontinuert løsning af i3 datasættet med kajdiskretisering på 50 meter. Understregede løsninger angiver den bedste fundne løsning til den pågældende instans. angiver at problemet med OAK er optrådt, hvorfor en undergren af søgetræet er afskåret. SW 5/5 50 løser 26 ud af 30 instanser med et gennemsnitligt gab på 22,7% til den nedre grænse fundet med 25m diskretisering. SW 5/5 50 finder ingen løsninger, der er bedre end (T S) 2. SW 10/4 50 løser 26 ud af 30 instanser med et gennemsnitligt gab på 12,5% til den nedre grænse fundet med 25m diskretisering. SW 10/4 50 finder tre løsninger, der er bedre end (T S) 2. SW 15/7 50 løser syv ud af 30 instanser med et gennemsnitligt gab på 9,1% til den nedre grænse fundet med 25m diskretisering. SW 15/7 50 finder to løsninger, der er bedre end (T S) 2. OL 50 formår stadig ikke at lukke heltalsgabet i nogen af de 30 instanser på trods af inddelingen i 50 meters segmenter. Mange af de løsninger, der bliver fundet af OL 50, er dog bedre end de hidtil bedste løsninger fra de tidligere kørsler. OL 50 giver følgende resultater.

97 7.2 Kontinuerte resultater 85 OL 50 har et gab på 12,6% til den nedre grænse, hvilket er marginalt bedre end gabet på 12,7% for OL. OL 50 finder bedre løsninger end (T S) 2 til 14 instanser. OL 50 finder den bedste løsning blandt vores metoder til 10 instanser. Hvis vi tager den bedste løsning, vi har fundet til hver instans blandt de otte forskellige indstillinger, OL og de tre SW med både 25 og 50 meters diskretisering, er vores løsninger i 19 af de 30 instanser bedre, end hvad (T S) 2 finder. Gennemsnitligt er vores løsninger 0,9% bedre, end de løsninger (T S) 2 finder. Af disse 30 bedste løsninger står OL med de to diskretiseringer i alt for 21. I tabel 7.4 kan ses, hvor mange løsninger hver metode har bidraget med til de bedste 30 løsninger. Metode OL SW 5/5 SW 10/4 SW 15/7 # løsninger Metode OL 50 SW 5/5 50 SW 10/4 50 SW 15/7 50 # løsninger Tabel 7.4: Antal løsninger hver metode har fundet blandt de 30 bedste løsninger. På trods af at SW 5/5 finder mange løsninger, så er ingen af dem blandt de bedste. Ligeledes bidrager SW 15/7 kun med 2 løsninger, men SW 15/7 finder dog også kun en løsning i ti ud af de 60 kørsler. Det er altså SW 10/4 og i særdeleshed OL, der finder langt de fleste af de bedste løsninger. I tabel 7.5 har vi opsummeret, hvor godt de forskellige metoder har klaret sig ift. den nedre grænse. Metode BF L (T S) 2 OL 50 OL Gab (%) a 8,3 9,2 12,6 12,7 a Udregnet som (øvre grænse - nedre grænse)/øvre grænse. Tabel 7.5: Gennemsnitligt gab mellem løsning og nedre grænse. BF L angiver de bedste-fundne løsninger. Konklusionen er, at vi er i stand til at finde gode løsninger til langt de fleste instanser. Den instans, hvor vi har det største gab, i11, er gabet på 18,8%, mens vi i den bedste instans, i17, har et gab på kun 1,1%. Gennemsnitligt har vi, hvis

98 86 Sammenligning med resultater fra litteraturen vi kombinerer vores løsninger, et gab på 8,3%, hvilket altså er en smule bedre end de resultater, der er fundet i [3]. I [3] sammenligner de med en grådig firstcome-first-served fremgangsmåde, der skulle resultere i planer, der minder om de planer, der fremstilles manuelt. Deres (T S) 2 metode er gennemsnitligt 8% bedre end first-come-first-served fremgangsmåden, hvorfor vores også nødvendigvis må være bedre Diskret løsning af i3 datasættet Sluttelig har vi forsøgt at løse i3 datasættet diskret. Håbet er at kørslerne skulle være i stand til at finde den optimale løsning, mens frygten er at disse løsninger ikke er gyldige i praksis, da kajsegmenterne i det diskrete tilfælde muligvis er valgt for små. Den diskrete tilgang til i3 datasættet betyder, at der i stedet for en kaj på 2850 meter med en række forskellige betjeningstider nu blot er 13 kajsegmenter, der alle er store nok til, at samtlige skibe kan lægge til der. Når skibene kan være op til 400 meter lange, så kan denne diskrete opdeling hurtigt komme til at være ugyldig i praksis. Denne problemstilling vil blive diskuteret senere i dette afsnit. De diskrete resultater samt de bedste kontinuerte løsninger ses i tabel 7.6. Det ses, at det lykkedes at finde den optimale diskrete løsning til samtlige instanser på gennemsnitligt 0,37 sekunder. Herudover bemærkes at den diskrete løsning er billigere end den kontinuerte i alle instanser. Samtlige diskrete løsninger er dog også billigere end den nedre grænse på de kontinuerte problemer, hvorfor vi må konkludere at løsningerne er ugyldige i praksis. Dette skyldes, som tidligere nævnt, at antagelsen om at samtlige skibe kan være på samtlige kajsegmenter, ikke stemmer overens med den faktiske længde af kajen. Dette fænomen er illustreret på figur 7.2, hvor både den kontinuerte og den diskrete løsning af instans i23 er vist. Figuren er lavet med et Matlab-script, der indlæser en løsning fra en fil og plotter denne. Koden til dette Matlab-script er vedlagt på CD. Til tiden 73 i den diskrete løsning ligger der 13 skibe til kajs. Disse har tilsammen en længde på 3325 meter. Da kajen kun er 2850 meter lang, så er dette selvfølgelig ikke en gyldig løsning. Problemet med at dele kajen op i 13 lige store stykker illustreres også fint ved at kigge på den store forskel i størrelsen af skibene i den kontinuerte løsning. Udover det åbenlyse problem med, at nogle skibe er større end andre, hvorfor den diskrete opdeling bliver svær at indføre i praksis, så er den gennemsnitlige størrelse af skibene i denne instans, 248,33

99 7.2 Kontinuerte resultater 87 Kontinuert Diskret Data Tid (s) Pris Tid (s) Pris i01 N/A , i02 803, , i03 N/A , i04 N/A , i05 N/A , i06 N/A , i07 N/A , i08 N/A , i09 N/A , i10 N/A , i11 N/A , i12 N/A , i13 66, , i14 N/A , i15 138, , i16 671, , i17 N/A , i18 N/A , i , , i20 N/A , i21 N/A , i22 101, , i23 43, , i24 N/A , i25 N/A , i26 N/A , i27 N/A , i28 93, , i29 N/A , i30 60, , Tabel 7.6: De bedste kontinuerte løsninger samt de optimale diskrete løsninger til i3 datasættet. meter, større end det gennemsnitlige kajsegment, der med 2850 meter fordelt på 13 segmenter må være 219,23 meter. En anden ting, der er værd at bemærke på figur 7.2, er den store forskel i de to løsninger. I den diskrete løsning er der kun fire skibe, der ikke lægger til kaj, idet de ankommer, mens der i den kontinuerte løsning er hele 23 skibe, der må vente, inden deres tildelte kajplads bliver ledig. Dette, kombineret med den tydelige forskel i tætheden af de to løsninger, illustrerer endnu engang, at den diskrete modellering af kajen ikke er realistisk, da der simpelthen lader til at være for meget kajplads.

100 88 Sammenligning med resultater fra litteraturen Figur 7.2: Løsning til i23. Øverst: Kontinuert. Nederst: Diskret. 7.3 Problemer ved løsning af BAP Det viste sig hurtigt ved undersøgelse af resultaterne, at BAP var svært at løse til optimalitet, idet løsningerne fundet ved søjlegenerering var meget fraktionelle, og B&B som et resultat deraf var meget tidskrævende. På figur 7.3 kan ses en illustration af en fraktionel løsning fra søjlegenereringen. Hvert rektangel indikerer en placering af et skib. På hvert rektangel er angivet skibets nummer efterfulgt af fraktionen, som skibet ligger med på den pågældende placering. Figuren angiver en fraktionel løsning til instans i23 indeholdende 60 skibe fra

101 7.3 Problemer ved løsning af BAP 89 [3]. Figur 7.3: Illustration af fraktionel løsning. Hver kasse angiver en fraktionel placering af et skib. Figur 7.3 viser bl.a., at et skib kan være placeret mange forskellige steder indenfor et lille område med meget små fraktioner. Dette gælder fx for skib 12. Testene i kapitel 6 viste, at den første forgreningsregel, IAF, ikke har store nok konsekvenser for løsningen, idet en nul-forgrening som regel resulterer i, at skibet bliver forskudt blot en enkelt enhed langs tids- eller kajaksen. Til erindring dikterede nul-forgreningen, at forgreningsskibet ikke måtte ligge på et givet felt. Ofte bliver skibet rykket en enhed langs kajen grundet de ensartede data for betjeningstiderne, hvilket beskrives i det følgende afsnit Den svage nul-forgrening resulterer derfor i et særdeles ubalanceret B&B-træ og dårlige køretider. Grundet disse langsomme køretider valgte vi at prøve med en anden forgreningsregel. Idet IAF ikke har en stor nok indvirkning på skibets placering langs kajen, har vi udviklet foregreningsreglen OAF, se afsnit Håbet var, at denne vil forårsage et mere balanceret B&B-træ og være mere restriktiv mht. skibets placering langs kajen. Resultaterne af testene i kapitel 6 indikerer som håbet, at denne forgreningsregel er mere effektiv.

102 90 Sammenligning med resultater fra litteraturen Lukning af heltalsgab Igennem udviklingen af vores løsningsmetode har vi ofte observeret, at der rimelig hurtigt bliver fundet en rigtig god løsning, hvorefter det kan tage meget lang tid at lukke heltalsgabet. Den gode løsning, der bliver fundet hurtigt, er ofte fundet allerede i rodknuden, hvor vi løser problemet heltalligt med de søjler, der er blevet genereret ved den første kørsel af søjlegenereringen. For at undersøge, hvor god denne løsning i roden er, har vi gennemført en test, hvor vi løser ti instanser og ser, hvor stor forskel der er på rodløsningen og den bedste løsning, der er fundet inden for en halv time. De ti instanser er fra i2 datasættet fra [3]. Resultatet af denne test kan ses i tabel 7.7. Branch & Bound Kun roden Data LB Tid (s) Pris Gab (%) a Tid (s) Pris Gab (%) b 25x , , ,3 25x , , x N/A 733 0,1 151, x N/A 597 1,0 76, x , , ,2 25x N/A 748 4,3 820, x , , x N/A 718 2,7 373, x , , ,5 25x N/A 761 0,3 78, ,3 a Udregnet som (øvre grænse - nedre grænse)/nedre grænse. b Udregnet ift. B&B løsningen. Tabel 7.7: Test af B&B ift. kun at løse rodknuden. Det ses, at det med B&P kun lykkedes at finde den optimale løsning til fem af de ti instanser indenfor de afsatte 30 minutter. Af disse fem instanser bliver den optimale løsning i to tilfælde allerede fundet i rodknuden. Tidsbesparelsen ved kun at løse rodknuden i disse to instanser er dog ikke af stor betydning, da den efterfølgende B&B del alligevel hurtigt terminerer. De tre optimale instanser, hvor den optimale løsning ikke findes i rodknuden, er der et gennemsnitligt gab på 0,33% mellem rodknudens og den optimale løsning. Kan dette forholdsvis lille gab accepteres, så er der en meget stor tidsbesparelse at hente. I den ene instans, 25x7-01, tager det næsten 30 minutter at bevise, at 589 er den optimale løsning, mens en løsning på 591 er fundet i roden på blot 26 sekunder. Gennemsnitlig tager den fulde B&P kørsel knap 19 minutter længere, end hvis blot roden løses. Af de fem instanser, som B&P ikke er i stand til at løse til optimalitet, bliver den bedste-fundne løsning efter 30 minutter allerede fundet i rodknuden i fire af tilfældene. I de fem ikke-optimale instanser tager det gennemsnitligt fem minutter at løse rodknuden, og løsningen bliver i gennemsnit kun 0,26% dårligere

103 7.3 Problemer ved løsning af BAP 91 end efter 30 minutters B&P. Søjlegenereringen i rodknuden er altså i stand til at finde en rigtig god - og sommetider optimal - løsning. Alligevel viste det sig i forrige kapitel, at det i mange instanser ikke er muligt at finde den optimale løsning, eller måske blot at bevise optimaliteten. Det tyder altså på, at vores B&P ikke er så effektiv, hvilket kan skyldes en svag nedre grænse. Med en svag nedre grænse vil der være knuder i B&B-træet, der ikke bliver afskåret på trods af, at de ikke har mulighed for at forbedre løsningen. Dette var netop motivationen for at implementere de to typer snit, der er omtalt i afsnit 5.3. Ved at tilføje snit til LP-problemet i en B&B-knude var idéen, at der kunne udelukkes nogle løsninger til LP-problemet, hvoriblandt der ikke ville være nogle heltalsløsninger. Håbet var, at dette ville styrke den nedre grænse, dvs. hæve løsningen til LP-problemet. Desværre viste disse snit sig ikke at have nogen effekt, hvilket blev undersøgt i afsnit Ensartede betjeningstider Én forklaring på, hvorfor heltalsgabet kan være så svært at lukke i probleminstanserne fra [3], kan være, at betjeningstiderne for skibene er meget ensartede. Der er oftest kun to forskellige betjeningstider langs hele kajen for et givent skib. Dette betyder, at der kan være 2000 meter kaj med samme betjeningstid, og når et skib kan flyttes 25 meter og dermed opnå en ny løsning, så vil der være rigtig mange løsninger med samme omkostning. Netop disse utallige lige gode løsninger skaber problemer for især den første af vores forgreningsregler; inkludering af felt (IAF). På trods af, at OAK klarer sig bedre end IAF, så kan den ensartede kaj stadig volde problemer. For at undersøge dette har vi selv genereret ti testinstanser ved at tage de ti 25x7 instanser fra i2 datasættet i [3] og blande betjeningstiderne imellem instanserne. Dette gør, at ensartetheden forsvinder, men betjeningstiderne er af samme størrelsesorden. Ved at løse de ti oprindelige 25x7 instanser og de ti nye med varierede betjeningstider giver det os en idé om, hvor stor en indflydelse det ensartede data har på vores problemer med at løse instanserne fra [3] til optimalitet. Resultatet af denne test kan ses i tabel 7.8. Det ses, at hvor det ensartede data kun kan løses til optimalitet i fem af de ti instanser, så bliver alle ti instanser med varierede betjeningstider løst til optimalitet. De varierede instanser bliver tilmed løst meget hurtigere, med en gennemsnitlig køretid på lidt under ét minut. Kørsler for data med de ensartede betjeningstider ender med en gennemsnitlig køretid på over 21 minutter, hvilket

104 92 Sammenligning med resultater fra litteraturen Ensartet V arieret Data LB Tid (s) Pris Gab (%) a Data LB Tid (s) Pris Gab (%) a 25x , x , x , x , x N/A 733 0,1 25x , x N/A 597 1,0 25x , x , x , x N/A 748 4,1 25x , x , x , x N/A 718 2,6 25x , x , x , x N/A 761 0,3 25x , a Udregnet som (øvre grænse - nedre grænse)/nedre grænse. Tabel 7.8: Test af data med ensartede betjeningstider ift. varierede betjeningstider. selvfølgelig er påvirket af de fem kørsler, der ikke bliver færdige. Selv uden disse er den gennemsnitlige køretid for de fem instanser, der bliver løst, dog stadig på over 12 minutter. Resultaterne i tabel 7.8 viser desuden, at omkostningerne for løsninger for den ensartede kaj er betydeligt højere end omkostningerne for løsninger for den varierede kaj. Dette skyldes især strukturen af kajen i i2 datasættet. Her har et mindre stykke af kajen en betjeningstid, der er halvt så stor som betjeningstiden på den resterende del af kajen. Dette lille stykke er fælles for alle skibene, dvs. de alle foretrækker at lægge til kaj ved dette mindre stykke. Eftersom der ikke er plads til særlig mange skibe ad gangen på det gunstige kajstykke, vil en del af dem tvinges over på placeringer, der resulterer i høje betjeningstider. Dette behøver ikke være tilfældet for egne data, hvor kajen er varieret. Her vil de gunstige kajstykker med lav betjeningstid som regel ikke være sammenfaldende for samtlige skibe. Flere skibe kan derfor til samme tid ligge ved et kajstykke, der svarer til deres laveste betjeningstid. Teorien er dermed, at den varierede kaj resulterer i, at et mindre antal af skibe vil blive tvunget til at lægge til ved kajstykker, der har en høj betjeningstid. Dette bekræftes af resultaterne i tabel 7.8. At den ensartede kaj volder løsningsmetoden problemer, betyder ikke nødvendigvis, at løsningsmetoden vil være utilstrækkelig i praksis. I en containerterminal er containerne ofte opbevaret i forskellige områder efter rederi, og det vil således være muligt at differentiere betjeningstiderne langs kajen. Af samme grund vil en plads være god for nogle skibe men mindre god for andre skibe, og kampen om bestemte pladser burde derfor ikke være så udpræget.

105 Kapitel 8 Undersøgelse og diskussion af resultater Dette kapitel vil omhandle undersøgelser af forskellige resultater. Vi vil undersøge, hvordan køretiden varierer med forskellige karakteristika ved BAP. På denne måde vil vi verificere, at vi får de resultater, som vi intuitivt forventer at få. Vi vil vise, at modellen kan tage højde for prioritetsvægtning af skibene, og at dette har den forventede effekt. Følgende spørgsmål vil blive besvaret: 1. Hvis tætheden af et problem - dvs. antallet af felter, som skibene i løsningen optager - bevares, hvordan påvirker antallet af skibe så køretiden? 2. Hvilke instanser resulterer i længst køretid - Instanser med skibe med fortløbende ankomsttider eller skibe med grupperede ankomsttider? 3. Hvorledes vil en vægtning af skibene påvirke løsningen i forhold til en løsning af samme instans uden vægtning? Herudover undersøger vi effekten af at løse probleminstanser med sliding window teknikken. Den bedste løsning fundet med sliding window metoden stemmer ikke nødvendigvis overens med den optimale løsning til det samlede BAP fundet med

106 94 Undersøgelse og diskussion af resultater B&P. Dette gør den dog ikke nødvendigvis dårligere med henblik på at anvende den i praksis. Forholdet mellem praktisk og teoretisk optimalitet er grundlag for diskussionen af sliding window teknikken i afsnit Følsomhedsanalyse - Antal skibe Formålet med dette afsnit er at lave en følsomhedsanalyse af, hvordan antallet af skibe påvirker køretiden, hvis tætheden af løsningen bevares. Problemerne vil derfor udgøres af enten få skibe med lange betjeningstider eller mange skibe med korte betjeningstider. Fra et pakningsperspektiv kan dette opstilles som et spørgsmål om, hvorvidt det er sværest at pakke få store pakker eller mange mindre pakker. Jo længere en køretid, jo sværere er problemet at løse Antal skibe vs. dimensioner af skibe Til dette formål er genereret fire typer probleminstanser givet ved henholdsvis 10, 20, 30 og 40 skibe. Længden af skibene, L, er genereret tilfældigt som forklaret i afsnit 6.1. Denne dimension af rektanglerne er derfor statistisk set ens for alle instanserne. Betjeningstiderne, dvs. den anden dimension af rektanglet, er efterfølgende genereret tilfældigt i forhold til antallet af skibe. Dette er gjort så antallet af felter, rektanglerne dækker i de forskellige instanser, er på nogenlunde samme niveau. Dvs. består instansen af få skibe, vil de have en høj betjeningstid, og vice versa. Eftersom rektanglerne cirka vil optage det samme antal felter i de forskellige instanser, vil løsningerne have samme tæthed. Med disse betjeningstider er håbet, at forskellen mellem de genererede testinstanser så vidt som muligt kun består af antallet af skibe. Dette er ønsket, da spørgsmålet er, hvorvidt det er sværest at løse problemer med mange små skibe eller få store skibe. Betjeningstiden for hvert skib genereres tilfældigt efter en normalfordeling. Normalfordelingens middelværdi vil variere efter antallet af skibe i instansen. Endelig vil betjeningstiden ikke være under et vist niveau, som også varierer med antallet af skibe. Betjeningstiderne, p, vil blive genereret som følger. 10 skibe: p = max( N( L 5,12), 12) 20 skibe: p = max( N( L 10,12), 6) 30 skibe: p = max( N( L 15,12), 4)

107 8.1 Følsomhedsanalyse - Antal skibe skibe: p = max( N( L 20,12), 3) Der er genereret 15 af hver type instanser. Disse er løst kontinuert med kajsegmenter på 25 meter med OL. I bilag A.3 er angivet omkostning og køretid for hver løsning. I tabel 8.1 er en opsummering af løsningerne. For hvert type problem er angivet den gennemsnitlige omkostning og køretid for de 15 instanser. Resultaterne i tabel 8.1 indikerer, at jo flere skibe problemet indeholder, jo # skibe Tid (s) Pris 10 34,5 489, ,9 394, ,1 335, ,4 318,4 Tabel 8.1: Gennemsnitlig køretid og omkostning ved løsning af de 4 datasæt med forskellig størrelse og antal skibe. længere køretid. Dette ses især ved sammenligning af køretiderne for 10 og 40 skibe. Dog er køretiderne i gennemsnit marginalt længere ved 20 skibe end 30 skibe. Både ved 20 og 30 skibe er der en instans, hvor køretiden er betydeligt højere end i de resterende tilfælde. Dette hæver den gennemsnitlige køretid, men da en sådan instans forekommer i begge grupper, kan de ikke være skyld i den afvigende tendens, der viser sig. Det lille fald i den gennemsnitlige køretid for 20 og 30 skibe kan evt. skyldes den tilfældige generering af betjeningstiderne, da det tidligere er observeret, at køretiderne er meget dataafhængige. En uheldig kombination af betjeningstider kan således gøre et problem problemet sværere at løse. Når et problem indeholder få skibe, vil der naturligvis være tilsvarende få skibe at forgrene på i B&B. Dette resulterer i et mindre antal knuder i B&B-træet for det værste tilfælde i forhold til et problem indeholdende flere skibe. Dette gælder under antagelsen, at kaj- og tidsaksen er diskretiseret ens i de to problemer. Jo færre knuder der skal besøges i B&B, jo kortere køretid kan forventes. Desuden skal det bemærkes, at omkostningerne falder i takt med, at antallet af skibe stiger. Betjeningstiderne er genereret således, at summen af disse for de forskellige instanser er på nogenlunde samme niveau. Grunden til de højere omkostninger ved få skibe skal derfor findes andetsteds. Skibe med lange betjeningstider optager mange sammenhængende felter i tidsretningen. Dette kan resultere i høje omkostninger i form af lange ventetider for efterfølgende skibe. Hvis et skib ankommer umiddelbart efter, at et andet skib har lagt til kaj, må det således enten vente i et betydeligt stykke tid, før det kan

108 96 Undersøgelse og diskussion af resultater benytte nogle af de pågældende kajsegmenter, eller alternativt må skibet lægge til kaj på en anden placering, der kan være mindre gunstig. Hvis et skib med kort betjeningstid lægger til kaj, vil et efterfølgende skib ikke skulle vente så længe på at kunne lægge til kaj ved samme segmenter. Det bliver således ikke tvunget til at lægge til kaj ved en placering, der resulterer i en høj betjeningstid. Omkostningerne fra ventetider og ufordelagtige betjeningstider burde derfor være mindre i instanserne med mange skibe end i instanserne med få skibe. Idet summen af betjeningstiderne burde være på samme niveau, er det derfor forventet, at omkostningerne er højere ved få store rektangler end ved mange små rektangler. Dette bekræfter resultaterne i tabel 8.1 også. Konklusionen er som forventet. Få skibe resulterer i kortere køretider, men højere omkostninger i form af ventetider og ugunstige betjeningstider. Flere skibe resulterer i længere køretider, men lavere omkostninger grundet den mere fleksible løsning. 8.2 Følsomhedsanalyse - Ankomsttider I dette afsnit undersøges, hvordan skibenes ankomsttider påvirker køretiderne af løsningsmetoden. Spørgsmålet er, hvorvidt det er sværest at løse instanser, hvor skibene ankommer spredt over tidshorisonten eller ankommer i grupper Spredte ankomsttider vs. grupperede ankomsttider Dette har vi testet ved at tage data fra afsnit med varierede betjeningstider og ændret i ankomsttiderne, så skibene ankommer ad tre omgange. Skibene vil ankomme til tiden 22, 65 eller 108 i alle instanser. Sammenligning af køretid og gab kan ses i tabel 8.2. Hvor det i instanserne med spredt køretider er muligt at finde den optimale løsning hver gang, så er der to af de ti instanser med grupperede ankomsttider, hvor det ikke er muligt. Yderligere to instanser tager over 15 minutter at løse. Den gennemsnitlige køretid for instanserne med fortløbende ankomsttider er på 53 sekunder, mens den for de grupperede instanser er på over 10 minutter. Det ses altså ganske klart, at problemet bliver sværere at løse, hvis skibene ankommer i grupper, hvilket også er forventet.

109 8.3 Prioritetsvægtning af skibe 97 F ortløbende Grupperet Data Tid (s) Pris Data LB Tid (s) Pris Gab (%) a 25x7-11 7, x , x7-12 9, x , x , x N/A 480 0,2 25x , x , x , x , x , x , x , x , x7-18 8, x , x , x , x , x N/A 551 0,5 Udregnet som (øvre grænse - nedre grænse)/nedre grænse. Tabel 8.2: Fortløbende ankomsttider ift. grupperede ankomsttider. Ydermere ses det, at omkostningen for samtlige instanser er højere, når skibene ankommer grupperet. Dette skyldes selvfølgelig, at hvis mange skibe ankommer samtidigt, vil der være flere skibe, der vil kæmpe om at lægge til kaj på netop det tidspunkt. Sandsynligheden for at et skibs mest favorable placering er optaget, vil dermed være højere. Samtidig vil sandsynligheden for, at skibet bliver nødt til at vente på en fri kajplads ligeledes være højere. Det må formodes, at skibene i praksis ikke ankommer så skarpt grupperede, som var tilfældet med det tilgrundlæggende data for tabel 8.2. Dette er altså, som intuitivt forventeligt, en fordel. 8.3 Prioritetsvægtning af skibe Dette afsnit har til formål at vise, at metoden på simpel vis kan medtage prioritetsvægtning af skibe. Det vil desuden blive vist, at en vægtning af skibene vil påvirke løsningen som forventet i forhold til en oprindelig løsning, hvor alle skibe er prioriteret lige. Dette fungerer som en test af vægtningsfunktionen. Afsluttende vil være en kort diskussion af de muligheder, der åbnes, ved indførelsen af prioritetsfunktionen Test af og effekt af vægtning I bl.a. [3] beskrives en model, hvor hvert skib kan tildeles en vægt i målfunktionen. Vægtene afspejler en prioritering af skibene i planlægningen. Begrundelsen for

110 98 Undersøgelse og diskussion af resultater dette er, at skibenes vigtighed kan variere. Dette kan fx være en højere prioritering af store skibe, hvis ventetid kan have store, økonomiske konsekvenser i forhold til de mindre skibe. I det hele taget kan vægtningsfunktionen være et stærkt værktøj fra havnens side. En vægt kan være et samlet udtryk for utallige karakteristika ved et skib og kan påtrykkes direkte af planlæggerne. På denne måde kan de manipulere en plan i forhold til mange aspekter. Det kunne sågar være en mulighed at udvikle et separat modul, der har til formål at beregne vægte til de indgående skibe, og på den måde udvide funktionaliteten af BAP. I det følgende eksperiment har vi valgt at vægte elleve skibe efter deres størrelse. Skibenes længde varierer stadig mellem 150 og 400 meter med 25 meters spring; i alt elleve forskellige størrelser af skibe. Skibe af den mindste størrelse får tildelt en vægt på 1, den næstmindste størrelse skib får en vægt på 2 og så fremdeles. Vægtningen af et skib vil foregå ved at multiplicere flowtimen i målfunktionen med den pågældende vægt som beskrevet i afsnit For overskuelighedens skyld gengives målfunktionen (5.1) nedenfor. min i v i (c i a i ) i N Vægten af skib i er angivet ved v i Z, og c i a i er lig flowtime. Instansen løses uden vægtning (alle vægte sat til 1) og med en vægtning som forklaret ovenfor (vægte rangerende mellem 1 og 11). Løsningerne er præsenteret grafisk på figur 8.1. Der er flere forskelle mellem løsningen til den ikke-vægtede model (øverst) og løsningen til den vægtede model (nederst) på figur 8.1. Mest oplagt er placeringen af skib 10. I den vægtede løsning fortrænger skib 10 alle de tre mindste skibe for at gøre krav på en placering, der sænker betjeningstiden 7 timer i forhold til den ikke-vægtede løsning. Dette resulterer dog samlet i yderligere omkostninger på 14 timer for de fire mindste skibe, der dog har lav prioritet i forhold til det største skib. De to løsninger illustrerer blot den tendens, som måtte være forventet: De store skibe kan fortrænge de mindre fra gunstige placeringer til dårligere placeringer. Alt i alt tilbringer de fem mindste skibe 18 timer ekstra i havnen, mens de seks største skibe tilbringer 15 timer mindre i havnen. Den samlede flowtime bliver 329 timer i den ikke-vægtede plan mod 332 timer i den vægtede plan. Vægtningen af skibe kan altså medtages på simpel vis og har den konsekvens, som kunne forventes. Højprioritetsskibe får deres gunstige placeringer, mens

111 8.4 Sliding window og praktisk optimalitet 99 Figur 8.1: Øverst: Ikke-vægtet løsning. Nederst: Vægtet løsning. lavprioritetsskibe ofte må tage til takke med mindre gunstige placeringer. Vægtes skibene vil den samlede flowtime ofte blive højere, da den nye løsning ikke længere udelukkende er optimeret efter den mindst mulige samlede flowtime. 8.4 Sliding window og praktisk optimalitet I dette afsnit vil blive diskuteret, hvad konsekvensen kan være ved at benytte SW fremfor OL ved brug af termerne praktisk og teoretisk optimalitet. Det vil blive undersøgt, om resultaterne afspejler de eventuelle konsekvenser.

RUTEPLANLÆGNING OG TRANSPORTNETVÆRK

RUTEPLANLÆGNING OG TRANSPORTNETVÆRK 98 Ruteplanlægning og transportnetværk Af professor Oli B.G. Madsen 99 Flere og flere mennesker og større og større mængder af varer og gods bliver transporteret over længere afstande end nogensinde før.

Læs mere

Brug matematiske modeller til at optimere din drift

Brug matematiske modeller til at optimere din drift Brug matematiske modeller til at optimere din drift Matematiske modeller kan være en stor hjælp i beslutningstagen-og planlægningsaktiviteter på både et operationelt, taktisk og strategisk niveau. Matematiske

Læs mere

PREPARED BY.

PREPARED BY. OPTIMER DIN DRIFT MED MATEMATISKE MODELLER PREPARED BY FREJA 4PL SERVICES www.freja.dk Matematiske modeller kan være en stor hjælp til beslutningstagen og planlægningsaktiviteter på både et operationelt,

Læs mere

Avancerede bjælkeelementer med tværsnitsdeformation

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,

Læs mere

Lokalisering af og samspil mellem distributionsterminaler

Lokalisering af og samspil mellem distributionsterminaler Lokalisering af og samspil mellem distributionsterminaler Louise Tranberg DTU, Lyngby Logistisk optimering Hvordan optimeres den fysiske struktur og logistik i transportfirmaer? Hvor mange terminaler skal

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer I Kursus nr. 005. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

Læs mere

Logistik og optimering

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

Læs mere

Strategisk og taktisk netværksplanlægning. DTU Transport 4. maj, 2010 Oli B.G. Madsen og Martin W. Andersen

Strategisk og taktisk netværksplanlægning. DTU Transport 4. maj, 2010 Oli B.G. Madsen og Martin W. Andersen Strategisk og taktisk netværksplanlægning DTU Transport 4. maj, 2010 Oli B.G. Madsen og Martin W. Andersen Agenda DTU Transport - forskning og undervisning i maritim transport Introduktion til netværksdesign

Læs mere

P2-projektforslag Kombinatorik: grafteori og optimering.

P2-projektforslag Kombinatorik: grafteori og optimering. P2-projektforslag Kombinatorik: grafteori og optimering. Vejledere: Leif K. Jørgensen, Diego Ruano 1. februar 2013 1 Indledning Temaet for projekter på 2. semester af matematik-studiet og matematikøkonomi-studiet

Læs mere

Bilag 7 Analyse af alternative statistiske modeller til DEA Dette bilag er en kort beskrivelse af Forsyningssekretariatets valg af DEAmodellen.

Bilag 7 Analyse af alternative statistiske modeller til DEA Dette bilag er en kort beskrivelse af Forsyningssekretariatets valg af DEAmodellen. Bilag 7 Analyse af alternative statistiske modeller til DEA Dette bilag er en kort beskrivelse af Forsyningssekretariatets valg af DEAmodellen. FORSYNINGSSEKRETARIATET OKTOBER 2011 INDLEDNING... 3 SDEA...

Læs mere

Pointen med Funktioner

Pointen med Funktioner Pointen med Funktioner Frank Nasser 0. april 0 c 0080. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette er en

Læs mere

Vidensmedarbejdere i innovative processer

Vidensmedarbejdere i innovative processer Vidensmedarbejdere i innovative processer Vidensmedarbejdere i innovative processer af direktør og partner Jakob Rasmussen, jr@hovedkontoret.dk, HOVEDkontoret ApS 1. Indledning Fra hårdt til blødt samfund

Læs mere

Fornyelsesteori med anvendelser: Punktprøve

Fornyelsesteori med anvendelser: Punktprøve Fornyelsesteori med anvendelser: Punktprøve May 9, 2003 For at få kredit for kurset Fornyelsesteori med anvendelser kræves at afleveringsopgave 1 og 2 samt nedenstående punktprøve besvares tilfredsstillende.

Læs mere

Ruteplanlægning i hjemmeplejen

Ruteplanlægning i hjemmeplejen Ruteplanlægning i hjemmeplejen Danmarks Tekniske Universitet, DTU Informatik og Matematisk Modellering, IMM Af Clement Ryberg Lessel, s001633 Vejleder: Jesper Larsen IMM-M.Sc-2007-32 2. april 2007 2 i

Læs mere

Fig. 1 Billede af de 60 terninger på mit skrivebord

Fig. 1 Billede af de 60 terninger på mit skrivebord Simulation af χ 2 - fordeling John Andersen Introduktion En dag kastede jeg 60 terninger Fig. 1 Billede af de 60 terninger på mit skrivebord For at danne mig et billede af hyppighederne flyttede jeg rundt

Læs mere

CATE BANG FLØE ANNIE FEDDERSEN EMIL MØLLER PEDERSEN

CATE BANG FLØE ANNIE FEDDERSEN EMIL MØLLER PEDERSEN CATE BANG FLØE ANNIE FEDDERSEN EMIL MØLLER PEDERSEN HVAD: What we talk about when we talk about context HVEM: Paul Dourish, Antropolog og professor i Informatik og Computer Science HVOR: Pers Ubiquit

Læs mere

Tal i det danske sprog, analyse og kritik

Tal i det danske sprog, analyse og kritik Tal i det danske sprog, analyse og kritik 0 Indledning Denne artikel handler om det danske sprog og dets talsystem. I første afsnit diskuterer jeg den metodologi jeg vil anvende. I andet afsnit vil jeg

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Matlab script - placering af kran

Matlab script - placering af kran Matlab script - placering af kran 1 Til at beregne den ideelle placering af kranen hos MSK, er der gjort brug af et matlab script. Igennem dette kapitel vil opbygningen af dette script blive gennemgået.

Læs mere

Michael Jokil 11-05-2012

Michael Jokil 11-05-2012 HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Emneopgave: Lineær- og kvadratisk programmering:

Emneopgave: Lineær- og kvadratisk programmering: Emneopgave: Lineær- og kvadratisk programmering: LINEÆR PROGRAMMERING I lineær programmering løser man problemer hvor man for en bestemt funktion ønsker at finde enten en maksimering eller en minimering

Læs mere

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning:

EA3 eller EA Cube rammeværktøjet fremstilles visuelt som en 3-dimensionel terning: Introduktion til EA3 Mit navn er Marc de Oliveira. Jeg er systemanalytiker og datalog fra Københavns Universitet og denne artikel hører til min artikelserie, Forsimpling (som også er et podcast), hvor

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur (struktur opbygget af et endeligt antal enkeltdele) blandt mange mulige. Eksempler:

Læs mere

Nyt Teknisk Forlag Logistik i virksomheden

Nyt Teknisk Forlag Logistik i virksomheden 1 2 3 4 5 6 7 8 Fig. 8.1 Eksempel på en lang distributionskæde. 1 2 3 Fig. 8.2 Eksempel på kort distributionskæde. Fig. 8.3 Eksempel på transportzoner. Transportmarked Traditionelt Moderne Indsatsområde

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Optimeringsproblem: man ønsker at finde bedste den kombinatoriske struktur blandt mange mulige. Dynamisk programmering Optimeringsproblem: man ønsker at finde

Læs mere

Linear Programming ١ C H A P T E R 2

Linear Programming ١ C H A P T E R 2 Linear Programming ١ C H A P T E R 2 Problem Formulation Problem formulation or modeling is the process of translating a verbal statement of a problem into a mathematical statement. The Guidelines of formulation

Læs mere

fs10 1 Skibsfart i Danmark 2 Containerskib 3 Containerkode 4 Aarhus Havn 5 GPS MATEMATIK 10.-klasseprøven December 2011

fs10 1 Skibsfart i Danmark 2 Containerskib 3 Containerkode 4 Aarhus Havn 5 GPS MATEMATIK 10.-klasseprøven December 2011 fs10 10.-klasseprøven MATEMATIK December 2011 Som bilag til dette opgavesæt er vedlagt et svarark 1 Skibsfart i Danmark 2 Containerskib 3 Containerkode 4 Aarhus Havn 5 GPS 1 Skibsfart i Danmark Ifølge

Læs mere

4 Oversigt over kapitel 4

4 Oversigt over kapitel 4 IMM, 2002-09-14 Poul Thyregod 4 Oversigt over kapitel 4 Introduktion Hidtil har vi beskæftiget os med data. Når data repræsenterer gentagne observationer (i bred forstand) af et fænomen, kan det være bekvemt

Læs mere

De 7 bedste tips til din ERPimplementering

De 7 bedste tips til din ERPimplementering De 7 bedste tips til din ERPimplementering En korrekt implementering af din nye ERP-løsning, er afgørende for din forretning. Derfor har vi lavet en step by step guide til den optimale implementering.

Læs mere

Lars Andersen: Anvendelse af statistik. Notat om deskriptiv statistik, χ 2 -test og Goodness of Fit test.

Lars Andersen: Anvendelse af statistik. Notat om deskriptiv statistik, χ 2 -test og Goodness of Fit test. Lars Andersen: Anvendelse af statistik. Notat om deskriptiv statistik, χ -test og Goodness of Fit test. Anvendelser af statistik Statistik er et levende og fascinerende emne, men at læse om det er alt

Læs mere

Videregående Algoritmik. Version med vejledende løsninger indsat!

Videregående Algoritmik. Version med vejledende løsninger indsat! Videregående Algoritmik DIKU, timers skriftlig eksamen, 1. april 009 Nils Andersen og Pawel Winter Alle hjælpemidler må benyttes, dog ikke lommeregner, computer eller mobiltelefon. Opgavesættet består

Læs mere

Danmarks Tekniske Universitet

Danmarks Tekniske Universitet side af sider Danmarks Tekniske Universitet Skriftlig prøve, den 6. maj 0. Kursusnavn: Algoritmer og datastrukturer Kursus nr. 06. Tilladte hjælpemidler: Skriftlige hjælpemidler. Varighed: timer Vægtning

Læs mere

Lineære differentialligningers karakter og lineære 1. ordens differentialligninger

Lineære differentialligningers karakter og lineære 1. ordens differentialligninger enote 11 1 enote 11 Lineære differentialligningers karakter og lineære 1. ordens differentialligninger I denne note introduceres lineære differentialligninger, som er en speciel (og bekvem) form for differentialligninger.

Læs mere

GRIBSKOV KOMMUNE FORÆLDRETILFREDSHEDSUNDERSØGELSE 2019 DAGTILBUD, SKOLE, FO OG KLUB

GRIBSKOV KOMMUNE FORÆLDRETILFREDSHEDSUNDERSØGELSE 2019 DAGTILBUD, SKOLE, FO OG KLUB GRIBSKOV KOMMUNE FORÆLDRETILFREDSHEDSUNDERSØGELSE 2019 DAGTILBUD, SKOLE, FO OG KLUB INDHOLD Afsnit 1 Introduktion Side 02 Afsnit 2 Sammenfatninger Side 04 Afsnit 3 Resultater dagtilbud Side 08 Afsnit 4

Læs mere

Lineære sammenhænge. Udgave 2. 2009 Karsten Juul

Lineære sammenhænge. Udgave 2. 2009 Karsten Juul Lineære sammenhænge Udgave 2 y = 0,5x 2,5 2009 Karsten Juul Dette hæfte er en fortsættelse af hæftet "Variabelsammenhænge, 2. udgave 2009". Indhold 1. Lineære sammenhænge, ligning og graf... 1 2. Lineær

Læs mere

Noter til kursusgang 8, IMAT og IMATØ

Noter til kursusgang 8, IMAT og IMATØ Noter til kursusgang 8, IMAT og IMATØ matematik og matematik-økonomi studierne 1. basissemester Esben Høg 25. oktober 2013 Institut for Matematiske Fag Aalborg Universitet Esben Høg Noter til kursusgang

Læs mere

Metodenotat til analysen:

Metodenotat til analysen: Metodenotat til analysen: Betydning af forsinkelser ved Limfjorden for nordjyske virksomheder Dette metodenotat beskriver den anvendte metode i analysen Betydning af forsinkelser ved Limfjorden for nordjyske

Læs mere

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer.

Grådige algoritmer. Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Grådige algoritmer Et generelt algoritme-konstruktionsprincip ( paradigme ) for

Læs mere

Fra Allan Larsen, Anders Vedsted Nørrelund og Allan Larsen 15. maj 2012 AVN

Fra Allan Larsen, Anders Vedsted Nørrelund og Allan Larsen 15. maj 2012 AVN NOTAT Til Projektleder Tanja Ballhorn Provstgaard Københavns Kommune Teknik- og Miljøforvaltningen Center for Trafik Islands Brygge 37 23 København S Vedr. Effekter af Citylogistikservice i København Fra

Læs mere

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomielt tid Optimeringsproblemer kan ikke altid verificeres i polynomiel

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomielt tid Optimeringsproblemer kan ikke altid verificeres i polynomiel I dag Løsning af NP -hårde optimeringsproblemer Repetition: branch-and-bound Flere begreber Konkret eksempel: TSP Lagrange relaxering Parallel branch-and-bound 1 Opsummering Løsning af NP -hårde optimeringsproblemer

Læs mere

Formålet med dette notat er at danne grundlag for denne beslutning. Notatet består af følgende 4 afsnit:

Formålet med dette notat er at danne grundlag for denne beslutning. Notatet består af følgende 4 afsnit: Notat Vedrørende: Notat om valg mellem statsgaranti og selvbudgettering i 2017 Sagsnavn: Budget 2017-20 Sagsnummer: 00.01.00-S00-5-15 Skrevet af: Brian Hansen E-mail: brian.hansen@randers.dk Forvaltning:

Læs mere

FORÆLDRETILFREDSHED 2016 DAGTILBUD GLADSAXE KOMMUNE

FORÆLDRETILFREDSHED 2016 DAGTILBUD GLADSAXE KOMMUNE FORÆLDRETILFREDSHED 2016 DAGTILBUD GLADSAXE KOMMUNE 1 INDHOLD 01 Introduktion 02 Læsevejledning 03 Samlede resultater 04 Resultater på tværs 05 Prioriteringskort 06 Metode 2 01. INTRODUKTION Forældretilfredsheden

Læs mere

Dansk Sportsdykker Forbund

Dansk Sportsdykker Forbund Dansk Sportsdykker Forbund Teknisk Udvalg Sid Dykketabellen Copyright Dansk Sportsdykker Forbund Indholdsfortegnelse: 1 FORORD... 2 2 INDLEDNING... 3 3 DEFINITION AF GRUNDBEGREBER... 4 4 FORUDSÆTNINGER...

Læs mere

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid

Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid 6 april Løsning af N P -hårde problemer Løs til optimalitet i eksponentiel tid Find tilnærmet løsning i polynomiel tid Oversigt Grænseværdier (repetition) Branch-and-bound algoritmens komponenter Eksempler

Læs mere

OPSTILLING AF EFFEKTIVE MILEPÆLE FOR FLÅDECHEFER

OPSTILLING AF EFFEKTIVE MILEPÆLE FOR FLÅDECHEFER OPSTILLING AF EFFEKTIVE MILEPÆLE FOR FLÅDECHEFER KORTLÆGNING AF EN VELLYKKET STRATEGI FOR 2019 INTRODUKTION Når du skal ud på en længere rejse, er det ikke nok kun at kende destinationen. Du skal også

Læs mere

Dynamisk programmering

Dynamisk programmering Dynamisk programmering Dynamisk programmering Et algoritme-konstruktionsprincip ( paradigme ) for optimeringsproblemer. Har en hvis lighed med divide-and-conquer: Begge opbygger løsninger til større problemer

Læs mere

Seminaropgave: Præsentation af idé

Seminaropgave: Præsentation af idé Seminaropgave: Præsentation af idé Erik Gahner Larsen Kausalanalyse i offentlig politik Dagsorden Opsamling på kausalmodeller Seminaropgaven: Praktisk info Præsentation Seminaropgaven: Ideer og råd Kausalmodeller

Læs mere

Løsning af skyline-problemet

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

Læs mere

Projektopgave Observationer af stjerneskælv

Projektopgave Observationer af stjerneskælv Projektopgave Observationer af stjerneskælv Af: Mathias Brønd Christensen (20073504), Kristian Jerslev (20072494), Kristian Mads Egeris Nielsen (20072868) Indhold Formål...3 Teori...3 Hvorfor opstår der

Læs mere

Anden del af prøven er en individuel prøve med fokus på (simple) matematisk ræsonnementer og (simpel) bevisførelse.

Anden del af prøven er en individuel prøve med fokus på (simple) matematisk ræsonnementer og (simpel) bevisførelse. Nye Mundtlige Prøver Gruppedelprøver i matematik på C- og B-niveau Læreplanernes formulering om de mundtlige prøver Der afholdes en todelt mundtlig prøve. Første del af prøven er en problemorienteret prøve

Læs mere

Talrækker. Aktivitet Emne Klassetrin Side

Talrækker. Aktivitet Emne Klassetrin Side VisiRegn ideer 3 Talrækker Inge B. Larsen ibl@dpu.dk INFA juli 2001 Indhold: Aktivitet Emne Klassetrin Side Vejledning til Talrækker 2-4 Elevaktiviteter til Talrækker 3.1 Talrækker (1) M-Æ 5-9 3.2 Hanoi-spillet

Læs mere

Supply Chain Netværk Design

Supply Chain Netværk Design Supply Chain Netværk Design Indsigt og forretningsværdi Den Danske Supply Chain Konference København den 8. juni 2016 Formålet med i dag Give en generel forståelse af hvad supply chain netværk design er

Læs mere

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515)

Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM515) Skriftlig Eksamen Introduktion til lineær og heltalsprogrammering (DM55) Institut for Matematik & Datalogi Syddansk Universitet Mandag den 2 Juni 2008, kl. 9 Alle sædvanlige hjælpemidler (lærebøger, notater

Læs mere

Projekt 1 Spørgeskemaanalyse af Bedst på Nettet

Projekt 1 Spørgeskemaanalyse af Bedst på Nettet Projekt 1 Spørgeskemaanalyse af Bedst på Nettet D.29/2 2012 Udarbejdet af: Katrine Ahle Warming Nielsen Jannie Jeppesen Schmøde Sara Lorenzen A) Kritik af spørgeskema Set ud fra en kritisk vinkel af spørgeskemaet

Læs mere

ALMINDELIGT ANVENDTE FUNKTIONER

ALMINDELIGT ANVENDTE FUNKTIONER ALMINDELIGT ANVENDTE FUNKTIONER I dette kapitel gennemgås de almindelige regnefunktioner, samt en række af de mest nødvendige redigerings- og formateringsfunktioner. De øvrige redigerings- og formateringsfunktioner

Læs mere

Programmering, algoritmik og matematik en nødvendig sammenblanding?

Programmering, algoritmik og matematik en nødvendig sammenblanding? Programmering, algoritmik og matematik en nødvendig sammenblanding? Oplæg til IDA møde, 29. november 2004 Martin Zachariasen DIKU 1 Egen baggrund B.Sc. i datalogi 1989; Kandidat i datalogi 1995; Ph.D.

Læs mere

Skatteudvalget SAU alm. del - Svar på Spørgsmål 301 Offentligt. J.nr. Til Folketingets Skatteudvalg

Skatteudvalget SAU alm. del - Svar på Spørgsmål 301 Offentligt. J.nr. Til Folketingets Skatteudvalg Skatteudvalget SAU alm. del - Svar på Spørgsmål 301 Offentligt J.nr. j.nr. 07-104724 Dato : 5. juli 2007 Til Folketingets Skatteudvalg Hermed sendes svar på spørgsmål nr.301 af 21. juni 2007. (Alm. del).

Læs mere

Broer, skak og netværk Carsten Thomassen: Naturens Verden 10, 1992, s. 388-393.

Broer, skak og netværk Carsten Thomassen: Naturens Verden 10, 1992, s. 388-393. Broer, skak og netværk Side 1 af 6 Broer, skak og netværk Carsten Thomassen: Naturens Verden 10, 1992, s. 388-393. Eksempler på praktiske anvendelser af matematik og nogle uløste problemer Indledning Figur

Læs mere

Hvor bevæger HR sig hen?

Hvor bevæger HR sig hen? Rapport Hvor bevæger HR sig hen? HR træfpunkt 2005 Oktober 2005 Undersøgelsen er gennemført af Butterflies PR and more På vegne af PID Personalechefer i Danmark HR bevæger sig fra bløde værdier mod mere

Læs mere

Landbrugsstyrelsen Kundetilfredshedsundersøgelse 2017

Landbrugsstyrelsen Kundetilfredshedsundersøgelse 2017 Landbrugsstyrelsen Kundetilfredshedsundersøgelse 2017 Rapport RAMBØLL 19-12-2017 Indhold 3 Indledning Kort om undersøgelsen samt indledning 4 Overordnede konklusioner Udvikling siden 2013 og 2015, på tværs

Læs mere

Tilfældige rektangler: Et matematikeksperiment Variable og sammenhænge

Tilfældige rektangler: Et matematikeksperiment Variable og sammenhænge Tilfældige rektangler: Et matematikeksperiment Variable og sammenhænge Baggrund: I de senere år har en del gymnasieskoler eksperimenteret med HOT-programmet i matematik og fysik, hvor HOT står for Higher

Læs mere

E-markedspladser et springbræt for dansk eksport

E-markedspladser et springbræt for dansk eksport E-markedspladser et springbræt for dansk eksport Reimer Ivang, Morten Rask og Erik A. Christensen Reimar Ivang, Morten Rask og Erik A. Christensen E-markedspladser et springbræt for dansk eksport 1. udgave

Læs mere

Tyskland trækker væksten i SMV-eksporten 1 : SMV-eksportstatistikken opdateret med 2014-tal.

Tyskland trækker væksten i SMV-eksporten 1 : SMV-eksportstatistikken opdateret med 2014-tal. Tyskland trækker væksten i SMV-eksporten 1 : SMV-eksportstatistikken opdateret med 2014-tal. Eksportrådets statistik over SMV-eksporten er nu opdateret med 2014-tal. Eksportstatistikken, der er udviklet

Læs mere

Projektarbejde med scrum- metoden

Projektarbejde med scrum- metoden Projektarbejde med scrum- metoden Indhold Indhold... 1 1 Indledning... 2 2 Roller og terminologi i scrum... 3 Opgavestilleren... 3 Scrum Masteren... 3 Projektgruppen... 3 Sprint... 3 3 Møder... 3 Planlægningsmødet...

Læs mere

P2-gruppedannelsen for Mat og MatØk

P2-gruppedannelsen for Mat og MatØk Institut for Matematiske Fag Aalborg Universitet Danmark 1-02-2012 Vejledere Bo Hove E-mail: bh@thisted-gymnasium.dk 3 Mat grupper (semesterkoordinator) E-mail: diego@math.aau.dk. Web page: http://people.math.aau.dk/~diego/

Læs mere

Spilstrategier. 1 Vindermængde og tabermængde

Spilstrategier. 1 Vindermængde og tabermængde Spilstrategier De spiltyper vi skal se på her, er primært spil af følgende type: Spil der spilles af to spillere A og B som skiftes til at trække, A starter, og hvis man ikke kan trække har man tabt. Der

Læs mere

Noter til kursusgang 9, IMAT og IMATØ

Noter til kursusgang 9, IMAT og IMATØ Noter til kursusgang 9, IMAT og IMATØ matematik og matematik-økonomi studierne 1. basissemester Esben Høg 4. november 013 Institut for Matematiske Fag Aalborg Universitet Esben Høg Noter til kursusgang

Læs mere

Produktion III. Del af en integreret virksomhedsløsning. Produktion III til Microsoft Navision Axapta. forøger effektiviteten i produktionscyklussen.

Produktion III. Del af en integreret virksomhedsløsning. Produktion III til Microsoft Navision Axapta. forøger effektiviteten i produktionscyklussen. Produktion III til Microsoft Navision Axapta forøger effektiviteten i produktionscyklussen. Produktion III Produktionsserien til Microsoft Navision Axapta gør det muligt for producenter at styre hele Fordele

Læs mere

Kapitel 2 Tal og variable

Kapitel 2 Tal og variable Tal og variable Uden tal ingen matematik - matematik handler om tal og anvendelse af tal. Matematik beskæftiger sig ikke udelukkende med konkrete problemer fra andre fag, og de konkrete tal fra andre fagområder

Læs mere

Funktionsterminologi

Funktionsterminologi Funktionsterminologi Frank Nasser 12. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette

Læs mere

Rækkefølgen af faserne i en spilleomgang Nedenfor ses et resumé af faserne i en spilleomgang, som SKAL udføres i nævnte rækkefølge.

Rækkefølgen af faserne i en spilleomgang Nedenfor ses et resumé af faserne i en spilleomgang, som SKAL udføres i nævnte rækkefølge. 14538i08 2/18/00 4:31 PM Page 1 Rækkefølgen af faserne i en spilleomgang Nedenfor ses et resumé af faserne i en spilleomgang, som SKAL udføres i nævnte rækkefølge. Forstærkningsfase - 1/3 af de besatte

Læs mere

Hvad kan forklare danmarks eksport mønster?

Hvad kan forklare danmarks eksport mønster? Organisation for erhvervslivet Januar 2010 Hvad kan forklare danmarks eksport mønster? AF CHEFKONSULENT MORTEN GRANZAU NIELSEN, MOGR@DI.DK en nyudviklet eksportmodel fra DI kan forklare 90 pct. af Danmarks

Læs mere

Hovedresultater fra PISA Etnisk 2015

Hovedresultater fra PISA Etnisk 2015 Hovedresultater fra PISA Etnisk 2015 Baggrund I PISA-undersøgelserne fra 2009, 2012 og 2015 er der i forbindelse med den ordinære PISA-undersøgelse foretaget en oversampling af elever med anden etnisk

Læs mere

Sikre Beregninger. Kryptologi ved Datalogisk Institut, Aarhus Universitet

Sikre Beregninger. Kryptologi ved Datalogisk Institut, Aarhus Universitet Sikre Beregninger Kryptologi ved Datalogisk Institut, Aarhus Universitet 1 Introduktion I denne note skal vi kigge på hvordan man kan regne på data med maksimal sikkerhed, dvs. uden at kigge på de tal

Læs mere

Nærværende memo er organiseret først med et overblik over de fundne konklusioner og derefter en beskrivelse af de anvendte antagelser

Nærværende memo er organiseret først med et overblik over de fundne konklusioner og derefter en beskrivelse af de anvendte antagelser MEMO Projekt Skibsstatistik Kunde Inter Terminals Danmark Dato 19-08-2013 Til Lis Reker Fra Julie Refsgaard Lawaetz KS (KS på tidligere notat af 12-11-2012 er udført af Tue Lehn-Schiøler) 1.1 Indledning

Læs mere

Variabel- sammenhænge

Variabel- sammenhænge Variabel- sammenhænge 2008 Karsten Juul Dette hæfte kan bruges som start på undervisningen i variabelsammenhænge for st og hf. Indhold 1. Hvordan viser en tabel sammenhængen mellem to variable?... 1 2.

Læs mere

Tid til konvertering til 4 % fastforrentet lån

Tid til konvertering til 4 % fastforrentet lån 31.august 2010 Tid til konvertering til 4 % fastforrentet lån Udgiver Realkredit Danmark Parallelvej 17 2800 Kgs. Lyngby Risikostyring & funding Redaktion Lise Nytoft Bergmann libe@rd.dk Den seneste tids

Læs mere

[FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers. 2.0

[FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers. 2.0 MaB Sct. Knud Gymnasium, Henrik S. Hansen % [FUNKTIONER] Hvornår kan vi kalde en sammenhæng en funktion, og hvilke egenskaber har disse i givet fald. Vers..0 Indhold Funktioner... Entydighed... Injektiv...

Læs mere

Algoritmedesign med internetanvendelser ved Keld Helsgaun

Algoritmedesign med internetanvendelser ved Keld Helsgaun Algoritmedesign med internetanvendelser ved Keld Helsgaun 1 Analyse af algoritmer Input Algoritme Output En algoritme er en trinvis metode til løsning af et problem i endelig tid 2 Algoritmebegrebet D.

Læs mere

Oprids over grundforløbet i matematik

Oprids over grundforløbet i matematik Oprids over grundforløbet i matematik Dette oprids er tænkt som en meget kort gennemgang af de vigtigste hovedpointer vi har gennemgået i grundforløbet i matematik. Det er en kombination af at repetere

Læs mere

ET HAV AF VARER HAVNEN LÆRERVEJLEDNING klasse Natur/teknologi Varighed ca. 5 lektioner

ET HAV AF VARER HAVNEN LÆRERVEJLEDNING klasse Natur/teknologi Varighed ca. 5 lektioner HAVNEN ET HAV AF VARER LÆRERVEJLEDNING 5.-6. klasse Natur/teknologi Varighed ca. 5 lektioner Emneord: Energi, teknologi, transport, CO2, brændstof, forurening, logistik, transport, arbejdsfunktioner, vareproduktion,

Læs mere

Fable Kom godt i gang

Fable Kom godt i gang Fable Kom godt i gang Opdateret: 26-03-2018 Indholdsfortegnelse 1. Først skal du installere programmet på din computer 3 2. Når programmet er installeret er du klar til at pakke robotten ud 4 3. Nu er

Læs mere

Repetition. Diskrete stokastiske variable. Kontinuerte stokastiske variable

Repetition. Diskrete stokastiske variable. Kontinuerte stokastiske variable Normal fordelingen Normal fordelingen Egenskaber ved normalfordelingen Standard normal fordelingen Find sandsynligheder ud fra tabel Transformation af normal fordelte variable Invers transformation Repetition

Læs mere

ProMark workforce management ProJob

ProMark workforce management ProJob ProMark workforce management er løsningen til optimering af virksomhedens produktionsprocesser og -omkostninger gennem oversigter, indsamling af produktionskritiske jobdata, effektiv rapportering og integration

Læs mere

Forbedring af efterføderteknologier til energibesparelse i jernstøberier

Forbedring af efterføderteknologier til energibesparelse i jernstøberier Slutrapport for projekt: Forbedring af efterføderteknologier til energibesparelse i jernstøberier Niels Skat Tiedje DTU Mekanik 29. august 2014 Indhold Indhold... 2 Introduktion og mål... 3 Del 1: anvendelse

Læs mere

Matematik A og Informationsteknologi B

Matematik A og Informationsteknologi B Matematik A og Informationsteknologi B Projektopgave 2 Eksponentielle modeller Benjamin Andreas Olander Christiansen Jens Werner Nielsen Klasse 2.4 6. december 2010 Vejledere: Jørn Christian Bendtsen og

Læs mere

Matema10k. Matematik for hhx C-niveau. Arbejdsark til kapitlerne i bogen

Matema10k. Matematik for hhx C-niveau. Arbejdsark til kapitlerne i bogen Matema10k Matematik for hhx C-niveau Arbejdsark til kapitlerne i bogen De følgende sider er arbejdsark og opgaver som kan bruges som introduktion til mange af bogens kapitler og underemner. De kan bruges

Læs mere

Matematikken i kunstig intelligens Opgaver om koordinerende robotter LØSNINGER

Matematikken i kunstig intelligens Opgaver om koordinerende robotter LØSNINGER Matematikken i kunstig intelligens Opgaver om koordinerende robotter LØSNINGER Thomas Bolander 25. april 2018 Vejledning til opgaver Opgave 1 kan eventuelt springes over, hvis man har mindre tid. De resterende

Læs mere

Havnenes rolle i transportudviklingen PETER BJERG OLESEN PH.D. STUDENT IN PORT LOGISTICS

Havnenes rolle i transportudviklingen PETER BJERG OLESEN PH.D. STUDENT IN PORT LOGISTICS 1 Havnenes rolle i transportudviklingen PETER BJERG OLESEN PH.D. STUDENT IN PORT LOGISTICS Supply chain managment 2 Konkurrenceevne for forsyningskæden Enkelte virksomheder har svært ved at konkurrere

Læs mere

Integralregning Infinitesimalregning

Integralregning Infinitesimalregning Udgave 2.1 Integralregning Infinitesimalregning Noterne gennemgår begreberne integral og stamfunktion, og anskuer dette som et redskab til bestemmelse af arealer under funktioner. Noterne er supplement

Læs mere

VUC Vestsjælland Syd, Slagelse Nr. 2 Institution: Projekt Vejanlæg. Matematik B-niveau Differentialregning

VUC Vestsjælland Syd, Slagelse Nr. 2 Institution: Projekt Vejanlæg. Matematik B-niveau Differentialregning VUC Vestsjælland Syd, Slagelse Nr. 2 Institution: 333247 2015 Projekt Matematik B-niveau Differentialregning Anders Jørgensen, Kirstine Irming, Mark Kddafi, Zehra Köse og Tobias Winberg Indledning I dette

Læs mere

Symmetrisk Traveling Salesman Problemet

Symmetrisk Traveling Salesman Problemet Symmetrisk Traveling Salesman Problemet Videregående Algoritmik, Blok 2 2008/2009, Projektopgave 2 Bjørn Petersen 9. december 2008 Dette er den anden af to projektopgaver på kurset Videregående Algoritmik,

Læs mere

Optimeringsmatematik og matematik-økonomi studiet

Optimeringsmatematik og matematik-økonomi studiet Optimeringsmatematik og matematik-økonomi studiet og specielt anvendelser af matematisk programmering Esben Høg Institut for Matematiske Fag Aalborg Universitet Oktober 2012 EH (Institut for Matematiske

Læs mere

Stokastiske processer og køteori

Stokastiske processer og køteori Stokastiske processer og køteori 9. kursusgang Anders Gorst-Rasmussen Institut for Matematiske Fag Aalborg Universitet 1 OPSAMLING EKSAKTE MODELLER Fordele: Praktiske til initierende analyser/dimensionering

Læs mere

Deskriptiv statistik. Version 2.1. Noterne er et supplement til Vejen til matematik AB1. Henrik S. Hansen, Sct. Knuds Gymnasium

Deskriptiv statistik. Version 2.1. Noterne er et supplement til Vejen til matematik AB1. Henrik S. Hansen, Sct. Knuds Gymnasium Deskriptiv (beskrivende) statistik er den disciplin, der trækker de væsentligste oplysninger ud af et ofte uoverskueligt materiale. Det sker f.eks. ved at konstruere forskellige deskriptorer, d.v.s. regnestørrelser,

Læs mere

Introduktion. Gik du glip af sidste uges materiale? Find det her. Figur: Ladder og Inference

Introduktion. Gik du glip af sidste uges materiale? Find det her. Figur: Ladder og Inference Introduktion I sidste uge skrev vi om Ladder of Inference og om hvordan vores opfattelse og fortolkning af verden kan styrke en silo-tænkning og vanskeliggøre dét at tænke ud af boksen. Ladder of inference

Læs mere

Virksomhedspraktik til flygtninge

Virksomhedspraktik til flygtninge Virksomhedspraktik til flygtninge Af Lasse Vej Toft, LVT@kl.dk Formålet med dette analysenotat er, at give viden om hvad der har betydning for om flygtninge kommer i arbejde efter virksomhedspraktik Analysens

Læs mere

Matematisk modellering og numeriske metoder. Lektion 13

Matematisk modellering og numeriske metoder. Lektion 13 Matematisk modellering og numeriske metoder Lektion 3 Morten Grud Rasmussen 3. november 206 Numerisk metode til Laplace- og Poisson-ligningerne. Finite difference-formulering af problemet I det følgende

Læs mere