Genetiska algoritmer. Henrik Hansson (hhn00001@student.mdh.se) Rapport, CDT212 Mälardalens Högskola



Relevanta dokument
Genetiska Algoritmer. 10 mars 2014

genetiska algoritmer

Grundläggande Idéer Algoritmens komponenter Numerisk optimering Genetisk Programmering. Genetiska Algoritmer

Genetiska Algoritmer

Regression med Genetiska Algoritmer

Genetisk programmering i Othello

Genetiska algoritmer. vem raggar på vem? Petter Bergqvist, kogvet 2

Genetiska algoritmer

Mångfald inom en art. Genotyp. Genpool. Olika populationer. Fig En art definieras som

GenJam En musikalisk genetisk algoritm?

Fördjupningsuppgift 729G43 Linköpings Universitet alelo408. Genetisk börshandel. Att hitta mönster i börsmarknaden med genetiska algoritmer

Mångfald inom en art. Genotyp. Genpool. Olika populationer. Fig En art definieras som

EVOLUTIONENS DRIVKRAFTER ARTBILDNING

Symboler och abstrakta system

Evolution. Hur arter uppstår, lever och försvinner

Evolution. Hur arter uppstår, lever och försvinner

Sammanfattning Arv och Evolution

Vi skall under ett antal veckor jobba med evolutionsundervisning. Arbetet kommer att se lite olika ut.

Evolution. Hur arter uppstår, lever och försvinner

Kapitel 13. Genetiska algoritmer

FARLIGA TANKAR EVOLUTIONEN

HKGBB0, Artificiell intelligens

Ekvivalensrelationer

Grundläggande programmering med matematikdidaktisk inriktning för lärare som undervisar i gy eller komvux gy nivå, 7,5 hp

0XVLNVNDSDQGHJHQRP *HQHWLVN 3URJUDPPHULQJ

FUZZY LOGIC. Christopher Palm chrpa087

Genetik, Gen-etik och Genteknik

Den evolutionära scenen

Uppdelning av ett artificiellt neuralt nätverk

Använda kunskaper i biologi för att granska information, kommunicera och ta ställning i frågor som rör hälsa, naturbruk och ekologisk hållbarhet.

Lokal pedagogisk planering för arbetsområdet genetik i årskurs 9

Vad händer i ett genetiskt laboratorium?

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Mälardalens högskola

Föreläsning 11. Giriga algoritmer

Vinjetter TDDC91 Datastrukturer och algoritmer

DYNAMISK SVÅRIGHETSGRAD MED GENETISK ALGORITM. En jämförelse mellan två tekniker för att snabba upp processen

Anpassningar: i variabla miljöer & Livshistorier och evolutionär fitness Kap. 9&10

Artificiell Musik? AI som kompositör

GENETISK PROGRAMMERAD MUSIK OCH

Totalt finns det alltså 20 individer i denna population. Hälften, dvs 50%, av dem är svarta.

34% 34% 13.5% 68% 13.5% 2.35% 95% 2.35% 0.15% 99.7% 0.15% -3 SD -2 SD -1 SD M +1 SD +2 SD +3 SD

EVOLUTIONEN = LIVETS UTVECKLING. Utveckling pågår

de var svåra att implementera och var väldigt ineffektiva.

använda kunskaper i biologi för att granska information, kommunicera och ta ställning i frågor som rör hälsa, naturbruk och ekologisk hållbarhet,

Registerforskning Oktober 2018, Stockholm City Conference Centre. Möjligheter med Artificiell Intelligens inom registerforskningen

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

Projektrapport. Till Projektet Bluetoothstyrd bil

Föreläsning 11. Giriga algoritmer

Pressrelease Artes Industriambassadör Mer realistiska skuggor i datorspel och virtual reality-applikationer

Evolution, del 1: Evolution och naturlig selektion. Jessica Abbott Forskare Evolutionär Ekologi

Programmering i matematik

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

NEUROEVOLUTION MED TÄVLINGSINRIKTAD SAMEVOLUTION I FLERA MILJÖER MED ÖKANDE KOMPLEXITET

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

