729G43 Artificiell intelligens Sökning

Relevanta dokument
Sökning. Sökning. Köoperationer. Generell sökalgoritm

Agent som lär sig. Maskininlärning. Genetiska algoritmer. Typer av återkoppling. ! Introduktion. ! Genetiska algoritmer!

Antag att följande träd genereras i ett spelförande program om vi applicerar evalueringsfunktionen

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

HKGBB0, Artificiell intelligens

Asymptotisk analys innebär att... man försöker uppskatta vad som händer för stora indatamängder.

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Lektion 2: Sökagenter. Robin Keskisärkkä

Vad behövs för att skapa en tillståndsrymd?

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

Föreläsning 4: Kombinatorisk sökning

Artificiell Intelligens

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

Antag att b är förgreningsfaktorn, d sökdjupet, T (d) tidskomplexiteten och M(d) minneskomplexiteten.

I en deterministisk omgivning beror nästa tillstånd bara av agentens handling och nuvarande tillstånd.

Genetisk programmering i Othello

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Exempel: Förel Rekursion III Nr 14. Uno Holmer, Chalmers,

Introduktion till programmering SMD180. Föreläsning 9: Tupler

Regression med Genetiska Algoritmer

Fredag 10 juni 2016 kl 8 12

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

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)

I en deterministisk omgivning beror nästa tillstånd bara av agentens handling och nuvarande tillstånd.

Grafer, traversering. Koffman & Wolfgang kapitel 10, avsnitt 4

Sökning och sortering

Mycket kortfattade lösningsförslag till tenta i AI 6 nov 2003

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

Trädstrukturer och grafer

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Föreläsning 4: Kombinatorisk sökning

Tentamen Datastrukturer (DAT036)

Programkonstruktion och Datastrukturer

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Föreläsning 9 Datastrukturer (DAT037)

Föreläsning Datastrukturer (DAT037)

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

Föreläsning 1. Introduktion och sökning i graf. Vad är en algoritm?

Tentamen'('Datastrukturer,'algoritmer'och'programkonstruktion.'

Tentamen Datastrukturer D DAT 035/INN960

Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...

Tentamen i Algoritmer & Datastrukturer i Java

Föreläsning 5: Grafer Del 1

ADT Kö. Seminarium 4 Köer och Stackar Innehåll. Operationer. ADT Stack. Definition. Definition

Föreläsning Datastrukturer (DAT036)

Föreläsning 4. Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö

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

Grundläggande datalogi - Övning 4

Föreläsning 6: Introduktion av listor

Lösningar Datastrukturer TDA

Artificiell intelligens

Programmering II (ID1019) :00-11:00

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

Algoritmanalys. Inledning. Informationsteknologi Malin Källén, Tom Smedsaas 1 september 2016

Tommy Färnqvist, IDA, Linköpings universitet

Föreläsning Datastrukturer (DAT037)

Artificial Intelligence

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

Universitetet i Linköping Institutionen för datavetenskap Anders Haraldsson 2

Föreläsning Datastrukturer (DAT036)

Tentamen Datastrukturer (DAT036)

Översikt. Parallella sökalgoritmer för diskreta optimeringsproblem. 8-pusslet. Problemdefinitioner

Föreläsning 6 Datastrukturer (DAT037)

Dagens föreläsning Programmering i Lisp Fö 5

729G43 Artificiell intelligens Planering

Tänk på följande saker när du skriver tentan:

Föreläsning Datastrukturer (DAT036)

Några svar till TDDC70/91 Datastrukturer och algoritmer

PROBLEMLÖSNING. ! GPS! Mål medel analys! Problemlösning i programmering. Lars-Erik Janlert 2007

Föreläsning 4 Datastrukturer (DAT037)

Tentamen Datastrukturer (DAT036)

Föreläsning 13 Datastrukturer (DAT037)

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Imperativ programmering. Imperativ programmering konstruktioner i Lisp. Datastrukturer (kap ) arraystruktur poststruktur

TDDI16 Datastrukturer och algoritmer. Algoritmanalys

Datastrukturer. föreläsning 8. Lecture 6 1

Lösningsförslag till tentamen Datastrukturer, DAT037,

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

Asymptotisk komplexitetsanalys

Föreläsning 5 Innehåll

Föreläsning 7 Datastrukturer (DAT037)

FÖRELÄSNING 11 DATALOGI I

Algoritmer, datastrukturer och komplexitet

