Spis treści

Planowanie z zastosowaniem Fluentów

Celem laboratorium jest rozszerzenie wiedzy na temat języka PDDL o tzw. fluenty. Laboratoria opierają się o samodzielną pracę nad planowaniem w kontekście popularnych zagadek logicznych.

1 Preliminaria

Dotychczas nasza reprezentacja problemów planowania opierała się o rachunek predykatów pierwszego rzędu. Standard PDDL 2.1 rozszerza tę reprezentacje o fluenty, które w przypadku PDDL przyjmują postać przypominającą zmienne znane z klasycznych języków programowania. Prócz predykatów w modelu znajdą się funkcje, które zwracają wartości, które będą zmieniać się w czasie.

2 Przygotowania

Proszę ściągnąć kod solvera wspierającego PDDL 2.1 wraz z problemami, które będziemy dzisiaj modelować. Proszę w konsoli przejść do rozpakowanego katalogu i przetestować działanie solvera:

./ff -o ./examples/hanoi/problem.pddl -f ./examples/hanoi/instance.pddl

Jeżeli komenda nie działa, proszę przekompilować solver. Instrukcje nie różnią się od tych przedstawionych na poprzednim laboratorium w sekcji 5.

3 Przykład: Hanoi

Nowy solver wspiera kilka nowych konstrukcji. Proszę przyjrzeć się plikom: ./examples/hanoi/problem.pddl i ./examples/hanoi/instance.pddl. Do nowości należy zaliczyć:

./ff -o ./examples/hanoi/problem.pddl -f ./examples/hanoi/instance.pddl -s 0

Proszę przeanalizować przykład i wykorzystać jako referencję do rozwiązywania kolejnych problemów.

4 Zagadka Pierwsza: Problem Bruce'a Willisa

Proszę obejrzeć fragment Szklanej Pułapki 3. Przedstawiona tam zagadka należy do dość dużej rodziny problemów - katalog ./examples/jugs zawiera model podobnego problemu przelewania wody.

Zadania obowiązkowe

Proszę uzupełnić plik problem.pddl, tak, aby rozwiązać instancję instance.pddl (plan powinien składać się z 16 akcji).

Zadania na plus

W PDDL 2.1 można formułować efekty warunkowe:

(when (warunek)
  (efekt)
)

Oznacza to, że dana akcja będzie miała określony efekt jedynie, gdy spełniony jest zadany warunek.

  1. Czy jesteś w stanie zamodelować problem używając tylko jednej akcji?
  2. Czy jesteś w stanie zmodyfikować problem tak, żeby uwzględniał on fontannę? Jeżeli tak, rozwiąż Problem Bruce'a Willisa.
  3. Czy jesteś w stanie zamodelować ten problem w MiniZincu?

5 Zagadka Druga: Ucieczka Przed Zombie

Proszę obejrzeć pierwsze dwie minuty filmu ze strony o interesujących problemach. Katalog ./examples/zombie-escape zawiera pliki związane z przedstawioną tam zagadką.

Zadania obowiązkowe

Proszę uzupełnić pliki problem.pddl i instance.pddl tak, aby solver rozwiązał zagadkę z filmiku.

Zadania na plus

  1. Czy jesteś w stanie zamodelować problem używając tylko jednej akcji?
  2. Czy jesteś w stanie w podobny sposób zamodelować problem misjonarzy i kanibali?
  3. Czy jesteś w stanie zamodelować ten problem w MiniZincu?