Introduktion till
genetiska algoritmer
CT3620 – Vetenskapsmetodik
2005-10-21
Ylva Degerfeldt
[email protected]
SAMMANFATTNING
Denna rapport är tänkt som en introduktion till genetiska algoritmer.
Först förklaras ämnet översiktligt, inklusive en kort historik. Sedan följer en mer ingående
beskrivning av de olika ingående begreppen:
Senare i rapporten tar jag också upp ett exempel: 8 damer-problemet, vilket kan lösas med
hjälp av en genetisk algoritm.
Slutligen kommer en liten diskussion där jag tar upp några fördelar med genetiska algoritmer
samt lite om vilken typ av problem som de kan lösa.
1
Innehållsförteckning
Inledning ..................................................................................................................... 3
Introduktion till genetiska algoritmer ........................................................................... 4
Utseende hos en generell genetisk algoritm ................................................................... 4
Ingående begrepp i en GA ................................................................................................. 5
Kromosom.......................................................................................................................... 5
Fitnessfunktion ................................................................................................................... 5
Selektionsmetoder .............................................................................................................. 6
Slumpmässig selektion................................................................................................... 6
Turneringsselektion........................................................................................................ 6
Rangbaserad selektion.................................................................................................... 6
Elitism ................................................................................................................................ 7
Crossover-metoder ............................................................................................................. 8
Single Point Crossover ................................................................................................... 8
Two Point Crossover...................................................................................................... 8
Uniform Crossover ......................................................................................................... 8
Mutation ............................................................................................................................. 9
Slumpmässig mutation ................................................................................................... 9
Inordermutation.............................................................................................................. 9
Permutationsmutation..................................................................................................... 9
Mutation med flyttalsrepresentation .............................................................................. 9
Ett exempel på ett problem: 8 damer-problemet .......................................................... 10
Kromosomrepresentation ................................................................................................. 10
Fitnessfunktion ................................................................................................................. 10
Selektionsmetod ............................................................................................................... 10
Crossover-metod .............................................................................................................. 10
Mutationsmetod................................................................................................................ 11
Elitism .............................................................................................................................. 11
Avslutande diskussion .............................................................................................. 11
Referenser................................................................................................................ 12
2
INLEDNING
Genetiska algoritmer (G.A.) tillhör området artificiell intelligens och är det första
evolutionary computing-paradigmet (algoritmer som bygger på evolutionsteorin) som
utvecklades och användes. Den som utvecklade det var amerikanen John Henry Holland (född
1929), som var professor i psykologi, datavetenskap och elektroteknik. [Wikipedia]
Han har skrivit ett antal böcker och en av de mest omtalade var just hans bok om genetiska
algoritmer, Adaptation in Natural and Artificial Systems.
Genetiska algoritmer är inspirerade av Darwins evolutionsteori [Obitko]. Detta innebär att
man kan lösa ett problem genom att skapa en population av olika (mer eller mindre bra)
lösningar, vilka kallas kromosomer eller individer. Kromosomerna består i sin tur av gener.
Varje gen är en del av ett lösningsförslag och en kromosom ger en komplett potentiell lösning.
Sedan låter man en ny generation lösningar utvecklas från den gamla genom att man väljer ut
flera par av individer vilka får korsas med varandra så att de får en avkomma. Detta kallas
crossover och precis som i naturen är det (oftast) bara de ”bästa” individerna som lyckas
fortplanta sig.
Hur ”bra” en individ är bestäms av något som kallas fitnessvärde och följaktligen har
individer med bättre fitnessvärde en större chans att få para sig än individer med sämre.
Fitnessvärdet räknas ut med hjälp av en fitnessfunktion, vilken är domän – och
problemspecifik
När en avkomma har skapats finns det också en chans att denna muteras, precis som i naturen.
Detta innebär att det sker en genförändring hos individen. Denna kan antingen vara positiv
och då leder den till att den förändrade genen med hög sannolikhet förs vidare genom
generationerna, eller negativ, vilket innebär att sannolikheten för att genen ska föras vidare är
väldigt låg. En positiv genförändring innebär ett bättre fitnessvärde och att kromosomen har
större chans att bli vald för reproduktion. Man kan även säga att kromosomen i fråga kommer
närmare den lösning som man är ute efter (om man vet hur denna ser ut). Det omvända
förhållandet gäller för negativa genförändringar.
Efter att mutation skett på vissa utvalda individer ersätts den gamla populationen med alla
individer från den nya generationen och eventuellt får även några ”gamla” individer vara med
i den nya populationen. De nya individerna får också fitnessvärden och så fortsätter urvalet
och fortplantningen tills ett visst villkor är uppfyllt.
Man kan inte alltid veta om algoritmen är nära att hitta lösningen, men för vissa problemtyper
så kan man säga att om den bästa kromosomen förblir oförändrad genom ett stort antal
generationer så är man nära. I vissa fall kan man bestämma att detta är villkoret för att
algoritmen ska stoppas. Mer om stoppvillkor följer senare.
3
INTRODUKTION TILL GENETISKA ALGORITMER
Utseende hos en generell genetisk algoritm
Nedan följer pseudokod för en generell genetisk algoritm. Sedan kommer en översiktlig
förklaring till koden och i nästa avsnitt mer ingående förklaringar på de olika delarna.
Genetisk algoritm
1) Initiera startpopulationen P(0).
2) Sätt G = 0.
3) Gör tills stoppvillkoret har uppnåtts.
a)Beräkna fitness för varje individ.
b)Välj ut individer till föräldrapar, beroende av fitness.
c)Skapa avkomma A(G) med hjälp av Crossover-funktion (med
viss sannolikhet)och selektion.
d)Mutera avkomma (med viss sannolikhet).
e)Välj ut individer till ny population P(G + 1), från den gamla
P(G) och alla A(G).
f)Sätt G = G + 1.
4) Returnera den bästa lösningen (individen med bäst fitness).
[Obitko]
Startpopulationen P(0) tillhör generation 0 och brukar oftast slumpas fram. Detta innebär att
de ingående kromosomerna får slumpmässiga utseenden och fitnessvärden. En kromosom
består av gener och hur det kan se ut förklaras i nästa avsnitt.
Variabeln G håller reda på vilken generation algoritmen har hunnit till.
Stoppvillkoret kan vara antingen att det har dykt upp en tillräckligt bra lösning bland
individerna (kromosomerna) i populationen, att det har skapats ett visst antal generationer,
eller att den bästa individen, under ett visst antal generationsbyten, inte har förbättrats. Det
sistnämnda villkoret används lättast tillsammans med Elitism, vilket innebär att man hela
tiden kopierar den eller de bästa individerna (oförändrade) från en generation till nästa. På så
vis riskerar man inte att förlora den bästa lösningen.
Antalet föräldrapar man väljer ut är beroende av populationens storlek och hur man vill lösa
problemet. Föräldrarna väljs genom olika Selektionsmetoder, vilka förklaras i nästa avsnitt.
A(G) är avkomman som skapades av föräldrar tillhörande generation G. Denna avkomma
skapas med hjälp av en crossover-funktion, vilken kombinerar gener från båda föräldrarna för
att skapa en ny kromosom. Vilka olika typer av crossover-funktioner som finns förklaras i
nästa avsnitt.
När en ny population skapas tar man med alla ”barnen” och noll eller flera från
föräldragenerationen, beroende på om man tillämpar elitism och vilken urvalsmetod man
använder.
I nästa avsnitt följer djupare förklaringar av de ingående delarna i en genetisk algoritm.
4
Ingående begrepp i en GA
Kromosom
Varje population består som tidigare nämnts av kromosomer. En kromosom representeras ofta
av en binär sträng, där varje bit motsvarar en gen. (exempel i Figur 1.) Varje gen motsvarar en
liten del av en potentiell lösning till problemet, fast det kan också vara så att alla generna
tillsammans representerar ett heltal.
Kromosom 1
110010100101
Kromosom 2
010101011000
Figur 1. Ett exempel på hur binära kromosomer kan se ut
Kromosomernas längder kan, men behöver inte nödvändigtvis vara lika, beroende på vilket
problem man försöker lösa.
En kromosom kan också representeras av en sträng av heltal eller av flyttal. (Figur 2 visar ett
exempel på en kromosom med flyttalsrepresentation.)
Ett exempel på ett problem som kan lösas med hjälp av en G.A. med flyttalskromosomer: Att
hitta maxvärdet hos en funktion, t.ex. f(w,x,y,z) = (wx – y) * z
Figur 2 nedan visar hur en kromosom för detta problem kan se ut. Cellerna motsvarar gener
och möjliga värden på w, x, y och z, i den ordningen (uppifrån).
-1,567231
2,5
17,2397
3
Figur 2. Ett exempel på EN kromosom med flyttalsrepresentation (3 ingående gener)
Fitnessfunktion
Varje kromosoms värde, eller fitness, bestäms av en s.k. fitnessfunktion. Hur man väljer att
denna ska se ut beror på vilken typ av problem det är man ska lösa. Det är mycket viktigt att
man väljer en fitnessfunktion som verkligen modellerar problemet man ska lösa.
[Engelbrecht2002]
Vi återgår till exemplet om maxvärdet hos funktionen f(w,x,y,z) = (wx – y) * z.
För detta problem kan fitnessfunktionen bli mycket enkel. Man räknar helt enkelt ut
funktionens värde för varje kromosom. Då blir det naturligt så att kromosomer med högre
fitness ger en bättre lösning än de med lägre. Det är dock tillåtet för en genetisk algoritm att
ha en fitnessfunktion där lägre värden är bättre.
5
Selektionsmetoder
Selektion innebär urval, vilket man behöver göra när man ska välja ut föräldrar och när man
ska välja vilken kromosom som ska muteras. Selektionsmetod innebär sättet man gör urvalet
på. Här följer en beskrivning av några olika selektionsmetoder:
Slumpmässig selektion
Detta är egentligen ingen lämplig selektionsmetod för en genetisk algoritm eftersom denna
metod väljer föräldrar helt slumpmässigt, utan att ta hänsyn till kromosomernas fitness. Och
en av grundidéerna med genetiska algoritmer är att individernas chans att få föröka sig ska
vara större för individer med bättre fitness.
Turneringsselektion
Denna form av urval innebär att man slumpmässigt väljer ut x individer, vilka sedan får
”turnera mot varandra”. Detta medför i praktiken att den individ som har bäst fitness av dessa
blir vald. Man brukar göra en turnering per förälder som ska väljas ut och det är möjligt för
samma individ att bli vald flera gånger. En individ kan alltså bli ”både pappa och mamma” till
sin avkomma, men om detta ska vara tillåtet eller inte är upp till programmeraren.
Rangbaserad selektion
Denna urvalsmetod bygger på att man rangordnar alla fitnessvärden enligt följande metod.
Den kromosom som har sämst fitness får värdet 1 och den näst sämsta värdet 2 o.s.v. Därefter
använder man proportionell selektion (se sid. 7) på dessa värden istället för på fitnessvärdena.
Ett exempel på när detta kan vara bra är om man har en kromosom vars fitnessvärde är
extremt mycket högre än alla andras. Chansen är då stor att det nästan bara blir den
kromosomen som blir vald hela tiden. Rangordningen gör dock att skillnaderna mellan
fitnessvärdena inte längre är så stora, eftersom den nämnda bästa kromosomen nu har ett
värde som bara ligger 1 ifrån den näst bästas värde. Urvalet blir på så vis oberoende av den
ursprungliga fitnessen. [Obitko]
6
Proportionell selektion
Denna urvalsoperator kallas även rouletthjulsselektion och innebär att de individer som har
bättre fitnessvärde har proportionellt större chans att bli valda. Tanken här är att man har ett
rouletthjul där varje kromosom har sin sektion, vilkens storlek är proportionell mot
kromosomens fitness. Sedan tänker man sig att man kastar en kula i rouletthjulet och den
kromosom vars sektion kulan stannar på blir vald. Figur 3 visar tydligt att den kromosom som
har bäst fitness och därmed störst roulettsektion, har lättast att bli vald.
Kromosom 1
Kromosom 2
Kromosom 3
Kromosom 4
Kromosom 5
Figur 3. Ett exempel på rouletthjulsprincipen med fem kromosomer med olika fitnessvärden
Elitism
Som tidigare nämnts innebär elitism att man hela tiden sparar den eller de bästa
kromosomerna. Detta innebär att dessa kopieras från en generation till nästa, vilket kan göra
att algoritmen snabbare konvergerar mot lösningar som matchar det man är ute efter. Men å
andra sidan kan elitismen göra att algoritmen fastnar i ett lokalt maximum (eller minimum)
och aldrig hittar den bästa lösningen.
Dock används elitism ofta i genetiska algoritmer, så det måste uppfattas som mer positivt än
negativt.
7
Crossover-metoder
Crossover innebär som tidigare nämnts att två kromosomer korsas med varandra och skapar
en avkomma. Någon form av crossover brukar nästan alltid genomföras i en genetisk
algoritm, på de utvalda föräldrarna. Det brukar dock finnas en liten sannolikhet att ingen
crossover genomförs, vilket då innebär att kromosomerna kopieras som de är till nästa
generation.
Det finns olika typer av crossover-metoder och nedan presenteras några av dem:
Single Point Crossover
En slumpmässig genposition på kromosomsträngen väljs ut och delar in
föräldrakromosomerna i två halvor. Sedan får det ena barnet en kopia av den ena förälderns
första halva, följd av den andra förälderns andra halva. För det andra barnet blir det tvärtom.
Figur 4 visar hur det kan gå till för binära kromosomer.
1 0 0 1 1 0 1 0 1
1 0 0 1 1 1 0 1 1
0 1 0 1 1 1 0 1 1
0 1 0 1 1 0 1 0 1
Figur 4. Ett exempel på Single Point Crossover mellan binära kromosomer
Two Point Crossover
Denna crossover-metod fungerar som Single Point Crossover förutom att det är runt två
punkter man ”byter plats på gener”.
Uniform Crossover
Den här crossover-metoden leder till större variationer hos avkomman, eftersom den inte har
en speciell crossover-punkt utan flera, vilka bestäms slumpmässigt.
8
Mutation
Om man endast använder crossover när man skapar nya kromosomer, finns det en risk att man
missar några bra lösningar på grund av att det var svårt att kombinera ihop dessa från endast
de gener som finns i nuvarande population. Man kan också säga att algoritmen utforskar för
lite.
En lösning på detta är mutation. Detta innebär att vissa gener hos vissa kromosomer (som
nyligen har skapats) väljs ut för att förändras (muteras) på något sätt. Mutation är bra på så vis
att den får algoritmen att utforska mer och ger en större variation på kromosomerna. Men för
mycket mutation är dock inte bra heller. Då blir algoritmen slumpmässig på grund av allt för
många förändringar av gener. Det är alltså bäst att ha en ganska låg sannolikhet för att
kromosomer ska muteras.
Men forskning har visat att om man startar en genetisk algoritm med en hög
mutationssannolikhet, som sedan minskar exponentiellt med antalet generationer, så får man
en säkrare och snabbare algoritm. [Engelbrecht2002]
Man kan också säga att det ofta är bättre att mutera individer med dålig fitness än de vars
fitness är bra, eftersom man inte vill riskera att försämra de ”bästa” individerna.
Mutation är också viktig när initialpopulationen saknar en viktig bit av lösningen.
[Luger2002]
Det finns olika mutationsmetoder. Nedan följer en beskrivning av några av dem:
Slumpmässig mutation
Denna mutationsmetod gäller binärt representerade kromosomer och fungerar så att gener
slumpmässigt väljs ut för mutation. Själva mutationen består av att man inverterar det valda
värdet (1 blir 0 och tvärtom).
Inordermutation
Denna mutationsmetod gäller också binärt representerade kromosomer och fungerar som
slumpmässig mutation förutom att de gener som muteras befinner sig inom ett område som
avgränsas av två punkter. Dessa punkter bestäms slumpmässigt.
Permutationsmutation
Denna typ av mutation kan man använda till permutationsproblem. D.v.s. problem där det
gäller att kombinera ihop vissa saker i rätt ordning. Varje kromosom i ett sådant problem
består av olika heltal och mutationen görs genom att man väljer ut två heltal som får byta
plats med varandra.
Mutation med flyttalsrepresentation
När man representerar en kromosom med en mängd olika flyttal, så brukar mutationen göras
lite annorlunda: Man väljer ut några olika gener från kromosomen och muterar dessa genom
att addera eller subtrahera ett litet flyttal från genens värde.
9
Ett exempel på ett problem: 8 damer-problemet
Detta problem är välkänt och passar bra för att lösas med en genetisk algoritm.
Beskrivning: Man har en vanlig schackspelplan (8 x 8 rutor) och åtta damer, vilka får röra sig
enligt vanliga schackregler. Problemet är hur man ska placera ut dessa damer så att ingen av
dem attackerar någon annan. [Russel/Norvig] Figur 5 visar ett (misslyckat) försök till en
lösning på detta.
D
D
D
D
D
D
D
D
Figur 5. Ett exempel på 8 damer-problemet. Färgmarkeringarna visar vilka damer som blir
attackerade av någon annan.
Kromosomrepresentation
I detta problem utgör varje kromosom ett sätt att placera ut alla åtta damerna på schackbrädet.
Eftersom en av reglerna man måste följa är att ingen dam får stå i samma kolumn som en
annan, brukar man göra så att varje dam står i en egen kolumn. Sedan kan man låta varje gen
representeras av vilken rad som varje dam står på. Figur 6 visar ett exempel på en sådan
kromosom (och motsvarar Figur 5).
1
3
6
2
4
8
5
7
Figur 6. Kromosomen som motsvarar damuppställningen i Figur 5.
Fitnessfunktion
En tänkbar fitnessfunktion för detta problem kan vara en funktion som räknar ut hur många
damer som inte blir attackerade av, eller attackerar, någon annan. Detta medför att algoritmen
kan ha som stoppvillkor att minst en kromosom med fitness 8 har skapats.
Selektionsmetod
Jag har valt rangbaserad selektion, för att inte riskera att en kromosom dominerar över de
andra.
Crossover-metod
Jag har valt Single Point Crossover för att det är en enkel metod som passar för problemet.
10
Mutationsmetod
För detta problem har jag valt att använda en domänspecifik mutation. Jag sätter en låg
sannolikhet för mutation för alla kromosomer och för varje utvald kromosom gör jag följande:
Jag tar en slumpvis vald position på kromosomsträngen och slumpar fram ett nytt värde,
mellan 1 – 8, på dess gen.
Elitism
Jag föredrar att använda elitism för det här problemet eftersom det oftast medför en positiv
effekt och jag tror att algoritmen hittar en lösning snabbare med hjälp av detta.
AVSLUTANDE DISKUSSION
I denna rapport har jag försökt ta upp de grundläggande begreppen som hör till ämnet
genetiska algoritmer.
Sist skulle jag vilja ta upp några fördelar med genetiska algoritmer:
Man kan säga att genetiska algoritmer till stor del har sin styrka i Crossover-metoden. Det
beror på dess förmåga att kombinera stora block av gener som har utvecklats oberoende av
varandra, för att skapa en ny lösning vilken med stor sannolikhet är bättre än dess ”förfäder”.
En genetisk algoritm passar bra för problem där sökrymden är alltför stor för att kunna gås
igenom i sin helhet. Den hittar oftast en bra lösning, men det är inte säkert att den är optimal.
Algoritmen är ofta tidskrävande också.
I praktiken har genetiska algoritmer haft en bred påverkan på lösningen av
optimeringsproblem som t.ex. layoutproblem av kretskort och schemaläggning.
[Russel/Norvig2003]
Men det går ännu inte att peka ut något område där genetiska algoritmer utan tvekan är den
bästa lösningen. Framtiden får utvisa hur det blir med den frågan.
11
REFERENSER
[Engelbrecht2002] Andries P. Engelbrecht, “Computational intelligence – An introduction“,
sidorna 123-154, 2002.
[Luger2002] George F Luger, “ARTIFICIAL INTELLIGENCE – Structures and Strategies
for Complex Problem Solving”, 4:e upplagan, sidorna 469-481, 2002.
[Russel/Norvig] Stuart Russel och Peter Norvig, “Artificial Intelligence – A Modern
Approach”, 2:a utgåvan, sidorna 116-119, 2003.
Referenser från Internet:
[Obitko] Obitko, Marek. ”GENETIC ALGORITMS”. Skriven på Czech Technical
University, handledare: Assoc. Professor Pavel Slavík <http://cs.felk.cvut.cz/~xobitko/ga/>
(11 okt 2005)
[Wikipedia] Elektroniskt uppslagsverk, http://en.wikipedia.org/wiki/John_Henry_Holland/
(10 okt 2005)
[Yen] Yen, Gory G, School of Electrical and Computer Engineering
Intelligent Systems and Control Laboratory, http://www.okstate.edu/elecengr/faculty/yen/5773-lecture-06.pdf (11 okt 2005)
Lästips
Den ovan nämnda länken [Obitko] är en mycket bra sida för den som vill lära sig mer om
genetiska algoritmer på ett bra och pedagogiskt sätt. Sidan innehåller också körningsexempel,
så man får se hur en G.A. arbetar.
12