Tentamen Datastrukturer, DAT037 (DAT036)

Föreläsning Datastrukturer (DAT037)

Lösningsförslag för tentamen i Datastrukturer (DAT036) från

Föreläsning 2. Stackar, köer och listor TDDC91,TDDE22,725G97: DALG. Innehåll. 1 ADT stack. 1.1 Tillämpningar

Linköpings universitet

Föreläsning Datastrukturer (DAT036)

Föreläsning 13 Innehåll

Algoritmer och datastrukturer TDA143

Programmering II (ID1019) :00-17:00

Tentamen Datastrukturer (DAT037)

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 8 Datastrukturer (DAT037)

Programmering för språkteknologer II, HT2014. Rum

Datastrukturer. föreläsning 10. Maps 1

Föreläsning 5: Kardinalitet. Funktioners tillväxt

Föreläsning 9 Innehåll

Transkript:

729G43 Artificiell intelligens Sökning Arne Jönsson HCS/IDA Problemformulering Ø Ø Ex. Hitta bästa vägen från Arad till Bukarest Returnera en sekvens av handlingar till en intelligent agent Oradea 71 Neamt 75 Zerind 151 87 Iasi Arad 140 Sibiu 99 Fagaras 92 Vaslui 118 Timisoara 111 70 75 Dobreta 80 Lugoj Mehadia 120 Rimnicu Vilcea 97 Pitesi 146 138 Craiova 211 101 85 Bukarest 90 Giurgiu 142 Urziceni 98 86 Eforie Linköpings universitet 1

Tillståndsrymd Initialtillstånd In(Arad) Handlingar {Go(Sibiu), Go(Zerind), Go(Timisoara)} Övergångsmodell Operationer som beskriver effekten av en handling som en funktion av tillståndsförändringar Result(In(Arad), Go(Sibiu)) = In(Sibiu) Måltest {In(Bukarest)} Vägkostnad Arad Timisoara Lugoj = 118+111=229 Problemformulering Datastruktur: problem = [intialtillstånd operatorer måltest vägkostnadsfunktion] Effektivitet Nås målet? Till vilken kostnad? Hur bra är lösningen? Totalkostnaden = vägkostnaden + sökkostnaden Linköpings universitet 2

Exempel Vattenhinksproblemet 2 hinkar, en 4-liter, en 3-liter En kran att fylla med Problem: att få exakt 2 liter i 4-litershinken Extraantaganden Inget litersmått Vatten i kranen Kan hälla vatten mellan hinkar Vattenhinksproblemet Tillstånd: X = 4-litershinken Y = 3-litershinken Initialtillstånd (X=0, Y=0) Måltillstånd: (2, Y) Kostnad: 1 per operation Operatorer: Fyll en hink Töm en hink Fyll från en hink till en annan Häll ut lite vatten Linköpings universitet 3

Vattenhinksproblemet Operationer: (X,Y: X < 4) (4,Y) (X,Y: Y < 3) (X,3) (X,Y: X > 0) (0,Y) (X,Y: Y > 0) (X,0) (X,Y: X+Y ³ 4 Ù Y>0) (4, Y-(4-X)) (X,Y: X+Y ³ 3 Ù X>0) (X-(3-Y),3) (X,Y: X+Y =< 4 Ù Y>0) (X+Y,0) (X,Y: X+Y =< 3 Ù X>0) (0,X+Y) Sökning Datastrukturer och operationer Värdering av sökstrategier Blind sökning Heuristisk sökning Genetiska algoritmer Constraint satisfaction Spelförande program Linköpings universitet 4

Sökning Datastruktur: nod = [tillstånd, förälder, operator, djup, vägkostnad] Expandera varje nod Applicera operatorer på ett tillstånd och generera alla nya tillstånd Ex: Initialtillståndet (0, 0) expanderas till (4, 0) och (0, 3) (4, 0) expanderas till (0, 0) (4, 3) (1, 3) (0, 3) expanderas till (0, 0) (4, 3) (3, 0) etc. Sökstrategi avgör vilken nod som skall expanderas Köoperationer Sökalgoritmer sparar noder som skall expanderas i en kö Typiska köoperationer: empty?(queue) pop(queue) insert(element, queue) Linköpings universitet 5

