source: liacs/ai/robocom/report.tex@ 280

Last change on this file since 280 was 2, checked in by Rick van der Zwet, 15 years ago

Initial import of data of old repository ('data') worth keeping (e.g. tracking
means of URL access statistics)

File size: 15.5 KB
RevLine 
[2]1%
2% $Id: report.tex 523 2008-03-18 11:09:00Z rick $
3%
4
5\documentclass[12pt,a4paper]{article}
6
7\frenchspacing
8\usepackage[english,dutch]{babel}
9\selectlanguage{dutch}
10\usepackage{graphicx}
11\usepackage{url}
12\usepackage{multicol}
13\usepackage{fancybox}
14
15\author{Rick van der Zwet, Universiteit Leiden}
16\title{Kunstmatige Intelligentie 2008 --- opdracht 2 \\
17\large{RoboCom}}
18\author{Rick van der Zwet\\
19 \texttt{<hvdzwet@liacs.nl>}\\
20 \\
21 LIACS\\
22 Leiden University\\
23 Niels Bohrweg 1\\
24 2333 CA Leiden\\
25 The Netherlands}
26\date{\today}
27
28\begin{document}
29
30\maketitle
31
32\section{Inleiding}
33
34Dit verslag gaat over de tweede programmeer-opgave van het vak
35kunstmatige intelligentie\cite{opdracht}. Welke als opdracht heeft om
36softbots te bouwen, die tijdens een simulatie met elkaar samenwerken om
37een vlag te construeren of tegen andere softbots ten strijden trekken,
38met als doel als enigste over te blijven. Dit allen als doel om de
39\emph{PEAS} beschrijving uit het college boek~\cite{collegeboek} beter te
40kunnen begrijpen.
41\section{Uitleg probleem}
42
43\emph{RoboCom} is computerprogramma welke een simulatie omgeving bied
44waarmee met assembly achtige programma code een programma wordt gemaakt
45welke een software robot kan aansturen een zogenaamde \emph{softbot}.
46Deze softbots kunnen simpele commando's zoals vermenigvuldigen, omgeving
47afzoeken, code kopiëren en andere acties
48\footnote{http://www.cyty.com/robocom/help/instr1.html}. Al deze acties
49kosten \emph{tikken}, waarbij er verschillende gradaties gemaakt worden
50aan de voorwaarden te scheppen aan de aan de omgeving waar de softbots in
51gaan `leven'. Buiten de verschillende gradaties in tikken kan er ook nog
52onderscheidt gemaakt worden via limitatie in de instructieset. Tijdens
53deze opdracht is deze gelimiteerd tot \emph{Classic}
54\footnote{http://www.cyty.com/robocom/help/instrall.html} welke de set
55is waarmee het spel origineel mee ontworpen is.
56
57Het speelbord is vierkant in representatie, maar is werkelijkheid een
58bol. De onderste rij grenst aan de bovenste rij en hetzelfde geldt voor
59de meest linker en meest rechtse column. Het bord heeft in totaal 256
60vakjes welke allen een softbot kunnen bevallen of leeg zijn. Een softbot op
61zijn beurt bestaat uit maximaal 50 \emph{banken} welke op hun beurt weer
621000 regels code kunnen bevatten.
63
64Een softbot kan actief zijn of niet. In de actieve stand is hij bezig met
65het uitvoeren van code. Waarbij begonnen wordt bij regel 1 in bank 1 en
66zo verder. Als hij bij het einde van een bank komt dan springt hij terug
67naar het begin (bank 1,regel 1). Als hij geen code kan vinden in bank 1
68dan gaat hij dood, wat ook wel \emph{data-hunger} genoemd wordt. Tijdens
69de niet actieve stand zal hij de lopende instructie stoppen en wachten
70tot hij weer geactiveerd wordt. Dit kan hij zelf niet doen.
71
72
73\begin{figure}[!ht]
74\begin{center}
75\includegraphics[scale=0.25]{speelbord}
76\end{center}
77\caption{
78Impressie van de grafische representatie van het speelbord, elk team
79krijgt een eigen kleur. Een kruis door de softbot als deze niet actief is
80(niet weergegeven). Een driehoekje geeft de richting aan in welke hij
81'kijkt'. De kleur van het driehoekje geeft aan van wie de instructie
82bank welke hij op het moment aan het uitvoeren is.
83}
84\end{figure}
85
86Hieronder volgt een paar regels voorbeeld programma assembly code:
87\begin{verbatim}
88Bank Main ; Daddy Tutorminator's program
89 @Loop
90 Turn 0 ; turn around, that's cool
91 Create 1, 2, 1 ; build a mobile child with 2 banks
92 Trans 2, 1 ; transfer RunAround into the first bank
93 ; the second bank is left empty
94 Set %active, 1 ; activate our baby
95 Jump @Loop ; ...and start over
96\end{verbatim}
97
98
99\section{Theorie}
100
101Over de softbots kan een PEAS beschrijving gegeven worden.
102\textbf{P}restatie maat is het winnen van een simulatie. Als extra
103punt zo daar eventueel aan toegevoegd kunnen worden dat dit in een zo
104kort mogelijke tijd gedaan moet worden. \textbf{E}nvironment is het
105speelbord en de andere softbots in het spel. \textbf{A}ctuatoren van de
106softbot zijn de verschillende vragen die de softbot aan de omgeving
107kan stellen. Dit zijn alle verschillende types van scannen.
108\textbf{S}ensoren zijn de acties die de softbot op de omgeving kan doen.
109Hieronder vallen acties als kopiëren, creëren, activeren.
110
111De reeds beschikbare documentatie~\cite{website-help} beschrijft
112uitvoering enkele theorieën die gebruikt kunnen worden de softbots te
113schrijven. In het kort komt het neer op de verschillende punten waar
114rekening gehouden mee moet worden. Probeer het programma zo simpel
115mogelijk te houden, een heleboel regels en/of banken kosten veel tijd om
116te dupliceren en/of uit te voeren waardoor je softbot kwetsbaarder is
117tegen simpele programma's. Gebruik simpele programma's in het begin,
118deze worden ook wel virussen genoemd, om de vijand zo veel mogelijk te
119'pesten' in de ontwikkeling van zijn softbots. Maak gebruik van meerdere
120type softbots en beperk je niet tot een tactiek. Ga bijvoorbeeld eerst met
121een simpel virus aan de slag en gebruik daarna ingewikkelde en sterkere
122softbots om het karwei af te maken.
123
124Als laatste in dit korte rijtje, zorg dat de softbots geen hinder
125ondervinden van hun eigen tactieken en let op dat de vijand dezelfde
126tactiek zal gebruiken, dus wapen je ertegen.
127
128
129\section{Aanpak}
130Bij het maken van de vlag is gebruik gemaakt van het coöperatie element
131in het spel. Tijdens het maken van de twee vecht softbots is zowel het
132competitie element gebruikt als het coöperatie element.
133
134\subsection{Vlag softbot}
135Bij een vlag cruciaal is dat de softbots netjes naast elkaar komen te
136lopen is dat de voornaamste uitdaging. Het uit programmeren hierna is
137triviaal. Om te zorgen dat de verschillende softbots elkaar kunnen
138ontmoeten wordt er gebruik maakt van het feit dat als je twee haak
139op elkaar staande lijnen trekt deze altijd ergens in een enkele lijn
140snijdt. Het algoritme in pseudo-code
141\begin{verbatim}
142while begin
143 scan vakje voor de softbot
144 switch begin
145 case leeg vakje
146 maak kloon aan
147 blijf naar kloon kijken tot deze signaal doodgaan gegeven
148 heeft ga dood
149 case bot andere kleur
150 geef signaal doodgaan aan 'staart'
151 ga rechtsom
152 continue
153 case bot eigen kleur
154 als links of recht van je een 'vijand' bot staat dan
155 klaar doe niets meer
156 anders
157 ga rechtsom
158 continue
159 end
160end
161\end{verbatim}
162
163\subsection{Defensieve softbot}
164Bij het schrijven van de eerste vechtende softbot is gekozen voor een
165defensieve tactiek, met een soort van drie meertrapsraket methode. Als eerste
166komt er een zeer simpel schild om moederbot heen welke een verlammend
167verspreidend virus infecteert aan alle softbots die in de buurt komen. Na
168een zekere tijd wordt er een nog simpeler virus geïnjecteerd dat alle
169softbots vermoord. Hierna worden ingewikkelder softbots gemaakt genaamd
170slopers welke het bord opruimen. Voordeel hierbij is dat simpele
171virussen geen vat op deze softbots hebben, want de moederbot is geschreven
172om hier immuun voor te zijn. Nadeel is echter dat er geen tot weinig
173ontwikkeling plaatsvind in de softbots, waardoor in de laatste fase van
174het spel misschien te weinig softbots dood gaan om te zorgen dat rustig de
175slopers gemaakt kunnen worden.
176
177
178\subsection{Offensieve softbot}
179De aanvallende softbot heeft een heel andere tactiek. Deze maakt gelijk
180ingewikkende softbots. Deze ingewikkende softbots infecteren de vijand met
181een simpel virus en laten dit even verspreiden. Nadien vernietigd hij
182deze softbot en maakt hij een kloon van zichzelf aan. Deze tactiek zorgt
183ervoor dat de softbots niet vatbaar zijn voor de simpele virussen, maar
184heeft als nadeel dat de softbots veel meer tijd kosten om te bouwen en dan
185kwetsbaarder kunnen zijn.
186
187
188
189
190\section{Implementatie}
191
192Er is gekozen om geen gebruik te maken voorbeeld implementaties van
193andere softbots in de eigen code. De voorbeelden in de handleidingen
194zijn wel overgenomen. De softbot code is in de RoboCom taal geschreven.
195
196\section{Experimenten}
197Alle testen zijn uitgevoerd met het programma RoboCom Workshop
198v3.10\cite{website-programma} gedraaid op een Microsoft Windows XP
199computer. Gebruikt instructie set is Classic.
200
201\subsection{Vlag}
202Tijdens het testen van het succesvol vormen van de vlag is gebruik
203gemaakt van 2 type simulaties. Als eerste is 20 keer de softbots op
204willekeurige plekken neergezet en gekeken of er een vlag uitkomt. Als
205tweede zijn de softbots 20 keer op elke keer dezelfde plek gezet en
206gekeken of deze dezelfde vlag vormen.De resultaten zijn te vinden in
207tabel~\ref{tab:vlag}
208
209\begin{center}
210\begin{table}[h]
211\caption{Resultaten plaatsingen van vlag, bij goed staat de vlag of
212horizontaal, bij matig verticaal, bij fout is erna 80000 tikken nog geen
213uitslag. De vaste plaatsing is op posities (X,Y,richting) $8,10,2$,
214$14,14,0$, $3,9,1$ }
215\begin{tabular}{l|r|r|r}
216Type & Goed & Matig & Fout \\
217\hline
218Willekeurige plaatsing & 9 & 9 & 2 \\
219Vaste plaatsing & 4 & 12 & 4 \\
220\end{tabular}
221\label{tab:vlag}
222\end{table}
223\end{center}
224
225\subsection{Vechters}
226Door het programma RoboCom wordt een set softbots meegeleverd die gelabeld
227zijn als `classic legends'. De twee softbots hebben in een tegen een
228gevechten tegen al deze classic legends gespeeld. Elke een tegen een
229gevecht is 20 keer uitgevoerd. De resultaten staan hieronder in de
230tabel~\ref{tab:defensive} voor de defensieve softbot.
231Tabel~\ref{tab:offensive} levert de resultaten voor de offensieve
232softbot.
233
234\begin{center}
235\begin{table}[h]
236\caption{Resulaten defensieve softbot na 80000 tikken, bij score telt een
237gelijkspel voor 1 punt en winst voor 3 punten en verlies niets. }
238\begin{tabular}{l|r|r|r|r}
239Tegenstander & Winst & Verlies & Gelijkspel & Score\\
240\hline
241(Cy)Borg 004c83a8n & 3 & 0 & 7 & 16\\
242Advanced Speedix 2004 & 2 & 1 & 7 & 13\\
243Africa & 2 & 0 & 8 & 14\\
244Alien v5.13d & 1 & 0 & 9 & 12\\
245Bright Star Three & 0 & 5 & 5 & 5\\
246Comes the Wuss 2 & 10 & 0 & 0 & 30\\
247CopyBot & 1 & 1 & 8 & 11\\
248Delusion 5 & 10 & 0 & 0 & 30\\
249DJ Combat - Deep Strike & 10 & 0 & 0 & 30\\
250DJ CoNTiNUuM & 0 & 2 & 8 & 8\\
251Fungus 0.2a & 0 & 0 & 10 & 10\\
252HotBot V2 & 10 & 0 & 0 & 30\\
253Hurricane6 & 10 & 0 & 0 & 30\\
254Immer mit der Ruhe! XXXVI & 9 & 0 & 1 & 28\\
255Jörg's Bisexa & 0 & 0 & 10 & 10\\
256Kreuziger V2.03q anti Killer & 10 & 0 & 0 & 30\\
257Malignant Tumor & 0 & 1 & 9 & 9\\
258Outer Limits & 10 & 0 & 0 & 30\\
259Speed Slug & 7 & 0 & 3 & 24\\
260SpiceGirls & 10 & 0 & 0 & 30\\
261Spy vs. Spy & 0 & 7 & 3 & 3\\
262\hline
263fighter-defensive-1 &17 &105 & 88 & 139
264\end{tabular}
265\label{tab:defensive}
266\end{table}
267\end{center}
268
269\begin{center}
270\begin{table}[h]
271\caption{Resulaten offensieve softbot na 80000 tikken, bij score telt een
272gelijkspel voor 1 punt en winst voor 3 punten en verlies niets. }
273\begin{tabular}{l|r|r|r|r}
274Tegenstander & Winst & Verlies & Gelijkspel & Score\\
275\hline
276(Cy)Borg 004c83a8n & 10 & 0 & 0 & 30\\
277Advanced Speedix 2004 & 10 & 0 & 0 & 30\\
278Africa & 4 & 0 & 6 & 18\\
279Alien v5.13d & 8 & 1 & 1 & 25\\
280Bright Star Three & 4 & 3 & 3 & 15\\
281Comes the Wuss 2 & 4 & 5 & 1 & 13\\
282CopyBot & 9 & 1 & 0 & 27\\
283Delusion 5 & 7 & 1 & 2 & 23\\
284DJ Combat - Deep Strike & 10 & 0 & 0 & 30\\
285DJ CoNTiNUuM & 3 & 4 & 3 & 12\\
286Fungus 0.2a & 0 & 1 & 9 & 9\\
287HotBot V2 & 0 & 0 & 10 & 10\\
288Hurricane6 & 10 & 0 & 0 & 30\\
289Immer mit der Ruhe! XXXVI & 10 & 0 & 0 & 30\\
290Jorg's Bisexa x & 0 &10 & 0 & 0 \\
291Kreuziger V2.03q anti Killer & 10 & 0 & 0 & 30\\
292Malignant Tumor & 3 & 7 & 0 & 9\\
293Outer Limits & 10 & 0 & 0 & 30\\
294Speed Slug & 9 & 0 & 1 & 28\\
295SpiceGirls & 10 & 0 & 0 & 30\\
296Spy vs. Spy & 1 & 0 & 9 & 12\\
297\hline
298fighter-offensive-2 &33 &132 & 45 & 144
299\end{tabular}
300\label{tab:offensive}
301\end{table}
302\end{center}
303
304\section{Conclusie}
305\subsection{Vlag}
306Bij het willikeurig neerzetten van de softbots gaan er slechts 2
307gevallen fout, nader onderzoek blijkt uit dat er een fout in de code is
308geslopen waardoor situaties waarbij een volledig `kruis' gemaakt word door
309een enkele softbot niet afgevangen word. Waardoor deze in een deadloop
310beland.
311Een vaste uitgangspositie levert echter heel vreemde resultaten op. De
312verwachting was dat er altijd dezelfde situatie uit zal komen, dit is
313echter totaal niet het geval, 4 gevallen worden zelfs niet opgelost. De
314oorzaak hiervan ligt niet in de softbots, maar in de implementatie van het
315programma. Het aantal softbots lijkt niet te kloppen en nader analyse
316blijkt dat er 'spook softbots' op het bord staan. Verder zijn de
317grensgevallen niet bekend. Zoals wat er bijvoorbeeld gebeurt op het
318moment dat 2 softbots op precies hetzelfde moment een instructie op de
319softbot plaatsen. Er lijkt willekeurig een keuze gedaan te worden,
320waardoor het spelverloop ernstig verstoord kan worden.
321
322Voor verder onderzoek is het aan te raden contact op te nemen met de
323ontwikkelaars om de fouten uit de simulatie te halen en dan de kijken
324hoe het geval van het `kruis' opgelost kan worden.
325
326
327\subsection{Vechters}
328Beide vechtende softbots hebben ongeveer dezelfde score, maar halen wel op
329verschillende gebieden hun punten binnen. De defensieve weet er in 41\%
330van de gevallen gelijkspel uit te slepen en is in 9\% zelfs winnend,
331waarbij dus voor 50\% van de gevallen de softbot goed presteert. Hij
332presteer slecht tegen softbots die gebruik maken van verschillende
333tactieken en meer effectieve opruim methodes hebben.
334
335De offensieve is effectief in het opruimen tegen verschillende type
336softbots waarbij de defensieve nog met een gelijkspel genoegen moet nemen,
337maar houdt het een stuk minder uit tegen de `grote jongens'.
338
339Voor verder onderzoek zou gekeken moeten worden of een combinatie van de
340vechters een goede opstelling is. Een analyse van alle verschillende
341tactieken van de tegenstanders zou ook aan te raden zijn. Door een softbot
342zo veel mogelijk te storen in zijn ontwikkeling is de beste methode
343omdat niet veel softbot bouwers rekening hebben gehouden met bijvoorbeeld
344een situatie waar alle softbots niet meer in controle zijn van de bouwer.
345
346\begin{thebibliography}{XX}
347
348\bibitem{opdracht}
349W.A.~Kosters, Kunstmatige intelligentie Programmeer-opgave 2 van 2008
350-- Bridge, \url{http://www.liacs.nl/~kosters/AI/robot.html}
351
352\bibitem{collegeboek}
353S.J. Russell en P. Norvig, Artificial Intelligence, A Modern Approach,
354Second ediion, Prentice Hall, 2003.
355
356\bibitem{website}
357Robocom, official website, latest version
358\url{http://cyty.com/robocom/}
359
360\bibitem{website-help}
361Robocom help, official website, latest version
362\url{http://www.cyty.com/robocom/?area=help}
363
364\bibitem{website-programma}
365Robocom Workshop, official website, latest version
366\url{http://www.cyty.com/robocom/?area=d\_rcws}
367
368\end{thebibliography}
369
370\section*{Appendix}
371De obot programma's zagen er als volgt uit:
372\tiny
373\advance\textwidth by 8cm
374\advance\oddsidemargin by -3cm
375\advance\evensidemargin by -3cm
376\advance\topmargin by -2cm
377\advance\textheight by 2cm
378\advance\footskip by -2cm
379\marginparwidth 0cm
380\twocolumn
381%c++ input preformatted with `source-highlight -n -f latex bridge.cc`
382\include{figure-flag-v2.rob}
383\include{fighter-defensive-1.rob}
384\include{fighter-offensive-2.rob}
385\onecolumn
386
387\end{document}
Note: See TracBrowser for help on using the repository browser.