• No results found

A comparison of differential evolution and a genetic algorithm applied to the longest path problem

N/A
N/A
Protected

Academic year: 2022

Share "A comparison of differential evolution and a genetic algorithm applied to the longest path problem"

Copied!
41
0
0

Loading.... (view fulltext now)

Full text

(1)

A comparison of differential

evolution and a genetic algorithm applied to the longest path problem

MARCUS HAMILTON JACOB NYMAN

KTH

SKOLAN FÖR ELEKTROTEKNIK OCH DATAVETENSKAP

(2)

evolution och en genetisk algoritm tillämpat på längsta stigproblemet

MARCUS HAMILTON JACOB NYMAN

Civilingenjör Datateknik Datum: 5 juni 2018

Handledare: Jeanette Hällgren Kotaleski Examinator: Örjan Ekeberg

Engelsk titel: A comparison of differential evolution and a genetic algorithm applied to the longest path problem

Skolan för Datavetenskap och Kommunikation

(3)

Sammanfattning

Genetiska algoritmer och differential evolution är två väletablerade ty- per av generiska algoritmer som går att applicera på mängder av oli- ka optimeringsproblem. Båda tillhör gruppen evolutionära algoritmer som är inspirerade av naturen och har många praktiska tillämpning- ar inom exempelvis forskning och industrin. I denna studie appliceras algoritmerna på det NP-fullständiga längsta stigproblemet i syftet att jämföra deras prestanda.

En grundläggande beskrivning av algoritmerna ges och dess vik- tigaste komponenter som kromosom, gen, crossover, mutation och se- lektion definieras. Sedan beskrivs deras implementationen i närmare detalj för denna studie. Även en specialiserad variant av differential evolution, discrete differential evolution, tas upp då denna variant im- plementeras i denna undersökning.

Resultaten visar att algoritmen för differential evolution presterar väsentligt bättre än motsvarande genetisk algoritm. En större orsak till detta är att den implementerade varianten av differential evolution är mer problembaserad än den mer generiska genetiska algoritmen.

Slutsatsen som dras är att en variant av discrete differential evolution presterar betydligt bättre än en generisk genetisk algoritm på detta problem, men inget generellt antagande kan göras om algoritmernas prestanda för alla eller andra typer av problem.

(4)

Abstract

Genetic algorithms and differential evolution are two well-established types of generic algorithms that can be applied to a great number of optimization problems. Both are subgroups of evolutionary algo- rithms that are inspired by nature, with many practical implementa- tions in for instance research and the industry. In this paper the al- gorithms are applied to the NP-hard longest path problem with the purpose of comparing their perfomances.

The basics of the algorithms are provided along with defining their most important components, chromosome, gene, crossover, mutation and selection. All of which are further described in detail how they were implemented for this paper. Additionally a specialized type of the differential evolution algorithm is brought up, namely discrete dif- ferential evolution, as this version was implemented for this paper.

The results show that the differential evolution algorithm performs significantly better than the genetic algorithm and the possible under- lying causes to this are discussed, one major cause being that the dif- ferential evolution algorithm is more adapted to the specified problem, longest path problem. The conclusion is that discrete differential evo- lution perfoms considerably better than a generic genetic algorithm on this particular problem, but no further general assumptions can be made regarding their perfomance for all or any other types of prob- lems.

(5)

1 Introduktion 1

1.1 Frågeställning . . . 2

2 Bakgrund 3 2.1 Längsta stigproblemet . . . 3

2.2 Genetiska algoritmer . . . 4

2.2.1 Beståndsdelar . . . 4

2.3 Differential evolution . . . 6

2.3.1 Mutation . . . 6

2.3.2 Crossover . . . 7

2.3.3 Selektion . . . 7

2.3.4 Varianter och DE/x/y/z . . . 8

2.3.5 Diskret/Kombinatorisk DE . . . 8

2.4 Tidigare studier . . . 9

2.4.1 Hypotes . . . 10

3 Metod 11 3.1 Lösningsrepresentation . . . 11

3.2 Längsta stigproblemet . . . 11

3.3 Genetiska algoritmen . . . 12

3.3.1 Initialisering . . . 12

3.3.2 Selektion . . . 12

3.3.3 Crossover . . . 13

3.3.4 Mutation . . . 14

3.3.5 Parametrar . . . 14

3.4 Differential Evolution . . . 14

3.4.1 Initialisering . . . 15

3.4.2 Mutation . . . 15

3.4.3 Crossover . . . 16

v

(6)

3.4.4 Parametrar . . . 16

3.5 Tester . . . 17

4 Resultat 18 5 Diskussion 27 5.1 Skillnader . . . 27

5.2 Målfunktionen . . . 27

5.3 Problembasering . . . 28

5.4 Förbättringar . . . 29

5.5 Tillförlitlighet . . . 29

6 Slutsats 30

Litteratur 31

A Extra Material som Bilaga 34

(7)

Genetiska algoritmer och differential evolution är två naturinspirerade metoder som appliceras på optimeringsproblem. Båda heuristikerna ingår i gruppen metaheuristiker. Detta innebär att de båda är generel- la algoritmiska ramverk utformade för att lösa komplexa optimerings- problem [5]. De är alltså problemoberoende.

Naturinspirerade algoritmer som genetiska algoritmer och diffe- rential evolution är intressanta att undersöka eftersom de ofta är rela- tivt enkla att implementera men kan samtidigt fungera effektivt på många olika typer av optimeringsproblem utan att veta så mycket om problemet eftersom de inte kräver deriverings-information (eng.

Derivative-free optimization). Samtidigt är de även intressanta ur ett biologiskt perspektiv, hur naturen och dess tillvägagångssätt har ska- pats under en lång tid av evolutionära processer och då istället för att själva komma på algoritmer från grunden kan vi ta inspiration däri- från.