Generell sökalgoritm def treesearch(problem): frontier = insert(initialstate(problem), frontier) while true: if empty?(frontier): return failure node = pop(frontier) if goaltest(problem, state(node)): return solution(node) frontier = insert(expand(node, problem), frontier) Nodexpansion Expand(node, problem) Skapa en lista av noder, s, som är efterföljare till en nod, n, där: state[s] = tillståndet efter uförd legal handling i n parent-node[s] = n action[s] = handlingen som utfördes vägkostnad[s] = vägkostnad[n] + kostnad från n till s djup[s] = djup[n] + 1 Linköpings universitet 6

Värdering av sökstrategi Komplett hittar lösning om den finns Optimal hittar bästa lösningen Tidsåtgång Minnesåtgång Blind sökning Ingen information om hur långt det är kvar till målet Bredden först Uniform cost Djupet först Djupbegränsad sökning Iterativ fördjupning Dubbelriktad sökning Linköpings universitet 7

Bredden först Expandera alla noder på en nivå innan nästa nivå 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Implementeras med insert som en FIFO-kö Bredden först Komplett Optimal Komplexitet ett problem Förgreningsfaktor b Sökdjup d Ex b=2 1 d=0, en nod, b 0 2 3 4 5 6 7 d=1, b 1 noder d=2, b 2 noder 8 9 10 11 12 13 14 15 d=3, b 3 noder Linköpings universitet 8

Bredden först Antag lösning på djupet d, då har vi expanderat: 1+b+b 2 +b 3 +b 4 +b 5 +..b d noder Vid komplexitetsanalys säger vi att vi har O(b d ), dvs exponentiell tillväxt T d Bredden först, tids- och minneskomplexitet Djup Noder Tid Minne 2 110 0,11 ms 0,1 MB 4 11110 11 ms 10,6 MB 6 10 6 1.1 s 1 GB 8 10 8 2 min 103 GB 10 10 10 3 timmar 10 TB 12 10 12 13 dagar 1 PetaByte 14 10 14 3,5 år 99 PetaByte 16 10 16 350 år 10 ExaByte Förgreningsfaktor = 10, 1 miljon noder/sekund, 1000 bytes/nod Linköpings universitet 9

Uniform Cost Om inte alla operatorer har samma kostnad Expandera billigaste vägen längs frontier S S S A 1 10 5 5 S B 15 5 C M A B C 1 5 15 A B C 5 15 M 11 A B C 15 M M 11 10 Optimal och komplett om det inte finns negativa kostnader I princip O(b d ) för tids- och minneskomplexitet Djupet först Följer alltid en väg till slutet, om inte en lösning backa upp 1 1 1 1 2 3 2 3 3 3 4 5 5 6 7 8 9 10 11 12 13 14 15 Implementeras med insert som en LIFO-kö, STACK Linköpings universitet 10

Djupet först Kräver mindre minne, m*b där m=maxdjup. Jämför b=10, m=12, djupet först = 10*12=120, bredden först = 10 12 Samma tidskomplexitet O(b m ) Inte optimal Inte komplett, kan dyka ner i en oändligt lång sökväg Djupbegränsad sökning Lägg in ett maxdjup, l, för djupet först Tidskomplexitet fortfarande exponentiell, O(b l ) Minneskomplexitet O(b*l) Inte komplett om man inte kan skatta ett sökdjup som garanterar en lösning, jfr, rumäniengrafen, max 20 städer, dvs l=20 ger komplett Inte optimal Linköpings universitet 11

Iterativ fördjupning Låt sökdjupet, h, öka från 0 till det djup, d, där en lösning finns h=0 h=1 h=2 h=3 Iterativ fördjupning Optimal och komplett Minneskomplexitet, O(b*d) Tidskomplexitet, O(b d ) Expanderar dock noderna flera gånger Bredden-först 1+b+b 2 +b 3 +b 4 +b 5 +..b d Iterativ fördjupning db+(d-1)b 2 +(d-2)b 3 + +3b d-2 +2b d-1 +b d Men antal noder på nivå d många fler än resten Ex b=10, d=5 Bredden först: 1+10+100+1000+10000+100000=111111 Iterativ fördjupning: 50+400+3000+20000+100000=123450 Linköpings universitet 12

