ATT SKAPA EN INTELLIGENT HEARTSTONESPELANDE AGENT

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

AI och schack. En överblick

Genetisk programmering i Othello

Bakgrund och motivation. Definition av algoritmer Beskrivningssätt Algoritmanalys. Algoritmer. Lars Larsson VT Lars Larsson Algoritmer 1

Tentamen: Programutveckling ht 2015

Datormetaforen. Från människa till dator Från dator till människa o.s.v.

Genom att följa dessa steg lär du dig snabbt att spela onlinematcher... och som du kan se är det mycket enkelt, roligt och spännande!

Handledare: Mikael Goldmann

Artificial Intelligence

Någonting står i vägen

Lär datorn att spela luffarschack

Kravspecifikation. Sammanfattning. Fyra i rad Javaprojekt inom TDDC32. Version 2.0. Datum Dokumentnummer

Beskrivning av Gesällprov. Fia Med Knuff. Mikael Rydmark.

Implicita odds och omvända implicita odds

Artificiell Intelligens den nya superkraften

Artificiell intelligens En agent som spelar Black Jack Andreas Perjons [andpe813]

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

AI utmaningar inom kvalitetssäkring. Henrik Emilsson Teststrateg, Nordic Medtest AB

Speldesign och projektledning Specialkurs 2B Spelprogrammet VT

Artificiell intelligens

Schackspelande datorer Hur fungerar de? Joakim Östlund Patrik Lindegrén 19 oktober 2004

Kort Sammanfattning av Schack MAS

AI för Hive. Kungliga Tekniska Högskolan. Examensarbete inom datalogi, grundnivå (DD143X) Författare: Urban Pettersson

Artificiell intelligens, eller Kommer din dator att bli klokare än dig? (eller kanske är den redan det?)

Föreläsning 11 - Automater, textsökning, tillstånd

Del 8. Taktiska åtgärder

Öka prestanda i Shared-Cache multi-core processorer

Fuzzy Logic. När oskarpa definitioner blir kristallklara. Åsa Svensson. Linköpings Universitet. Linköping

Sannolikheten att vinna ett spel med upprepade myntkast

Självlärande Othello-spelare

DATORER OCH PROGRAM. Datorn är en symbolmaskin

ARTIFICIELL INTELLIGENS

Business research methods, Bryman & Bell 2007

Process- och metodreflektion. Grupp 3; Ida Gustafsson, Mikael Karlsson, Jonas Lind, Hanne Sundin, Maria Törnkvist

UPPGIFT 1 V75 FIGUR 1.

Real-time requirements for online games

DATORER OCH PROGRAM. Programmerade maskiner Program beteendeplan och beteendegenerator Generalitet och portabilitet Datorn är en symbolmaskin

Personifierad Netflix

Hantering av hazards i multi-pipelines

Regler för: getsmart Grön

Conways Game of life: Att simulera några av livets egenskaper genom en datorprogram

Projekt i programmering 1 (ver 2)... 2 Projektidé... 2 Planering... 2 Genomförande... 2 Testning och buggar... 3 Utvärdering... 3 Planering...

Spelutveckling - Gameplay. Design och produktion

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

Artificiell intelligens, eller Kommer din dator att bli klokare än dig? (eller kanske är den redan det?)

Hantering av hazards i pipelines

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

Föreläsninsanteckningar till föreläsning 3: Entropi

Pussel DISC/Morot Kombination

Institutionen för datavetenskap, DAT060, Laboration 2 2 För denna enkla simulerings skull kommer handen att representeras som ett par tal μ värdet på

Blue Ocean Strategy. Blue Oceans vs Red Oceans. Skapelse av Blue Oceans. Artikelförfattare: W. Chan Kim & Renée Mauborgne

Game of 40. Regler och om sidan är in princip samma sak. Det som skiljer dem åt är att de inte har samma text.

TDDD92 Artificiell intelligens -- projekt

Hej och tack för att ni, Folk och Försvar anordnar det här seminariet. Tack för inbjudan Lars.

Gränser och gränssnitt mellan människa och maskin

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

Three Monkeys Trading. Tärningar och risk-reward

Matcha rätt hjärta till rätt patient med AI. Dennis Medved

Formativ bedömning i matematikklassrummet

AI TILL BRÄDSPEL En jämförelse mellan två olika sökalgoritmer vid implementation av AI till brädspelet Pentago.

Handbok Officersskat. Martin Heni Eugene Trounev Granskare: Mike McBride Översättare: Stefan Asserhäll

