Both sides previous revision
Previous revision
Next revision
|
Previous revision
|
en:dydaktyka:planning:pddl2 [2017/04/23 15:31] msl [2 Tools] |
en:dydaktyka:planning:pddl2 [2020/04/14 11:32] (current) msl |
====== - Extending Planning Domains with Fluents ====== | ====== - Extending Planning Domains with Fluents ====== |
| |
This class covers usage of the PDDL 2.1 main feature --- so called ''fluents''. Student is expected to understand it's notion and use it to solve some popular logical puzzles. | This class covers usage of the PDDL 2.1 main feature --- so called ''fluents''. Student is expected to understand the new construct and use it to solve some popular logical puzzles. |
| |
| <WRAP center round important 60%> |
| Due to the COVID-19 outbreak, all files related to this class are stored in the [[https://gitlab.com/agh-krr/2019-2020/labs-planning|Gitlab repository]]. This class uses files stored in the ''02_fluents'' folder. Please refer to the ''Readme.md'' on how to submit the solutions. |
| </WRAP> |
| |
===== - Preliminaries ===== | ===== - Preliminaries ===== |
| |
===== - Tools ===== | ===== - Tools ===== |
Please download {{:en:dydaktyka:planning:metric-ff-lab.zip|source code of PDDL 2.1 solver}}. The package includes also some examples we will refer to during the class. Please run to terminal and switch to the root folder of the package and then try: | Please clone [[https://gitlab.com/agh-krr/2019-2020/labs-planning |repository with the PDDL 2.1 solver]]. The package includes also ''pddl'' files in the ''02_fluents'' directory, related to this class. Please run to terminal and switch to the root folder of the package and then try: |
| |
<code bash> | <code bash> |
./ff -o ./examples/hanoi/problem.pddl -f ./examples/hanoi/instance.pddl | ./ff -o ./02_fluents/01_hanoi/domain.pddl -f ./02_fluents/01_hanoi/problem.pddl |
</code> | </code> |
If command fails, try to recompile the solver (you can refer to [[pddl#automated_solving_of_problems_written_in_pddl||the analogical section of the previous class]]). | |
| |
===== - Przykład: Hanoi ===== | Replace ''ff'' with appropriate one, e.g. ''ff-macos'' on macOS. In case, none of the binaries works for you, you can build the planner according to the instruction in the repo's ''README.md''. |
| |
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ć: | ===== - Example: Hanoi ===== |
| |
* ''(:requirements :fluents)'' --- informuje solver, że nasz model zawiera fluenty | The new solver supports some new statements. Please check the files: ''./lab2/hanoi/domain.pddl'' i ''./lab2/hanoi/problem.pddl''. The new things include: |
* '':functions (...)'' --- sekcja zawierająca wszystkie fluenty użyte w modelu | |
* warunki arytmetyczne --- ''<'', ''>'', ''='', etc. | * ''(:requirements :fluents)'' --- informs solver that we want to use fluents |
* wyrażenia arytmetyczne --- ''(+ arg1 arg2)'', ''(- ...)'', ''(* ...)'' , ''(/ ...)'' | * '':functions (...)'' --- enumerates all fluents used in the model |
* zmiana wartości fluentów ''(increase fluent wartość)'', czyli ''fluent += wartość'', i inne, np. | * arithmetical conditions --- ''<'', ''>'', ''='', etc. |
* ''(decrease ...'', czyli ''-='' | * arithmetical expressions --- ''(+ arg1 arg2)'', ''(- ...)'', ''(* ...)'' , ''(/ ...)'' |
* ''(assign ...'', czyli ''='' | * expression that change fluents' values: ''(increase fluent newValue)'' (in C it would be ''fluent += wartość''), and others, i.e. |
* ''(: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. | * ''(decrease ...)'' --- the same as ''-='' in C |
| * ''(assign ...)'' --- the same as ''='' in C |
| * ''(:metric minimize fluent)'' --- informs solver what plans we find interesting / optimal. It should be provided, otherwise solver will complain. If you want to ignore it, run solver with ''-s 0'' option, i.e. |
| |
<code bash> | <code bash> |
./ff -o ./examples/hanoi/problem.pddl -f ./examples/hanoi/instance.pddl -s 0 | ./ff -o ./02_fluents/01_hanoi/domain.pddl -f ./02_fluents/01_hanoi/problem.pddl -s 0 |
</code> | </code> |
| |
Proszę przeanalizować przykład i wykorzystać jako referencję do rozwiązywania kolejnych problemów. | Analyze the hanoi example and use it as a reference for further problems. |
| |
===== - Zagadka Pierwsza: Problem Bruce'a Willisa ===== | ===== - First Puzzle: Bruce Willis Has a Problem ===== |
| |
{{ :pl:dydaktyka:planning:die-hard-3.jpg?200|}} | {{ youtube>BVtQNK_ZUJg }} |
Proszę obejrzeć fragment [[https://www.youtube.com/watch?v=BVtQNK_ZUJg|Szklanej Pułapki 3]]. Przedstawiona tam zagadka należy do dość dużej rodziny problemów - katalog ''./examples/jugs'' zawiera model podobnego problemu [[http://www.riddleministry.com/riddles/water-puzzle-19-13-7/1246/|przelewania wody]]. | |
| |
==== Zadania obowiązkowe ==== | \\ |
| Please watch fragment of the Die Hard 3 movie above. The puzzle depicted there belongs to a quite popular family of "water pouring'" puzzles. The ''./02_fluents/02_jugs'' folder contains a model of a [[http://www.riddleministry.com/riddles/water-puzzle-19-13-7/1246/|very similar problem]]. |
| |
Proszę uzupełnić plik ''problem.pddl'', tak, aby rozwiązać instancję ''instance.pddl'' (plan powinien składać się z 16 akcji). | ==== Assignments ==== |
| |
==== Zadania na plus ==== | - Fill missing lines of the ''domain.pddl'', so you can solve ''problem.pddl'' in 16 steps. |
| - Remodel the problem so it would use only one action |
| - Modify the problem to include the fountain and help Bruce Willis! |
| |
<WRAP center round tip 60%> | <WRAP center round tip 60%> |
W PDDL 2.1 można formułować efekty warunkowe: | In PDDL 2.1 you can formulate conditional effect (the action will have this effect only if the additional condition is fulfilled): |
<code lisp> | <code lisp> |
(when (warunek) | (when (additional_condition) |
(efekt) | (effect) |
) | ) |
</code> | </code> |
Oznacza to, że dana akcja będzie miała określony efekt jedynie, gdy spełniony jest zadany warunek. | |
| |
</WRAP> | </WRAP> |
| |
- Czy jesteś w stanie zamodelować problem używając tylko jednej akcji? | ===== - Second Puzzle: Zombies on the Loose! ===== |
- 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? | |
| |
===== - Zagadka Druga: Ucieczka Przed Zombie ===== | |
| |
Proszę obejrzeć pierwsze dwie minuty filmu ze [[http://interestingengineering.com/can-solve-impossible-bridge-riddle/|strony o interesujących problemach]]. Katalog ''./examples/zombie-escape'' zawiera pliki związane z przedstawioną tam zagadką. | {{ youtube>7yDmGnA8Hw0 }} |
| |
==== Zadania obowiązkowe ==== | \\ |
| Watch two first minutes of the movie above. ''./02_fluents/03_zombie-escape'' folder contains files related to this puzzle. Then check the assignments and save yourself! |
| |
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? | ==== Assignments ==== |
- Czy jesteś w stanie w podobny sposób zamodelować [[http://www.learn4good.com/games/puzzle/boat.htm|problem misjonarzy i kanibali]]? | |
- Czy jesteś w stanie zamodelować ten problem w MiniZincu? | |
| |
| - Fill missing lines of the ''domain.pddl'', so you can solve ''problem.pddl'' |
| - Remodel the problem so it would use only one action |
| - Solve the similar [[http://www.learn4good.com/games/puzzle/boat.htm|problem of missionaries and cannibals]] |