Dubbelriktad sökning Sök bredden-först från start och mål samtidigt Inte alltid möjligt Komplett och optimal Tids- och minneskomplexitet, lösning djup d 2b d/2, dvs O(b d/2 ) Ex b=10, d=6 Bredden först, O(b d ) = 10 6 = 1000000 Dubbelriktad sökning = 10 6/2 = 10 3 = 1000 Egenskaper hos sökstrategier Kriterium Bredden först Uniform Cost Djupet först Djupbegränsad Komplett? Ja Ja Nej Nej Ja Ja Iterativ fördjupning Dubbelriktad sökning Optimal? Ja Ja Nej Nej Ja Ja Tid O(b d ) O(b C*/e ) O(b m ) O(b l ) O(b d ) O(b d/2 ) Minne O(b d ) O(b C*/e ) O(bm) O(bl) O(bd) O(b d/2 ) Linköpings universitet 13

Undvika loopar Ex vattenhinksproblemet (0,0) (4,0) (0,3) (0,0) (4,3) (1,3) (0,0) (4,3) (3,0) Generera inte tillstånd som är lika med fadertillståndet Generera inte vägar med cykler Behöver bara leta från noden som genererats upp till startnoden Generera inte ett tillstånd som genererats förut Varje tillstånd måste lagras i minnet, O(b d ) Heuristisk sökning Antar att vi har någon information om vilken nod som är bäst att expandera Greedy search A* Heuristik Hill Climbing Linköpings universitet 14

Greedy Search Minimera uppskattad kostnad till målet, dvs expandra den nod som verkar vara närmast målet Inför h(n)= heuristisk funktion som uppskattar kostnaden från nod n till målet h(n) = 0 betyder att n är målnod Ex Rumänienkartan Fågelavståndet ett exempel på heuristik h(n)= Arad 366 Bukarest 0 Craiova 160 Dobreta 242 Eforie 161 Fagaras 178 Giurgiu 77 Hirsova 151 Iasi 226 Lugoj 244 Mehadia 241 Neamt 234 Oradea 380 Pitesi 98 Rimnicu V. Sibiu 253 Tisioara 329 Urzicen Oradea i Neamt 193 80 Vasliu 199 Zerind 374 Zerind Iasi Arad Sibiu Fagaras Vaslui Timisoara Rimnicu Vilcea Lugoj Pitesi Urziceni Mehadia Bukarest Dobreta Craiova Giurgiu Eforie Linköpings universitet 15

Greedy Search, Arad Bukarest Arad Zerind (374) Sibiu (253) Timisoara (329) Oradera (380) Fagaras (178) Rimnicu Vilcea (193) Bukarest (0) Greedy Search Liknar djupet först och kan råka ut för samma problem Inte optimal Inte komplett Tids- och minneskomplexitet O(b d ) men kan ofta bli bättre med god heuristik Jämför Uniform Cost Komplett och optimal men ineffektiv Inför g(n) för kostnad från start för nod n Linköpings universitet 16

A* Inför f(n) = g(n) + h(n), dvs tillryggalagd kostnad + uppskattad återstående kostnad Kräv också att h(n) aldrig överskattar den verkliga kostnaden h(n) kallas då tillåten (admissible), ex fågelavståndet h(n)= Arad 366 Bukarest 0 Craiova 160 Dobreta 242 Eforie 161 Fagaras 178 Giurgiu 77 Hirsova 151 Iasi 226 Lugoj 244 Mehadia 241 Neamt 234 Oradea 380 Pitesi 98 Rimnicu V. 193 Sibiu 253 Tisioara 329 Urziceni 80 Vasliu 199 Zerind 374 71 Oradea Neamt 75 Zerind 151 87 Iasi Arad 140 Sibiu 99 Fagaras 92 Vaslui 118 Timisoara 111 70 75 Dobreta 80 Lugoj Mehadia 120 Rimnicu Vilcea 97 Pitesi 146 138 Craiova 211 101 85 Bukarest 90 Giurgiu 142 98 Urziceni 86 Eforie Linköpings universitet 17

A*, Arad Bukarest Arad Zerind f(zerind) = 75+374 = 449 Sibiu f(sibiu) = 140+253=393 Timisoara f(timisoara) = 118+329=447 Oradera (140+151+380=671) Fagaras (140+99+178=417) Rimnicu Vilcea (140+80+193=413) Bukarest (140+99+211+0=450) Pitesi(140+80+97+98=415) Craiova (140+80+146+160=526) Bukarest (140+80+97+101+0=418) Craiova (140+80+138+160=518) A* är optimal Antag: lösningsnoden G optimum med kostnad f* och G 2 lösning men med kostnad g(g 2 ) > f* För att A* skall välja G 2 måste det finnas en nod, n, på vägen till G som inte expanderats n G 2 G f* f(n) eftersom h aldrig överskattar (tillåten) f(n) f(g 2 ) eftersom A* expanderat till G 2 dvs f* f(g 2 ) Eftersom G 2 målnod så h(g 2 ) = 0 f(g 2 ) = g(g 2 ) dvs f* g(g 2 ) vilket motsäger antagandet Linköpings universitet 18