AGA-regler. goforbundet.se/ Referens: AGA 1991

Användarmanual Wapspel

Taktikanalys i tennis

Om man googlar på coachande

FÅ FRAM INDATA. När inga data finns!? Beslutsfattarens dilemma är att det är svårt att spå! Särskilt om framtiden!

TDDB96 Projekt: Object priming med visuell stimuli

Regelsammandrag på Svenska Yu-Gi-Oh!

Datorlaboration 7. Simuleringsbaserade tekniker

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

Laboration i datateknik

Artificiell Intelligens inom datorspel Är det ett seriöst ämne?

1. En oreglerad marknad involverar frihet. 2. Frihet är ett fundamentalt värde. 3. Därav att en fri marknad är moraliskt nödvändigt 1

Handbok Granatier. Mathias Kraus Översättare: Stefan Asserhäll

Vad kan biologiskt plausibla modeller säga oss?

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

JavaRats. Kravspecifikation. Version 1.1. Gustav Skoglund Marcus Widblom Senast ändrad: 13 / 05 / 08

Allmänt om Pidro. Spelets uppbyggnad

Mjukvarudesign. Designprocessen. Teknisk design. Konceptuell design

LUNDS UNIVERSITET. Parallell exekvering av Float32 och INT32 operationer

Världen. Sida 1 av 8. Detta är en del av SvD:s digitala urval för dig som är. prenumerant.

Föreläsning 12 Inspektionsmetoder. Rogers et al. Kapitel 15

Pottstorleksfilosofin ett exempel

Distributed Computing

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

Genetiska Algoritmer. 10 mars 2014

Programmering. Seminarier i datavetenskap, datorteknik och informationsteknik. Niklas Broberg

Kurragömma i ett socialt nätverk

Simuleringar och Kolbs lärcykel. Aktivitet

DATALOGISK TÄNKANDE OCH PROGRAMMERING CETIS OKTOBER 2017

LUFFARSCHACKETS GRUNDER

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

Sammanfattning 2014:8

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

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

Utförliga regler för TRAX

Datalogiskt tänkande för alla

Ontologier. Cassandra Svensson

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

Transkript:

ABSTRACT LINKÖPINGS UNIVERSITET, IDA ATT SKAPA EN INTELLIGENT HEARTSTONESPELANDE AGENT För att bli bäst i världen på spel krävs en rad väl formulerade strategier. Här kan man få mycket hjälp av AI agenter, som på många sätt kan ge oss ett stort försprång gällande att göra så bra val som möjligt. Speciellt gäller detta agenter som använder sig av Monte Carlo trädsökning. En teknik som är väl anpassad för att skapa kompetenta AI agenter oavsett spel. Det kan hantera osäkerhet och slump, det kan även lära sig helt utan en specifikt formulerad evaluerings funktion eller någon inmatad kunskapsbas. Spelet som valdes som fokus för denna studie var Heartstone. Ett spel som vid november var uppe i 40 miljoner registrerade spelare och där den största vinstsumman för det förra årets turneringar låg på 100,000$. Det är ett spel som erbjuder nya utmaningar för AI och spel forskare. Gällande exempelvis partiellt observerbara informations domäner och motstånds modellering med osäkerhet. Denna studie är också intressant då dess forskning förmodligen kan hitta andra implementeringsområden, då pågrund av naturen av MCTS, då kunskap gällande ett specifikt spel inte nödvändigtvis är lika viktig. Sammanfattningsvis behandlade denna studie möjligheten för att skapa en intelligent Heartstone spelande agent. Monte Carlo trädsökning (MCTS) var den teknik som valdes för att hantera sökning och evaluering. DEN 8 JANUARI 2016 LINKÖPINGS UNIVERSITET

