Kunstmatige intelligentie
Programmeeropgave 2 van 2014 — Domestic Robots

Domestic Robots De tweede programmeeropgave behorende bij het vak Kunstmatige intelligentie gaat over Multi-agent Systems. De bedoeling van de opdracht is om een verzameling gesimuleerde eenvoudige huishoudrobots te implementeren en een klein onderzoekje te doen naar de efficiëntie van de robots als functie van de grootte van de verzameling. Zie ook de sheets van 4 maart.

Voor deze programmeeropgave gebruiken we de programmeeromgeving GOAL. Download de laatste release en installeer deze op je eigen Linuxaccount. Start GOAL met ./goal.sh. Je mag natuurlijk ook je eigen computer en/of een ander besturingssysteem gebruiken. Meer informatie over de GUI en de programmeertaal staat in de User Manual en de Programming Guide van GOAL (bron: http://mmi.tudelft.nl/trac/goal/wiki/WikiStart#Documentation).

Bekijk als voorbeeld de Cake-agent. Deze agent heeft als doel om een cake te hebben. Merk op dat doelen een toestand van de wereld aangeven (declaratief), en niet een actie die uitgevoerd moet zijn (een cake bakken). Dit verschil is belangrijk voor de structuur van de agent, en dit zal worden gebruikt in de beoordeling van de opdracht. De cake-agent bevat commentaar met uitleg over de syntax en semantiek van GOAL. Pak de twee bestanden uit in de map waar je GOAL hebt geïnstalleerd, in de subdirectory GOALagents/HelloWorld. Open het .mas2g-bestand in GOAL en dubbelklik op de agent (cake.goal) om de code te bekijken in de ingebouwde editor. Klik op Run (ctrl-r) om het systeem te starten. Selecteer daarna de agent helloWorldAgent en klik dan op de Introspector (ctrl-d) om de huidige toestand van de agent (beliefs, goals, knowledge, percepts, messages) te kunnen bekijken. Selecteer daarna weer het systeem (HelloWorld.mas2g) en klik op Step (ctrl-t). Onderin de GUI verschijnt een trace van de agent-code in de tab helloWorldAgent. De berichten die de agent zelf print verschijnen in de tab Console. Voer het systeem stapsgewijs uit en probeer de toepassing van de regels en de veranderingen in beliefs en goals te begrijpen. Klik op Kill (ctrl-k) terwijl het .mas2g-bestand geselecteerd staat om het hele systeem te stoppen (als het agent-bestand geselecteerd staat wordt alleen de agent gestopt, dit is meestal niet de bedoeling).

Opdracht

Implementeer een verzameling agenten in de Domestic-Robot environment. Deze omgeving is meegeleverd met GOAL, maar wij gebruiken een aangepaste versie. Update (24-03-2014): het percept received is vervangen door een percept obtained(N) met een stabielere implementatie, zie verder de beschrijving. Kopieer deze naar de installatiedirectory van GOAL in de subdirectory GOALagents/Domestic. Lees de beschrijving van de acties en percepts van deze versie. De omgeving bevat een koelkast (F), een eigenaar (O) en een aantal robots (R0 t/m R9). Het doel van de robots is om consumpties in glazen flesjes van de koelkast naar de eigenaar te brengen. Hierbij kunnen de robots samenwerken, dat wil zeggen dat ze elk een gedeelte van de route afleggen. De robots zijn echter niet perfect: tijdens het verplaatsen kan een flesje op de grond vallen. Bij een langere afstand wordt de kans op vallen groter. Hierdoor is het verstandig om veel robots in te zetten die elk een klein gedeelte van de route lopen, waardoor de kans op vallen tijdens het lopen wordt verminderd. Echter, ook tijdens het overdragen van een flesje van de ene robot naar de andere kan er iets misgaan, waardoor het risico op vallen groter wordt met een groter aantal agenten.

Implementatie

Gebruik voor deze opgave de skelet-code, pak deze uit in de installatiedirectory in GOALagents/Domestic. De implementatie moet aan de volgende eisen voldoen:

Algemene informatie GOAL

GOAL is een agent-framework dat gebruikmaakt van de programmeertaal Prolog. (Zie voor enige uitleg over Prolog: uitleg met voorbeelden.) Een agent in GOAL bestaat uit de volgende elementen: Elke Program-regel bestaat uit een mogelijk samengestelde voorwaarde en een mogelijk samengestelde actie. Behalve een uitvoerbare actie in de omgeving (bv. open(fridge)) is ook het aanpassen van goals en beliefs gedefinieerd als actie. Een program cycle bestaat uit twee delen. Eerst worden alle regels uit de Event module uitgevoerd waarvan de voorwaarde waar is. Daarna wordt de eerste regel uit de Main module waarvan de voorwaarde waar is uitgevoerd.

Goals hebben dezelfde syntax als beliefs. Een belief is een overtuiging over de toestand van de wereld, een goal geeft aan wat de toestand van de wereld moet worden. Nieuwe beliefs kunnen worden toegevoegd met behulp van de actie insert of als postconditie van een omgevingsactie. Als een belief wordt toegevoegd dat overeenkomt met een van de goals wordt dit goal automatisch uit de lijst doelen van de agent verwijderd.

Tips

Deadline: dinsdag 1 april 2014, 11:00 uur.

In te leveren: een geprint exemplaar van het verslag tijdens het college, en de GOAL-code van het programma naar onderstaand adres. Het verslag moet aan verschillende eisen voldoen.


Vragen en/of opmerkingen kunnen worden gestuurd naar: W.A.Kosters@liacs.leidenuniv.nl.

24 maart 2014 — http://www.liacs.nl/home/kosters/AI/opdracht2.htm