Evalueringsfunktionen i A* f(n) = g(n) + h(n) där f(n) = totalkostnad g(n) = kostnad hittills h(n) = uppskattad återstående kostnad (måste underskatta) g(n) = 0 Greedy search h(n) = 0 Uniform Cost g(n) = 1 och h(n) = 0 f(n) = 1, dvs Bredden först Heuristik Heuristiska sökmetoder bättre med bättre heuristik, dvs bättre skattning av kostnaden Ex. 15-spel 1 2 3 4 2 3 4 5 5 6 7 8 6 9 8 1 9 10 11 12 7 11 10 12 13 14 15 14 15 13 Linköpings universitet 19

Heuristik, 1 Antal brickor som ligger fel 1 2 3 4 3 2 4 5 5 6 7 8 6 9 13 1 9 10 11 12 7 11 10 12 13 14 15 14 15 8 12: (1,3,4,5,6,7,8,9,10,11,12,13,14,15)=14 8: (1,3,4,5,6,7,8,9,10,11,13,14,15)=13 Heuristik, 2 Manhattanavståndet 1 2 3 4 3 2 4 5 5 6 7 8 6 9 13 1 9 10 11 12 7 11 10 12 13 14 15 14 15 8 12: 4+0+2+1+4+1+3+3+2+1+1+1+4+1+1=29 8: 4+0+2+1+4+1+3+2+2+1+1+0+4+1+1=27 Linköpings universitet 20

Heuristik konstruktion Förenklade problem kan användas för automatisk konstruktion av heuristik En optimal lösning för ett förenklat problem är en tillåten heuristik för orginalproblemet Hill Climbing Om varje nytt tillstånd innehåller all nödvändiginformation för att gå vidare, dvs vi kan utvärdera en nod utan hänsyn till varifrån vi kom och vägen mindre viktig S 3 2 10 13 12 23 15 30 Linköpings universitet 21

Hill Climbing def hillclimbing (problem): current = makenode(initialstate(problem)) while True: next = highestvaluedsuccessor(current) if (value next) <= (value current): return current current = next Problem för hill climbing Lokal metod, hittar lokalt optimum Lokalt maximum Platå Globalt maximum Ås Linköpings universitet 22

Genetiska algoritmer Iterativ metod som utgår från de bästa tillstånden och förbättrar dessa Naturligt urval Operatorer inspirerade från naturlig genetisk variation Arbetar parallellt med flera sökrymder Genetiska algoritmer Initialt ett antal slumpmässiga tillstånd, populationen Ett tillstånd, en individ, representeras som en sträng från ett ändligt alfabet (vanligtvis 0 och 1) En funktion, lämplighetsfunktionen, som ger högt värde för bra tillstånd och lågt för dåliga tillstånd Nya tillstånd generas genom att kombinera individer som har höglämplighet, samt genom mutationer Linköpings universitet 23

Enkel genetisk algoritm initialisera populationen utvärdera populationen while intetillfredställande resultat: välj ut föräldrar för reproduktion korsa och mutera utvärdera populationen Rouletthjul Bättre fitnessvärde ger större chans att överleva men slump finns kvar Exempel Kromosom A, fitness 4 Kromosom B, fitness 10 Kromosom C, fitness 5 Kromosom D, fitness 1 Linköpings universitet 24

Exempel, 1 Handelsresandeproblemet 3 A 5 1 1 B 2 C 4 D Exempel, 2 Korsning Två gener. Ta första från första, andra från andra, tredje från första etc och bilda en ny gen. Om elementet redan finns ta nästa. Sluta med samma som start Mutation Byt slumpmässigt två element Fitness Totalavstånd Starttillstånd A B C D A B C D A B C D A B C D A B C D Linköpings universitet 25