Introduktion De tidigast kända strategispelande maskinerna härstammar från så tidigt som 1700-talet. Där Wolfgang Von Kempelen's maskin är en av de absolut kändaste. Dessa maskiner var dock rena bluffar och geniun framgång inom strategispelande maskiner skulle inte dyka upp förrens under 1900-talet (Marsland, 1991). Under 1900-talets senare hälft skulle framgångarna eskalera och det första välfungerade strategispelande programmet rapporterades 1958, detta var då gällande en schackspelande agent. Den första matchen mellan två datorer utfördes under 60-talet och väldigt snabbt lyckades man helt enkelt lösa en massa spel genom att bryta ner dem och skapa program som blev perfekta. Forskare använde sig alltså av datorer för att skapa intelligenta agenter, i ungefär samma stund som datorn uppfanns. Alan Turing och Claude Shannon skrev ett av de första strategispelande programmen, detta under 1950-talet. Båda ansåg att ett program som kompetent kunde spela dessa spel, som schack exempelvis, var urtypen för något som krävde och uppvisade intelligens. Men ett problem som man snabbt stötte på inom artificiell intelligens (AI) var att så fort man lyckades skapa dessa program, blev de snarare klassade som simpel brute-force sökning eller liknande och inte riktig intelligens (Schwab, 2009). Ett effektivt sätt att möta denna kritik utfördes genom projektet Deep Blue där man skapade ett program som under tv-sändning över hela världen slog den regerande världsmästaren i schack. Detta uppmärksammade fältet för resten av världen och visade på att något speciellt hade utförts (Campbell, Hoane and Hsu 2001). Detta motiverar denna forskningsstudie som har som mål att undersöka möjligheter för att skapa en intelligent Hearthstone spelande agent. Hearthstone (HS) är ett strategispel som släpptes under 2014. Det kommer från skaparna Blizzard och opererar online genom Battle.net. Det har snabbt blivit ett av de populäraste tävlingsinriktade spelen i världen med den senaste höjdpunkten som var under BlizzCon 2015 där vinnaren tog hem 100,000 $. Mer detaljerat är HS ett digitalt turbaserat kortspel. Där man kan skapa sitt eget deck utifrån de kort man har och sedan spela mot andra människor eller mot AI spelare. Det har enligt Statista 40 miljoner registrerade spelare sedan November 2015. För att skapa en AI som framgångsrikt kan spela Heartstone (HS) krävs en anpassad sök och evalueringsmetod för att hantera spelstrategin alltså för att spela de bästa möjliga dragen givet kontexten man befinner sig i. Den vanligaste tekniken, och den mest framgångsrika gällande exempelvis schack, är att använda sig av en kombination mellan minimax och alfa beta pruning (Schwab, 2009). Men denna teknik har visat sig svagare när det gäller spel med en hög branching faktor och även vid stokastiska spel. Den teknik som väckte mest intresse var Monte Carlo trädsökning. En teknik som har använts för att framgångsrikt slå professionella spelare i 9x9 Go. Ett spel känt för sin komplexitet gällande att skapa slagkraftiga AI agenter (Chaslot, Bakkes, Szitaand and Spronck, 2008). Den har även visats lovande inom Magic: The Gathering (M:TG). M:TG är ett spel som är väldigt likt HS, det är ett digitalt turbaserat kortspel där man skapar sitt eget deck och spelar mot andra människor. Det var dock till en början ett vanligt kortspel men gjordes digitalt för att öka tillgången och förenkla processen för människor att möta andra spelare (Cowling, Ward and Powley, 2012). Att det finns framgångsrik forskning gällande spel som är väldigt likt HS är betydande för möjliga framgångar inom forskning för HS. Enligt Cowling et al (2012) har MCTS givit ett genombrott gällande att skapa AI agenter för spel. Stan Ulam är känd som fadern för Monte Carlo metoden, tekniken gavs namn 1947 men idéen bakom kan dateras tillbaka långt tidigare. Det var inte förrens 2006 som MCTS hade sitt genombrott, och de i samband med stora framgångar inom spelet Go, som nämnts tidigare. Sen dess har mycket forskning gjorts gällande tekniken inom en rad olika spel. Många av de AI agenter som har skapats har varit väldigt framgångsrika och förbättringar för tekniken har också hjälpt till dess framfart. Teori HS är precis som många andra strategispel relativt avancerat. Även som hos andra modernare strategispel är det som urskiljer det mot klassiska strategispel introduktionen av mer slump, och att det endast är partiellt observerbart i motsats till exempelvis schack som är helt observerbart (Schwab, 2009). Spelet bygger på att man skapar sig ett deck med 30 kort varav man max kan ha två av varje och endast ett av varje legendariskt kort. Korten har även en manakostnad från noll till tio, för att förenkla det hela. Första rundan som spelas kan endast en mana användas och andra rundan två och så vidare tills man kommit fram till tionde rundan där antalet mana som går att använda stannar. I början på varje egen tur dras ett kort, och man börjar med tre kort i handen, eller fyra för den som ej får börja spelet. Den som ej får spela första turen får även ett extra kort med noll manakostnad som ger spelaren en gratis mana, vilket leder till att den exempelvis kan spela ett kort som kostar två mana under första rundan. Själva målet är att få ner din motståndares hjälte till eller under 0 hälsa.