Genetiska algoritmer imiterar i stora drag evolution och naturligt urval. Differential evolution kan ses som en liknande, mer teoretisk, variant av genetiska algoritmer vilket gör att dessa blir mycket intres- santa att jämföra, eftersom vi kan se för- och nackdelar av två liknande metoder.

Ett praktiskt exempel av användningen av genetiska algoritmer kan vara balanserande av arbete hos löpande band [18]. På grund av de kombinatoriska egenskaperna av detta problem är metaheuristis- ka algoritmer lämpliga metoder för att lösa problemet. Ett annat kon- kret exempel där en genetisk algoritm framgångsrikt applicerats är i NASA:s rymdteknologi där en genetisk algoritm funnit den optimala formen på en antenn (evolved antenna) för att skapa det bästa strål- ningsmönstret [13].

Även differential evolution har många praktiska applikationer. Dif- ferential evolution används mycket inom aerodynamik gällande kon-

1

(8)

struktion och formgivning av exempelvis blad, fenor, vingprofil, moto- rer, etc. [17]. Differential evolution spelar även en stor roll inom elekt- riska system som kraftnät och kraftverk för exempelvis optimerings- problem gällande schemaläggning av optimal produktion av effekt från ett flertal anläggningar [12].

I denna rapport appliceras algoritmerna på ett kombinatoriskt pro- blem, längsta stigproblemet, vilket gör att flera restriktioner måste tilläm- pas. På så sätt ger analysen även en indikation på hur algoritmer- na presterar under specifika omständigheter. Längsta stigproblemet är NP-fullständigt och därmed relevant på grund av dess komplexa natur.

1.1 Frågeställning

Hur presterar en generisk genetisk algoritm och en diskret/kombinatorisk variant av differential evolution på längsta stigproblemet?

(9)

Denna del av rapporten tar upp viktig och relevant information kring problemet som ska lösas och algoritmerna som löser problemet. Tidi- gare studier som gjorts inom samma och liknande områden tas också upp, samt en hypotes baserat på dessa presenteras.

2.1 Längsta stigproblemet

Längsta stigproblemet (LSP) (longest path problem) är ett NP-fullständigt problem [19] som går ut på att finna den längsta stigen i en graf. Det är därmed ett diskret och kombinatoriskt optimeringsproblem då lös- ningar består av en uppsättning av diskreta värden, hörn, där inga hörn får upprepas [2].

Vi väljer att testa våra implementationer på LSP för att ett fåtal stu- dier har gjorts på det problemet jämfört med exempelvis handelsre- sandeproblemet. Problemet är även förhållandevis enkelt att imple- mentera jämfört med mer realistiska problem, både gällande evalu- ering av lösningar samt generering av tester. Detta beror på att ha- miltonstigar lätt kan skapas utan att behöva utföra totalsökning (för att finna den optimala lösningen till probleminstansen). En annan vik- tig aspekt av LSP är att det är baserat på och har visats vara svårare att lösa än hamiltonstigsproblemet [9]. Detta är viktigt eftersom ha- miltonstigsproblemet är ett välkänt NP-fullständigt problem och före- kommer ofta i studier. Eftersom LSP liknar detta problem, men inne- håller aspekter som gör det svårare att lösa, blir det ett mer intressant problem att bepröva eftersom de eventuella prestandaskillnader kan bli mer prominenta hos algoritmerna på grund av deras olika egen- skaper.

3

(10)

2.2 Genetiska algoritmer

Genetiska algoritmer (GA) är en typ av naturinspirerad algoritm som löst imiterar evolution och naturligt urval. När sökrymden för ett pro- blem är okänd eller saknar en tydlig struktur ges en lämplig imple- mentation för ett närmande till en lösning av en genetisk algoritm [6].

En viktig aspekt av genetiska algoritmer och liknande metaheuristi- ker är att populationen består av en mängd potentiella lösningar, som alla kan leda till en optimal eller tillräckligt bra lösning [10]. Dessa potentiella lösningar optimeras sedan genom att ta de bästa exempla- ren, blanda deras egenskaper och föra dem vidare till nästa generation av lösningar samtidigt som olika slumpvisa förändringar sporadiskt förekommer. Urvalet av de bästa exemplaren är i detta sammanhang det som kallas naturligt urval för genetiska algoritmer, och hela denna process upprepas i varje iteration.

2.2.1 Beståndsdelar

För att återskapa principen om naturligt urval krävs flera komponen- ter i en genetisk algoritm. Nedan listas de viktigaste beståndsdelarna som är definierande för och utgör grunden för en genetisk algoritm.

• Kromosom

• Gen

• Crossover

• Mutation

• Fitness

• Selektion

Kromosomerna representeras ofta av en sträng eller en följd av tal.

Kromosomen definierar algoritmens beteende och utgör en potentiell lösning. De skapas och utvecklas iterativt under programmets gång under optimeringsprocessen. Kromosomerna består i sin tur av gener.

Varje gen representerar en enskild egenskap [10]. Dessa egenskaper kan vara ett värde som i sammanhanget har en annan betydelse, ex- empelvis i LSP innebär varje egenskap ett steg till ett nytt hörn i grafen.

(11)

Crossover verkar på kromosomerna och generna hos exemplaren.

Crossover innebär att de utvalda exemplaren i en viss generation kom- bineras för att eventuellt skapa bättre varianter i nästa generation. Ett vanligt sätt att utföra crossover mellan två exemplar är att kromoso- merna delas vid en given punkt och blandas (se figur 2.1) [11].

Figur 2.1:Crossover mellan två föräldrar, där generna delas vid en ar- biträr punkt hos de två föräldrarna och blandas i avkommorna. Detta är en så kallad single/one-point crossover. [11]

Med crossover kan de bästa egenskaperna av två exemplar använ- das för att skapa ett ännu bättre exemplar, men den tar endast hänsyn till tidigare generationers populationer och kan därmed sakna vissa egenskaper som krävs för att hitta bra lösningar. Mutation blir därför viktigt för att genom slumpen förändra lösningar så sökningen inte fastnar i lokala minimum. Mutationsfaktorn representerar chansen att en gen slumpmässigt ändras eller skapas för varje individuell lösning.

