Kunstig Intelligens til Brætspillet Taiji - Danmarks Tekniske Universitet
Kunstig Intelligens til Brætspillet Taiji - Danmarks Tekniske Universitet
Kunstig Intelligens til Brætspillet Taiji - Danmarks Tekniske Universitet
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
36 <strong>Kunstig</strong> <strong>Intelligens</strong><br />
3.2.1 Nodes:<br />
Noderne bruges <strong>til</strong> at holde styr p˚a informationerne om hvert enkelt spilstadie.<br />
I en node gemmes spilbrættet med alle brikkerne. Der gemmes ingen information<br />
om grænserne for de enkelte brikker, der gemmes blot hvor der er sorte,<br />
hvide og frie felter. Det betyder at der ikke er nogen bestemt struktur gemt i<br />
brættet om hvordan, spillet n˚aede dette punkt. Denne anonymitet er en fordel,<br />
da det er mere end en rute <strong>til</strong> hver eneste brætsituation i spillet, og brættets<br />
fortid derfor ikke m˚a være bundet <strong>til</strong> en bestemt forgænger. I noden kaldes det<br />
to-dimensionelle array hvor bræt<strong>til</strong>standen gemmes for nodeBoard.<br />
P˚a trods af brættets p˚akrævede anonymitet er koordinatorerne <strong>til</strong> det træk, der<br />
skabte Noden, gemt i fire variabler. wc, wr, bc, br, kolonnen for det hvide felt,<br />
rækken for det hvide felt, kolonnen for det sorte felt og rækken for det sorte felt<br />
for brikken, der blev lagt for at komme <strong>til</strong> dette stadie. Disse koordinatorer er<br />
et levn fra de første versioner, hvor der ikke blev taget højde for at flere forgænger<br />
kunne lede <strong>til</strong> samme spilsituation. I de nyere versionerne bliver de dog<br />
stadig brugt <strong>til</strong> at gemme det træk, som den kunstige intelligens finder frem <strong>til</strong><br />
skal foretages. I Noden er der ogs˚a en variabel <strong>til</strong>egnet at gemme værdien som<br />
heuristikken finder n˚ar Noden evalueres. Denne variabel hedder a.<br />
Dybden gemmes ogs˚a i Noden, under navnet d. Dybden er ligesom scoren uafhængig<br />
af hvilken rute, der er blevet taget for at n˚a Noden, da der skal være<br />
blevet lagt lige mange brikker før to brætsituationer kan være ens.<br />
Til slut holder to arraylister af variable længde styr p˚a hvilke forgængere og<br />
efterkommere Noden har. Den kaldes par for parents og den anden kaldes blot<br />
children.<br />
3.2.2 Skabelsen af efterkommere:<br />
Det vil i langt de fleste af de kunstige intelligenser før eller siden være nødvendigt<br />
at skabe alle efterkommere <strong>til</strong> en given node. Da denne proces i disse <strong>til</strong>fælde er<br />
den samme, vil den blive beskrevet her. I de <strong>til</strong>fælde hvor skabelsen af efterkommer<br />
foreg˚ar p˚a anden vis vil det være beskrevet i afsnittet om den p˚agældende<br />
AI.<br />
For at skabe alle efterkommerne <strong>til</strong> en Node, er det nødvendigt at foretage alle<br />
de træk som den p˚agældende spilleplade <strong>til</strong>lader. Dette gøres ved at gennemg˚a<br />
brættet fra enden <strong>til</strong> anden og lægge brikker alle de steder det er muligt. Det<br />
nemmeste er først at gennemg˚a brættet med vandrette brikker og hver gang der<br />
findes en vandret plads <strong>til</strong> en brik oprettes to Noder, en for hver led brikken<br />
kan vender p˚a, sort-hvid og hvid-sort. Der samme gøres derefter for alle mulighederne<br />
for at lægge en brik lodret. Checkes der for b˚ade lodrette og vandrette<br />
samtidigt opst˚ar der en masse special<strong>til</strong>fælde omkring to af kanterne af brættet,