Varje hjälte börjar med 30 i hälsa och den kan attackeras genom korten man spelar. Korten kan vara vapen, undersåtar eller trollformler. Gällande trollformlerna kan de ha att göra med allt från att göra skada eller hela sin hjälte, till att uppbringa undersåtar eller dra kort. Undersåtar har alltid något i attack och något i hälsa. De kan ha som minst 0 i attack och 1 i hälsa. Det finns ingen övre gräns för hur mycket attack och hälsa de kan ha. Det finns även en hel del andra funktioner gällande undersåtar. De kan till exempel ha taunt, där man måste attackera en undersåte med taunt innan man kan attackera en annnan undersåte eller motståndarerns hjälte. Dessa kan fungera som temporärt skydd mot att din hjälte tar skada. När man spelar en undersåte så måste man vänta en runda tills man kan attackera med den, detta gäller inte för undersåtar som har charge. De kan också ha olika så kallade battlecries eller deathrattles. För en undersåte som har ett battlecry innebär det att när man spelar den från handen gör den något som påverkar spelet, den kan tillexempel ge en annan undersåte +1 i attack, eller låta dig dra ett kort. Deathrattles fungerar likadant fast den aktiveras när undersåten dör. Det finns även en hel del andra liknande funktioner som kan utnyttjas gällande undersåtar, dessa finns också till viss grad när det gäller vapen. Vapen innehar alltid en viss attack och en viss hållbarhet. Ett vapen med 3/2 har alltså 3 i attack och kan användas 2 gånger. De olika hjältarna representerar nio olika klasser. Dessa klasser har alla egna kort som en annan klass ej kan ha i sitt deck. Sedan finns även en stor mängd (neutrala) kort som alla klasser kan använda sig av. När korten i sitt deck tar slut så tar man istället skada för varje gång man drar ett kort. Denna skada ökar för varje gång, alltså vid det tionde kortet man drar när sitt deck är slut tar man tio i skada. Varje hjälte har också en hero power som kostar två mana och är annorlunda för varje hjälte. För att klassifiera Heartstone som spel kan man börja med att jämföra det med schack. Schack som är det spel som inom forskning har fått störst fokus när det kommer till att skapa intelligenta agenter, och man har inom området sedan länge skapat program som enkelt slår de bästa shackspelande människorna. Men det anses dock inte vara ett löst spel, i det fallet att man lyckats skapa ett perfekt program, och lyckats mappa ut alla möjliga drag och motdrag inom spelets rymd (Eiríksson, 2011). HS är till skillnad mot schack alltså endast partiellt observerbart och innehar mer osäkerhet. Osäkerheten i spelet består av att man ej vet vilka kort motståndaren har varken i handen eller i sitt deck förrän denne spelar dessa kort. Man vet heller inte vilka kort man själv ska få ha i sin hand förens man drar dem från sitt deck. Denna typ av osäkerhet kallas icke-styrd osäkerhet och är alltså i grunden lika för både spelare. Sedan innebär den dock också att slumpen kan ge ena spelaren exakt de kort den behöver för stunden medan den andra spelaren kan få helt fel kort vid helt fel tidpunkt. Denna typ av osäkerhet anses dock generellt sett vara mer oproblematisk än styrd osäkerhet då den appliceras på båda spelare utan att de kan styra den. Styrd osäkerhet handlar om saker som att bluffa, blanda strategier, eller göra irrationella spel för att förvirra din motståndare. Enligt Knuth och Moore (1976) är det ofta genom denna strategi människor lyckas slå strategispelande agenter. Alltså genom att spela mer riskfyllt eller göra icke-optimala drag för att sedan utnyttja exempelvis ett för offensivt spel (Schwab, 2009). För att åter knyta HS med schack så är den stora skillnaden alltså att dragen eller strategierna du kan spela, beror på vilka kort du har i handen. Detta leder dock till att man skapar deck för ett visst ändamål. Man kan på samma sätt som i schack dela upp HS i en tidig spelfas, mellanfasen och den sena spelfasen. Där man fokuserar på att skapa ett deck för att speciellt utmärka sig i en av dessa faser. Om man tar den tidiga fasen handlar det om att skapa ett aggressivt deck där man försöker orsaka motståndarens hjälte så mycket skada som möjligt så fort som möjligt och tvingar motståndaren till att fokusera på att rensa bort undersåtar och hantera sin hälsa, vilket sätter den i ett passivt tillstånd och kan låta den aggressivare spelaren att vinna genom att döda motståndarens hjälte i ett tidigt skede. Men om motståndaren lyckas hålla sig själv vid liv tills man kommer in i ett senare skede av spelet så har man inget att komma med då man la fokus på att vinna den tidiga spelfasen. Man kan då fördelaktigt vända tempot till sin sida och oftast enkelt vinna spelet. Samma koncept appliceras gällande mellanfasen och den sena fasen. HS handlar alltså framförallt om att kontrollera tempot, att ligga ett steg före motståndaren. Samtidigt som kontroll av nyckelaspekter kan hålla en vid liv tillräckligt länge för att sedan vända tempot till sin fördel. Samma koncept appliceras för många andra spel, bland annat för schack. Om man dyker lite djupare kan man prata om olika former av spel som går att göra under en runda. Du kan till en början välja att gå face, vilket innebär att du satsar all attack som du har tillgänglig för att skada motståndarens hjälte. Du kan också välja att tradea, vilket innebär att du tar bort störande undersåtar för att hindra dem från att göra skada, eller från att motspelaren ges en chans att ta över tempot. Utöver detta kan du satsa på draw, alltså att få mer kort till handen. Du kan också lägga upp rundan för något kraftigare nästa runda, här ingår också former av bluffning. Det är också viktigt att påpeka möjlig synergi mellan kort. Att vissa kort kan ge starka effekter när de används tillsammans. Detta är bara ett par exempel