Det viktiga med mutationer är att de utelämnas helt åt slumpen och att de ska vara opartiska. En större chans för en viss riktning har vi- sats vara missgynnsamt i särskilda sammanhang. Faktorn för detta bör heller inte vara för stor, eftersom det kan leda till att processen istället går mot en random search [11].

För att avgöra och mäta framsteg behövs ett fitness-värde. Detta värde representerar hur väl och träffsäkert målfunktionen för optime- ringsproblemet uppfylls. Detta avgör sannolikheten för reproduktion för varje enskild potentiell lösning. De lösningar med bäst fitness har störst chans att föras vidare och “para sig” med varandra för att fram- ställa en potentiellt bättre lösning till nästa generation [14].

Urvalsprocessen för parning kallas selektion. I denna process represen- teras varje exemplar i proportion med dess fitness och på så sätt för se- lektionen oftare vidare bra exemplar än dåliga. I vidare mening är det

(12)

här naturligt urval sker för att förbättra nästa generation och produ- cera ett resultat närmare det önskade. Vi kan säga att här konvergerar problemet [14].

Hela denna process sammanfattas i Algoritm 1.

Algoritm 1:Pseudokod för en generisk GA initialisering

evaluering

while stoppvilkoret inte är uppfyllt do selektion

crossover mutation evaluering end

2.3 Differential evolution

Differential evolution (DE) är en vektorbaserad metaheuristik-algoritm som delar likheter med GA. Den kan ses som en utveckling till GA då det ingår explicita, uppdaterande ekvationer vilket möjliggör teoretisk analys. Precis som i GA ingår steg som selektion, mutation och crosso- ver. Däremot skiljer sig stegen, både till ordning och innehåll, från GA [20].

En typisk algoritm baserad på DE kan se ut på följande sätt. Först initialiseras population med slumpvis genererade lösningar som eva- lueras. Sedan körs ett flertal iterationer av stegen mutation, crossover och selektion i den ordningen [20].

2.3.1 Mutation

I mutationssteget skapas, för varje vektor i populationen, en så kal- lad donatorvektor (donor-vector) genom diverse vektor-operationer.

En variant, rand/1 visas nedan:

vj = xp+ F(xqxr)

För varje j i populationen där xp, xq och xr är tre andra distinkta vektorer i populationen, F är en så kallad differentialvikt, och vj dona- torvektorn som skapas, se figur 2.2 [20].

(13)

Figur 2.2:Visualisering av DE, där δ= F(xqxr)[20].

2.3.2 Crossover

Vid crossover-steget så skapas en försöksvektor (trial-vector) genom en slumpvis blandning av den tidigare generationens vektor och dona- torvektorn som skapas under mutationen.

2.3.3 Selektion

I selektionssteget så ersätts den tidigare vektorn med den genererade försöksvektorn om den får ett bättre fitness-värde vid evaluering än den tidigare vektorn [20]. Hela processen sammanfattas i pseudoko- den nedan:

Algoritm 2:Pseudokod för en generisk DE initialisering

evaluering

while stoppvilkoret inte är uppfyllt do for för varje x i populationen do

v = mutation enligt vald variant u = crossover(x, v)

Selektion, uppdatera endast om den nya lösningen är bättre:

if f(u) > f(x) then x = u

end end end

(14)

2.3.4 Varianter och DE/x/y /z

Eftersom det finns olika varianter av DE i olika steg i processen inför- des en notation för att skilja på dessa varianter, DE/x/y/z, där:

x står för vilken mutations-metod som används y står för antalet differens-vektorer som används z står för vilken crossover-metod som används

Exempel är DE/Best/2/Exp och DE/Rand/1/Bin [20].

2.3.5 Diskret/Kombinatorisk DE

DE var ursprungligen skapad för optimering av funktioner på konti- nuerliga intervall och inte diskreta då den internt arbetar med flyttal men har ändå framgångsrikt tillämpats på vissa kombinatoriska pro- blem, t.ex. kappsäcksproblemet [16]. Det finns ett flertal olika metoder för att använda DE på kombinatoriska problem och nedan följer några tillvägagångssätt. Metoderna utgår från att den diskreta representatio- nen representeras av en mängd heltal.

Relative Position Indexing

I denna metod transformeras vektorer med diskreta värden till vekto- rer med flyttal i intervalet [0, 1]. Därefter utförs mutation samt crosso- ver och sedan sker en transformation tillbaka genom relative position in- dexing. Detta görs genom storleksordningen sådan att det minsta vär- det i vektorn får det minsta diskreta värdet, det näst minsta får det näst minsta diskreta värdet o.s.v. Det skapas alltid en giltig permuta- tion så länge inte två eller fler flyttal får samma värde, i så fall måste försöksvektorn slängas eller repareras [16].

Forward/Backward Transformation Approach I denna metod sker två steg.

Först transformeras permutations-vektorn till en flyttalsvektor ge- nom en forward transformation som ges av:

ˆxg,i = −1 + αxg,i

(15)

där α är ett litet nummer, xg,i är den diskreta representationen för en lösning i vid generation g och ˆxg,i flyttalsvektorn som skapas. Se- dan kan mutation och crossover utföras på vanligt vis. Därefter kan vektorn konverteras tillbaka från flyttal till heltal genom en backward transformation:

xg,i = round 1

α(1+ ˆxg,i)



[16]

Discrete Differential Evolution