TENTAMEN. Programmering Grundkurs (HI1900) Skrivtid 13:15-18:15. Tisdagen 26 april Tentamen består av 8 sidor

Föreläsning 1. Introduktion. Vad är en algoritm?

Olika sätt att lösa ekvationer

MinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004

Matematisk modellering - Projekt. djurförflyttningar. Viktor Griph Anders Jonsson

Beräkning med ord. -hur en dator hanterar perception. Linköpings universitet Artificiell intelligens Erik Claesson

Förslag den 25 september Biologi

Vad man bör tänka på när man har en liten ras? Erling Strandberg, professor vid institutionen för husdjursgenetik, SLU, Uppsala

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

EXJOBBSOPPOSITION. Rapportförfattare: Hanif Farahmand Mokarremi Ashkan Jahanbakhsh

Datorlaboration 4. Pedigree-analys

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Problem: FIL File Paths

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

ELEMENTÄR - SVÅRARE FÄRGGENETIK. Del 5

En typisk medianmorot

Kommentarer till behandlingen av data som ligger till grund för den statistiska utvärderingen av Genetisk Analys av Svenska Vorstehklubbens Jaktprov.

It s through mistakes that you actually can grow. You have to get bad in order to get good.

729G11 Artificiell Intelligens Marcus Johansson Marjo581. Fuzzy logic. Marcus Johansson Marjo581

Introduktion till programmering SMD180. Föreläsning 8: Listor

Programmeringsuppgift Game of Life

Programmera ett övergångsställe

EVOLUTIONÄR LEVELDESIGN LEVELDESIGN MED GENETISKA ALGORITMER

HI1024 Programmering, grundkurs TEN

Personifierad Netflix

Artbildning och utdöende

Lennart Rolandsson, Uppsala universitet, Ulrica Dahlberg och Ola Helenius, NCM

Programmeringsolympiaden 2018


Språket Python - Del 1 Grundkurs i programmering med Python

använda kunskaper i biologi för att granska information, kommunicera och ta ställning i frågor som rör hälsa, naturbruk och ekologisk hållbarhet,

Ärftliga sjukdomar och egenskaper hos hund

Vad är en designprocess?

Delprov 3 Vetenskaplig artikel

1 Mätdata och statistik

efact Sök Sök/Rapporter ( )

ENKEL Programmering 3

Evolution, del 2: Evolutionsprocesser och förändringar i det genetiska materialet. Jessica Abbott Forskare Evolutionär Ekologi

TDDD92 Artificiell intelligens -- projekt

PROGRAMMERING. Ämnets syfte. Kurser i ämnet

Tentaupplägg denna gång

Medicinsk genetik del 4: Tolka genetiska släkttavlor (pedigreen) Niklas Dahrén

Cancer som en ämnesomsättningssjukdom del 1

Transkript:

Genetiska algoritmer Henrik Hansson (hhn00001@student.mdh.se) Rapport, CDT212 Mälardalens Högskola 1

Sammanfattning Genetiska algoritmer har rötter i 60-talet och efterliknar evolutionsteorin på så sätt att lösningsförslag till ett problem representeras som en datasträng som inspirerats av cellernas DNA. Lösningsförslagen kan liknas vid individer i en population av många individer. De bästa individerna korsas med andra individer för att få fram avkomma med datasträngar som kombinerar föräldrarnas gener. För att få in ny information i populationen används mutation. Egenskaperna de genetiska algoritmerna har genom grunderna i evolutionsteorin gör dem väldigt anpassningsbara. De kan användas för att lösa en mängd olika problem och de lämpar sig särskilt bra till att hitta alternativa lösningar till gamla problem. Det är även lätt att integrera genetiska algoritmer med andra AI tekniker som till exempel Neural Networks. För att få bra resultat krävs det dock att problemets och lösningsförlagens definitioner är noggrant framtagna. Till de mer originella användningsområdena hör generering av konstimitationer och spelande av gamla Nintendospel. Inom området datorspel kan man troligen i framtiden få stor nytta av genetiska algoritmer i formen av artificiellt liv som gör spelvärldarna mer trovärdiga. 2