för att påvisa tillgängligheten för mängder av olika strategier. Detta är alltså ett relativt komplext spel där man måste ta hänsyn till ett stort antal detaljer som kan påverka spelets gång. Man måste också alltid till en viss del förlita sig på slumpen, där ett starkt spel kan få olika utgångar beroende på randomisering inom spelets mekanismer. Det är också viktigt att påpeka att det är viktigt att effektivt använda sig av de resurser man har. Då det oftast är fördelaktigt att behålla så mycket kort som möjligt då det ger en större möjligheter senare under spelets gång, även fast man kanske har ett starkare spel tillgängligt i handen. Vid fortsatt klassifiering av spelet är en skillnad mellan HS och många andra kortspel att det inte finns ett standard deck som alltid används (eller en standard hjälte heller) utan det är skapandet av sitt deck som sätter prägel på spelet (Ward and Cowling, 2009). Det finns inom HS olika former av spelet, men alla bygger på samma principer. Den spelform som fokuseras på här är den som kallas constructed. Heartstone är alltså turbaserat, komplext och innehåller en viss del osäkerhet. Det är ett såkallat zero-sum spel, vilket innebär att den ena spelarens vinst leder till den andre spelarens förlust och tvärtom. Det är också tidsbegränsning för varje tur (Schwab, 2009). Sökning och evaluering är centrala komponenter för de flesta AI agenter enligt Ward och Cowling (2009). Sökning ger förmågan att förutspå var spelet är påväg och utvärderingen bedömer styrkan hos de positioner som nås under simuleringen. En sök och evalueringsmetod som har fått mycket framgång på senare tid är Monte Carlo (MC) metoden. Mer specifikt för detta ändamål gäller den tidigare nämnda tekniken Monte Carlo trädsökning (MCTS). En teknik som hanterar en hög branch faktor och kan även fungera väl gällande stokastiska spel. Tekniken är ej beroende av en heuristisk baserad evaluerings funktion vilket är användbart för spel där det är svårt att formulera en stark evaluerings funktion. Det krävs heller ingen specifik domänkunskap för det spelet man använder den till. Detta leder till en teknik med förmågan att skapa stark AI inom outforskade spel där en stor grad domänkunskap saknas. Detta gör den passande för general game playing, alltså att skapa kompetenta AI agenter inom spel generellt, eller mer specifikt för spel som saknar tidigare domänkunskap om styrkan hos handlingar, kort, drag eller liknande. (Cowling et al, 2012) (Gelly and Silver, 2011) MCTS är en bäst-först sökteknik som använder sig av stokastisk simulering. Det kan också användas som en planerings algoritm för att exempelvis simulera spel beteende för analys (Zook, Harrison and Riedl). Tekniken kan appliceras på alla ändliga spel. Idén med applicering av MCTS är framförallt för spel där man omöjligt kan undersöka varje möjlig spelsekvens, MCTS tillåter en istället att utföra simuleringar där resultatet är statistiskt representativt för styrkan hos de olika handlingar som är möjliga (Cowling et al, 2012). Tillvägagångssättet går ut på att den simulerar en rad slumpmässiga eller pseudo slumpmässiga matcher för att därigenom utvinna en fungerande strategi. Tekniken är baserad på en randomiserad utforskning av sökrymden där tidigare resultat implementeras. Då trädet byggs upp blir algoritmen bättre på att estimera värden för de mest lovande handlingarna. Den kan dock också fördelaktigt använda sig av heuristik kunskap i samband med detta för att få en mer effektiv algoritm. Genom ett större antal simuleringar av möjliga spelsessioner kan en god strategi uppnås. Mer specifikt så bygger och använder algoritmen ett träd av möjliga framtida tillstånd enligt följande fyra steg som upprepas så länge som tiden tillåter. Det första steget är Selektion: Selektion väljer nästa handling baserat på tidigare information och möjlig domän kunskap. Det som är viktigt under detta steg är att uppnå rätt balans mellan att utföra exploatering och utforskning. Exploatering handlar om att välja den handling som leder till det bästa resultatet hittills. Utforskning gäller för att testa mindre lovande handlingar pågrund av osäkerheten gällande evalueringen, för att inte missa en möjlig handling som kan ge en bättre utkomst. En vanlig metod för att hantera detta är att använda sig av konfidens intervaller genom framförallt övre konfidens begränsningar, så kallat UCB, som appliceras på trädet. Mer om UCB kommer senare. Man kan använda sig av olika metoder för att baka in domän-kunskap, en vanlig metod är genom Progressive bias. Man ger vissa handlingar större värde från början så att de prioriteras över handlingar som annars rent slumpmässigt skulle kunna ges samma styrka. Det andra steget är Expansion: När spelet når det första tillståndet som inte kan hittas i trädet, läggs det till som en ny nod. Detta innebär att trädet expanderas med en nod för varje simulering. Det tredje steget är Simulering: För simuleringen utförs som grund fullständigt slumpmässiga handlingar tills spelets slut. Det är oftast fördelaktigt att använda sig av simuleringsstrategier vilket gör handlingarna pseudo