Discrete differential evolution (DDE) är en variant av DE som skiljer sig från många andra metoder på det sättet att permutationen aldrig transformeras till en flyttalsrepresentation. Istället utförs olika proce- durer och heuristiker i mutation- och crossover-stegen. I mutationsste- get störs den bästa lösningen i förra generationen genom en destruktion- och konstruktionsprocedur eller med en insert-operator (beroende på en slumpad variabel) och på så sätt generas en donatorvektor. Dessa ope- rationers implementation kan variera. Sedan under crossover så ska- pas antingen en försöksvektor genom en crossover-operator eller så behålls donatorvektorn (beroende på en crossover-sannolikhet). I DDE används Two-cut PTL Crossover operator (Se Metod). Slutligen sker se- lektionen på samma sätt som en vanlig DE. Under avsnittet Metod beskrivs fler detaljer kring tillämpningen.

2.4 Tidigare studier

GA och DE är generiska på det sättet att de kan appliceras på en multi- tud av problem och på olika sätt. Lösningen/kromosomen kan kodas på olika sätt, målfunktionen kan implementeras olika, likaså crossover, mutation m.m. och det finns därmed ingen garanti för att resultat från tidigare studier kommer vara identiska med resultat i denna studie.

Algoritmerna följer däremot i grunden samma principer och riktlinjer oavsett implementation och det är sannolikt att samband mellan dem kan finnas.

I en studie av Brian Hegerty, Chih-Cheng Hung, och Kristen Kasprak jämförs DE och GA på kombinatoriska problem [8]. Här presenteras en stor skillnad mellan GA och DE i prestandaförmåga och resultat.

(16)

Det framgår att DE är den mer pålitliga algoritmen av de två, där GA fastnade i en icke-optimal lösning med en avsevärt högre frekvens än DE, som fortsatte att förbättras över problemet. Båda algoritmerna gav goda resultat för problem av mindre storlek, men eftersom DE produ- cerade bättre resultat för större skalor av problemet visade den sig vara mer robust. I studien påpekas dock att det finns värde i GA på grund av dess hastighet och hur snabbt ett lokalt minimum kan finnas [8].

Resultatet presenterat i den studien stöds även av [7] där den bästa lösningen för ett optimeringsproblem fanns av den DE som skapats och inte av motsvarade GA.

Resultaten från [4] visar däremot det motsatta, nämligen att GA pre- sterar någorlunda bättre som optimeringsmetod för det specifika opti- meringsproblemet som framställs där. Det bekräftar ytterligare att på grund av deras generiska natur kommer alltid olika resultat att fram- ställas, och att ett definitivt svar på vilken som generellt alltid är bäst kanske inte går att finna. Vi ser däremot i [3] en liknande jämförelse mellan GA och DE, där deras implementation för DE är baserad på samma metod som den i denna rapport. Även här presterade DE bätt- re än GA.

2.4.1 Hypotes

Hypotesen för denna undersökning är att implementationen av DE för detta problem kommer prestera bättre än motsvarande GA. Detta är baserat på resultaten framtagna av [8, 7, 3]. Motargumentet ges av [4]

där GA är något mer effektiv än DE. Det största stödet för denna hy- potes kommer dock från [3] vars implementation av DE är av samma variant som den i denna studie.

(17)

Denna del av rapporten beskriver vilka beslut som tagits gällande im- plementationerna av GA, DE och LSP samt vilka tester som utförts och varför de är lämpliga på denna typ av problem. Implementatio- nen skrevs i C++.

3.1 Lösningsrepresentation

I algoritmerna beskrivs en lösning (eller kromosom) som en permuta- tion av alla hörnen i grafen. Detta implementeras internt som en vektor av ints, där varje int beskriver ett hörn.

3.2 Längsta stigproblemet

Längsta stigproblemet beskrivs som en enkel riktad graf med avstån- det 1 mellan varje hörn som förbinds och implementerades genom en grannmatris för att vid evaluering på konstant tid kunna se om två hörn är grannar eller ej. Vid evaluering tas en lösning (vektor av hörn) som indata och sedan kontrolleras att första hörnet har en kant till det andra hörnet, om så är fallet adderas en poäng på fitness-värdet, om inte tittar man istället om det finns en kant från det första hörnet till det tredje hörnet, om inte det fjärde o.s.v. Så fort man hittar ett hörn som har en kant från det första så letar man efter första hörnet i vektorn som det hörnet har en kant till (framåt i vektorn). Värdet som returne- ras från målfunktionen blir sedan längden på stigen (antal hörn - 1). På grund av målfunktionens utseende krävs det en extra traversering av lösningen (då algoritmen är klar) för att extrahera den funna längsta stigen (om inte en hamiltonstig funnits det vill säga).

11

(18)

3.3 Genetiska algoritmen

Det finns flera variationer av selektion, mutation och crossover som kan implementeras. Nedan följer vår implementation.

3.3.1 Initialisering

Populationen initialiseras av slumpvis genererade permutationer av hörnen i grafen.

3.3.2 Selektion

Selektionen sker genom roulette wheel selection [10]. Det går till på föl- jande sätt:

1. Summera alla fitness-värden hos varje kromosom i populatio- nen.

2. Skapa en lista där värdet vid varje specifikt index består av fitness- värdet av kromosomen vid det indexet. Dividera detta med sum- man av alla fitness-värden i populationen. Därefter addera med värdet vid indexet tidigare (om det finns något). På så sätt kom- mer det sista värdet i listan vara 1.

3. Vid selektion slumpar man ett värde mellan 0 och 1 och tar det första värdet i listan som är större än eller lika med det slumpa- de värdet och därefter förs kromosomen vid det indexet vidare till nästa generation. Detta utförs alltså lika många gånger som populationens storlek. Detta innebär att samma kromosom kan väljas flera gånger.

På så sätt har de kromosomer med störst fitness-värde störst chans att väljas till nästa generation medan de med litet fitness-värde har liten chans. Ett exempel, låt säga att det finns 3 kromosomer i popu- lationen med fitness-värdena: 1, 2 och 3. Då blir summan 1+2+3 = 6.

Listan blir då:

[1/6, 1/6+ 2/6, 1/6 + 2/6 + 3/6] = [1/6, 3/6, 1]