Innehållsförteckning Sammanfattning... 2 Innehållsförteckning... 3 Genetiska algoritmer... 3 Hur fungerar de?... 4 Representation (encoding)... 4 Lämplighet (fitness)... 5 Urval (selection)... 5 Korsning (crossover)... 6 Mutation... 6 Stoppvillkor (stop condition)... 6 Vad kan de användas till?... 7 Styrkor... 7 Begränsningar... 7 Exempel... 7 Konst... 7 AI till Nintendospel... 8 Slutsatser... 9 Referenser... 9 Inledning Inom området artificiell intelligens (AI) finns en mängd olika tekniker för att simulera lärande i programvara. Syftet med dessa tekniker är att man låter ett program själv lära sig hur problemet kan lösas istället för att definiera hur ett problem ska lösas och sedan bara använda ett program för att beräkna lösningen. Detta är förstås speciellt intressant för problem man ännu inte har någon lösning till eller för problem där nuvarande lösningar är ineffektiva och man misstänker att det finns bättre. En grupp av dessa tekniker för lärande programvara grundar sig på evolutionsteorin och försöker efterlikna den naturliga evolutionen. Bland dessa är kanske genetiska algoritmer den mest välkända. Enligt [Wikipedia10] användes de första föregångarna till genetiska algoritmer redan på 60-talet och de blev populärare på 70-talet tack vare John Holland på University of Michigan. Denna rapport kommer utreda vad genetiska algoritmer är, hur de fungerar och vad de kan användas till. Genetiska algoritmer Enligt Darwins evolutionsteori som beskrivs i [Engelbrecht07] har individer som har bättre egenskaper än genomsnittet för arten större chans att överleva och fortplanta sig. Med tiden 3

ärvs dessa överlägsna egenskaper i allt större utsträckning av nästkommande generationer och till slut är de dominanta för arten. Informationen som styr dessa egenskaper finns som gener i cellernas DNA. Ny information introduceras genom mutation, det vill säga en förändring av den ursprungliga informationen. Med genetiska algoritmer försöker man efterlikna den naturliga evolutionen för att lösa problem genom att använda sig av en population av tänkbara lösningar som var och en har informationen om lösningen lagrat i datasträngar som efterliknar naturens DNA. De bästa individerna i varje generation får föra sin information vidare och kombinera den med andra bra individers information för att skapa nästa generation av tänkbara lösningar. En del av lösningarna muteras innan nästa generation utvärderas. Målet är att man till slut ska komma fram till en användbar eller helst optimal lösning till problemet. Hur fungerar de? En genetisk algoritm kan enligt [Mitchell97] se ut så här i pseudokod: Starta med en framslumpad population Utvärdera lämplighet för varje individ Figur 1: DNA Upprepa dessa steg så länge stoppvillkoret inte uppnåtts: 1. Välj ut några av de bästa från nuvarande generation 2. Välj ut vilka individer som ska korsas för att skapa nya individer 3. Mutera en viss % individer för att tillföra ny information 4. Uppdatera populationen till den nya generations individer 5. Utvärdera lämplighet för varje individ Returnera den bästa individen Hur individerna för nästa generation väljs ut (steg 1-3) kan variera kraftigt. Steg kan tas bort helt och i vissa implementationer läggs extra steg till. Exempel på dessa variationer och förklaringar av begrepp som används inom området genetiska algoritmer tas upp i de nästkommande avsnitten. Representation (encoding) För att en genetisk algoritm ska kunna användas måste problemets lösning kunna representeras som gener för algoritmens individer. Ett antal olika typer av representationer beskrivs i [Obitko98]. Trädrepresentation utelämnas då det hör till området genetisk programmering (en annan AI teknik som bygger på evolutionsteorin) snarare än genetiska algoritmer. 4

