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ć:

  • (:requirements :fluents) — informuje solver, że nasz model zawiera fluenty
  • :functions (…) — sekcja zawierająca wszystkie fluenty użyte w modelu
  • warunki arytmetyczne — <, >, =, etc.
  • wyrażenia arytmetyczne — (+ arg1 arg2), (- …), (* …) , (/ …)
  • zmiana wartości fluentów (increase fluent wartość), czyli fluent += wartość, i inne, np.
    • (decrease …, czyli -=
    • (assign …, czyli =
  • (:metric minimize fluent) — informuje solver, jakie plany są dla nas interesujące. Solver domyślnie zakłada istnienie tej linijki. Jeżeli jej nie ma (lub chcemy ją zignorować), powinniśmy uruchomić solver z flagą -s 0, np.
./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?
pl/dydaktyka/planning/pddl_2.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0