Därefter slumpas ett värde r uniformt mellan 0 och 1 och då väljs kromosomerna 1, 2 och 3 vid följande fall:

(19)

• Om r ∈ [0, 1/6] så väljs kromosom 1.

• Om r ∈ (1/6, 3/6] så väljs kromosom 2.

• Om r ∈ (3/6, 1] så väljs kromosom 3.

3.3.3 Crossover

Crossover utförs genom en modifierad partially mapped crossover (PMX) [1]. Vanligtvis fungerar denna metod på det sättet att två snitt-punkter slumpvis väljs ut och sedan byter man ut alla gener mellan dessa punk- ter mellan föräldrarna (och därmed skapar avkommorna). Eftersom lösningen är kombinatorisk kan man inte byta ut föräldrarnas hörn di- rekt eftersom det då kan förekomma dubbletter. Därför utförs följande process på varje hörn mellan snittpunkterna (se Figur 3.1):

Figur 3.1:Illustration av partially mapped crossover där vi vill byta hör- nen B och E vid index i.

1. Spara indexet i för punkten som ska bytas.

2. Spara hörnen på index i för förälder 1 och förälder 2.

3. Hitta indexet hos förälder 2 för hörnet som fanns på index i hos förälder 1 och vice versa. Kalla dessa index j1 och j2.

4. Byt ut hörnet på index i med hörnet på index j2 hos förälder 1 och hörnet på index i med hörnet på index j1 hos förälder 2.

(20)

5. Upprepa processen för alla punkter mellan snitt-punkterna.

Crossovern som implementerades byter endast ut hörnen vid snitt- punkterna och inte hörnen däremellan. Flera crossover-metoder be- prövades men denna modifierade metod visade sig ge bäst resultat.

Crossover sker inte alltid utan utefter en sannolikhet som bestäms som parameter.

3.3.4 Mutation

Mutationen sker genom ett utbyte av två olika slumpvis valda hörn i lösningen. Som crossover sker mutationen väldigt sällan utefter en sannolikhet som bestäms som parameter.

3.3.5 Parametrar

Det finns inga parametrar som är optimala för alla genetiska algorit- mer på alla problem, utan att hitta de optimala parametrarna kan även i sig vara ett optimeringsproblem [11]. Däremot finns det riktlinjer pre- senterade i [11, 20] och utifrån detta i kombination med egna tester valdes följande parametervärden:

• Population: 1000

• Sannolikhet för crossover: 0.9

• Sannolikhet för mutation : 0.02

3.4 Differential Evolution

Det finns ett flertal versioner av differential evolution för kombinato- riska problem. Den variant som valdes att implementera är Discrete dif- ferential evolution. Implementation är baserad på [15] där det beskrivs en variant som implementeras för generalized traveling salesman problem (GTSP) och eftersom problemet i hand är LSP så behövdes en del ju- steringar göras.

(21)

3.4.1 Initialisering

Populationen initialiseras precis som för den genetiska algoritmen ge- nom att slumpvis generera permutationer av hörnen i grafen. Här be- stäms även delmängdsstorleken (se Mutation för användningen av delmängder). Delmängdstorleken d bestäms på det sättet som beskrivs nedan, där dm är en max-storlek som bestäms som parameter:

d = |V |

n , där n är det minsta heltalet sådan att d <= dm, |V| är antal hörn.

3.4.2 Mutation

Mutationen sker antingen genom en insert-operation eller genom en destruktion- och konstruktionsprocedur som utförs på den bästa lös- ningen i populationen. Detta baseras på en uniformt slumpad variabel r och de två operationerna utförs i olika omfång baserad på en stör- ningssannolikhet Pm. Båda operationerna baseras på en uppdelning av lösningsvektorn där storleken X av varje delmängd bestäms vid initi- aliseringen. Uppdelningen sker på det sättet att man tar de X första hörnen som en delmängd, de nästa X blir en annan delmängd o.s.v (sista delmängden kan bli mindre). Denna nedbrytning är viktig för att destruktion- och konstruktionsproceduren ska kunna ske på rimlig tid vid stora grafer.

Insert-operation

Insert-operationen sker på det sättet att man väljer ut två punkter i två olika delmängder som sedan byts ut.

Destruktion- och konstruktionsproceduren

Destruktion- och konstruktionsproceduren är mer komplicerad. Först så delas hörnen i lösningen (vektorn) upp i delmängder. Därefter tas ett antal hörn d bort från varje enskild delmängd. På så vis har varje delmängd nu delats i två. Därefter sätter man tillbaka de d borttagna hörnen i den ordningen som de togs bort i varje delmängd genom att testa alla möjliga positioner det första hörnet kan sättas in på och se- dan evaluera dellösningen, välja den position som ger bäst evaluering sedan fortsätta med nästa av de d-1 kvarvarande hörnen. Till slut när

(22)

alla delmängder blivit hela igen sätts delmängderna samman till en fullständig lösning och proceduren är klar.

3.4.3 Crossover

Figur 3.2:Illustration av Two-cut PTL Crossover operator.

Crossover utförs antingen inte alls (behåller donatorvektorn) eller genom Two-cut PTL Crossover operator [15], vilket bestäms slumpvis i olika omfång baserat på en crossover-sannolikhet Cm. Two-cut PTL Crossover sker på det sättet att två snitt-punkter hos den ena föräl- dern bestäms, sedan flyttas biten mellan snitten till vänster respektive höger hos de två avkommorna. Sedan fylls de resterande positionerna hos avkommorna på av den andre föräldern (de hörn som inte redan finns) (se Figur 3.2). Sedan väljs en av avkommorna genom slumpen (50%). Denna metod producerar alltid två distinkta avkommor även om föräldrarna är likadana.

3.4.4 Parametrar

För differential evolution, liksom genetiska algoritmer, finns inga op- timala parametrar för varje problem, vilket innebar att dessa fick upp- skattas utifrån egna finjusteringar och riktlinjer i litteraturen [20]. Där- för valdes följande parametervärden:

