cursus Inleiding Adaptieve Systemen Opleiding Kunstmatige Intelligentie 2020-21

Opdracht 0: Introductie

Inleiding

Dit is een inleidende opdracht. Hij is bedoeld om je op weg te helpen met NetLogo. Lees vooraf de clausules nog eens door. Als je deze opdracht vorig jaar hebt gemaakt mag je de versie van vorig jaar inleveren. Kun je hem niet meer vinden dan zul je hem opnieuw moeten maken. Lees hier hoe je je opdracht submit. Deze opdracht wordt nagekeken maar telt niet mee. Je krijgt feedback maar geen cijfer.

In deze opdracht gaan we een bestaand voorbeeld-model gebruiken als basis voor een eenvoudig multi-agent spel. Je wordt geacht de documentatie (<F1> of online) erbij te houden. Met name de NetLogo Dictionary en de Programming Guide in de linkerkantlijn. Gevonden? Dan gaan we verder.

Het spel bestaat uit twee of meer spelers die kunnen bewegen in een grid-wereld. Elke tegel waar een speler op staat krijgt de kleur van die speler. Het is de bedoeling om zo veel mogelijk tegels te kleuren. Spelers mogen alleen lopen op lege tegels, of tegels van de eigen kleur. De speler die op het laatst de meeste tegels heeft ingekleurd wint. Voor deze opdracht zijn we niet in de eerste plaats geïnteresseerd in wat de optimale policy is voor een agent. We zijn slechts geïnteresseerd in het modelleren van dit spel.

Instructies

  1. Open Netlogo. Open met <Ctrl+M> de modellenbibliotheek en typ in de zoekbox onderaan de naam van het bestaande model “Random Grid Walk Example”. Open het en bewaar het onder een ander naam. Speel er een beetje mee en bekijk daarna de code om inzicht te krijgen in wat het doet. Ga eens met de cursor op een ge-highlight woord staan en toets <F1>. Wat gebeurt er?

  2. We gaan het model wijzigen. Wat je meteen kunt doen is de view updates op “continuous” te zetten. Zo krijg je bij trage animaties (in te stellen met de speed slider) toch nog vloeiende beelden. Verder kan de walk2; button weg. Ook de drie output boxes kunnen weg, deze gaan we niet gebruiken. Om dat te doen kun je widgets selecteren door met ingedrukte muis van buiten over de widgets te slepen. Selecteer niet te veel: er is geen undo voor het deleten van widgets. Druk daarna op de “delete” knop bovenaan. Delete de bijbehorende “walk2” procedure (to walk2 ... end) in de procedure tab.

  3. Zorg in de setup dat er in plaats van één turtle (“turtle” is de default benaming voor een agent in NetLogo), twee turtles worden gemaakt. Vraag aan één van de turtles om zijn kleur naar blauw te veranderen (help: ask, one-of, set color).

  4. Laat de turtles in de setup op een willekeurige start positie starten (help: move-to, one-of, patches).

  5. In de walk1 procedure, laat voor elke turtle de patch waar hij nu op staat veranderen naar een iets donkere kleur van zichzelf (help: set, pcolor, scale-color). Het is misschien nu ook handig om de pen-down eruit te halen.

  6. In plaats van in de code face te doen naar al je vier buren, zet een restrictie op neighbors4 zodat alleen naar buren die zwart zijn of die je eigen kleur hebben wordt gekeken (help: with, or, shade-of?, pcolor, [ color ] of myself). Het woord myself verwijst altijd naar de aanroeper (hier een turtle).

  7. Laat het spel eindigen als geen enkele patch meer zwart is (help: if, not, any?, stop).

  8. Voeg een plot aan je interface toe. Vraag aan elke turtle om het aantal patches met zijn kleur te tekenen in de plot (help: Programming Guide: plotting). Let op: Elke turtle moet zijn eigen plot pen hebben.

  9. Maak het gedrag interessanter door turtles alleen van richting te laten veranderen als de volgende patch niet leeg is (help: patch-ahead).

  10. Laat patches bijhouden hoe vaak ze bezocht zijn. Doe dat door een patch-variabele visits te declareren (help: patches-own) Zorg er ook voor dat in de setup alle patches visits op nul initialiseren. Laat de patchkleur afhangen van het aantal bezoeken (help: scale-color).

  11. Wijzig face one-of neighbors4 zodanig dat turtles draaien naar de patch met de minste visits (help: min-one-of).

  12. Je probleem is nu dusdanig gemodelleerd dat het voor meer dan twee turtles werkt. Maak een slider waar je kan instellen hoeveel agents meedoen met het spel, en zorg dat elke turtle een willekeurige kleur krijgt. (Gebeurt vanzelf als je ze niet expliciet een kleur geeft.) Geef turtles ruimte door het canvas groter te maken. Gebeurt er iets onverwachts als er veel agents worden toegevoegd? Probeer dit op te lossen.

  13. Extra: zorg dat aan het einde van het spel de winnaar wordt vergroot, zonder tussentijds de huidige winnaar bij te houden.

We drukken je nogmaals op het hart alle instructies, inclusief spelregels voor Netlogo-submissies, goed door te lezen, en deze instructies te respecteren.

Voorbeelduitwerking

Hier een voorbeelduitwerking van een docent die deze opdracht ook gebruikte om Netlogo te leren. Zijn ervaringen en observaties kun je nalezen in de documentatietab. (Met rechtmuisknop downloaden, en het gedownloade bestand openen in Netlogo 6.)


Laatst gewijzigd op vrijdag 04 december 2020, om 10:50 uur ——— translate to ru, ro, or en ——— Auteur(s): Max Knobbout, Gerard Vreeswijk