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
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.
Czy jesteś w stanie zamodelować problem używając tylko jednej akcji?
Czy jesteś w stanie zmodyfikować problem tak, żeby uwzględniał on fontannę? Jeżeli tak, rozwiąż Problem Bruce'a Willisa.
Czy jesteś w stanie zamodelować ten problem w MiniZincu?
5 Zagadka Druga: Ucieczka Przed Zombie
Zadania obowiązkowe
Proszę uzupełnić pliki problem.pddl
i instance.pddl
tak, aby solver rozwiązał zagadkę z filmiku.
Zadania na plus
Czy jesteś w stanie zamodelować problem używając tylko jednej akcji?
-
Czy jesteś w stanie zamodelować ten problem w MiniZincu?