• Population: 10

• Störningssannolikhet (Pm): 0.1

• Max delmängdsstorlek (dm): 100 (Se Initialisering för procedur)

• Destruktionsstorlek: mellan 1 och 5 (slumpvis för varje gång)

• Sannolikhet för crossover (Cm): 0.2

(23)

3.5 Tester

Testerna är slumpvis genererade efter val av antal hörn och kanter där samtidigt en hamiltonstig oslumpat skapades för att ha kännedom om det optimala fitness-värdet (utan att behöva göra en totalsökning vilket tar alldeles för lång tid). För varje problems grafstorlek valdes antal kanter efter grafdensiteten 0.01, 0.05, 0.1 och 0.2 för att se hur algoritmerna presterar utifrån olika omständigheter. Definitionen av grafdensitet som används (för en enkel riktad graf) beskrivs nedan:

|E|

|V |(|V | − 1), där |E| är antal kanter och |V | är antal hörn.

Grafstorlekarna som valdes var 550 och 5500 hörn där 4 tester för vardera algoritm gjordes på varje graf vid grafdensitet 0.05, 0.1 och 0.2 under 4 minuter medan vid 0.01 gjordes istället två tester under 10 minuter. Testerna utfördes på en dator med 31.3 GiB RAM med en Intel Core i7-6700 CPU @ 3.40GHz x 8 64 bit. Genomsnittsvärdet av re- sultaten för alla tester sammanställdes i en tabell samtidigt som ett av testerna för varje graf-instans plottades. Eftersom de två algoritmerna fungerar olika bra vid olika populationsstorlekar så är deras respekti- ve storlekar inte samma (se parametrar för de två algoritmerna ovan).

(24)

Följande grafer visar hur GA (blå) jämför sig mot DE (röd, DE DBA syftar på discrete DE). Varje graf representerar resultatet för ett test på en specifik instans av LSP med specificerade värden för grafdensitet, hörn och kanter. X-axeln är antalet sekunder som passerat. Y-axeln är fitness-värdet, d.v.s. längsta stigen.

Tabellen nedan sammanfattar och sammanställer resultaten för alla testerna. Först specificeras grafen, sedan beskrivs det bästa genom- snittliga värdet som uppnåtts under alla tester som gjordes på instan- sen. Slutligen medelvärdet hos alla lösningar i populationen samt an- tal generationer hos både DE och GA.

Tabell 4.1:Tabell för resultaten av testerna.

Graf Bästa Medel Generationer

Densitet Hörn Kanter DDE GA DDE GA DDE GA

0.01 5500 302445 134.5 92.5 134 87.5 1090.5 173 0.01 550 3019 197.5 23.5 197.5 20.5 20411.5 1765.5 0.05 5500 1512225 588.75 349.75 588.75 317 418 68.25

0.05 550 15097 405 69.75 405 66 7813.75 680.25

0.1 5500 3024450 2604.75 649 2604 591 435.75 69.75 0.1 550 30195 525 111.75 524.75 105.25 7982 674.5 0.2 5500 6048900 4923 1213.25 4920 1143 420.5 67

0.2 550 60390 549 191 548 181 3255.5 700.75

18

(25)

Figur 4.1:Grafen för ett test med algoritmerna på en graf med grafden- sitet 0.01, 5500 hörn och 302445 kanter.

(26)

Figur 4.2:Grafen för ett test med algoritmerna på en graf med grafden- sitet 0.01, 550 hörn och 3019 kanter.

(27)

Figur 4.3:Grafen för ett test med algoritmerna på en graf med grafden- sitet 0.05, 5500 hörn och 1512225 kanter.

(28)

Figur 4.4:Grafen för ett test med algoritmerna på en graf med grafden- sitet 0.05, 550 hörn och 15097 kanter.

(29)

Figur 4.5:Grafen för ett test med algoritmerna på en graf med grafden- sitet 0.1, 5500 hörn och 3024450 kanter.

(30)

Figur 4.6:Grafen för ett test med algoritmerna på en graf med grafden- sitet 0.1, 550 hörn och 30195 kanter.

(31)

Figur 4.7:Grafen för ett test med algoritmerna på en graf med grafden- sitet 0.2, 5500 hörn och 6048900 kanter.

(32)

Figur 4.8:Grafen för ett test med algoritmerna på en graf med grafden- sitet 0.2, 550 hörn och 60390 kanter.

(33)

Utifrån resultatet kan man se att på alla graf-instanser presterade DE bättre än GA, speciellt vid mer täta grafer. För varje testfall ser GAs graf ungefär likadan ut, den ökar relativt kraftigt i början, sedan avtar och ökar därefter sakta linjärt. DE ökar istället desto kraftigare i början och därefter avtar ökningen långsamt då den bästa lösningen närmar sig högre fitness-värden, alternativt den optimala lösningen beroende på densiteten hos grafen. Detta är mer hur man förväntar sig att pro- cessen för en effektiv optimeringsalgoritm ska se ut. Hur det kommer sig att vår implementation av DDE presterade så mycket bättre än vår implementation av GA kommer diskuteras vidare under denna sek- tion.

5.1 Skillnader

En tydlig skillnad på resultaten är antalet generationer, detta är givet p.g.a. skillnaden i populationsparametern hos de två algoritmerna. En annan tydlig skillnad är hur populationen utvecklas. I DDE avanceras populationen genom modifiering av den bästa lösningen i populatio- nen där lokala framsteg sker via utnyttjandet av målfunktionen. GA försöker istället beblanda sina lösningar och på så sätt kombinera de- ras goda egenskaper. Ytterligare skillnad är att enligt DE:s algoritm försämras aldrig medel-fitness hos populationen då en lösning aldrig byts ut mot en sämre lösning till skillnad mot GA då det förekommer att populationens medel-fitness minskar vid nästa generation.

5.2 Målfunktionen