Individ 1 1001101010100001 Individ 2 0010111011110010 Tabell 1: Exempel på binär representation. Binär representation är den mest grundläggande typen och var den första som användes. Här beskrivs varje individ av en sträng med 1:or och 0:or som t ex kan representera olika påståenden som antingen är sanna eller falska. Permutationsrepresentation används för turordningsproblem som t ex Travelling salesman problemet (TSP) där en simulerad handelsresande ska besöka ett antal städer och man vill veta i vilken ordning städerna ska besökas för att ge den kortaste resvägen. I denna representation beskrivs varje individ av en sträng heltal som motsvarar ordningen. Individ 1 Individ 2 Vänster, Höger, Hoppa, Skjut, Skjut, Höger, Höger, Hoppa, Tabell 2: Exempel på värderepresentation (instruktioner). Värderepresentation är den mest anpassningsbara typen. Här beskrivs individerna som strängar (eller listor) av värden som kan motsvara nästan vad som helst. Värdena kan t ex vara heltal, reella tal, tecken, instruktioner eller funktionsanrop. Lämplighet (fitness) För att veta hur väl anpassad en individ är vid urvalet för reproduktion eller vid kontrollen om en tillräckligt bra eller optimal lösning hittats måste det finnas något sätt att mäta individernas lämplighet. I de fall där man känner till en optimal lösning bedöms individerna utefter hur nära denna lösning de är. För problem där man inte känner till en optimal lösning eller någon lösning alls bedöms individernas lämplighet relativt de andra individerna med hjälp av ett för problemet utformat poängsystem. [Engelbrecht07] Urval (selection) När man vet hur lämpliga individerna i nuvarande generationen är tillämpas urval för att bestämma vilka individer som får chansen att fortplanta sig eller överleva till nästa generation. Det finns en mängd olika metoder för att göra urval och en del av dem kan kombineras vilket ökar valmöjligheterna ännu mer. Här är de flesta av metoderna som beskrivs i [Marczyk04]: Elitist selection Den bästa eller några av de bästa individerna väljs garanterat ut. Används i kombination med andra metoder. Fitness-proportionate selection De bästa individerna har större chans att väljas ut än andra. Roulette-wheel selection En variant av föregående typ. Man tänker sig ett rouletthjul där varje individ är ett av fälten. Fälten är bredare relativt andra fält ju bättre en individ är så chansen är större att kulan hamnar där. Scaling selection Ju högre genomsnittets lämplighet är desto mer värda är skillnader så urvalet blir mer och mer elitiskt. 5

Tournament selection Två eller fler individer väljs ut och tävlar med varandra för att få fram en individ som väljs ut. Rank selection Varje individ får ett värde baserat på sin lämplighet relativt de andra individerna. Sedan används detta värde som utgångspunkt i någon av de andra metoderna. Hierarchical selection Flera rundor av urval utförs och de bästa från varje runda går vidare tills det slutliga urvalet av en eller flera individer är gjort. I de tidiga rundorna används lämplighetsberäkning med lägre precision som är beräkningsmässigt billigare för att spara tid och datorkapacitet. I [Engelbrecht07] beskrivs också bland annat denna metod: Hall of Fame En lista där de bästa individerna från alla generationer sparas. Från denna lista kan föräldrar för fortplantning hämtas. När sedan målet uppnåtts eller den övre gränsen för antal generationer som ska beräknas nåtts finns den bästa lösningen som hittades i toppen på denna lista. Korsning (crossover) Individerna som genom urval får chansen att fortplanta sig korsas med varandra genom att deras information kombineras. Den vanligaste metoden är att en eller flera korsningspunkter väljs ut och informationen på olika sidor om dessa hämtas från olika föräldrar. Förälder A 1001 1110 Förälder C 10 0111 10 Förälder B 1101 0111 Förälder D 11 0101 11 Barn AB 1001 0111 Barn CD 10 0101 10 Tabell 3: Korsning med en(vänster) och två(höger) korsningspunkter För representationer som till exempel en sträng med reella tal kan istället värdena i varje gen kombineras. Ett sett att göra detta på som kallas för aritmetisk korsning innebär att barnet får medelvärdet av föräldrarnas värden. [Engelbrecht07] Mutation För att tillföra ny information i populationen behövs det mutation. Normalt är det inte önskvärt med allt för stor chans att mutation sker eftersom det i de flesta fall har negativ verkan. Precis som för korsning finns det olika sätt att utföra mutation på beroende på vad för typ av representation individerna har. Det enklaste fallet är binär representation där värdet i en gen som ska muteras helt enkelt inverteras. Original 10011100 Muterad 10010101 Tabell 4: Mutation av en binärt representerad individ Vid värderepresentation muteras den utvalda genen till ett närliggande värde och vid permutationsrepresentation byter två gener plats. [Engelbrecht07] Stoppvillkor (stop condition) De vanligaste stoppvillkoren tas upp i [Engelbrecht07] och de är: Ingen förbättring har observerats på ett visst antal generationer. 6

