Mesterséges Intelligencia Házi Feladat

Tervkészítés

 

 

 

Feladatok

 

A feladatok listája >>>

 

 

 

Segédanyagok

Tervkészítés (AI Planning) kurzusok

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/

Subbarao Kambhampati, Arizona State University:              http://rakaposhi.eas.asu.edu/cse574/

Jim Blythe, University of South Carolina:                               http://www.isi.edu/~blythe/cs541/

 

 

PDDL

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/

 

 

 

Tervkészítők

 

 

A tervkészítők windows alatti futtatásához szükséges dll itt letölthető:        cygwin1.dll

 

 

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.

 

LPG:

Lokális keresést használ. A fent említett kiterjesztések mindegyikét ismeri.

 

BlackBox:

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ő.

 

SGP:

PDDL bemenet, Graphplan algoritmus, feltételes tervkészítés érzékelési akciókkal. LISP ismeret szükséges.

 

FF:

PDDL bemenet, hatékony heurisztikával támogatott előre láncoló keresés. (:strips) és részben (:adl).

 

SHOP:

Saját domain definíciós nyelv. Hierarchikus taszk hálók. LISP ismeret szükséges.

 

TLPlan:

Saját domain definíciós nyelv. Temporális logikai kifejezésekkel irányított előre láncoló keresés.

 

 

Két kidolgozott példa

Hanoi tornyai

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 ütemezése

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