slumpmässiga. Man viktar då de val som verkar mer lovande, detta görs med hjälp av heuristisk kunskap. Det fjärde och sista steget är Bakpropagering: Efter man har nått slutet för sin simulering uppdateras varje träd nod som var passerad under den simuleringen. Antalet besök för var nod uppdateras och vinst/förlust skalan modifieras efter den utkomst man fick. Resultatet bedöms efter +1 för vinst 0 för lika och -1 för förlust. En bakpropageringsstrategi kan räknas ut genom att ta medelvärdet för alla simuleringar som tog en väg genom en viss nod. Den handling som sedan välj för det riktiga spelet är den som korresponderar med den barnnod som utforskades mest (Chaslot et al, 2008) (Winands, Björnsson and Saito, 2008). Selektion Expansion Simulering Bakpropagering n j står för antalet gånger valet j har testats Dessa termer är relevanta för utforskningen. Termen C balanserar mellan exploatering och utforskning. Mer detaljerat är C en konstant inom 0-1 som kontrollerar hur olikartad sökningen är. Den nod som i slutändan väljs är den som bedöms som att vara mest angelägen. Alltså inte det värdet som tolkas vara bäst eller ge mest spridning. Avvägningen görs alltså efter behov av utforskning av nod kontra högsta möjliga värde. Mer specifikt är det oftast så att varje möjlig handling simuleras en gång, och därefter börjar UCB appliceras för att välja den bästa handlingen givet situationen. För kodning av MCTS presenteras härunder en pseudokod för att illustrera det generella tillvägagångssättet och knyta det samman med den teori som har tagits upp (Browne, Powley, Whitehouse, Lucas, Cowling, Rohlfshagen, Tavener, Perez, Samothrakis and Colton, 2012). Figur 2. Pseudokod för MCTS tagen från Browne et al (2012) Figur 1 Fyra stegen för MCTS tagen från Browne et al (2012) En vanlig teknik för att hantera balansen mellan exploatering och utforskning inom det första steget av MCTS är som nämnt UCB. UCB står för Upper Confidence Bounds vilket översätts till Övre Konfidens Gräns (Auer, 2003). UCB är en algoritm som använder sig av statistisk sannorlikhet. Algoritmen lyder som följer: 2 ln n UCB = X j + C n j X j står för den estimerade belöningen för valet av j Denna beräkning är relevant för exploateringens värde. n står för antalet gånger föräldern har testats