Exempel, 3 Korsa de två första: A B C D A B C D A B A C D eftersom C som är tredje från första genen redan finns B eftersom A redan finns Ny gen A C D B A Korsa de två sista: C D A B C D A B C D Ny gen: C A B D C Exempel, 4 Mutera första genen slumpmässigt A B C D A Ny population A D C B A A 1 B 2 C 4 D 5 A = 12 B 2 C 4 D 5 A 1 B = 12 C 4 D 5 A 1 B 2 C = 12 D 5 A 1 B 2 C 4 D = 12 A 3 C 4 D 2 B 1 A = 10 C 3 A 1 B 2 D 4 C = 10 A 5 D 4 C 1 B 1 A = 11 Behåll de fyra bästa Linköpings universitet 26

Exempel, 5 Ny population D 5 A 1 B 2 C 4 D = 12 A 3 C 4 D 2 B 1 A = 10 C 3 A 1 B 2 D 4 C = 10 A 5 D 4 C 1 B 1 A = 11 Korsa två första D C B A D Korsa två sista C D B A C Mutera första. Slumpen gav andra och tredje staden D B A C D Exempel, 6 Ny population D 5 A 1 B 2 C 4 D = 12 A 3 C 4 D 2 B 1 A = 10 C 3 A 1 B 2 D 4 C = 10 A 5 D 4 C 1 B 1 A = 11 D 4 C 2 B 1 A 5 D = 12 C 4 D 2 B 1 A 3 C = 10 D 2 B 1 A 3 C 4 D = 10 Behåll de fyra bästa A 3 C 4 D 2 B 1 A = 10 C 3 A 1 B 2 D 4 C = 10 C 4 D 2 B 1 A 3 C = 10 D 2 B 1 A 3 C 4 D = 10 etc Linköpings universitet 27

Genetisk programmering Genetiska algortimer med program som data Skapa program som löser given uppgift GP algoritm generera program slumpmässigt kör och utvärdera program med träningsdata while inte tillräckligt bra program välj ut program för reproduktion modifiera programmen kör och utvärdera program med träningsdata Linköpings universitet 28

Exempel, 1 Wumpus följa väggen Förflyttning och riktning: Norr, Söder, Väster, Öster and if return goöster norr not and return gosöder if if Ex. if norr and not bumpöster: return goöster if öster and not bumpsöder: return gosöder if söder and not bumpväster: return goväster return gonorr bumpöster öster not and return goväster return gonorr bumpsöder söder not bumpväster Exempel, 2 1. Skapa initial population, t.ex. 5000 slumpmässigt skapade syntaktiskt korrekta träd if if and return gonorr if and return goväster return gonorr norr norr söder return gonorr söder not bumpväster 2. Fitness: Låt agenten starta 10 gånger, varje gång från en ny position. Låt agenten gå 60 steg och räkna antalet unika rutor som angränsar till en vägg Linköpings universitet 29

Exempel, 3 3. Skapa nya program genom att 1. Låta de 500 bästa överleva 2. Skapa ytterligare 4500 nya individer av dessa bästa genom slumpmässig korsning if if and return gonorr if and return goväster return gonorr norr norr söder return gonorr söder not bumpväster if if return goväster return gonorr söder return gonorr Exempel, 4 4. Mutera 50 program genom att byta ett delträd mot ett slumpmässigt skapat delträd if if and return goväster return gonorr and return goväster return gonorr söder not söder not bumpväster and bumpöster väster I en värld med 32 väggrutor får man fram ett perfekt program efter 10 generationer Linköpings universitet 30

Constraint satisfaction Givet: En mängd variabler X 1,X 2,.X n Med värden v i till X i ur domänen D i En mängd begränsningar C 1,C 2, C n Som talar om vilka värden som är tillåtna Mål: En tilldelning {X i =v i, X j =v j } som är konsistent med begränsningarna Ex. trefärgsproblemet Färga varje stat: Tre färger Grannstater olika färg Ex. {(WA=grön),(NT=blå), (Q=grön),(NSW=blå), (SA=röd),(V=grön),(T=blå)} Linköpings universitet 31

Constraint satisfaction sökning Bredden först skulle tilldela varje variabel ett värde generera ett stort sökträd Eftersom ordningen saknar betydelse kan man istället tilldela en variabel ett värde och sen backa tillbaka om det inte blev bra CSP - Sökproblem Tillståndsrymd Initialtillstånd Tom mängd {} Funktion för tillståndsförändringar Ett värde sätts för en variabel som saknar värde Måltest En mängd där alla variabler har tilldelats värden Vägkostand Konstant 1 Linköpings universitet 32

