ARTIFICIELL INTELLIGENS
|
|
- Elin Hansson
- för 6 år sedan
- Visningar:
Transkript
1 ARTIFICIELL INTELLIGENS ANN och evolution i shooterspel Examensarbete inom huvudområdet Datalogi Grundnivå 30 högskolepoäng Vårtermin 2012 Joakim Akterhall Handledare: Mikael Thieme Examinator: Mikael Johannesson
2 Sammanfattning Detta arbete undersöker hur två olika nätverksarkitekturer för artificiella neurala nätverk fungerar i en testmiljö av shooter-karaktär. De två arkitekturer som undersöks är ett feedforward-nätverk samt ett elman-nätverk som tränas med hjälp av evolutionära algoritmer. Skillnaden på de två valda nätverksarkitekturerna är att det sistnämnda har ett korttidsminne. Resultaten visar att det i den testmiljö som använts inte är någon skillnad på de två nätverksarkitekturerna, utan de uppnår i princip samma resultat. Dock så har de beteenden som nätverken uppnått visat på att det är möjligt att använda agenter som är skapade av artificiella neurala nätverk i ett shooter-spel och att de kan generera bra resultat. Något som inte fokuserats på i detta arbete men som skulle vara intressant att kolla vidare på, är till exempel förändring av storleken på nätverken eller att undersöka om ett långtidsminne på det rekurrenta nätverket hade förändrat resultatet. Nyckelord: Artificiella neurala nätverk, ANN, genetiska algoritmer, evolution, spel
3
4 Innehållsförteckning 1 Introduktion Bakgrund Artificiella neurala nätverk Neuroner och dess kopplingar Nätverksarkitekturer Evolutionära algoritmer Fitness Selektion Överkorsning Mutation ANN med evolution Relaterad forskning Bengtsson Thieme Problemformulering Utveckling av experimentmiljö Utveckling av beteenden Utvärdering av resultat Metodbeskrivning Implementation Delmål 1 Utveckling av experimentmiljö Delmål 2 Utveckling av beteenden Evolution av vikter Delmål 3 Utvärdering av resultat Utvärdering Analys av experimentmiljö Resultat från skapande av beteenden Utvärdering av beteenden Slutsatser Resultatsammanfattning Diskussion Framtida arbete...26
5 1 Introduktion I dagens spel är de flesta datorstyrda karaktärer som spelaren möter styrda av en AI - en artificiell intelligens. En scriptad AI kan vara lätt att genomskåda vilket ofta leder till att spelaren kan hitta kryphål i det datorstyrda beteendet som gör att utmaningen snabbt försvinner (Stanley, Bryant & Miikkulainen, 2005). En datorstyrd karaktär som istället baseras på ett artificiellt neuralt nätverk (ANN) kan leda till att det datorstyrda beteendet är mer varierat. Målet med denna undersökning är att se hur väl ANN passar till ett spel av shooter-karaktär. Idag används inte ANN ofta för att kontrollera datorstyrda karaktärer (Larsson & Mänttäri, 2011) utan är istället uppbyggda av förutbestämda handlingar beroende på vad som händer i världen. För att påvisa varför ANN ens skulle kunna vara användbart i shootersammanhang kan vissa paralleller dras mot robotik. Likt en agent som rör sig i en spelmiljö och ska agera beroende på miljön runt sig så finns många liknande studier inom robotik, till exempel att en agent ska lära sig att ta sig igenom en T-korsning (Thieme, 2002). Detta projekt undersöker två olika artificiella neurala nätverksarkitekturer, studerar och jämför dem mot varandra för att komma fram till hur väl de passar i en testmiljö som består av en agent och ett antal fiender. De två arkitekturer som undersöks är ett feedforwardnätverk och ett elman-nätverk där skillnaden mellan dessa två är att det sistnämnda har ett korttidsminne. Att programmera ett beteende för en agent kan vara omständigt och ofta resultera i att det verkligen syns att karaktären är styrd av datorn. Om detta projekt genererar ett positivt resultat skulle det medföra att det i framtiden kan vara enklare att skapa datorstyrda karaktärer i shooter-spel då agenten själv lär sig hitta gynnsamma beteenden. Om ett artificiellt neuralt nätverk används resulterar det även i att vissa situationer kan generaliseras vilket underlättar för programmeraren. Agenten kan alltså veta hur den ska agera vid en viss situation genom att den har varit med om en liknande innan. Projektet är uppdelat i tre stycken delmål där det första innebär att skapa en testmiljö, det andra är att evolvera fram beteenden som byggs av de två olika nätverksarkitekturerna och det tredje är att evaluera resultatet. 1
6 2 Bakgrund Detta kapitel innehåller först en kort genomgång om AI i datorspel för att sedan övergå till mer AI-specifika saker såsom artificiella neurala nätverk och evolutionära algoritmer. I de två sistnämnda delarna kommer det även gås in på djupet om hur ANN fungerar med dess komponenter samt vilka metoder som används i evolutionära algoritmer för att generera en önskvärd lösning. Många spel i dagsläget har bristande AI då det är vanligt att den mänskliga spelaren hittar svagheter hos den datorstyrda spelaren som kan utnyttjas om och om igen (Stanley, Bryant & Miikkulainen, 2005). Orsaken till detta är ofta att den datorstyrda spelaren har bestämda beteenden som ändras beroende på hur den mänskliga spelaren agerar. Denna typ av beteende kan till exempel uppstå när tekniker såsom tillståndsmaskiner tillämpas, då den datorstyrda enheten har exakta beteenden som används utifrån vad som sker i omvärlden. För att skapa beteenden som inte är lika deterministiska, kan tekniker som artificiella neurala nätverk eller genetiska algoritmer användas. 2.1 Artificiella neurala nätverk Ett neuralt nätverk kan enligt Haykin (1999, s. 2) beskrivas på följande sätt: A neural network is a massively parallel distributed processor made up of simple processing units, which has a natural propensity for storing experiential knowledge and making it available for use. It resembles the brain in two respects: 1. Knowledge is acquired by the network from its environment through a learning process. 2. Interneuron connection strengths, known as synaptic weights, are used to store the acquired knowledge. Haykin menar att neurala nätverk bygger på samma princip som en människas hjärna då ett ANN likt människor lär sig genom sin omgivning och sparar därefter undan informationen. Ett ANN är en samling av kopplade neuroner. Tanken med ett nätverk som detta är att möjliggöra för komplexa beräkningar och utveckling av olika beteenden som till exempel ska efterlikna hur en människa agerar i olika situationer. Eftersom varje neuron har kopplingar till alla neuroner i det föregående lagret samt även till alla neuroner i det lager som ligger efter (se Figur 1) så kan minsta lilla förändring i en vikt påverka hela systemet. 2
7 Inputlager Gömt lager Outputlager Figur 1 Ett enkelt ANN med ett gömt lager. Varje neuron har koppling till alla neuroner i det föregående och det efterföljande lagret Neuroner och dess kopplingar En neuron kan finnas i tre olika lager inputlager, gömt lager och outputlager. De neuroner som finns i inputlagret tar emot data som därefter skickas vidare för att till slut hamna i outputlagret, vilket ger oss en slutgiltig output. De gömda lagren används för att kunna approximera flera komplexa funktioner. Outputen hos en neuron beror på de inputs den får samt vad för vikter som styr varje input. Varje input har en vikt kopplad till sig (se Figur 2) som den multipliceras med innan den skickas vidare till nästa neuron (Buckland, 2002). Dessa vikter kan till exempel sättas till slumpmässiga flyttal mellan -1 och 1 för att sedan modifieras för att nå ett önskvärt resultat. Figur 2 En neuron som har fyra stycken inputs kopplade till sig. Varje input har en vikt som den multipliseras med. Resultatet av alla inputs skickas vidare till en aktiveringsfunktion som sedan ger ut en output. En neurons output är kopplad till dess input och de vikter som respektive koppling har. Om inputsen beskrivs som X 1, X 2, X n och vikterna som W 1, W 2, W n kommer resultatet bli X 1 * W 1 + X 2 * W X n * W n (Buckland, 2002). Det resultat som fås från inputsen stoppas därefter in i en aktiveringsfunktion som därefter returnerar ett tal beroende på vilken sorts aktiveringsfunktion som används. 3
8 En enklare aktiveringsfunktion kallas stegfunktion som helt enkelt genererar ett av två olika värden beroende på om det är över eller under ett tröskelvärde. En annan aktiveringsfunktion är sigmoidfunktionen som ger ett värde mellan 0 och 1, det är även också den mest frekvent använda aktiveringsfunktionen (Haykin, 1999). Dessa två olika funktioner ser ut på följande sätt (Figur 3 nedan): Figur 3 Två stycken olika aktiveringsfunktioner. Stegfunktionen till vänster ger 0 för alla x < 1 och 1 för alla x 1. Sigmoidfunktionen till höger ger ett värde mellan 0 och 1 för alla x Nätverksarkitekturer En nätverksarkitektur för ett neuralt nätverk kan brytas ner till tre stycken olika strukturer (Haykin, 1999): feedforward-arkitektur med ett lager, feedforward-arkitektur med flera lager samt rekurrent arkitektur. Ett nätverk av typen feedforward med ett lager har precis just ett lager. Då inputlagret inte kommer göra några beräkningar så räknas det inte heller med när en beräkning av input- och outputlager sker (Bose & Liang, 1996). I den här typen av arkitektur går en input direkt till en output utan att det sker några beräkningar i ett gömt lager. Detta leder till att en feedforward-arkitektur med ett lager är den mest simpla arkitekturen, vilket också leder till att den är minst kapabel att skapa komplexa beteenden av dessa tre strukturer. En annan arkitektur är ett feedforward-nätverk med flera lager. Det betyder att mellan inputoch outputlagret finns det ett eller flera gömda lager vars uppgift är att ta in och skicka vidare data (Haykin, 1999). Den tredje arkitekturtypen, rekurrenta arkitekturer, skiljer sig från de första två på det sätt att det sker en återkoppling till en eller flera av de första inputneuronerna. Detta medför att neuronerna får ett sorts minne. 2.2 Evolutionära algoritmer Evolutionära algoritmer kan användas till att träna ett neuralt nätverk. Av den anledningen kommer det först tas upp generellt vad för element en evolutionär algoritm har för att sedan gå in mer i praktiken hur de fungerar tillsammans med ANN. Av en mängd individer som har olika förutsättningar att överleva så kommer det naturliga urvalet göra att de med störst sannolikhet att överleva kommer gå vidare till nästa generation. Detta kommer av Darwins teori Survival of the fittest från 1800-talet. Denna 4
9 princip kan appliceras på en population av genom, en sträng av gener, för att få fram en lösning till ett problem. En gen kan till exempel vara ett tal som representerar en rörelse eller en vikt i ett neuralt nätverk. Ett genom består av flera gener, och flera genom bildar en population. För att evolvera en population sker en iterativ process (Bourg & Seemann, 2004), se Figur 4 nedan. Figur 4 Från början skapas en population av genom. Därefter evalueras varje genoms fitness (se 2.2.1) där varje genom utifrån det får en sannolikhet att bli vald för att sedan evolveras Fitness Sannolikheten att en individ kommer reproducera sig mäts i fitness där en hög fitness resulterar i goda chanser att sprida sina gener vidare (Mitchell, 1996). Beräkningen av fitness varierar beroende på vilket mål som ska uppfyllas. Ofta finns det även fler sätt att beräkna fitness på, där vissa kan ge bättre resultat än andra. Fitnessberäkningen är det andra steget i evolveringsiterationen (se Figur 4) där det även är möjligt att se om en förbättring har skett. Det finns olika sätt att definiera en förbättring på, som till exempel ett bättre snitt eller jämförande av det genom med bäst fitness. Det finns flera sätt att mäta fitness där ett är att mäta det mellan 0 1, där 0 är en helt ofullständig lösning och 1 är en fullständig lösning. Det kan alltså ses som att om det finns ett genom som har en fitness på 1 så är det logiskt att stoppa evolutionen eftersom det hittats en fullständig lösning på problemet. I vissa lägen kan det dock vara så att det inte går att bestämma hur ett beteende eller en lösning på ett genom ska vara för att vara en fullständig lösning. Istället kan det vara så att populationen hela tiden efterstävar att bli så bra som möjligt. Buckland (2002) skriver att en välprövad metod för att mäta fitness är att räkna från den sämsta individen och beräkna alla andras fitness utifrån den (se Figur 5). Den sämsta individen blir alltså 0 och kommer på så sätt inte vara med i selektionen. 5
10 Vanlig uträkning Fitness 0,82 Fitness 0,39 Fitness 0,27 Fitness 0,25 Fitness 0,21 Lägsta som utgångspunkt Fitness 0,82-0,21 = 0,61 Fitness 0,39-0,21 = 0,18 Fitness 0,27-0,21 = 0,06 Fitness 0,25-0,21 = 0,04 Fitness 0,21-0,21 = 0,00 Figur 5 Till vänster har uträkningen av fitnessandelen skett på vanligt sätt medan till höger har beräkningen utgått från det lägsta fitnessvärdet Selektion Efter det att fitness har räknats ut för alla genom kan en ny population skapas. Detta görs genom att med hjälp av en selektionsteknik välja ut två genom som sedan har chans att korsas (se 2.2.3) och muteras (se 2.2.4). Buckland (2002) skriver att det finns flera olika selektionsmetoder såsom rouletteselektion och elitism. Rouletteselektion fungerar som ett riktigt rouletthjul där ett fack representerar ett genom och storleken på facken beror på dess fitness. De genom med hög fitness kommer få ett större fack medan de med låg fitness får ett litet. När roulettekulan sedan snurras så kommer det genom vars fack där kulan stannar att bli valt. På så sätt kommer de med hög fitness ha större chans än de med låg fitness att bli valda och få reproduceras (se Figur 6). Värt att nämna är att ett genom kan bli valt flera gånger under en selektion. Fitness 0,93 Fitness 0,79 Fitness 0,45 Fitness 0,42 Fitness 0,27 Fitness 0,18 Figur 6 Rouletteselektion. De genom med hög fitness har större fack än de med låg vilket resulterar i att de med hög fitness har större sannolikhet att bli valda. 6
11 2.2.3 Överkorsning Överkorsning är ett sätt att av två stycken genom skapa två nya som är en kombination av de två förstnämnda. Mitchell (1996) menar att det finns flera olika metoder för att göra överkorsning men att det enklaste sättet, enpunktskorsning, kan leda till problem. Mitchell (1996) skriver att då en enpunktskorsning sker så finns det en risk att gener som inte är till fördel för resultatet hänger med då en större del av genomet som tillkommit gör att netto-resultatet blir bättre. Ett annat sätt att korsa två genom är tvåpunktskorsning vilket sker på samma sätt som enpunktskorsning förutom att det istället används två punkter istället för en, se Figur 7. På så sätt så är det möjligt att få med en del av genomet som ligger i mitten utan att få med kantdelarna. Figur 7 Två genom som korsas med hjälp av tvåpunktskorsning. Sannolikheten till att det ska bli en överkorsning mellan två genom kan varieras, men experiment har visat på att 0.7 (70 %) är ett bra värde att utgå ifrån (Buckland, 2002) Mutation Mutation är en förändring av en gen. Det är det andra sättet att förändra ett genoms gener och är inspirerat av den mänskliga evolutionen. Buckland (2002) menar att det finns vissa likheter i hur mutation fungerar i ett genom på samma sätt som organismer på jorden har utvecklats från att till exempel inte kunna se till att utveckla ljuskänslighet. Buckland (2002) förklarar vidare hur detta fungerar i spelsammanhang då en mutation oftast gör att en agent klarar av en uppgift sämre, men i vissa fall så kan det leda till att agentens förändring av beteende är givande för uppgiften. En mutation kan till exempel vara en bitflip i ett genom, det vill säga att en gen byter från 0 till 1 eller tvärtom (se Figur 8). 7
12 Figur 8 En mutation av den fjärde genen som ändrar värde från rött till grönt. Ett bra värde för sannolikheten att det ska ske en mutation är avsevärt lägre än korsning. Mitchell (1996) menar att till exempel 0,001 är ett bra värde alltså 0.1 % chans. Orsaken till att det är så lågt är för det i de flesta fall kommer bli ett sämre resultat än ett bättre (Buckland, 2002). 2.3 ANN med evolution Artificiellt neurala nätverk med evolution, även benämnt EANN (Evolutionary Artificial Neural Network), kan användas på tre olika sätt tillsammans. Det första sättet är att evolvera vikterna i ett nätverk medan det andra är att förändra arkitekturens uppbyggnad av neuroner. Det tredje sättet är att ändra på reglerna för hur inlärningen sker (Yao, 1999). I detta arbete kommer det fokuseras på evolvering av vikter. När ett ANNs vikter evolveras med genetiska algoritmer pågår en iterativ process. Först testas nätverket i en testmiljö där fitness mäts genom att se hur bra agenten klarar sig med det aktuella beteendet. Därefter väljs det med hjälp av selektion ut två genom som ska modifieras och reproduceras. 2.4 Relaterad forskning En del tidigare arbeten beskriver hur ANN kan användas med genetiska algoritmer, dock inom andra områden såsom robotik och simulering av medeldistanslöpning. Dessa arbeten står till grund för varför detta arbete skulle generera en bra lösning och varför det skulle vara lönsamt att använda det Bengtsson Bengtsson (2008) beskriver ett experiment som går ut på att simulera en tävling av medeldistanslöpning. När en agent rör sig runt banan påverkas den av mjölksyra vilket leder till att det utvecklas någon sorts strategi för hur den ska springa. Andelen mjölksyra som skapas beror på hastigheten som agenten springer med. På så sätt går det att till exempel springa snabbt i början för att hamna längst fram i ledet för att senare sänka farten eftersom mycket mjölksyra skapats, eller så kan agenten ligga långt bak i ledet för att sedan spurta på slutet. 8
13 Agentens uppgift är att ta sig runt banan på så kort tid som möjligt. Samtidigt som mjölksyran har stor inverkan på prestationen så påverkar även de andra agenterna som springer loppet samtidigt. Beteendena skapades med hjälp av att evolvera ANN vilket Bengtsson (2008) i slutsatsen skriver fungerade väldigt bra. Resultatet av undersökningen var att simuleringen hade en stark verklighetsförankring. Till exempel så visade det sig att en agent tjänade på att hålla en längre medelfart på en längre distans än på kortare distanser där den vinnande strategin var att springa snabbare Thieme Thieme (2002) beskriver ett experiment där en robot ska försöka ta sig igenom T-korsningar där den enda hjälp som roboten får är i form av en ljuskälla. Ljuskällan som ska hjälpa roboten ta sig igenom en labyrint av T-korsningar sitter på en av sidorna innan det är dags för agenten att svänga. Själva problemet är att roboten ska lära sig att känna igen om ljuskällan befinner sig på höger eller vänster sida och sedan svänga åt det håll där ljuskällan fanns. Eftersom agenten inte ska svänga direkt när den registrerar ljuskällan, utan en stund senare, är det intressant att se hur agenten löser det utan att direkt ha tillgång till något minne. De arkitekturer som Thieme (2002) jämförde var ett feedforward-nätverk, ett rekurrent nätverk samt två nätverk av mer avancerade arkitekturer. Resultatet visade på att alla fyra nätverk kunde lösa uppgiften men den som var minst tillförlitlig var feedforward-nätverket som slutade med ett snitt på 87.1 %. 9
14 3 Problemformulering Detta arbete avser att undersöka två olika typer av artificiella neurala nätverksarkitekturer och hur väl de fungerar i spelsammanhang. Fokus kommer ligga på hur olika typer av arkitekturer påverkar de beteenden som skapas, det vill säga hur agenten väljer att agera under vissa situationer i en spelsession. Detta kommer undersökas genom att analysera de resultat som de olika arkitekturerna uppnår i en viss experimentmiljö. Artificiella neurala nätverk är en utforskad del i robotik men används inte ofta i spelsammanhang. Idén är att testa och se om de metoder som fungerar i robotik går att applicera i spel. Den spelgenre som valts att göra till testmiljö är shooter då ett 2Dshooterspel ofta leder till att agenten sätts i många olika lägen som gör att de neurala nätverken kan testas och analyseras fullt ut. Eftersom ANN i spel, som nämnts ovan, inte används ofta i spelsammanhang kommer två olika ANN-arkitekturer att testas. Det ena är ett feedforward-nätverk medan det andra är ett elman-nätverk. Eftersom området är så pass nytt är det intressant att jämföra två skilda tekniker för att se om något ger ett bättre resultat än det andra. Problemet ses som tre stycken delmål, där det första målet är att utveckla en experimentmiljö, det andra målet är att utveckla beteenden och det tredje är att utvärdera resultaten. 3.1 Utveckling av experimentmiljö Miljön kommer bestå av ett enkelt spel med endast en spelare (agenten) och 2 olika fiender där varje fiende har ett individuellt förutbestämt rörelsemönster: Fiende 1 rör sig mot agenten med en bestämd hastighet. Fiende 2 rör sig slumpmässigt runt i världen. Agentens mål kommer att vara att röra sig runt i världen och samla på sig så mycket poäng som möjligt. När en fiende träffas av agentens skott får agenten 100 poäng. Problemet kommer vara att hitta ett mellanläge där den letar upp fiender och dödar dem samtidigt som agenten inte blir träffad av något. Om spelaren blir träffad av en fiende så är spelet slut. Fienderna kommer att skapas beroende av två faktorer, tid och poäng. När agenten träffat en fiende och den tas bort från spelplanen så kommer det kort efter att läggas till en ny fiende. Det kommer även läggas till nya fiender efter ett satt tidsintervall. För att agenten ska veta hur omvärlden ser ut kommer det finnas ett antal känselneuroner. Dessa kommer känna om en fiende är nära honom samt hur nära den är. På så sätt kommer agenten kunna reagera olika beroende på hur omvärlden ser ut och på samma gång utveckla ett beteende som gör att han överlever samt får poäng. Av inputen som fås av inputneuronerna kommer det fås fyra stycken outputs. De två första kommer representera vart agenten ska röra sig och de två sista vart agenten ska skjuta. 10
15 3.2 Utveckling av beteenden De evolutionära nätverken kommer att skapas med slumpmässiga vikter för att sedan testas under en spelomgång och därefter evalueras. Om agenten har fått mycket poäng på en kort tid så har det slumpats fram ett bra beteende på samma gång som det är ett dåligt beteende om poängen är låg. De som genererar höga poäng kommer att modifieras för att sedan se om det utvecklats till ett bättre beteende eller ett sämre. Denna process upprepas till ett önskevärt beteende är hittat. 3.3 Utvärdering av resultat När ett önskat resultat har uppnåtts ska det evalueras. Det som ska undersökas är saker som vilken typ av arkitektur som har uppnått bäst resultat eller vilken arkitektur som utvecklat ett önskat beteende snabbast. 3.4 Metodbeskrivning I denna del beskrivs de metoder som används för att bevara frågeställningen. I många undersökningar om robotik, där ett ANN har evolverats fram, har en testmiljö visats vara givande för ett kunna analysera resultat (Thieme, 2002; Trianni & Nolfi, 2009). Detta kommer troligtvis ifrån att det är väldigt svårt att analysera en nätverksarkitektur och dess vikter för att se hur väl agenten kommer klara sig det behövs en testmiljö som testar det åt en. En testmiljö möjliggör att ett flertal experiment kan genomföras utan att det finns risk för att onödigt många variabler förändras. Detta leder till att det är möjligt att jämföra resultat från de olika nätverksarkitekturerna utan att behöva ta hänsyn till att något, i till exempel experimentmiljön, har förändrats. När det väl finns en testmiljö så behövs det ett sätt att ta fram olika beteenden. För att göra det finns det fler olika inlärningstekniker, men i det här fallet finns det inte något konkret svar som outputen från nätverket kan testas mot. Detta medför att en slumpmässig metod (genetiska algoritmer) skulle vara gynnsam eftersom det inte finns någon kunskap om hur nätverksarkitekturen ska vara uppbyggd. För att få fram ett beteende kan evolutionen ske på olika sätt beroende på sannolikhet för mutation (se 2.2.4), korsning (se 2.2.3) samt hur selektionen (se 2.2.2) av genomen sker. Detta ska alltså bland annat varieras för att se vad som ger bäst resultat för generering av en gynnsam agent. En av de centrala delarna i detta arbete är fitnessutvärdering av ett beteende. Detta kan med hjälp av testmiljön ske på flera sätt som till exempel att en person observerar agentens beteende som sedan betygsätts, eller att det mäts på ett sätt inuti spelet. Då en person ska analysera något kan det snabbt bli svårt att motivera resultatet, till exempel vad som representerar ett bra beteende. Istället kan det implementeras ett poängsystem i testmiljön där en hög poäng representerar ett bra beteende medan en låg poäng representerar ett dåligt, som i detta fall är den valda metoden. Detta möjliggör för en redovisning i form av fitnessgrafer, vilket är ett sätt att jämföra fitnessresultat (Akterhall, 2008; Yilmaz, Erik & Kaynar, 2010; Bengtsson, 2008). Fitnessutvärdering är en etablerad metod inom evaluering av robotiska beteenden som används flitigt i dessa sammanhang. Det möjliggör en representation av progressionen samtidigt som det fås ett konkret resultat, till exempel i form av genomsnittlig lutning på 11
16 grafen som då representerar ökningen av fitness per tidssteg. Dessa resultat kan sedan användas för att se vilken metod som genererat bäst resultat. 12
17 4 Implementation Detta kapitel kommer ta upp vilka designval som tagits samt även gå in mer på djupgående hur delmålen i problemformuleringen (se del 3) realiseras i kod. 4.1 Delmål 1 Utveckling av experimentmiljö Experimentmiljön skrivs med programmeringsspråket C++ i Microsoft Visual C Express och för att rita ut grafik används grafikbiblioteket Haaf s Game Engine (Relish Games, 2008). För att realisera de artificiella neurala nätverken används biblioteket Artificial neural network (tillgänglig i en kurs på Högskolan i Skövde). De komponenter som behövs för att köra en spelomgång är en spelare (agent), fiender och skott. Dessa tre komponenter utgör själva spelet i form av att agenten ska försöka undvika fiender samtidigt som den ska eliminera dem genom att träffa dem med skott (se Figur 9). Figur 9 En skärmdump av experimentmiljön under körning. Agenten (den gula cirkeln) rör sig runt i världen för att försöka skjuta fienderna (de svarta cirklarna) med hjälp av skott (de röda cirklarna). Eftersom flera spelomgångar ska köras samtidigt finns det även en Populations-komponent som håller reda på dessa. Klassdiagrammet för programmet ser ut på följande sätt (se Figur 10): 13
18 Population 1 1 * GameSession * 0 * Player Bullet Enemy Figur 10 Klassdiagram för projektet. En population innehåller flera spelsessioner, där varje spelsession består av spelare, skott och fiender. Experimentmiljön beräknar och kör alla spelsessioner samtidigt, men ritar bara ut den spelsession som lyckats uppnå den högsta poängen. Detta görs för att ha en någorlunda koll på hur agenterna beter sig. För att inte främja strategier såsom att ställa sig i ett hörn och stanna där har ett antal olika åtgärder testats med varierad framgång. Ett av de första sätten var att spelaren fick minuspoäng vid kollision av en kant och ett annat var att spelaren inte längre kunde fortsätta få poäng efter en kollision. Detta ledde dock till att en poäng kunde bli väldigt missvisande, då agenten agerade smart i de flesta fall men ibland råkade hamna utanför banan och på så sätt knappt få någon poäng alls. För att kringgå detta problem förminskas istället poängen som fås av en fiende som leder till att agenten fortfarande har möjlighet att samla på sig poäng (och samtidigt höja sin fitness) även om ett snedsteg har gjorts (se Figur 11). if(isout) { } move player to default position; decrease the points the player get from killing enemys with 20 %; Figur 11 När en spelare nuddar en kant sätts positionen till mitten på skärmen samtidigt som poängen som fås av att döda fiender sänks med 20 %. Initialt så skapas det inga fiender inom en radie av 300 pixlar räknat från spelaren för att undvika att en fiende skapas så nära att spelaren inte hinner flytta sig. Eftersom miljön inte heller ska uppmuntra agenten att ställa sig i ett hörn så det endast kommer fiender från ett håll så är det tillåtet att skapas fiender närmare än 300 pixlar om spelaren är nära en kant (Figur 12). 14
19 Figur 12 Det svarta representerar det område där det inte kan skapas fiender. När spelaren närmar sig kanten förändras detta fält (till höger på bilden) som medför att det alltid är möjligt att fiender skapas och kommer från alla olika håll. Det finns två olika sorters fiender där en av dem konstant rör sig mot agenten medan den andra rör sig slumpmässigt runt i spelplanen. Den sistnämnda fungerar på så sätt att den får en slumpmässig riktningsvektor vid initialisering som den sedan följer medan den andra typen hela tiden rör sig mot agentens position. En fiende skapas var 40:e frame. Denna siffra har varierats, men var 40:e frame har visat sig ge bäst resultat då det varken är för många eller för få fiender på spelplanen samtidigt - agenten måste ständigt fly samtidigt som det finns fiender att skjuta på. 4.2 Delmål 2 Utveckling av beteenden En testkörning består av flera olika spelsessioner där varje spelsession har en agent. Dessa spelsessioner körs tills det skapats ett visst antal med fiender och varje agents fitness representeras av hur mycket poäng som agenten har lyckats få ihop. Varje spelsessions artificiella neurala nätverk startar med slumpmässiga vikter men efter den första spelsessionen är avslutad kommer alla nya vikter bero på de som redan finns genom att korsa och mutera dem till nya. Till en början initialiserades vikterna mellan -1,0 till +1,0, men detta visade sig snabbt resultera i att agenten tenderade att hamna på en output som varierade mellan små värden såsom plus/minus 0.1 från ursprungsvärdet. Detta ledde till att agenten i princip endast kunde röra och skjuta åt en riktning när den egentligen ska kunna röra sig fritt i banan. För att lösa det så ändrades viktrymden istället till -10,0 till +10,0. Den input som skickas till agenten är normaliserade riktningsvektorer till de fyra närmsta fienderna samt avstånd till kanterna. Det resultat som kommer tillbaka anger hur agenten ska röra sig och åt vilket håll den ska skjuta. Resultatet fås från fyra outputs där de två första ger en x- och y-koordinat som efter normalisering används som en riktningsvektor, medan de två sista är en x- och y-koordinat som istället används som riktningsvektor för vart agenten ska skjuta (se Figur 13). 15
20 Fiende 1: x-koordinat y-koordinat Input Fiende 2: x-koordinat y-koordinat Fiende 3: x-koordinat y-koordinat Fiende 4: x-koordinat y-koordinat Fiende 5: Avstånd till kanten i x- Avstånd till kanten i y-led Bias neuron Output Rörelse i x-led Rörelse i y-led Riktning för skott i x-led Riktning för skott i y-led Figur 13 Uppbyggnaden av feedforward-nätverket. Inputsen är koordinater av normaliserade riktningsvektorer till de fyra närmaste fienderna. Den output som fås bestämmer åt vilket håll som agenten ska röra sig samt skjuta åt. Det rekurrenta nätverket fungerar på samma sätt som feedforward-nätverket i Figur 13 förutom att det finns fyra stycken extra inputneuroner. Dessa neuroners inputs bestäms av den output som mellanlagret ger ut. Kopplingarna ser ut på följande sätt (se Figur 14): 16
21 Figur 14 Uppbyggnaden av det rekurrenta nätverket. Skilladen från feedforwardnätverket är att det i det rekurrenta finns en återkoppling från mellan-lagret till inputlagret Evolution av vikter För att skapa nya vikter används två olika evolutionstekniker korsning (se 2.2.3) och mutation (se 2.2.4). För varje enskild vikt är det en chans på 10 % att den kommer muteras. För att en mutation inte ska ha för stor inverkan på hela nätverket så sätts inte vikten till ett helt nytt värde utan modifieras lätt genom att addera ett värde som slumpas fram inom ett mindre spann, se Figur 15. number = random(1,100); if(number <= 10) { addingweight = random(-5,5); newweight = oldweight + addingweight; } Figur 15 Ett tal slumpas fram mellan 1 och 100 som sedan bestämmer om en gen ska muteras eller inte beroende på om det slumpade talet är mindre än 11. Det tal som adderas till den aktuella vikten varierar mellan -5,0 och +5,0. Sannolikheten för att en korsning mellan två genom sker ligger på 70 % eftersom det med hjälp av experiment visats på att 70 % är ett bra värde att utgå ifrån (Buckland, 2002). Den sorts korsning som används är tvåpunktskorsning. Detta innebär att två olika index används för att bestämma där överkorsningen ska ske, se Figur
22 crossover( oldweightsa, oldweightsb, firstindex, secondindex ) { vector newweights; add weights 0->firstIndex from oldweightsa to newweights; add weights firstindex -> secondindex from oldweightsb to newweights; add weights secondindex -> last index from oldweightsa to newweights; return newweights; } Figur 16 En överkorsning mellan två stycken genom med hjälp av två stycken index. Dessa index visar vilka delar som ska användas av de två genomen för att skapa ett nytt genom. När det har skapats fiender till ett värde av poäng i en spelsession avbryts sessionen. Fitness beräknas utifrån hur pass nära maxpoängen agenten når. Den selektionsmetod som används är en elitistisk funktion som väljer det genom med högst fitness från ett urval av fyra slumpmässiga genom. Detta ger att det är väldigt sannolikt att det för det mesta är de beteenden som genererar mest poäng som går vidare till nästa generation. Att det är fyra som väljs utav en population på 100 används till exempel i en artikel om självorganisering av robotar (Trianni & Nolfi, 2009). 4.3 Delmål 3 Utvärdering av resultat För att se hur agenten utvecklats kommer fitnessmedelvärdet sparas ut för varje generation i en textfil. Denna kommer därefter läsas in i Excel för att skapa grafer som kan likna grafen i Figur 17. Liknande grafer användes av Massera, Tuci, Ferrauto & Nolfi (2010) när de ville se hur en robot förbättrades över tid när den skulle försöka greppa sfäriska objekt. Fitness Generationer Series1 Figur 17 Exempelgraf som skapades med hjälp av medelvärden av en populations fitness. Under evolutionens gång ska det även undersökas vilket beteende på agenten det är som ger bäst resultat och därmed högst fitnessvärde. Detta görs genom att vikterna från genomet med högst fitness sparas undan i en textfil som sedan läses in av programmet i en testsession, där agenten enbart använder de inlästa vikterna. Detta gör det möjligt att se vilket beteende som gör att agenten får en hög poäng, hur agenten agerar när fiender närmar sig samt hur agenten angriper fienderna. 18
23 5 Utvärdering Syftet med denna undersökning var att jämföra två olika nätverksarkitekturer för att se hur väl de lämpade sig i en shooter-miljö. I detta kapitel kommer de resultat som fåtts samt de tester som gjorts presenteras för att sedan i nästa kapitel sammanfattas och diskuteras. För att visa hur progressionen skett för utvecklingen av testmiljön samt testningen kommer underrubrikerna i detta kapitel att rikta sig mot de tre delmål som fokuserats på under undersökningen (se 3.1, 3.2 och 3.3). 5.1 Analys av experimentmiljö Under skapandet av experimentmiljön visade det sig att området där fiender hade möjligheten att skapas på hade stor inverkan på den strategi som agenten valde. Då fienderna endast kunde skapas utanför en viss radie från agenten tenderade agenten att röra sig mot ett hörn för att sedan stanna där (se Figur 12). En lösning på detta som användes var att fiender alltid kunde skapas från alla riktningar som ledde till att agenten inte längre tenderade att röra sig mot ett hörn. Ett annat sätt hade kunnat vara att ändra formen på banan från en rektangel till en sfär, då det inte längre skulle finnas några hörn. Som det beskrivs i del 3.1 så förändras den poäng som fås av en fiende då agenten hamnar utanför banan. Varje gång som agenten hamnar utanför banan sänks alltså den maxpoäng som kan fås under en spelsession. I figur 18, 19 och 20 nedan visas ett antal populationers snitt av hur många gånger agenten hamnar utanför banan. Antalet gånger utanför banan Generation Series1 Series2 Series3 Series4 Series5 Series6 Series7 Series8 Series9 Series10 Figur 18 Antalet gånger agenten i snitt hamnar utanför banan för varje körning per generation. Denna data är ifrån en körning av ett feedforward-nätverk. 19
24 Antalet gånger utanför banan Generation Series1 Series2 Series3 Series4 Series5 Series6 Series7 Series8 Series9 Series10 Figur 19 Antalet gånger agenten i snitt hamnar utanför banan för varje körning per generation. Denna data är ifrån en körning av ett elman-nätverk. 25 Antalet gånger utanför banan Series1 Series Generation Figur 20 En sammanställning av graf 18 och 19 där Serie1 motsvarar genomsnittet av de genomsnittliga resultaten från graf 18 och Serie2 motsvarar genomsnittet av de genomsnittliga resultaten från graf 19. Den blåa representerar feedforward-nätverket medan den röda representerar elman-nätverket. Figur 18 och 19 visar att båda nätverken eftersträvar en strategi där agenten inte åker ut från banan vilket på samma gång ger agenten möjlighet att samla på sig mer poäng. Figur 20 visar att båda nätverken agerar på samma sätt det är nästintill ingen skillnad på hur antalet gånger agenten hamnar utanför banan ter sig allt eftersom nätverken evolveras. 20
25 5.2 Resultat från skapande av beteenden Denna del kommer först att presentera fitnessresultat som erhållits under evolveringen av ett feedforward-nätverk. Därefter kommer en liknande presentation för elman-nätverket för att sedan avslutas med en jämförelse mellan de olika resultaten. För samtliga test har en population på 100 genom evolverats under 50 generationer. De värden som observeras för varje generation är: Populationens genomsnittliga fitness Populationens bästa fitnessvärde Resultaten presenteras i form av grafer. Från feedforward-nätverket har följande resultat erhållits (se Figur 21 och 22): Fitness Feedforward-nätverk Generation Series1 Series2 Series3 Series4 Series5 Series6 Series7 Series8 Series9 Series Figur 21 Genomsnittlig fitness från 10 olika testkörningar för feedforwardnätverket. 21
26 Fitness Feedforward-nätverk Generation Series1 Series2 Series3 Series4 Series5 Series6 Series7 Series8 Series9 Series10 Figur 22 En populations högsta fitness för 10 olika körningar där agenten styrs av ett feedforward-nätverk. Från elman-nätverket har följande resultat erhållits (se Figur 23 och 24): Fitness Elman-nätverk Series1 Series2 Series3 Series4 Series Generation Series6 Series7 Series8 Figur 23 Genomsnittlig fitness från 10 olika testkörningar för elman-nätverket. 22
27 Fitness Elman-nätverk Series1 Series2 Series3 Series4 Series5 Series Generation Series7 Series8 Series9 Series10 Figur 24 En populations högsta fitness för 10 olika körningar där agenten styrs av ett elman-nätverk. En sammanställning av medelfitnessgraferna ger följande resultat (se Figur 25): Fitness Feedforward- (Serie 1) och elman-nätverk (Serie 2) Generation Series1 Series Figur 25 En sammanställning av graf 21 och 23 där Serie1 motsvarar genomsnittet av de genomsnittliga resultaten från graf 21 och Serie2 motsvarar genomsnittet av de genomsnittliga resultaten från graf 23. Som Figur 25 visar ovan är det inte stor skillnad mellan de olika nätverken med avseende på den fitness som beteendena får. Från en början sker en relativt kraftig ökning för att sedan plana ut i en mindre ökning där det sker små förändringar som optimerar det beteende som skapats. Orsaken till att ett nästintill identiskt resultat fåtts är antagligen att det minne som det rekurrenta nätverket har inte har så stor påverkan på hela nätverket. Tvärtom så visar Figur 25 att feedforward-nätverket till och med uppnår ett bättre resultat än vad det rekurrenta gör. 23
28 Fitness Feedforward- (Serie 1) och elman-nätverk (Serie 2) Series1 Series Generation Figur 26 En sammanställning av graf 22 och 24 där Serie1 motsvarar genomsnittet av de genomsnittliga resultaten från graf 22 och Serie2 motsvarar genomsnittet av de genomsnittliga resultaten från graf 24. Figur 26 visar också att det med avseende på den högsta fitness som uppnås inte är stor skillnad på nätverken. Likt Figur 25 sker det en relativt snabb ökning i början för att sedan plana ut i en mindre ökning. Detta visar att nätverken snabbt hittar en agent som uppnår en relativt hög fitness redan efter ungefär 30 till 40 generationer då förändringen därefter är väldigt liten. 5.3 Utvärdering av beteenden Som beskrivits i kapitel 5.1 och 5.2 är det i princip inte någon skillnad på resultaten mellan nätverken och samma gäller för det beteende som de utvecklar. Efter 50 generationer har båda nätverksarkitekturerna utvecklat ett beteende som tenderar att röra sig runt nära centrum av spelplanen. Agenten har lärt sig att inte åka utanför spelvärldens gränser men samtidigt utnyttjas inte hela banan då agenten främst är i mitten av spelplanen. Rent poängmässigt är dock detta att föredra då agenten rent logiskt inte borde åka utanför banan då det resulterar i att den poäng agenten kan få minskas markant. Ett beteende som skapats genom evolution av färre generationer än 50 speglas av de resultat som fitnessgraferna presenterar. Ju färre generationer som gått, desto fler gånger tenderar agenten att åka utanför banan vilket resulterar i en låg poäng. Dessutom siktar agenten oftast inte mot fienderna utan skjuter mer slumpmässigt. Den output som bestämmer vart agenten ska skjuta är snarlik för båda nätverken. Oftast siktar agenten mot en fiende men ibland väljer den att skjuta åt ett annat håll vilket resulterar i att agenten blir träffad av en fiende och förlorar poäng. Detta är en av fördelarna med neurala nätverk ett beteende som i de flesta situationer agerar på ett sätt kanske inte gör så i alla liknande situationer. Att agenten inte är helt exakt med sina rörelser och vart den skjuter gör att den ser mer mänsklig ut än den gjort om den alltid träffat eller alltid rört sig på ett speciellt sätt. 24
29 6 Slutsatser Detta kapitel kommer först att presentera en sammanfattning av implementationsdelen (kapitel 4) följt av en sammanfattning av det resultat som fåtts. Därefter kommer en diskussion om det valda problemet med resultatet i ett större sammanhang, till exempel hur väl det uppnådda resultatet skulle fungera i ett riktigt spel. 6.1 Resultatsammanfattning Under skapandet av experimentmiljön, som motsvarar det första av tre delmål, uppkom endast ett större problem, nämligen hur fienderna skapades. Från en början resulterade skapandet av fienderna att agenten hela tiden utvecklade ett beteende som innefattade att den sökte sig till ett hörn och sedan stannade där. Detta löstes genom att se till att det hela tiden kunde skapas fiender från alla håll även om det innebar att vissa skapades väldigt nära agenten. Det andra delmålet som projektet avsåg att undersöka var utvecklingen av två beteenden med hjälp av två stycken olika nätverksarkitekturer. Skillnaden på de olika arkitekturerna var att det ena hade ett korttidsminne som kom ihåg viss data från den föregående uppdateringen. Under varje testkörning sparades det kontinuerligt ut evalueringsbar data till olika textfiler som sedan användes till att skapa grafer som i sin tur ger möjlighet att jämföra resultaten från de olika nätverksarkitekturerna. Från den data som fåtts ut kunde slutsatsen dras att det i princip inte var någon större skillnad på skapandet av beteendena, vilket betyder att det minne som den andra nätverksarkitekturen hade i princip är onödigt för detta experiment. Det tredje och sista delmålet fokuserade på hur de olika nätverksarkitekturerna skapade olika beteenden för agenten. Det slutliga resultatet var att båda beteendena agerade på samma sätt: de höll sig runt mitten, undvek kanterna samt siktade oftast rätt men med en viss felmarginal. 6.2 Diskussion Det slutliga resultatet som fåtts är som tidigare nämnts att det i detta fall inte var någon skillnad på ett feedforward-nätverk och ett rekurrent nätverk. Detta kan bero på flera saker, som till exempel hur testmiljön ser ut, vad för sorts fitnessfunktion som används, vilka fiender som skapas eller hur de olika lagren ser ut i nätverksarkitekturen. Det finns många olika sätt att hantera input och output, till exempel att istället för att ha riktningsvektorer till de närmaste fienderna kunde det istället ha varit en vinkel till närmaste fienden eller helt enkelt implementera sensorer från spelaren. En förändring av detta skulle kunna ha stor påverkan på vad resultatet blir. Formen på spelmiljön har antagligen haft stor påverkan på vilket sorts beteende som skapats. Om det istället hade varit en sfärisk miljö hade det inte funnits något problem med kanter och på så sätt hade agenterna kunnat skapa beteenden som till exempel undvek så mycket fiender som möjligt, istället för att det fokuseras på att agenten ska hålla sig från kanterna och sikta bra. Det sätt som används för att agenten inte ska tendera att hamna i ett hörn är att det alltid kan skapas fiender från alla riktningar, när det ursprungligen var så att det fanns en gräns för var fiender kunde skapas (se Figur 12). Detta hade kunnat ändras till att agenten 25
30 till exempel fick minuspoäng om den inte flyttade sig från ett område efter en viss tid, vilket möjligtvis hade fungerat bättre än det sätt som används. Det minne som det rekurrenta nätverket har är ett korttidsminne då den input som sparas endast används vid nästa frame och eftersom testmiljön körs runt 100 frames per sekund så är en frame väldigt lite. Ett alternativ till detta hade varit att använda ett långtidsminne, vilket skulle kunna ge bättre resultat än vad de två nätverken som används nu har gjort. De användningsområden som skulle kunna gynnas av det beteende som de evolverade agenterna har uppnått är många. Eftersom agenten som evolverats kan ses som en spelare skulle det till exempel kunna användas till att skapa en hjälpreda i ett spel som går ut på att skjuta fiender likt den testmiljö som använts i denna undersökning. Det skulle även kunna användas som en boss i ett spel där en spelare spelar tillsammans med ett flertal medhjälpare, alternativt i ett spel med samarbetsläge. I princip så har denna undersökning fokuserat på hur en agent agerar mot ett flertal fiender, varav användningsområdet är riktat mot det, men det skulle även kunna fungera lika bra mot enstaka fiender. Etiska aspekter har i detta arbete inte setts som relevant att ta upp. 6.3 Framtida arbete En teknik som kallas online-inlärning innebär att en agent kan evolvera sitt beteende under spelets gång. Detta är sällsynt i spelsammanhang då det är svårt att exakt veta hur en agent kommer att utvecklas det är alltså väldigt riskabelt att använda i ett spel då det skulle bli katastrof om agenten skulle utvecklas på ett sätt som inte är önskvärt. Om det däremot skulle kunna bevisas att det aldrig kan nå ett sådant stadie utan alltid ter sig mot positiva resultat, skulle utvecklingen av en moståndar-ai kunna gå mot en helt ny nivå. Ett shooter-spel skulle kunna ge en spelare ny utmaning varje gång de spelar eftersom den datorstyrda karaktären hela tiden lär sig nya strategier beroende på hur spelaren spelar, precis som det fungerar när två mänskliga personer spelar mot varandra. En fortsättning på detta arbete skulle kunna vara att utforska hur en agent skulle kunna evolvera sitt beteende i realtid i en shooter-miljö, istället för att det fungerar som det gör i detta projekt: att evolutionen måste ske innan en spelsession kan börja. Något som tas upp i diskussionen (kapitel 6.2) är hur storleken på nätverksarkitekturerna skulle kunna varieras. En helt ny undersökning skulle kunna vara en fortsättning på det projekt som används i denna studie men med fokus på olika inputs, outputs, antalet mellanlager samt storleken på mellanlagret. Något som inte heller undersökts i detta arbete är fördelningen av fitnessvärden mellan de olika nätverken; om ett nätverk kanske har en mer stabil utveckling medan ett annat får mer extrema min/max-resultat. Detta är något som skulle kunna vara viktigt att veta då det till exempel skulle kunna vara viktigt att ha kunskapen om att det alltid genereras ett resultat inom en viss gräns, medan ett annat användningsområde kanske bara behöver den bästa då det inte spelar någon roll om många är dåliga. Ett intressant arbete skulle kunna vara att evolvera två agenter, som styrs av olika nätverksarkitekturer, mot varandra i samma miljö för att sedan se vilken som anpassar sig bäst. Där skulle saker kunna observeras i stil med att en agent ska försöka överlista en annan agent som försöker göra samma sak tillbaka. Detta medför att det skulle vara möjligt att se 26
NEUROEVOLUTION MED TÄVLINGSINRIKTAD SAMEVOLUTION I FLERA MILJÖER MED ÖKANDE KOMPLEXITET
M a l sk ap a d a v H e nr ik NEUROEVOLUTION MED TÄVLINGSINRIKTAD SAMEVOLUTION I FLERA MILJÖER MED ÖKANDE KOMPLEXITET NEUROEVOLUTION WITH COMPETITIVE COEVOLUTION IN MULTIPLE SCENES OF INCREASING COMPLEXITY
Utveckling av artificiell intelligens med hjälp av Genetiska tekniker och Artificiella neurala nätverk Philip Ruuska Boquist
Institutionen för kommunikation och information Examensarbete i datavetenskap 30hp C-nivå Vårterminen 2009 Utveckling av artificiell intelligens med hjälp av Genetiska tekniker och Artificiella neurala
Genetisk programmering i Othello
LINKÖPINGS UNIVERSITET Första versionen Fördjupningsuppgift i kursen 729G11 2009-10-09 Genetisk programmering i Othello Kerstin Johansson kerjo104@student.liu.se Innehållsförteckning 1. Inledning... 1
Genetiska algoritmer. Henrik Hansson (hhn00001@student.mdh.se) Rapport, CDT212 Mälardalens Högskola
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
Styrsystem för fordon med hjälp av artificiella neurala nätverk Sigurd Engerström
Institutionen för kommunikation och information Examensarbete i datavetenskap 20p C-nivå Vårterminen 2007 Styrsystem för fordon med hjälp av artificiella neurala nätverk Sigurd Engerström Styrsystem för
Tor Sterner-Johansson Thomas Johansson Daniel Henriksson
Lab 4: Anti Tower Defence Oskar Mothander Alan Mendez Larsson dit06omr dit06mln Lärare: Handledare: Johan Eliasson Johan Granberg Tor Sterner-Johansson Thomas Johansson Daniel Henriksson Innehåll 1. Problemspecifikation...
Uppdelning av ett artificiellt neuralt nätverk
Uppdelning av ett artificiellt neuralt nätverk Kandidatarbete utfört av: Björn Eklund Spelprogrammering årskurs 2009 Blekinge Tekniska Högskolan bjorneklund86@gmail.com Handledare: Stefan Johansson Blekinge
Grundläggande Idéer Algoritmens komponenter Numerisk optimering Genetisk Programmering. Genetiska Algoritmer
Genetiska Algoritmer 1 Grundläggande Idéer 2 3 4 Exempel Parallell optimering inspirerad av biologisk evolution Parallell optimering inspirerad av biologisk evolution Population av hypoteser Urvalprocess
MEDHJÄLPAR-AI I SPEL. Skapande av en dynamiskt anpassningsbar AI i spel med hjälp av en genetisk algoritm
MEDHJÄLPAR-AI I SPEL Skapande av en dynamiskt anpassningsbar AI i spel med hjälp av en genetisk algoritm Examensarbete inom huvudområdet Datalogi Grundnivå 30 högskolepoäng Vårtermin 2012 Louise Wahlstrand
Genetiska Algoritmer. 10 mars 2014
Genetiska Algoritmer Johan Sandberg Jsg11008@student.mdh.se 10 mars 2014 Niklas Strömberg Nsg11001@student.mdh.se 1 SAMMANFATTNING Genetiska algoritmer är en sorts sökalgoritm som är till för att söka
DYNAMISK SVÅRIGHETSGRAD MED GENETISK ALGORITM. En jämförelse mellan två tekniker för att snabba upp processen
DYNAMISK SVÅRIGHETSGRAD MED GENETISK ALGORITM En jämförelse mellan två tekniker för att snabba upp processen Examensarbete inom huvudområdet Datalogi Grundnivå 30 högskolepoäng Vårtermin 2012 Jesper Larsson
MinMax Algoritmen Implementation och optimering. Joakim Östlund 15 juni 2004
MinMax Algoritmen Implementation och optimering Joakim Östlund 15 juni 2004 1 Samanfattning MinMax är en algoritm som kan användas i turbaserade spel för att skapa en virituell motståndare. Algoritmen
3. Välj den sprajt (bild) ni vill ha som fallande objekt, t ex en tårta, Cake. Klicka därefter på OK.
Moment 2: Klonspel Instruktioner för deltagare Idag ska du få lära dig om: Kloner - kopior av samma figur (sprajt) Variabler - ett värde, exempelvis antal poäng Slumptal - slå en tärning för att välja
genetiska algoritmer
Introduktion till genetiska algoritmer CT3620 Vetenskapsmetodik 2005-10-21 Ylva egerfeldt ydt01001@student.mdh.se SAMMANFATTNING enna rapport är tänkt som en introduktion till genetiska algoritmer. Först
1(15) Bilaga 1. Av Projekt Neuronnätverk, ABB Industrigymnasium, Västerås Vt-05
1(15) Bilaga 1 2(15) Neuronnätslaboration Räknare Denna laboration riktar sig till gymnasieelever som går en teknisk utbildning och som helst har läst digitalteknik samt någon form av styrteknik eller
SAMEVOLUTION AV ARTIFICIELLT NEURALT NÄTVERK FÖR ATT EVALUERA SPELTILLSTÅND
Malskapada v Henrik SAMEVOLUTION AV ARTIFICIELLT NEURALT NÄTVERK FÖR ATT EVALUERA SPELTILLSTÅND COEVOLUTION OF ARTIFICIAL NEURAL NETWORD TO EVALUATE GAMESTATE Examensarbete inom huvudområdet Datalogi Grundnivå
NeuroEvolving Robotic Operatives
LINKÖPINGS UNIVERSITET NeuroEvolving Robotic Operatives Implementering av genetiska algoritmer i RTT-spel Johan Felixsson 10/3/2010 Spel i dag styrs till stor del utav förskrivna skript. NERO är ett spel
Genetiska Algoritmer
Linköpings Universitet Intutionen för datavetenskap Artificiell Intelligens HKGBB0 HT-2003, oktober Genetiska Algoritmer Som problemlösning Anna Skoglund annsk334@student.liu.se 0 Abstract Genetiska algoritmer
Kravspecifikation TDP005 Projekt: Objektorienterat system
Kravspecifikation TDP005 Projekt: Objektorienterat system Innehållsförteckning 1. Spelidé 3 2. Målgrupp 3 3. Spelupplevelse 3 4. Spelmekanik 3 5. Regler 3 5.1 Spelplan 3 5.2 Spelaren 3 5.3 Token 3 5.4
Mångfald inom en art. Genotyp. Genpool. Olika populationer. Fig En art definieras som
Mångfald inom en art Population och art. Vad är skillnaden? Vad är en art? Genetisk variation Genetiskt olika populationer Tillämpningar av genetisk variation Etiska problem En art En art definieras som
Mångfald inom en art. Genotyp. Genpool. Olika populationer. Fig En art definieras som
Mångfald inom en art Population och art. Vad är skillnaden? Vad är en art? Genetisk variation Genetiskt olika populationer Tillämpningar av genetisk variation Etiska problem En art En art definieras som
1 Kravspecifikation Snake App
Kravspecifikation Snake App - Kravspecifikation Snake App Utskriven/PDF Export: 2011-09-07 Copyright 2011 Sidan 1 av 7 1 Kravspecifikation Snake App 1.1 Vad är Snake App? Vi skall gör ett Snake Spel för
Symboler och abstrakta system
Symboler och abstrakta system Warwick Tucker Matematiska institutionen Uppsala universitet warwick@math.uu.se Warwick Tucker, Matematiska institutionen, Uppsala universitet 1 Vad är ett komplext system?
Fyra i rad Javaprojekt inom TDDC32
Fyra i rad Javaprojekt inom TDDC32 Analys och design-dokument Version 2.0 Datum 2008-05-19 Dokumentnummer 20080303 Sammanfattning Detta är analys och design-dokumentet för programmet Fyra i rad. Fyra i
Laboration i datateknik
KUNGLIGA TEKNISKA HÖGSKOLAN Laboration i datateknik Felsökning och programmering av LEGO NXT robot Daniel Willén 2012 09 06 dwill@kth.se Introduktionskurs i datateknik II1310 Sammanfattning Syftet med
Neurala nätverk och språkigenkänning. Henrik Linnarsson. Linköping University
Neurala nätverk och språk Henli807!1 Neurala nätverk och språkigenkänning Henrik Linnarsson Linköping University Neurala nätverk och språk Henli807!2 RNN, LSTM och språkigenkänning Inledning Idag är språkigenkänning
729G Artificiell jakt och flockbeteende inom datorspel
Artificiell jakt och flockbeteende inom datorspel Abstrakt Chasing and Evading är ett begrepp som används för att beskriva hur agenter rör sig mot (jagar), eller undviker en spelare. Liksom i de flesta
Artificiell intelligens i spel
Artificiell intelligens i spel En redogörelse Björn Larsson 871210-4036 bjola054 729G11 Sammanfattning Under år 2007 omsatte den svenska tv- och datorspelsmarknaden 2,3 miljarder kronor (nyteknik.se).
TDP005 Projekt: Objektorienterat system
. TDP005 Projekt: Objektorienterat system Kravspecifikation Författare, dylma900@student.liu.se, albve061@student.liu.se Höstterminen 2016 Version 1.1 2016-11-16 1 Revisionshistorik Ver. Revisionsbeskrivning
Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...
Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering... 4 Bussen (projektförslag)... 5 Bakgrund... 5 Klassen Buss
Sannolikheten att vinna ett spel med upprepade myntkast
Matematik Gymnasieskola Modul: Matematikundervisning med digitala verktyg Del 7: Matematiska undersökningar med kalkylprogram Sannolikheten att vinna ett spel med upprepade myntkast Håkan Sollervall, Malmö
JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund gussk258@student.liu.se. Marcus Widblom marwi026@student.liu.se. Senast ändrad: 13 / 05 / 08
JavaRats Kravspecifikation Version 1.1 Gustav Skoglund gussk258@student.liu.se Marcus Widblom marwi026@student.liu.se Senast ändrad: 13 / 05 / 08 Sammanfattning Kravspecifikationen för JavaRats har skrivit
Space Invaders - Slutrapport
Projekt inda14 Sida 1 av 6 Space Invaders - Slutrapport A. Projektplanen Programbeskrivning Vi tänker göra en version av det gamla arkadspelet Space Invaders i java. Spelet går ut på att spelaren styr
Kandidatuppsats. Jämförelse mellan neurala nätverk baserad AI och state-of-the-art AI i racing spel. Simon Karlsson, Christopher Jensen
Kandidatuppsats Jämförelse mellan neurala nätverk baserad AI och state-of-the-art AI i racing spel Simon Karlsson, Christopher Jensen Sammanfattning Denna rapport jämför prestandan mellan state-of-the-art
JÄMFÖRELSE AV EVOLUTION OCH SAMEVOLUTION FÖR ATT EVALUERA SPELTILLSTÅND
Malskapada v Henrik JÄMFÖRELSE AV EVOLUTION OCH SAMEVOLUTION FÖR ATT EVALUERA SPELTILLSTÅND I artificiella neurala nätverk kombinerat med minimax COMPARISON BETWEEN EVOLUTION AND COEVOLUTION TO EVALUATE
TDDD78 projekt: Tower Defence
projekt: Tower Defence 1 Introduktion Tower Defence är en kategori av spel med rötter till 1980-talet som går ut på att försvara en punkt (ofta symboliserat som en bas eller by) från horder av monster
AI TILL BRÄDSPEL En jämförelse mellan två olika sökalgoritmer vid implementation av AI till brädspelet Pentago.
AI TILL BRÄDSPEL En jämförelse mellan två olika sökalgoritmer vid implementation av AI till brädspelet Pentago. AI FOR BOARD GAMES A comparison of two search algorithms by implementation of AI for the
GRUPP 1 JETLINE. Åk, känn efter och undersök: a) Hur låter det när tåget dras uppför första backen? Vad beror det på? (Tips finns vid teknikbordet)
GRUPP 1 JETLINE a) Hur låter det när tåget dras uppför första backen? Vad beror det på? (Tips finns vid teknikbordet) b) Var under turen känner du dig tyngst? Lättast? Spelar det någon roll var i tåget
Uppdrag för LEGO projektet Hitta en vattensamling på Mars
LEGO projekt Projektets mål är att ni gruppvis skall öva på att genomföra ett projekt. Vi använder programmet LabVIEW för att ni redan nu skall bli bekant med dess grunder till hjälp i kommande kurser.
Regression med Genetiska Algoritmer
Regression med Genetiska Algoritmer Projektarbete, Artificiell intelligens, 729G43 Jimmy Eriksson, jimer336 770529-5991 2014 Inledning Hur många kramar finns det i världen givet? Att kunna estimera givet
Micro:bit. Börja skapa egna program
Micro:bit Börja skapa egna program Att programmera är mer än att skriva kod 1. När man ska bygga något behövs först en ritning. Formulera i talspråk vad programmet ska göra. 2. Förbered att skriva koden
Ett spel skapat av Albin Wahlstrand
Viking vs. Demons Ett spel skapat av Albin Wahlstrand 2012-06-03 1 Abstrakt Denna rapport kommer att handla om mina positiva och negativa erfarenheter inom projektet jag jobbat på de senaste 10 veckorna.
Kravspecifikation. TDP005 Projekt: objektorienterade system. Version 4.0 Datum Anna Ahlberg Johan Almberg
Kravspecifikation TDP005 Projekt: objektorienterade system Version 4.0 Datum 2008 12 05 Anna Ahlberg Johan Almberg 1 Innehållsförteckning 1. Spelidé...3 1.1 Svårighetsgrad...3 2. Målgrupp...3 3. Spelupplevelse...3
Fördjupningsuppgift 729G43 Linköpings Universitet alelo408. Genetisk börshandel. Att hitta mönster i börsmarknaden med genetiska algoritmer
Genetisk börshandel Att hitta mönster i börsmarknaden med genetiska algoritmer Alexander Löfstrand HT 2017 1. Inledning 1.1. Bakgrund Börsmarknaden är full av möjligheter att tjäna pengar, men även på
Procedurella Grottor TNM084. Sammanfattning. Alexander Steen
Procedurella Grottor TNM084 Alexander Steen alest849@student.liu.se 13-01-12 Sammanfattning Denna rapport beskriver en metod för att skapa procedurella grottor. Grottorna består utav sammanlänkade rum
Ansiktsigenkänning med MATLAB
Ansiktsigenkänning med MATLAB Avancerad bildbehandling Christoffer Dahl, Johannes Dahlgren, Semone Kallin Clarke, Michaela Ulvhammar 12/2/2012 Sammanfattning Uppgiften som gavs var att skapa ett system
Detaljbeskrivning av Player
Detaljbeskrivning av Player Syftet med Playerklassen är att representera det skepp som spelaren styr. Spelarens skepp styrs till skillnad från övriga skepp av spelaren både när det kommer till vilken riktning
Introduktion till programmering SMD180. Föreläsning 9: Tupler
Introduktion till programmering Föreläsning 9: Tupler 1 1 Sammansatta datatyper Strängar Sekvenser av tecken Icke muterbara Syntax: "abcde" Listor Sekvenser av vad som helst Muterbara Syntax: [1, 2, 3]
de var svåra att implementera och var väldigt ineffektiva.
OBS! För flervalsfrågorna gäller att flera alternativ eller inget alternativ kan vara korrekt. På flervalsfrågorna kan man bara ha rätt eller fel, dvs frågan måste vara helt korrekt besvarad. Totalt kan
Objektorienterad Programkonstruktion. Föreläsning jan 2017
Objektorienterad Programkonstruktion Föreläsning 15 30 jan 2017 Felsökning Med moderna programmeringsverktyg är rena syntaxfel oftast lätta att åtgärda Fel som kan vara svårare att åtgärda är t.ex: thread
Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot
KUNGLIGA TEKNISKA HÖGSKOLAN Programmering av NXT Lego- robot Labbrapport för programmering av en Lego- robot Josef Karlsson Malik 2015-09- 02 jkmalik@kth.se Introduktionskurs i datateknik (II0310) Sammanfattning
Datastrukturer och Algoritmer D0041D
Luleå Tekniska Universitet 19 mars 2014 Laborationsrapport Laboration 3 Datastrukturer och Algoritmer D0041D Primms Algoritm Namn E-mail Magnus Björk magbjr-3@ltu.student.se Handledare Felix Hansson Primms
Legorobot. Lär dig programmera en legorobot. Teknikåttan 2009. Ola Ringdahl Lena Kallin Westin
Legorobot Lär dig programmera en legorobot. Teknikåttan 2009 Ola Ringdahl Lena Kallin Westin Legorobot Sid 2 (6) Legorobot Sid 3 (6) LEGOROBOT Syfte Syftet med denna praktiska uppgift är att man ska få
Grafiska pipelinens funktion
LUNDS TEKNISKA HÖGSKOLA CAMPUS HELSINGBORG Grafiska pipelinens funktion Ludvig von Sydow EDT62, HT17 Datorarkitekturer med Operativsystem Sammanfattning Denna rapport syftar till att beskriva hur en graphics
LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I
LABORATION 4 OBJEKTORIENTERAD PROGRAMMERING I C++ I Vt 2002 Mål: Lära sig: Filhantering Stränghantering Vektorer Funktioner Programstruktur Tid: Läroboken: 6 timmars handledd laborationstid. Beräknad klar
Konvexa höljet Laboration 6 GruDat, DD1344
Konvexa höljet Laboration 6 GruDat, DD1344 Örjan Ekeberg 10 december 2008 Målsättning Denna laboration ska ge dig övning i att implementera en algoritm utgående från en beskrivning av algoritmen. Du ska
Självlärande Othello-spelare
Självlärande Othello-spelare Kan en dator lära sig att spela Othello? KLAS BJÖRKQVIST och JOHAN WESTER Examensarbete Stockholm, Sverige 2010 Självlärande Othello-spelare Kan en dator lära sig att spela
ARTIFICIELLA NEURALA NÄT. MARCO KUHLMANN Institutionen för datavetenskap
ARTIFICIELLA NEURALA NÄT MARCO KUHLMANN Institutionen för datavetenskap Example Alt Bar Fri Hun Pat Price Rain Res Type Est WillWait 1 Yes No No Yes Some $$$ No Yes French 0 10 Yes 2 Yes No No Yes Full
KUNGLIGA TEKNISKA HÖGSKOLAN KISTA. Lego Linefollower. Få en robot att följa linjen på golvet!
KUNGLIGA TEKNISKA HÖGSKOLAN KISTA Lego Linefollower Få en robot att följa linjen på golvet! Felix Ringberg 2012-08-09 felixri@kth.se Introduktionskurs i datateknik II1310 Sammanfattning I den här laborationen
ARTIFICIELLA EKOSYSTEM SOM ARTIFICIELL INTELLIGENS I ACTIONROLLSPEL
ARTIFICIELLA EKOSYSTEM SOM ARTIFICIELL INTELLIGENS I ACTIONROLLSPEL En jämförelse av algoritmer och deras anpassning till realtids-spel ARTIFICIAL ECOSYSTEMS AS ARTIFICIAL INTELLIGENCE IN ACTION ROLE PLAYING
CDC en jämförelse mellan superskalära processorer. EDT621 Campus Helsingborg av: Marcus Karlsson IDA
CDC6600 - en jämförelse mellan superskalära processorer av: Marcus Karlsson Sammanfattning I denna rapport visas konkret information om hur den första superskalära processorn såg ut och hur den använde
Fråga 5 (1 poäng) För att definiera ett sökproblem krävs...
OBS! För flervalsfrågorna gäller att ett, flera eller inget alternativ kan vara korrekt. På flervarlsfrågorna ges 1 poäng för korrekt svar och 0,5 poäng om skillnaden mellan antalet korrekta svar och antalet
Artificiell intelligens i en virtuell värld
LINKÖPINGS UNIVERSITET Artificiell intelligens i en virtuell värld Ett fördjupningsarbete om artificiell intelligens inom spelbranschen Victor Sjölin, vicsj486@student.liu.se 2011-09-18 Table of Contents
Slutrapport för Pacman
Slutrapport för Pacman Datum: 2011-05-30 Författare: cb222bj Christoffer Bengtsson 1 Abstrakt Jag har under våren arbetat med ett projekt i kursen Individuellt Mjukvaruutvecklingsprojekt. Målet med mitt
En situerad ansats för utvecklingen av en räknande robot (HS-IDA-EA )
En situerad ansats för utvecklingen av en räknande robot (HS-IDA-EA-03-501) Niclas Ahlén (a00nicah@student.his.se) Institutionen för datavetenskap Högskolan i Skövde, Box 408 S-54128 Skövde, SWEDEN Examensarbete
EVOLUTION AV VÄRDEN I EN STOKASTISK TILLSTÅNDSMASKIN
Malskapad avhenrik Mals kapad avhenrik EVOLUTION AV VÄRDEN I EN STOKASTISK TILLSTÅNDSMASKIN Kan evolution underlätta för att finna lämpliga värden åt en stokastisk tillståndsmaskin hos en agent? EVOLUTION
HKGBB0, Artificiell intelligens
HKGBB0, Artificiell intelligens Kortfattade lösningsförslag till tentan 3 november 2005 Arne Jönsson 1. Vad karaktäriserar dagens AI-forskning jämfört med den AI-forskning som bedrevs perioden 1960-1985.
LEKTION PÅ GRÖNA LUND, GRUPP 1
LEKTION PÅ GRÖNA LUND, GRUPP 1 JETLINE Tåget är 9,2 m långt. Hur lång tid tar det för tåget att passera en stolpe? Hur fort går tåget? Var under turen tror du att känner man sig tyngst? Lättast? Två gånger
ARTIFICIELL INTELLIGENS
ARTIFICIELL INTELLIGENS www..se Så fungerar det Artificiell Intelligens (AI) är intelligens som uppvisas av maskiner. Uttrycket användes för första gången 1955 i ett forskningsförslag med syftet att hitta
GeneTrader. Ett helautomatiserat tradingsystem
GeneTrader Ett helautomatiserat tradingsystem Johan Näslund, GeneSoft AB G E N E S O F T AB W W W.GENESOFT.SE +46 8 411 48 48 K U N G S G A T A N 62, 4TR 111 22 STOCKHOL M 1 (8) Innehållsförteckning 1
LEKTION PÅ GRÖNA LUND GRUPP A (GY)
LEKTION PÅ GRÖNA LUND GRUPP A (GY) t(s) FRITT FALL Hur långt är det till horisonten om man är 80 m.ö.h.? Titta på en karta i förväg och försök räkna ut hur långt man borde kunna se åt olika håll när man
Neural bas för kognition
Kommunikation Neural bas för kognition stimulerande, retande inhiberande, förhindrande depolarisation vid tillräckligt mycket retning blir hela neuronen för en stund positivt laddad, då har en SPIKE uppnåtts
4 augusti (G) Programmering: Lego
4 augusti (G) Programmering: Lego Idag ska vi gå igenom loopar, valblock (switchar), parallella program program. Robotar upprepar ofta samma sak om och om igen. T.ex. en industrirobot som ska tillvecka
Att programmera en Beethoven
Linköpings universitet Att programmera en Beethoven Fördjupning inom Neurala nätverk och LSTM 2018-01-03 Innehåll 1 Inledning- Musik och artificiell intelligens... 2 1.1 Historia... 2 1.2 Bakgrund AIVA...
HI1024 Programmering, grundkurs TEN2 2014-03-13
HI1024 Programmering, grundkurs TEN2 2014-03-13 KTH STH Haninge 13.15-18.00 Tillåtna hjälpmedel: En A4 handskriven på ena sidan med egna anteckningar Kursboken C PROGRAMMING A Modern Approach K. N. King
Funktioner. Räta linjen
Sidor i boken 14-143, 145-147 Funktioner. Räta linjen Här följer en dialog mellan studenten Tor-Björn (hädanefter kallad TB) och hans lärare i matematik Karl-Ture Hansson (nedan kallad KTH). När vi möter
GenJam En musikalisk genetisk algoritm?
GenJam En musikalisk genetisk algoritm? Kognitionsvetenskapliga programmet Abstract GenJam är en modell av en jazzmusiker som lär sig att improvisera. Det är en interaktiv genetisk algoritm som interagerar
Inledning. Kapitel 1. 1.1 Bakgrund. 1.2 Syfte
Sammanfattning Vi har i kursen Modelleringsprojekt TNM085 valt att simulera ett geléobjekt i form av en kub. Denna består av masspunkter som är sammankopplade med tre olika typer av fjädrar med olika parametrar.
Artificiell intelligens som evolverande animationsverktyg. Marcus Heder
Institutionen för kommunikation och information Artificiell intelligens som evolverande animationsverktyg. Marcus Heder Examensarbete i datalogi med inriktning mot dataspelsutveckling 30 hp C-nivå, vårterminen
729G43 Artificiell intelligens / Maskininlärning 3. Marco Kuhlmann
729G43 Artificiell intelligens / 2015 Maskininlärning 3 Marco Kuhlmann Förra gången: Perceptroninlärning Beslutsregel predicerat y-värde Exempel: AND Välj parametrar θ 0, θ 1, θ 2 sådana att perceptronen
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik I 2017-10-23 Skrivtid: 0800 1300 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC
KTH ICT Labrapport: Programmering i NXC Programmera LEGO Maindstorm med NXC Jonathan Kindfält 23/08-2012 E-post (kindfalt@kth.se) Introduktionskurs i datateknik II1310 Sammanfattning Denna rapport behandlar
Meteor 1.0. När man startat Meteor möts man av huvudmenyn:
Meteor 1.0 Meteor är spelet för dig som vill träna upp din förmåga att hantera mus, pekskärm eller manöverkontakter. Du gör det genom att skjuta ner meteorer, rymdskepp eller ballonger. Spelet har en tävlingsdel
SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS
SLUTRAPPORT: TEXAS HOLDEM 4 FRIENDS Individuellt Mjukvaruutvecklingsprojekt (Utvecklare av digitala tjänster) Den 1 juni 2011 ABSTRAKT Rapporten tar upp positiva och negativa erfarenheter som jag erhållit
Effektivitet, Flexibilitet och Anpassningsförmåga. Examensarbete inom huvudområdet Datalogi Grundnivå 30 högskolepoäng Vårtermin 2014
Malskapada v Henrik GENETISKA ALGORITMER KONTRA TILLSTÅNDSMASKINER I INDIVIDCENTRERADE EKOSYSTEM I DATORSPEL Effektivitet, Flexibilitet och Anpassningsförmåga GENETIC ALGORITHMS VERSUS STATEMACHINES IN
Procedurella Texturer
Institutionen för kommunikation och information Examensarbete i datalogi 30hp C-nivå Vårterminen 2008 Procedurella Texturer Skapande av en procedurell textur utifrån en referensbild med hjälp av en genetisk
Hur låter det när tåget dras uppför första backen? Vad beror det på? (Tips finns vid teknikbordet)
Grupp 1 Jetline Hur låter det när tåget dras uppför första backen? Vad beror det på? (Tips finns vid teknikbordet) Var under turen känner du dig tyngst? Lättast? Spelar det någon roll var i tåget du sitter
SPRINT-HANDBOK (version 0.4)
1. FÄRG OCH FORM Detta är programmets startmeny. Texten överst på bilden (Avsluta, Ny användare, Om... och Välj användare) blir synlig då markören förs upp den blåa ramen. en ny användare. 6. 4. 5. får
TDDD92 Artificiell intelligens -- projekt
jonas.kvarnstrom@liu.se 2018 TDDD92 Artificiell intelligens -- projekt Individuella uppgifter UPG2: Individuell skriftlig rapport 2 Vad? Läsa och förstå vetenskaplig litteratur Varför? Framtiden: Inte
Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper
Tentamen Programmeringsteknik II 2018-10-19 Skrivtid: 8:00 13:00 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer
EVOLUTIONÄR ALGORITM FÖR VÄGPLANERING I DATORSPEL
EVOLUTIONÄR ALGORITM FÖR VÄGPLANERING I DATORSPEL Examensarbete i informationsteknologi med inriktning mot Dataspelsutveckling Grundnivå 30 högskolepoäng Vårtermin 2017 Jakob Larsson Handledare: Mikael
REGIONSEMIFINAL 2019 LAGEN
REGIONSEMIFINAL 2019 LAGEN 1. Livets historia Ni får 6 lappar där det står några händelser i jordens/livets utveckling på. Häng upp lapparna på linan i rätt tidsordning med den tidigaste händelsen till
Joakim Jonsson jj222kc. Minesweeper. Individuellt Mjukvaruprojekt Joakim Jonsson
Minesweeper Individuellt Mjukvaruprojekt Joakim Jonsson 08 06 2013 Abstrakt Nedan följer en slutrapport för projektet inom kursen Individuellt Mjukvaru utvecklingsprojekt. Jag har under dessa 10 veckor
Datorarkitektur I. Tentamen Lördag 10 April Ekonomikum, B:154, klockan 09:00 14:00. Följande gäller: Skrivningstid: Fråga
Datorarkitektur I Tentamen Lördag 10 April 2010 Ekonomikum, B:154, klockan 09:00 14:00 Examinator: Karl Marklund 0704 73 32 17 karl.marklund@it.uu.se Tillåtna hjälpmedel: Penna Radergummi Linjal Följande
Handledare: Mikael Goldmann
2012-02- 23 Jacob Rydh Robert Hedin Sudoku Solver Projektspecifikation Handledare: Mikael Goldmann Introduktion Vi ska studera och utforma olika algoritmer för att lösa Sudoku puzzel. Vi kommer testa olika
Ha rätt sorts belöning. Åtta tips för bästa sätt hur du tränar din hund. Grunden till all träning:
Åtta tips för bästa sätt hur du tränar din hund Grunden till all träning: Gör det lätt för hunden! Börja alltid på en nivå som är enkel för hunden och bygg på svårigheterna. På det sättet tycker hunden
Inlämningsuppgifter, EDAF30, 2015
LUNDS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Programmering i C++ Inlämningsuppgifter, EDAF30, 2015 Det finns två deluppgifter som båda ska lösas: 1. skriv ett program för att hantera bankkonton
Artificiell intelligens, eller Kommer din dator att bli klokare än dig? (eller kanske är den redan det?)
Artificiell intelligens, eller Kommer din dator att bli klokare än dig? (eller kanske är den redan det?) 1.a November 2011 Innan vi börjar R.I.P. John McCarthy (1924 2011) Grundare av ämnet artificiell
Introduktion till algoritmer - Lektion 1 Matematikgymnasiet, Läsåret 2014-2015. Lektion 1
Kattis Lektion 1 I kursen används onlinedomaren Kattis (från http://kattis.com) för att automatiskt rätta programmeringsproblem. För att få ett konto på Kattis anmäler du dig på Programmeringsolympiadens
Mälardalens högskola
Teknisk rapportskrivning - en kortfattad handledning (Version 1.2) Mälardalens högskola Institutionen för datateknik (IDt) Thomas Larsson 10 september 1998 Västerås Sammanfattning En mycket viktig del