| 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 |
|
---|
| 34 | Dit verslag gaat over de tweede programmeer-opgave van het vak
|
---|
| 35 | kunstmatige intelligentie\cite{opdracht}. Welke als opdracht heeft om
|
---|
| 36 | softbots te bouwen, die tijdens een simulatie met elkaar samenwerken om
|
---|
| 37 | een vlag te construeren of tegen andere softbots ten strijden trekken,
|
---|
| 38 | met 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
|
---|
| 40 | kunnen begrijpen.
|
---|
| 41 | \section{Uitleg probleem}
|
---|
| 42 |
|
---|
| 43 | \emph{RoboCom} is computerprogramma welke een simulatie omgeving bied
|
---|
| 44 | waarmee met assembly achtige programma code een programma wordt gemaakt
|
---|
| 45 | welke een software robot kan aansturen een zogenaamde \emph{softbot}.
|
---|
| 46 | Deze softbots kunnen simpele commando's zoals vermenigvuldigen, omgeving
|
---|
| 47 | afzoeken, code kopiëren en andere acties
|
---|
| 48 | \footnote{http://www.cyty.com/robocom/help/instr1.html}. Al deze acties
|
---|
| 49 | kosten \emph{tikken}, waarbij er verschillende gradaties gemaakt worden
|
---|
| 50 | aan de voorwaarden te scheppen aan de aan de omgeving waar de softbots in
|
---|
| 51 | gaan `leven'. Buiten de verschillende gradaties in tikken kan er ook nog
|
---|
| 52 | onderscheidt gemaakt worden via limitatie in de instructieset. Tijdens
|
---|
| 53 | deze opdracht is deze gelimiteerd tot \emph{Classic}
|
---|
| 54 | \footnote{http://www.cyty.com/robocom/help/instrall.html} welke de set
|
---|
| 55 | is waarmee het spel origineel mee ontworpen is.
|
---|
| 56 |
|
---|
| 57 | Het speelbord is vierkant in representatie, maar is werkelijkheid een
|
---|
| 58 | bol. De onderste rij grenst aan de bovenste rij en hetzelfde geldt voor
|
---|
| 59 | de meest linker en meest rechtse column. Het bord heeft in totaal 256
|
---|
| 60 | vakjes welke allen een softbot kunnen bevallen of leeg zijn. Een softbot op
|
---|
| 61 | zijn beurt bestaat uit maximaal 50 \emph{banken} welke op hun beurt weer
|
---|
| 62 | 1000 regels code kunnen bevatten.
|
---|
| 63 |
|
---|
| 64 | Een softbot kan actief zijn of niet. In de actieve stand is hij bezig met
|
---|
| 65 | het uitvoeren van code. Waarbij begonnen wordt bij regel 1 in bank 1 en
|
---|
| 66 | zo verder. Als hij bij het einde van een bank komt dan springt hij terug
|
---|
| 67 | naar het begin (bank 1,regel 1). Als hij geen code kan vinden in bank 1
|
---|
| 68 | dan gaat hij dood, wat ook wel \emph{data-hunger} genoemd wordt. Tijdens
|
---|
| 69 | de niet actieve stand zal hij de lopende instructie stoppen en wachten
|
---|
| 70 | tot 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{
|
---|
| 78 | Impressie van de grafische representatie van het speelbord, elk team
|
---|
| 79 | krijgt 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
|
---|
| 82 | bank welke hij op het moment aan het uitvoeren is.
|
---|
| 83 | }
|
---|
| 84 | \end{figure}
|
---|
| 85 |
|
---|
| 86 | Hieronder volgt een paar regels voorbeeld programma assembly code:
|
---|
| 87 | \begin{verbatim}
|
---|
| 88 | Bank 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 |
|
---|
| 101 | Over de softbots kan een PEAS beschrijving gegeven worden.
|
---|
| 102 | \textbf{P}restatie maat is het winnen van een simulatie. Als extra
|
---|
| 103 | punt zo daar eventueel aan toegevoegd kunnen worden dat dit in een zo
|
---|
| 104 | kort mogelijke tijd gedaan moet worden. \textbf{E}nvironment is het
|
---|
| 105 | speelbord en de andere softbots in het spel. \textbf{A}ctuatoren van de
|
---|
| 106 | softbot zijn de verschillende vragen die de softbot aan de omgeving
|
---|
| 107 | kan stellen. Dit zijn alle verschillende types van scannen.
|
---|
| 108 | \textbf{S}ensoren zijn de acties die de softbot op de omgeving kan doen.
|
---|
| 109 | Hieronder vallen acties als kopiëren, creëren, activeren.
|
---|
| 110 |
|
---|
| 111 | De reeds beschikbare documentatie~\cite{website-help} beschrijft
|
---|
| 112 | uitvoering enkele theorieën die gebruikt kunnen worden de softbots te
|
---|
| 113 | schrijven. In het kort komt het neer op de verschillende punten waar
|
---|
| 114 | rekening gehouden mee moet worden. Probeer het programma zo simpel
|
---|
| 115 | mogelijk te houden, een heleboel regels en/of banken kosten veel tijd om
|
---|
| 116 | te dupliceren en/of uit te voeren waardoor je softbot kwetsbaarder is
|
---|
| 117 | tegen simpele programma's. Gebruik simpele programma's in het begin,
|
---|
| 118 | deze worden ook wel virussen genoemd, om de vijand zo veel mogelijk te
|
---|
| 119 | 'pesten' in de ontwikkeling van zijn softbots. Maak gebruik van meerdere
|
---|
| 120 | type softbots en beperk je niet tot een tactiek. Ga bijvoorbeeld eerst met
|
---|
| 121 | een simpel virus aan de slag en gebruik daarna ingewikkelde en sterkere
|
---|
| 122 | softbots om het karwei af te maken.
|
---|
| 123 |
|
---|
| 124 | Als laatste in dit korte rijtje, zorg dat de softbots geen hinder
|
---|
| 125 | ondervinden van hun eigen tactieken en let op dat de vijand dezelfde
|
---|
| 126 | tactiek zal gebruiken, dus wapen je ertegen.
|
---|
| 127 |
|
---|
| 128 |
|
---|
| 129 | \section{Aanpak}
|
---|
| 130 | Bij het maken van de vlag is gebruik gemaakt van het coöperatie element
|
---|
| 131 | in het spel. Tijdens het maken van de twee vecht softbots is zowel het
|
---|
| 132 | competitie element gebruikt als het coöperatie element.
|
---|
| 133 |
|
---|
| 134 | \subsection{Vlag softbot}
|
---|
| 135 | Bij een vlag cruciaal is dat de softbots netjes naast elkaar komen te
|
---|
| 136 | lopen is dat de voornaamste uitdaging. Het uit programmeren hierna is
|
---|
| 137 | triviaal. Om te zorgen dat de verschillende softbots elkaar kunnen
|
---|
| 138 | ontmoeten wordt er gebruik maakt van het feit dat als je twee haak
|
---|
| 139 | op elkaar staande lijnen trekt deze altijd ergens in een enkele lijn
|
---|
| 140 | snijdt. Het algoritme in pseudo-code
|
---|
| 141 | \begin{verbatim}
|
---|
| 142 | while 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
|
---|
| 160 | end
|
---|
| 161 | \end{verbatim}
|
---|
| 162 |
|
---|
| 163 | \subsection{Defensieve softbot}
|
---|
| 164 | Bij het schrijven van de eerste vechtende softbot is gekozen voor een
|
---|
| 165 | defensieve tactiek, met een soort van drie meertrapsraket methode. Als eerste
|
---|
| 166 | komt er een zeer simpel schild om moederbot heen welke een verlammend
|
---|
| 167 | verspreidend virus infecteert aan alle softbots die in de buurt komen. Na
|
---|
| 168 | een zekere tijd wordt er een nog simpeler virus geïnjecteerd dat alle
|
---|
| 169 | softbots vermoord. Hierna worden ingewikkelder softbots gemaakt genaamd
|
---|
| 170 | slopers welke het bord opruimen. Voordeel hierbij is dat simpele
|
---|
| 171 | virussen geen vat op deze softbots hebben, want de moederbot is geschreven
|
---|
| 172 | om hier immuun voor te zijn. Nadeel is echter dat er geen tot weinig
|
---|
| 173 | ontwikkeling plaatsvind in de softbots, waardoor in de laatste fase van
|
---|
| 174 | het spel misschien te weinig softbots dood gaan om te zorgen dat rustig de
|
---|
| 175 | slopers gemaakt kunnen worden.
|
---|
| 176 |
|
---|
| 177 |
|
---|
| 178 | \subsection{Offensieve softbot}
|
---|
| 179 | De aanvallende softbot heeft een heel andere tactiek. Deze maakt gelijk
|
---|
| 180 | ingewikkende softbots. Deze ingewikkende softbots infecteren de vijand met
|
---|
| 181 | een simpel virus en laten dit even verspreiden. Nadien vernietigd hij
|
---|
| 182 | deze softbot en maakt hij een kloon van zichzelf aan. Deze tactiek zorgt
|
---|
| 183 | ervoor dat de softbots niet vatbaar zijn voor de simpele virussen, maar
|
---|
| 184 | heeft als nadeel dat de softbots veel meer tijd kosten om te bouwen en dan
|
---|
| 185 | kwetsbaarder kunnen zijn.
|
---|
| 186 |
|
---|
| 187 |
|
---|
| 188 |
|
---|
| 189 |
|
---|
| 190 | \section{Implementatie}
|
---|
| 191 |
|
---|
| 192 | Er is gekozen om geen gebruik te maken voorbeeld implementaties van
|
---|
| 193 | andere softbots in de eigen code. De voorbeelden in de handleidingen
|
---|
| 194 | zijn wel overgenomen. De softbot code is in de RoboCom taal geschreven.
|
---|
| 195 |
|
---|
| 196 | \section{Experimenten}
|
---|
| 197 | Alle testen zijn uitgevoerd met het programma RoboCom Workshop
|
---|
| 198 | v3.10\cite{website-programma} gedraaid op een Microsoft Windows XP
|
---|
| 199 | computer. Gebruikt instructie set is Classic.
|
---|
| 200 |
|
---|
| 201 | \subsection{Vlag}
|
---|
| 202 | Tijdens het testen van het succesvol vormen van de vlag is gebruik
|
---|
| 203 | gemaakt van 2 type simulaties. Als eerste is 20 keer de softbots op
|
---|
| 204 | willekeurige plekken neergezet en gekeken of er een vlag uitkomt. Als
|
---|
| 205 | tweede zijn de softbots 20 keer op elke keer dezelfde plek gezet en
|
---|
| 206 | gekeken of deze dezelfde vlag vormen.De resultaten zijn te vinden in
|
---|
| 207 | tabel~\ref{tab:vlag}
|
---|
| 208 |
|
---|
| 209 | \begin{center}
|
---|
| 210 | \begin{table}[h]
|
---|
| 211 | \caption{Resultaten plaatsingen van vlag, bij goed staat de vlag of
|
---|
| 212 | horizontaal, bij matig verticaal, bij fout is erna 80000 tikken nog geen
|
---|
| 213 | uitslag. 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}
|
---|
| 216 | Type & Goed & Matig & Fout \\
|
---|
| 217 | \hline
|
---|
| 218 | Willekeurige plaatsing & 9 & 9 & 2 \\
|
---|
| 219 | Vaste plaatsing & 4 & 12 & 4 \\
|
---|
| 220 | \end{tabular}
|
---|
| 221 | \label{tab:vlag}
|
---|
| 222 | \end{table}
|
---|
| 223 | \end{center}
|
---|
| 224 |
|
---|
| 225 | \subsection{Vechters}
|
---|
| 226 | Door het programma RoboCom wordt een set softbots meegeleverd die gelabeld
|
---|
| 227 | zijn als `classic legends'. De twee softbots hebben in een tegen een
|
---|
| 228 | gevechten tegen al deze classic legends gespeeld. Elke een tegen een
|
---|
| 229 | gevecht is 20 keer uitgevoerd. De resultaten staan hieronder in de
|
---|
| 230 | tabel~\ref{tab:defensive} voor de defensieve softbot.
|
---|
| 231 | Tabel~\ref{tab:offensive} levert de resultaten voor de offensieve
|
---|
| 232 | softbot.
|
---|
| 233 |
|
---|
| 234 | \begin{center}
|
---|
| 235 | \begin{table}[h]
|
---|
| 236 | \caption{Resulaten defensieve softbot na 80000 tikken, bij score telt een
|
---|
| 237 | gelijkspel voor 1 punt en winst voor 3 punten en verlies niets. }
|
---|
| 238 | \begin{tabular}{l|r|r|r|r}
|
---|
| 239 | Tegenstander & Winst & Verlies & Gelijkspel & Score\\
|
---|
| 240 | \hline
|
---|
| 241 | (Cy)Borg 004c83a8n & 3 & 0 & 7 & 16\\
|
---|
| 242 | Advanced Speedix 2004 & 2 & 1 & 7 & 13\\
|
---|
| 243 | Africa & 2 & 0 & 8 & 14\\
|
---|
| 244 | Alien v5.13d & 1 & 0 & 9 & 12\\
|
---|
| 245 | Bright Star Three & 0 & 5 & 5 & 5\\
|
---|
| 246 | Comes the Wuss 2 & 10 & 0 & 0 & 30\\
|
---|
| 247 | CopyBot & 1 & 1 & 8 & 11\\
|
---|
| 248 | Delusion 5 & 10 & 0 & 0 & 30\\
|
---|
| 249 | DJ Combat - Deep Strike & 10 & 0 & 0 & 30\\
|
---|
| 250 | DJ CoNTiNUuM & 0 & 2 & 8 & 8\\
|
---|
| 251 | Fungus 0.2a & 0 & 0 & 10 & 10\\
|
---|
| 252 | HotBot V2 & 10 & 0 & 0 & 30\\
|
---|
| 253 | Hurricane6 & 10 & 0 & 0 & 30\\
|
---|
| 254 | Immer mit der Ruhe! XXXVI & 9 & 0 & 1 & 28\\
|
---|
| 255 | Jörg's Bisexa & 0 & 0 & 10 & 10\\
|
---|
| 256 | Kreuziger V2.03q anti Killer & 10 & 0 & 0 & 30\\
|
---|
| 257 | Malignant Tumor & 0 & 1 & 9 & 9\\
|
---|
| 258 | Outer Limits & 10 & 0 & 0 & 30\\
|
---|
| 259 | Speed Slug & 7 & 0 & 3 & 24\\
|
---|
| 260 | SpiceGirls & 10 & 0 & 0 & 30\\
|
---|
| 261 | Spy vs. Spy & 0 & 7 & 3 & 3\\
|
---|
| 262 | \hline
|
---|
| 263 | fighter-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
|
---|
| 272 | gelijkspel voor 1 punt en winst voor 3 punten en verlies niets. }
|
---|
| 273 | \begin{tabular}{l|r|r|r|r}
|
---|
| 274 | Tegenstander & Winst & Verlies & Gelijkspel & Score\\
|
---|
| 275 | \hline
|
---|
| 276 | (Cy)Borg 004c83a8n & 10 & 0 & 0 & 30\\
|
---|
| 277 | Advanced Speedix 2004 & 10 & 0 & 0 & 30\\
|
---|
| 278 | Africa & 4 & 0 & 6 & 18\\
|
---|
| 279 | Alien v5.13d & 8 & 1 & 1 & 25\\
|
---|
| 280 | Bright Star Three & 4 & 3 & 3 & 15\\
|
---|
| 281 | Comes the Wuss 2 & 4 & 5 & 1 & 13\\
|
---|
| 282 | CopyBot & 9 & 1 & 0 & 27\\
|
---|
| 283 | Delusion 5 & 7 & 1 & 2 & 23\\
|
---|
| 284 | DJ Combat - Deep Strike & 10 & 0 & 0 & 30\\
|
---|
| 285 | DJ CoNTiNUuM & 3 & 4 & 3 & 12\\
|
---|
| 286 | Fungus 0.2a & 0 & 1 & 9 & 9\\
|
---|
| 287 | HotBot V2 & 0 & 0 & 10 & 10\\
|
---|
| 288 | Hurricane6 & 10 & 0 & 0 & 30\\
|
---|
| 289 | Immer mit der Ruhe! XXXVI & 10 & 0 & 0 & 30\\
|
---|
| 290 | Jorg's Bisexa x & 0 &10 & 0 & 0 \\
|
---|
| 291 | Kreuziger V2.03q anti Killer & 10 & 0 & 0 & 30\\
|
---|
| 292 | Malignant Tumor & 3 & 7 & 0 & 9\\
|
---|
| 293 | Outer Limits & 10 & 0 & 0 & 30\\
|
---|
| 294 | Speed Slug & 9 & 0 & 1 & 28\\
|
---|
| 295 | SpiceGirls & 10 & 0 & 0 & 30\\
|
---|
| 296 | Spy vs. Spy & 1 & 0 & 9 & 12\\
|
---|
| 297 | \hline
|
---|
| 298 | fighter-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}
|
---|
| 306 | Bij het willikeurig neerzetten van de softbots gaan er slechts 2
|
---|
| 307 | gevallen fout, nader onderzoek blijkt uit dat er een fout in de code is
|
---|
| 308 | geslopen waardoor situaties waarbij een volledig `kruis' gemaakt word door
|
---|
| 309 | een enkele softbot niet afgevangen word. Waardoor deze in een deadloop
|
---|
| 310 | beland.
|
---|
| 311 | Een vaste uitgangspositie levert echter heel vreemde resultaten op. De
|
---|
| 312 | verwachting was dat er altijd dezelfde situatie uit zal komen, dit is
|
---|
| 313 | echter totaal niet het geval, 4 gevallen worden zelfs niet opgelost. De
|
---|
| 314 | oorzaak hiervan ligt niet in de softbots, maar in de implementatie van het
|
---|
| 315 | programma. Het aantal softbots lijkt niet te kloppen en nader analyse
|
---|
| 316 | blijkt dat er 'spook softbots' op het bord staan. Verder zijn de
|
---|
| 317 | grensgevallen niet bekend. Zoals wat er bijvoorbeeld gebeurt op het
|
---|
| 318 | moment dat 2 softbots op precies hetzelfde moment een instructie op de
|
---|
| 319 | softbot plaatsen. Er lijkt willekeurig een keuze gedaan te worden,
|
---|
| 320 | waardoor het spelverloop ernstig verstoord kan worden.
|
---|
| 321 |
|
---|
| 322 | Voor verder onderzoek is het aan te raden contact op te nemen met de
|
---|
| 323 | ontwikkelaars om de fouten uit de simulatie te halen en dan de kijken
|
---|
| 324 | hoe het geval van het `kruis' opgelost kan worden.
|
---|
| 325 |
|
---|
| 326 |
|
---|
| 327 | \subsection{Vechters}
|
---|
| 328 | Beide vechtende softbots hebben ongeveer dezelfde score, maar halen wel op
|
---|
| 329 | verschillende gebieden hun punten binnen. De defensieve weet er in 41\%
|
---|
| 330 | van de gevallen gelijkspel uit te slepen en is in 9\% zelfs winnend,
|
---|
| 331 | waarbij dus voor 50\% van de gevallen de softbot goed presteert. Hij
|
---|
| 332 | presteer slecht tegen softbots die gebruik maken van verschillende
|
---|
| 333 | tactieken en meer effectieve opruim methodes hebben.
|
---|
| 334 |
|
---|
| 335 | De offensieve is effectief in het opruimen tegen verschillende type
|
---|
| 336 | softbots waarbij de defensieve nog met een gelijkspel genoegen moet nemen,
|
---|
| 337 | maar houdt het een stuk minder uit tegen de `grote jongens'.
|
---|
| 338 |
|
---|
| 339 | Voor verder onderzoek zou gekeken moeten worden of een combinatie van de
|
---|
| 340 | vechters een goede opstelling is. Een analyse van alle verschillende
|
---|
| 341 | tactieken van de tegenstanders zou ook aan te raden zijn. Door een softbot
|
---|
| 342 | zo veel mogelijk te storen in zijn ontwikkeling is de beste methode
|
---|
| 343 | omdat niet veel softbot bouwers rekening hebben gehouden met bijvoorbeeld
|
---|
| 344 | een situatie waar alle softbots niet meer in controle zijn van de bouwer.
|
---|
| 345 |
|
---|
| 346 | \begin{thebibliography}{XX}
|
---|
| 347 |
|
---|
| 348 | \bibitem{opdracht}
|
---|
| 349 | W.A.~Kosters, Kunstmatige intelligentie Programmeer-opgave 2 van 2008
|
---|
| 350 | -- Bridge, \url{http://www.liacs.nl/~kosters/AI/robot.html}
|
---|
| 351 |
|
---|
| 352 | \bibitem{collegeboek}
|
---|
| 353 | S.J. Russell en P. Norvig, Artificial Intelligence, A Modern Approach,
|
---|
| 354 | Second ediion, Prentice Hall, 2003.
|
---|
| 355 |
|
---|
| 356 | \bibitem{website}
|
---|
| 357 | Robocom, official website, latest version
|
---|
| 358 | \url{http://cyty.com/robocom/}
|
---|
| 359 |
|
---|
| 360 | \bibitem{website-help}
|
---|
| 361 | Robocom help, official website, latest version
|
---|
| 362 | \url{http://www.cyty.com/robocom/?area=help}
|
---|
| 363 |
|
---|
| 364 | \bibitem{website-programma}
|
---|
| 365 | Robocom Workshop, official website, latest version
|
---|
| 366 | \url{http://www.cyty.com/robocom/?area=d\_rcws}
|
---|
| 367 |
|
---|
| 368 | \end{thebibliography}
|
---|
| 369 |
|
---|
| 370 | \section*{Appendix}
|
---|
| 371 | De 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}
|
---|