Diskussion För att använda sig av MCTS gällande HS skulle det kunna gå till på följande sätt. Motiverat av idéer från forskning gällande M:TG och Go och mer specifikt utifrån Ward och Cowling (2009). Målet skulle kunna vara att skapa en AI spelare som kan slå en erfaren spelare under formen först till tre vinster med tre olika decks. 1. Från spelarens hand bedöm alla legala handlingar som kan göras. 2. Spela ett simulerat spel till slutet för varje legal handling/handlingar med en randomiserad kortdragningsfunktion utifrån det deck som används och randomiserad hand och deck för motspelaren. Detta för att representera osäkerheten. 3. Genom att använda UCB algoritmen väljs vilken legal eller vilken kombination av legala handlingar som bör utforskas. Fortsatt simulering med randomiserad kortdragning och randomiserad hand och deck för motspelaren följer. 4. Efter en specificerad tidsgräns, returnera den handling eller kombination av handlingar som har högst antal simuleringar. Det finns en rad viktiga aspekter som bör följas för att få ett så effektivt resultat som möjligt. Gällande sin egen spelares deck bör det till en början inte randomiseras, man kan då välja ett par deck som fungerar bra för proffsspelare och sedan snarare fokusera mer specifikt på hur dessa deck bör spelas. Det enda som bör randomiseras är kortdragningen, alltså vilka kort man drar till sin hand. I vissa fall är det bästa alternativet bara att använda sin hero power eller att inte göra något alls. Detta bör också tas i eftertanke. Motståndarens deck får heller inte randomiseras utöver den klassen motståndarens hjälte representerar. Då den ändå inte kan spela dessa kort. Det är också viktigt att ha med de korten motståndaren redan har spelat, och sedan räkna bort dem från möjliga handlingar som motståndaren kan göra senare inom simuleringen. Det som gör att spelet blir komplicerat för en AI spelare kommer framförallt att handla om hur den ska använda trollformler och alla de funktioner som finns som verktyg hos en hel del undersåtar och vapen, exempelvis battlecries som har nämnts tidigare. Det krävs att man spelar saker i exakt rätt följd och väljer rätt vid användning av alla dessa funktioner. Man vill exempelvis inte ge en undersåte med 2/2 +2 attack och sedan tradea den med en av motståndarens undersåte som har exempelvis 4/2. Dessa två i attack blir då helt effektlösa eftersom man ändå skulle dödat motståndarens undersåte och man förhindrar inte att själv dö på något sätt. Man vill hellre använda dessa +2 där man kan skapa sig en fördelaktig trade, exempelvis ge +2 till en 2/3 och attackera en 2/4. Detta är bara ett exempel på alla strategiska aspekter som måste tas hänsyn till. Problemet som kan dyka upp är dock gällande det faktum att AI spelaren ej till en början kan förstå varken trollformer eller några av dessa funktioner. Det är här domänkunskap fördelaktigen kan användas. Att man skapar en kunskapsbas så man lär AI spelaren hur alla dessa funktioner fungerar. Man kan dock också låta den lära sig dessa funktioner genom simulering innan man fokuserar på att få den att kunna slå människor. Man kan se skapandet av en AI spelare för HS i likhet med att skapa en för general game playing. Detta är passande då MCTS anses speciellt lämplig för skapandet av denna typ av AI spelare enligt Ward och Cowling (2009). Användningen av MCTS gällande HS motiveras då av den höga branching faktorn som uppstår pågrund av osäkerhet gällande motståndarens deck och hand. Även då HS är ett väldigt outforskat spel där mycket domänkunskap ännu saknas. Detta skulle göra användningen av andra tekniker mer problematiskt då de ofta bygger på domänkunskap och starka heuristiskt baserade evaluerings funktioner. Det är värt att påpeka att branching faktorn till en början är låg, då man i början av spelet endast har en mana att använda sig av, det är under spelets gång som den succesivt ökar och blir svår att hantera. Om man vid behov skulle behöva hantera effektiviteten av tekniken gällande en hög branching faktor skulle man enligt Ward och Cowling (2009) kunna använda sig av partition search, något som skulle kunna forskas vidare på i framtiden. Den gömda informationen i spelet och existensen av slump skapar en utmanande domän för mänskliga spelare och för att utveckla kompetenta AI spelare, detta med inspiration från forsking av Ward och Cowling (2009) gällande M:TG. Detta känns ännu mer relevant med tanke på att HS är ett mer populärt och mer digitalt anpassat spel. Detta bör motivera andra forskare att intressera sig för HS som spel och forskningsobjekt. I och med att spelet är väldigt populärt bland spelare görs det relevant för dagens samhälle och bör då också vara relevant inom dagens forskning.