CSP - Sökning Djupet först Lokal sökning Backtracking Väljer en variabel och expanderar, dvs prövar olika värden Om inget värde kan användas backar algoritmen CSP Sökning Exempel {} {NT=Röd} {NT=Blå} {NT=Grön} {NT=Röd, Q=Röd} {NT=Röd, Q=Blå} {NT=Röd, Q=Blå, NSW=Grön} {NT=Röd, Q=Blå, NSW=Blå} {NT=Röd, Q=Blå, NSW=Grön, SA=Röd} {NT=Röd, Q=Blå, NSW=Grön, SA=Blå} {NT=Röd, Q=Blå, NSW=Grön, SA=Grön} Linköpings universitet 33

Algoritm def backtrackingsearch(csp): return recursivebacktracking([ ], csp) def recursivebacktracking(assignment, csp): if complete(assignment): return assignment var = selectunassignedvariable(variables(csp),assignment,csp) for value in orderdomainvalues(var,assignment,csp): if consistent(value,assignment,constraint(csp)): add {var=value} to assignment result = recursivebacktracking(assignment,csp) if result!= failure: return result remove {var=value} from assignment return failure Algoritm Variabler = [NT, Q, NSW, SA, V, T, WA] Värden = [Röd, Blå, Grön] Initialt assignment = { } selectunassignedvariable väljer variabel Ex var = NT orderdomainvalues väljer värden enligt någon heuristik Ex assignment = {NT = röd} Nytt anrop recursivebacktracking({nt=röd}, csp}) selectunassignedvariable väljer var = Q orderdomainvalues väljer röd. Inte konsistent Linköpings universitet 34

Algoritm, forts väljer nytt värde i for-loopen assignment = {Q=blå} recursivebacktracking({nt=röd, Q=blå}, csp} etc {NT=röd, Q=blå, NSW=grön} var=sa går inte utan det rekursiva anropet ger ett failure remove {var=value} from assignment tar bort något värde, t.ex. det sista NSW=grön och sen fortsätter algoritmen med ny variabel Heuristik Val av variabel och värde selectunassignedvariable bör välja den variabel som är mest begränsad och först väljs den som har flest begränsningar, SA orderdomainvalues välj det minst begränsande värdet Constraint propagation Propagera effekten av en variabels begränsningar till de andra variablerna Backtrackingstrategier Ta bort det värde, eller den variabel, som orsakade konflikten Linköpings universitet 35

Spelförande program Minimax Evalueringsfunktioner alfa-beta cutoff Minimax X X X X X X X X X O O O X X X X O X O X O X X O X X O X O X e(x,,,x,o,,,, )=4-4=0 e(,x,,x,o,,,,, )=0 e(,,,x,o,,,,x)=4-3=1 Applicera evaluaeringsfunktion, t.ex.: e(p)=n(vinstdrag för mig) n(vinstdrag för motståndaren) Linköpings universitet 36

Ett sökträd Max 84 5 Min 84 5 3 Max 8 9 4 5 9 6 3 9 9 8 7 2 9 1 6 2 4 1 1 3 5 3 9 2 6 5 2 1 2 3 9 7 2 9 6 4 Evalueringsfunktion Linjär n e(p) = w i f i i=0 Ex: e(p)=1*n(vinst för mig)-1*n(motståndarvinst) e(p)=π*n(vinst för mig)-2,18*n(motståndarvinst)+1*n(diagonaler) Icke-linjär n e(p) = f i 2 i=1 Inlärning Vikter och funktioner lärs in automatiskt utifrån gamla spel Credit assignmentproblemet Linköpings universitet 37

alfa-beta cutoff, 1 Två tröskelvärden a och b: a representerar det lägsta värdet en maxnod kan få, dvs en undre gräns för MAX b representerar det högsta värdet en minnod kan få, dvs en övre gräns för MIN alfa-beta cutoff, 2 Initiering: a = sämsta värdet; b = bästa värdet Tilldelning: a = bästa efterföljare hitills, på MAX-nivå b = sämsta efterföljare hitills, på MIN-nivå Regler: Avbryt MIN-sökning vid nod med värde mindre än a Avbryt MAX-sökning vid nod med värde större än b Linköpings universitet 38

Ett sökträd Max 84 5 Min 84 5 3 Max 8 9 4 5 9 6 3 8 7 2 9 2 4 1 1 3 5 3 9 6 1 2 3 Linköpings universitet 39