Az alábbi kurzusok oldalán nagyon jó (angol nyelvű) segédanyagok, mintafeladatok találhatók.
Dana Nau, University of Maryland: http://www.cs.umd.edu/~nau/cmsc722/
Jim Blythe,
A PDDL (Planning Domain Definition Language) szabványnak számít a tervkészítésben. A legtöbb domain-független tervkészítő rendszer ezt a nyelvet használja. A PDDL eredeti változata a tankönyv által is említett STRIPS-hez hasonló szintaxisú (:strips), és azzal azonos kifejező erejű volt. Azóta számos bővítést készítettek hozzá, pl.
- Diszjunkció és kvantálás az operátorok előfeltételeiben (:adl)
- Típusosság (:typing)
- Numerikus mennyiségek kezelése (:fluents)
- A műveletek időbelisége (:durative-actions)
Tudni kell, hogy minden PDDL-t használó tervkészítő megérti a csak (:strips)-et használó leírásokat, de a kiterjesztéseket nem feltétlenül. A nektek kiadott feladatok néhány kivétellel megoldhatók a kiterjesztések használata nélkül is. Amelyek nem, azoknak a leírásából ez kiderül.
Egy tömör bevezető a PDDL nyelvről (Malte Helmert): http://www.cs.ust.hk/~qyang/221/introtopddl2.pdf
A nyelv eredeti és kiterjesztett verzióinak leírása (Drew McDermott): http://cs-www.cs.yale.edu/homes/dvm/
Az alábbi két tervkészítő jól kezelhető és elérhető windows-os exe formájában, ezért a feladatok futtatására ezek kínálják a legegyszerűbb megoldást. Töltsétek le az egyiket, és azt használjátok az általatok készített PDDL nyelvű domain-leírások futtatására.
Lokális keresést használ. A fent említett kiterjesztések mindegyikét ismeri.
Kielégíthetőségi (SAT) problémává fordítja a feladatot. Csak egyszerű (:strips) szintű feladatokat tud megoldani.
Az alábbi tervkészítők használata egy kicsivel több idő ráfordítását igényelheti, de izgalmas dolgokat lehet belőlük kihozni. Legtöbbjüknek a forráskódja is letölthető.
PDDL bemenet, Graphplan algoritmus, feltételes tervkészítés érzékelési akciókkal. LISP ismeret szükséges.
PDDL bemenet, hatékony heurisztikával támogatott előre láncoló keresés. (:strips) és részben (:adl).
Saját domain definíciós nyelv. Hierarchikus taszk hálók. LISP ismeret szükséges.
Saját domain definíciós nyelv. Temporális logikai kifejezésekkel irányított előre láncoló keresés.
A jól ismert
játékban különböző méretű tárcsákat kell 3 függőleges pálcika
egyikéről egy másikra pakolni. Kezdetben az összes tárcsa, lefelé
növekvő sorrendben, az első pálcikára van felhúzva. Egy lépésben
valamelyik pálcikáról a legfelső tárcsát lehet leemelni, és átrakni egy
másik pálcikára akkor, ha a cél pálcika még üres, vagy az azon lévő
legfelső tárcsa kisebb a kezünkben lévőnél. Ilyen lépések
ismételgetésével kell elérni azt, hogy az összes tárcsa, lefelé növekvő sorrendben,
egy másik pálcikára kerüljön át.
Itt található a
feladat PDDL nyelvű leírása és néhány probléma, különböző számú
tárcsákkal: Hanoi
Futtatás az LPG
tervkészítő rendszerrel, legjobb minőségű tervet ill. a
legrövidebb futási időt célozva:
lpg -o hanoi-ops.pddl -f hanoi3.pddl -quality
lpg -o hanoi-ops.pddl -f hanoi3.pddl -speed
Futtatás a
BlackBox tervkészítő rendszerrel:
blackbox -o hanoi-ops.pddl -f hanoi3.pddl
Műholdak egy
csoportjának adott megfigyelési műveleteket kell elvégezni. Minden
megfigyelési művelethez meg van adva, hogy milyen célpontról milyen típusú
felvételt kell készíteni, pl. termográfia, spektrográfia, stb. A műholdak
különféle berendezéseket szállítanak. Más-más berendezések más-más üzemmódokat
támogatnak, azaz más-más típusú felvétel készítésére alkalmasak. A lehetséges
műveletek:
Fordulás
(turn-to): A
műhold egy adott célpont felé fordul.
Bekapcsolás
(switch-on): Egy adott berendezés
bekapcsolása valamelyik műholdon.
Kikapcsolás
(switch-off): Egy adott berendezés
kikapcsolása valamelyik műholdon.
Kalibrálás
(calibrate): Egy
bekapcsolt berendezés kalibrálása, ami akkor végrehajtható, ha a műhold
egy ismert kalibrációs célpont felé néz.
Fényképezés(take-image): Egy adott műhold adott berendezése
valamilyen üzemmódban felvételt készít arról a célpontról, amire a műhold
néz.
Akkor hajtható végre, ha a berendezés be
ban kapcsolva, és előzőleg kalibrálva volt.
Nulladik
implementáció, csak (:strips) eszközök használatával: Satellite-strips
Első
kiterjesztés: a műholdak üzemanyagkészlete és memóriája korlátos. A
célpontok közötti fordulás a művelet idejével arányos mennyiségű
üzemanyagot fogyaszt, az egyes felvételek eltárolásához pedig adott
mennyiségű szabad memória szükséges. A cél egy minden korlátot betartó, a
legkisebb üzemanyag-fogyasztással járó terv megtalálása. A feladat a (:fluents)
kiterjesztés segítségével írható le: Satellite-numeric
Második
kiterjesztés: a műveletek adott, konstans időt vesznek igénybe.
Különböző műholdak természetesen dolgozhatnak párhuzamosan, sőt,
bizonyos műveletek egy műholdon belül is történhetnek párhuzamosan.
Itt most az üzemanyag- és memóriakorlátoktól eltekintünk. A cél egy minimális
átfutási idejű terv megtalálása: Satellite-SimpleTime