Ingen förändring sker i populationen. En acceptabel lösning har hittats. I de flesta fall begränsar man även hur många generationer som får köras maximalt. Vad kan de användas till? Genetiska algoritmer kan användas till att lösa en mängd olika problem. På [Wikipedia10] finns närmare 60 olika applikationer listade. Det handlar till exempel om automatiserad design av olika slag, dechiffrerande, felsökning i hårdvara, schemaläggande, styrning av robotar och upplärning av AI system som Neural Networks och Fuzzy Systems. De nästkommande avsnitten kommer att gå igenom styrkorna och begränsningarna hos genetiska algoritmer för att ge en uppfattning om vilka typer av problem de lämpar sig för och vilka typer av problem någon annan AI teknik bör användas för. Sedan följer en närmare beskrivning av ett par exempel på applikationer. Styrkor Den största fördelen genetiska algoritmer har över de flesta andra algoritmerna för problemlösning är parallellism. Till skillnad mot algoritmer som endast undersöker en möjlig lösning åt gången kan de genetiska algoritmerna undersöka en stor mängd olika tänkbara lösningar åt gången. Tack vare detta är det avsevärt mindre risk att de ska fastna i ett lokalt maximum, dvs sluta söka efter andra lösningar när den hittar en lösning som ser bra ut jämfört med närliggande (lokalt maximum) men kanske inte är den bästa lösningen (globalt maximum) på problemet. Den egenskapen är speciellt viktig för komplicerade problem, till exempel problem i en dynamisk miljö där den optimala lösningen inte förblir densamma utan förändras med tiden. En svår avvägning för problemlösande algoritmer är balansen mellan utforskande av nya lösningar och förbättrande av kända lösningar. Utforskande av nya lösningar leder vanligtvis till försämrade resultat, åtminstone på kort sikt. Att bara försöka förbättra en redan känd lösning däremot kan leda till att bättre lösningar förblir oupptäckta. Genetiska algoritmer klarar denna balans på ett bra sätt. [Marczyk04] Begränsningar För att en genetisk algoritm ska fungera bra krävs att en bra representation väljs. Även valet av metoder för urval, korsning och mutation samt hur lämplighet beräknas är viktiga. Finns det brister i förberedelserna är det stor risk att den genetiska algoritmen inte producerar någon användbar lösning. Ett problem som är välkänt hos genetiska algoritmer är att om en relativt bra lösning hittas väldigt tidigt finns det risk att den snabbt blir dominant. Det kan leda till att algoritmen fastnar i ett lokalt maximum. Valet av urvalsmetoder kan minska risken för detta. Till slut rekommenderar flera forskare mot att använda genetiska algoritmer för problem som går att lösa med analytiska metoder. Att tillämpa genetiska algoritmer på sådana problem är väldigt ineffektivt. [Marczyk04] 7

