Zadanie polega na napisaniu programu agenta do zagadnienia wumpusa. Program musi być napisany w Prologu i będzie wykonywany przez symulator świata wumpusa o nazwie Jovolog, prezentowany na zajęciach. Symulator ma wbudowaną wersję interpretera Prologu o nazwie tuProlog.

Agent powinien starać się znaleźć złoto i zakończyć grę unikając zagrożeń (wumpusa i rozpadlin). Pozyskanie złota daje +1000 punktów, a wykonanie każdej akcji -1 punkt, z wyjątkiem wystrzelenia strzały, które dolicza -5 punktów. Jeśli gra kończy się śmiercią agenta (przez wumpusa albo dziurę), zamiast normalnego wyjścia, doliczane jest -1000 punktów. Celem strategii agenta powinna być maksymalizacja średniego wyniku punktowego na "średnim" świecie. Agent może wycofać się bez znalezienia złota, jeśli nie może go znaleźć, albo może czasem podejmować kroki ryzykowne. Ogólnie powinien działać oportunistycznie, to znaczy wykorzystywać do maksimum korzystne sytuacje.

W dodatku do ogólnych praw świata wumpusa, przedstawionych na zajęciach, przyjmujemy następujące założenia. Świat wumpusa jest prostokątem o dowolnych ale znanych rozmiarach, które są udostępniane agentowi w kroku 1. Istnieje dokładnie jeden wumpus, jedno złoto, i pewna liczba dziur, losowo rozmieszczonych. Agent zawsze rozpoczyna w polu (1,1) skierowany na wschód, i ma jedną strzałę.

Technicznie, program agenta musi pozytywnie odpowiedzieć na zapytanie act(Action,Knowledge) z pełną unifikacją obu zmiennych do wartości stałych. Zmienna Action określa akcję wybraną przez agenta w bieżącym ruchu. Zmienna Knowledge jest równa liście faktów, które agent pragnie zachować na następne uruchomienie programu w kolejnym ruchu. Zmienna Knowledge tworzy mechanizm, za pomocą którego agent może budować swoją wiedzę wynikającą z eksploracji świata wumpusa.

Agent świata wumpusa powinien poszukiwać złota, tzn. nie może ograniczyć się do krótkiej rundy po świecie i wycofania się. Ocena zadania składa się z oceny bazowej za samodzielnie napisany program agenta, który powinien znajdować złoto co najmniej w najprostszych przypadkach. Do tej oceny doliczana jest premia za sumaryczny wynik punktowy uzyskany przez agenta. Niepoprawny program agenta, tzn. taki, który albo nie jest poprawnym programem Prologu, albo nie odpowiada twierdząco na zapytanie act z odpowiednią unifikacją argumentów, albo w ogóle nie kończy pracy w rozsądnym czasie, otrzyma natomiast karę (poza utratą punktów wynikającą z nieukończenia danej rundy). Warto więc zwrócić uwagę na poprawność programu.

Opis symulatora i świata wumpusa: http://www.kcir.pwr.edu.pl/%7Ewitold/aiuwr/2010_projekty/jovolog/

Symulator można pobrać z linka: http://www.kcir.pwr.edu.pl/%7Ewitold/ai/jovolog.tar.gz

W tym pakiecie znajdują się przykładowe programy agenta omawiane na zajęciach. Ilustrują one realizację prostej strategii z nawigacją w świecie wumpusa. Jednak nie zawierają żadnych zabezpieczeń przed zagrożeniami świata wumpusa, ani żadnej metody systematycznego przeszukiwania tego świata.

Jeśli nigdy wcześniej nie miałeś/aś do czynienia z Prologiem, to najlepiej jest zacząć od przeczytania i przerobienia jakiegoś podręcznika/samouczka (tutorial), aby zapoznać się z językiem i mechanizmami działania Prologu. (Na stronie kursu jest kilka linków do takich podręczników on-line; użyj jednego z nich lub znajdź inny, który bardziej Ci odpowiada.)

Zwróć uwagę na mechanizmy rekurencyjne - np. Prolog wywołujący się rekurencyjnie w celu udowodnienia faktu pośredniego, potrzebnego mu w trakcie dowodzenia innego faktu na wyższym poziomie. Jak również rekurencyjnie zapisywane reguły programu. Warto samodzielnie przerobić ćwiczenia z takiego samouczka, przynajmniej w zakresie: tworzenia faktów i reguł, oraz budowania i przeszukiwania list.

Pomimo iż w trakcie pracy nad strategią świata wumpusa uruchamianie oddzielnego interpretera Prologu nie jest potrzebne, to warto taki interpreter sobie zainstalować i przećwiczyć na nim podstawowe operacje: uruchamiania interpretera, wczytywania programu, inicjowania zapytań, oraz prostych mechanizmów debugowania (np. przez wyświetlanie komunikatów na stdout). Popularnym i łatwo dostępnym interpreterem Prologu jest SWI Prolog - projekt społecznościowy oryginalnie wywodzący się z University of Amsterdam. Innym popularnym systemem jest Gnu Prolog napisany przez Daniela Diaza.