Det finns flera olika målfunktioner för längsta stigproblemet. Till ex- empel kan man se hur lång stigen är från första hörnet i vektorn, d.v.s.

27

(34)

hur lång stigen blir om man ser om första hörnet är förbundet med det andra, om det andra är förbundet med det tredje o.s.v. fram till det inte stämmer längre och sedan returnera längden på stigen. Pro- blemet med denna funktion är att den inte beskriver styrkan på hela kromosomen/lösningen, då allt efter stigen från första hörnet i vek- torn ignoreras. GA och DE opererar på hela kromosomen och därför valdes inte denna procedur.

Ett annat alternativ är att hitta längsta delstigen i vektorn, det vill säga att man börjar på första hörnet i vektorn, ser om den är förbun- det med det andra, den med tredje o.s.v. och sedan när det inte finns en kant som förbinder hörnen börja om från det hörnet det inte fanns en kant till och försöka hitta en stig därifrån. När hela vektorn traverse- rats igenom returneras den längsta stigen som hittades. Detta var den funktion som först implementerades fram till att bytet till den nuva- rande. Orsaken till bytet är att vår nuvarande funktion hittar en längre stig och erhåller ett bättre fitness-värde (för båda algoritmerna) vid körning. De relativa resultaten med algoritmerna var även detsamma före bytet.

På grund av skillnaden hur de två algoritmerna utnyttjar målfunk- tionen, då vid DE så utnyttjas målfunktionen för att evaluera delmäng- der av lösningen så skulle det kunna påverkat resultatet. Till exempel så skulle GA möjligen kunna prestera sämre med den här typen av målfunktionen. Det är dock svårt att direkt säga om så är fallet.

5.3 Problembasering

En större orsak till skillnaden i resultat är att DE-algoritmen är en va- riant av DE som är mer problembaserad. I teorin utfördes algoritmen specifikt på GTSP och nu vid överföring till LSP så gjordes en tilläm- pad variant på just det problemet. GA däremot är generiskt tilläm- pad och skulle kunna tillämpas på godtyckligt kombinatoriskt pro- blem. Om studien skulle göras om skulle en mer problembaserad GA- variant göra resultaten mer intressanta och värdefulla eller möjligen istället implementera en mer generell DE-variant.

(35)

5.4 Förbättringar

Som tidigare nämnt är den implementerade GA-varianten generisk och skulle kunna appliceras på godtyckligt kombinatoriskt problem endast genom att byta målfunktionen. En mer specialiserad variant skulle kunna implementeras. T.ex. vid crossover så skulle man kunna se till att det sker på ett sådant sätt att målfunktionen utnyttjas, t.ex.

att hörnen som byter plats är förbundna med sina nya grannar.

En annant sätt är att som i [3] implementera en form av hybrid GA, i deras fall kombinering av level-set funktioner och GA, eller till exempel local search med GA för förbättrat resultat.

Ett annat sätt att förbättra studien vore att implementera en helt generisk både GA och DE och sedan applicera samma algoritm på ett flertal olika kombinatoriska problem utan förändringar.

5.5 Tillförlitlighet

Problemet som testerna baseras på, d.v.s. LSP (och därmed Hamiltons- tigsproblemet) är välkänt och tidigare beprövat, men snarare en för- enkling av ett riktigt exempel än ett realistiskt problem. Storleken på testerna är även relevanta för resultatet, där stora och glesa grafer är bättre anpassade för andra typer av algoritmer än GA och DE. I denna undersökning var det speciellt framträdande hur dåligt algoritmerna presterade då grafer med en grafdensitet lägre än 0.1 testades. Sam- tidigt är skillnaden i implementationen för generiska algoritmer som GA och DE (både till variant och till vilket problem) en stor aspekt till hur de presterar. Detta framgår i avsnittet Tidigare studier under Bak- grund där resultatet från [4] skilde sig från resultaten givna av [8, 6, 3], vilket innebär att ingen absolut slutsats kan dras om DE och GA om vilken som presterar bäst. Det som däremot ökar förtroendet för den- na studie är att hypotesen, som är baserad på tidigare studier, stämde och trots alla aspekter som påverkar tillförlitligheten nås samma resul- tat som flera andra studier.

(36)

Den implementerade varianten av discrete differential evolution pre- sterar betydligt bättre än den generiska varianten av en genetisk algo- ritmmplementerad för längsta stigproblemet, både med avseende på tid och resultat. DE konvergerade snabbare samtidigt som den stän- digt hade bättre fitness-värde än GA. Därför kan vi utifrån de resultat som presenteras i denna rapport dra slutsatser som besvarar fråge- ställningen som presenterades i början av rapporten. Den viktigaste slutsatsen som därmed kan dras är att en diskret/kombinatorisk va- riant av differential evolution presterar avsevärt mycket bättre än en generisk genetisk algoritm på det NP-fullständiga längsta stigproble- met. Det ska dock betonas att utifrån resultaten i denna undersökning kan vi inte dra slutsatsen att DDE generellt kommer prestera bättre än en generisk GA på något annat problem.

30

(37)

[1] Otman Abdoun och Jaafar Abouchabaka. “A comparative study of adaptive crossover operators for genetic algorithms to resolve the traveling salesman problem”. I: arXiv preprint arXiv:1203.3097 (2012).

[2] John Baras. Path problems in networks. eng. Synthesis Lectures on Communication Networks. San Rafael, Calif.?]: Morgan Clay- pool Publishers, 2010.ISBN: 1-59829-924-7.

[3] Eugénia Moreira Bernardino m. fl. “Discrete Differential Evolu- tion Algorithm for Solving the Terminal Assignment Problem”.

I: Parallel Problem Solving from Nature, PPSN XI. Utg. av Robert Schaefer m. fl. Berlin, Heidelberg: Springer Berlin Heidelberg, 2010, s. 229–239.ISBN: 978-3-642-15871-1.