För fortsatt forskning kan man kolla på möjligheter till en mer praktisk implementation gällande kodning. En pseudokod presenterades och det finns möjligheter att fortsätta denna utforskning. För att kunna programmera en intelligent heartstone spelande agent måste man ta denna teoretiska information och omvandla den till praktisk kod. Detta kräver fortsatt forskning. Det har dock skapats en hel del lyckosamma projekt inom allt från Go till M:TG (Ward and Cowling, 2009). Detta visar på möjligheter för att skapa en intelligent HS spelande agent även i praktiken. Det finns även som nämnt en hel del forskning gällande möjliga förbättringar av MCTS. Detta är relevant att undersöka för framtida forskning. En term som känns relevant är UCT som står för Upper Confidence Bounds for Trees. Det är en algoritm som har mycket gemensamt med MCTS i kombination med användning av UCB. Enligt Browne et al (2012) går dessa att i princip likställa, men de presenteras som två skilda tekniker enligt Ward och Cowling (2009). En möjlig förbättring är exempelvis MCTS Solver som är skapad av Winands et al (2008) denna ska kunna spela taktiskt starkare inom spel med sudden death scenarion. Slutsats Efter att grundligt ha gått igenom och redovisat för ett antal studier som ansågs passande för detta projekt anser jag att det är absolut godtagbart att gå vidare med detta arbete och ta det till en implementeringsnivå. Det är också av värde att fortsätta forskning gällande tekniker som liknar MCTS och möjliga förbättringar av tekniken. Det skulle framförallt för framtida forskning vara intressant att undersöka implementationsmässiga tillvägagångssätt för att ta del av den mer praktiska delen gällande konstruktionen av en intelligent Heartstone spelande agent. Referenser Chaslot, G., Bakkes, S., Szita, I., & Spronck, P. (2008, October). Monte-Carlo Tree Search: A New Framework for Game AI. In AIIDE. Marsland, T. A., & University of Alberta. Dept. of Computing Science. (1991). Computer chess and search. Department of Computing Science, University of Alberta. Eiríksson, H. (2011). Investigation of Multi-Cut Pruning in Game-Tree Search. Campbell, M., Hoane, A. J., & Hsu, F. H. (2002). Deep blue. Artificial intelligence, 134(1), 57-83. Winands, M. H., Björnsson, Y., & Saito, J. T. (2008). Monte-Carlo tree search solver. Computers and Games, 5131, 25-36. Browne, C. B., Powley, E., Whitehouse, D., Lucas, S. M., Cowling, P., Rohlfshagen, P.,... & Colton, S. (2012). A survey of monte carlo tree search methods. Computational Intelligence and AI in Games, IEEE Transactions on, 4(1), 1-43. Ward, C. D., & Cowling, P. I. (2009, September). Monte Carlo search applied to card selection in Magic: The Gathering. In Computational Intelligence and Games, 2009. CIG 2009. IEEE Symposium on (pp. 9-16). IEEE. Gelly, S., & Silver, D. (2011). Monte-Carlo tree search and rapid action value estimation in computer Go. Artificial Intelligence, 175(11), 1856-1875. Auer, P. (2003). Using confidence bounds for exploitation-exploration trade-offs. The Journal of Machine Learning Research, 3, 397-422. Cowling, P., Ward, C. D., & Powley, E. J. (2012). Ensemble determinization in monte carlo tree search for the imperfect information card game magic: The gathering. Computational Intelligence and AI in Games, IEEE Transactions on, 4(4), 241-257. Schwab, B. (2009). AI game engine programming. Cengage Learning.

Knuth, D. E., & Moore, R. W. (1976). An analysis of alpha-beta pruning. Artificial intelligence, 6(4), 293-326. Zook, A., Harrison, B., & Riedl, M. O. Monte-Carlo Tree Search for Simulation-based Strategy Analysis. Heartstone version 4.1.0.10956 12/04/2015 http://www.statista.com/statistics/323239/number-gamers-hearthstone-heroes-warcraftworldwide/ http://eu.battle.net/blizzcon/en/