Exempel Här följer en närmare beskrivning av ett par exempel på applikationer av genetiska algoritmer. Konst Roger Alsing har gjort en implementation av genetisk programmering som klarar av att imitera färdiga bilder. Huvudexemplet han använder i sin beskrivning är den kända målningen Mona Lisa. Exemplet är med i rapporten eftersom det lika gärna hade kunnat göras med en genetisk algoritm. Mer detaljer och bilder finns i hans blogg [Alsin08] där man på FAQ sidan även kan komma åt källkoden. Figur 2: Mona Lisa genereras av Roger Alsings program. Filnamnen under bilderna visar vilken generation de visar. Varje individ representeras av ett antal polygoner som har ett antal punkter, en färg och är delvis transparenta. En individs lämplighet bestämdes genom att pixel för pixel räkna ut skillnaden i färg från originalbilden och summera dessa. Hela processen från start till färdig bild tog ungefär 3 timmar på datorn han använde. Genereringen av en Mona Lisa variant som faktiskt använder en genetisk algoritm finns att se på YouTube [Youtube10]. Beskrivning saknas men källkoden för denna finns att få tag på om man följer länken i videons info. Om detta är riktig konst eller inte är öppet för debatt. AI till Nintendospel Ett annat exempel som är intressant även om det kanske inte har så stor praktisk nytta är Paul Kuliniewicz program Wallace som klarar av att spela gamla Nintendospel som t ex Megaman 2 och Dr. Mario. Wallace, som finns beskrivet i Pauls blogg [Kuliniewicz09], använder sig av en genetisk algoritm där varje individ representeras av en lista med instruktioner som motsvarar de kommandon en spelare kan ge till spelet via handkontrollen. 8 Figur 3: Megaman 2. Bossen Airman (vänster).

Ett av exemplen som visas upp i bloggen är en video där Wallace försöker besegra bossen Airman i spelet Megaman 2. Redan efter 10 generationer lyckas den bästa individen med målet. Efterföljande generationer gör det med mer och mer hälsa kvar. Som utvärderingsfunktion användes Airmans hälsa minus Megamans hälsa när någon av dem vunnit. Slutsatser Genetiska algoritmer kan användas inom en stor mängd områden. Deras egenskaper gör dem särskilt lämpliga för att utforska nya, originella lösningar på redan utforskade problem. För komplicerade problem är de även ofta effektivare än andra typer av algoritmer vilket gör att de är attraktivare att tillämpa till sådana. Det är också lätt att använda genetiska algoritmer som hjälp till andra AI tekniker som till exempel Neural Networks och Fuzzy Systems. För att de ska vara användbara krävs dock att problemet och lösningsförslagen (individerna) definieras på ett robust sätt. Slarvas det i de stegen är det väldigt liten chans att en bra lösning hittas av algoritmen. Detta gäller säkert de flesta andra typer av algoritmer också, men för genetiska algoritmer är det kanske extra viktigt eftersom det inte är lika lätt att kontrollera vad man får för resultat från dem. Grunderna i evolutionsteorin gör att genetiska algoritmer är särskilt intressanta för simuleringar av liv. Artificiellt liv kommer troligen spela en stor roll i framtidens datorspel. Idag lider många spel av att det tydligt märks att människor, djur och andra varelser man träffar på i spelen är konstgjorda. Med realistiskt artificiellt liv skulle spelvärldarna bli mer trovärdiga och spelupplevelsen höjas avsevärt. Referenser [Alsin08] Roger Alsin, Genetic Programming: Evolution of Mona Lisa, <http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/> (4 mars 2010) [Engelbrecht07] Andries P. Engelbrecht, Computational Intelligence: An Introduction, Second Edition, John Wiley & Sons, ISBN 978-0-470-03561-0, 2007 [Kuliniewicz09] Paul Kuliniewicz, Paul Kuliniewicz >> Wallace, <http://www.kuliniewicz.org/blog/archives/category/coding/wallace/> (4 mars 2010) [Marczyk04] Adam Marczyk, Genetic Algorithms and Evolutionary Computation, <http://www.talkorigins.org/faqs/genalg/genalg.html> (4 mars 2010) [Mitchell97] Tom M. Mitchell, Machine Learning, McGraw-Hill, ISBN 0-07-115467-1, 1997 [Obitko98] Marek Obitko, Encoding Introduction to Genetic Algorithms, <http://www.obitko.com/tutorials/genetic-algorithms/encoding.php> (4 mars 2010) [Wikipedia10] Wikipedia Genetic algorithm, <http://en.wikipedia.org/wiki/genetic_algorithm> (5 mars 2010) [Youtube10] YouTube, Mona Lisa Genetic Algorithm Test 1, <http://www.youtube.com/watch?v=a8x4lyj33ro> (4 mars 2010) 9