[4] B Bhattacharyya, Vikash Gupta och Sanjay Kumar. “Comparati- ve study of GA ; DE algorithm for the economic operation of a power system using FACTS devices”. eng. I: Archives of Electri- cal Engineering 62.4 (dec. 2013), s. 541–552.ISSN: 1427-4221.URL: http://search.proquest.com/docview/1494323572/. [5] Leonora Bianchi m. fl. “A survey on metaheuristics for stochas-

tic combinatorial optimization”. I: Natural Computing 8.2 (2009), s. 239–287.

[6] Kenneth De Jong. “Introduction”. I: Machine Learning 5.4 (okt.

1990), s. 351–353.ISSN: 1573-0565.DOI: 10.1023/A:1022625623050.

URL: https://doi.org/10.1023/A:1022625623050.

[7] Xiao-lei Dong m. fl. “A comparative study of differential evolu- tion and genetic algorithms for optimizing the design of water distribution systems”. I: Journal of Zhejiang University SCIENCE A 13.9 (sept. 2012), s. 674–686. ISSN: 1862-1775.DOI: 10.1631/

31

(38)

jzus.A1200072.URL: https://doi.org/10.1631/jzus.

A1200072.

[8] Brian Hegerty, Chih-Cheng Hung och Kristen Kasprak. “A Com- parative Study on Differential Evolution and Genetic Algorithms for Some Combinatorial Problems”. I: 2009.

[9] Kyriaki Ioannidou, George B. Mertzios och Stavros D. Nikolo- poulos. “The Longest Path Problem has a Polynomial Solution on Interval Graphs”. I: Algorithmica 61.2 (okt. 2011), s. 320–341.

ISSN: 1432-0541. DOI: 10.1007/s00453- 010- 9411- 3.URL: https://doi.org/10.1007/s00453-010-9411-3.

[10] Mehmed Kantardzic. Data mining concepts, models, methods, and algorithms. eng. 2nd ed.. Hoboken, N.J.: John Wiley, 2011. ISBN: 1-283-23974-4.

[11] Oliver Kramer. Genetic Algorithm Essentials. eng. Studies in Com- putational Intelligence, 679. 2017.ISBN: 3-319-52156-X.

[12] L. Lakshminarasimman och S. Subramanian. “Applications of Differential Evolution in Power System Optimization”. I: Advan- ces in Differential Evolution. Utg. av Uday K. Chakraborty. Berlin, Heidelberg: Springer Berlin Heidelberg, 2008, s. 257–273. ISBN: 978-3-540-68830-3. DOI: 10.1007/978-3-540-68830-3_10.

URL: https://doi.org/10.1007/978- 3- 540- 68830- 3_10.

[13] Jason D. Lohn, Gregory S. Hornby och Derek S. Linden. “An Evolved Antenna for Deployment on Nasa’s Space Technology 5 Mission”. I: Genetic Programming Theory and Practice II. Utg. av Una-May O’Reilly m. fl. Boston, MA: Springer US, 2005, s. 301–

315. ISBN: 978-0-387-23254-6. DOI: 10.1007/0- 387- 23254- 0_18. URL: https://doi.org/10.1007/0- 387- 23254- 0_18.

[14] Volker J Meyer-Baese Anke; Schmid. Pattern Recognition and Sig- nal Analysis in Medical Imaging. eng. San Diego: Elsevier Science, mars 2014. Kap. 5.ISBN: 9780124095458.

[15] Godfrey C Onwubolu och Donald Davendra. Differential evolu- tion: a handbook for global permutation-based combinatorial optimiza- tion. Vol. 175. Springer Science & Business Media, 2009.

(39)

[16] Ricardo S Prado m. fl. “Using differential evolution for combi- natorial optimization: A general approach”. I: Systems Man and Cybernetics (SMC), 2010 IEEE International Conference on. IEEE.

2010, s. 11–18.

[17] Anyong Qing. Differential evolution fundamentals and applications in electrical engineering. eng. Oxford: Wiley-Blackwell, 2009.ISBN: 1-282-38211-X.

[18] J. Rubinovitz och G. Levitin. “Genetic algorithm for assembly li- ne balancing”. I: International Journal of Production Economics 41.1 (1995). Proceedings of the 12th International Conference on Pro- duction Research, s. 343–354. ISSN: 0925-5273. DOI: https://

doi.org/10.1016/0925- 5273(95)00059- 3. URL: http:

/ / www . sciencedirect . com / science / article / pii / 0925527395000593.

[19] Ryuhei Uehara och Yushi Uno. “Efficient Algorithms for the Long- est Path Problem”. I: Algorithms and Computation. Utg. av Rudolf Fleischer och Gerhard Trippen. Berlin, Heidelberg: Springer Ber- lin Heidelberg, 2005, s. 871–883.ISBN: 978-3-540-30551-4.

[20] Xin-She Yang. Nature-inspired optimization algorithms. Elsevier, 2014.

(40)

34

(41)

References

Related documents

2.3 Finding Long Paths in Hamiltonian Digraphs Vishwanathan [22] presents a polynomial time algorithm that finds a path of length Ωlog2 n/ log log n in undirected Hamiltonian

Addressing the perceived need for knowledge about the design of online newspapers, we propose eight design recommendations for online newspapers. Using common web

Amber (or yellow) lights have not been mention so far and are not explicit in the simulation. In the simulation the decision whether a car should cross the intersection or wait at

In each run, the number of generations was recorded and then later used to evaluate the average number of required gener- ations for each of the four input data files. Those

genetic algorithm provide a better learning efficiency, which answers our research question: How are the learning efficiency compared between reinforcement learning and

From top to bottom: Zenith, relative energy resolution, energy bias, fraction of track over total energy... Energy at

At 10 years of age, she was seen by an ophthalmologist because of apparent visual problems. Ophthalmologic status, including Goldmann perimetry, was normal, but as a result of

In Section 2, we provide some basic analytic un- derstanding of (1a)–(1b) by transforming the system to an equivalent one, showing the local well-posedness, constructing a special