Tervkészítési feladat - GyIK

1. KÉRDÉS:
Az LPG futtatásakor a következő hibaüzenetet kapom: "STATUS_ACCESS_VIOLATION". Mit jelentsen ez? Miért kaptam? Mit tehetek ellene?
1. VÁLASZ:
Ez a hibaüzenet több általunk ismert okból is előállhat az LPG Windows-os változatában, amely ugyebár a CygWin nevezetű Linux-emulációs környezet alatt fut. A hiba/kivétel nem túl beszédes - ennek oka, hogy valójában nem az LPG dobja, hanem a CygWin (amikor nem tud lekezelni egy LPG által dobott hibát). A leggyakoribb ok, amikor ilyen hibát kapunk az, hogy (a) az LPG nem képes a célfeltételek közt több változó kvantifikálását lekezelni. Tehát amennyiben egynél több változót kvantifikálunk (egzisztenciálisan, vagy univerzálisan) a GOAL részben, úgy ezt a hibát kapjuk. Hasonló hiba adódik akkor, ha (b) túl sok objektumunk van, és/vagy a cselekvésekben is nagy szerepet kapnak a kvantorok (pl. sok bennük az EXISTS). Ebben az esetben megoldás lehet, ha lejjebb vesszük az objektumok számát. Ezt azonban célszerű elkerülni. Első sorban újabb predikátumok, és paraméterek (mármint a cselekvések bemenő paramétereinek) bevezetésével kell próbálkozni a cselekvés-sémákban szereplő kvantorok számának csökkentése érdekében. Ha így nem jutunk előbbre, akkor végső mentsvárként mérsékelhetjük az objektumok számát. Viszont, ha ez ellentmond a feladatkiírásnak (pl. adott a kockák, korongok száma), úgy erre mindenképp, hangsúlyosan hívjuk fel a figyelmet a dokumentációban! Az objektumok számát ekkor a lehető legmagasabbra kell beállítani.

2. KÉRDÉS:
Az informális kiírásban mondattani hibát (pl. ragozási, vessző) hibát találtam, ami zavarja az értelmezést. Mit tegyek?
2. VÁLASZ:
Ebben az esetben vagy ír nekünk egy levelet, vagy megpróbálja helyessé varázsolni a kiírást. A kiírás megváltoztatására csakis csak ebben az esetben adunk lehetőséget, és ebben az esetben is csak a zavaró mondattani hibákat lehet ily módon kijavítani. A változtatásra természetesen a dokumentációban nyomatékosan fel kell hívni a figyelmet.

3. KÉRDÉS:
Az LPG futtatásakor a következő hibaüzenetet kapom: "illegal (empty) atom used in domain. Check input files". Mit jelentsen ez? Miért kaptam? Mit tehetek ellene?
3. VÁLASZ:
A gondot az okozza, hogy a probléma-leírásban, az INIT-részben negált tény szerepel. Zárt világ feltételezéssel élve erre nincs szükség. Amit nem jelentünk ki igaznak, az hamis. Tehát hamis tényeket nem kell a kezdőállapotba felvenni.

4. KÉRDÉS:
Az LPG futtatásakor nagyjából a következő hibaüzenetet kapom: "syntax error in line ..., '?X': action definition is not correct". Mit jelentsen ez? Miért kaptam? Mit tehetek ellene?
4. VÁLASZ:
A jelenlegi LPG implementáció kényes az egyenlőség-vizsgálat argumentumainak sorrendjére. Példának okáért adott fentebb a következő (a domain-leírás cselekvés-definícióinak előfeltételeiben): (not (= ?x table)) Habár az egyenlőség-reláció elvben szimmetrikus, mégis amennyiben konstans objektumot (table) szerepltetnék a 0. helyen, és változót (?x) az 1-diken, úgy az LPG hibát jelez. Erre legyünk tehát tekintettel!

5. KÉRDÉS:
Hogyan lehetséges, hogy az LPG "-quality" opcióval meghívva különböző megoldásokat ad vissza?
5. VÁLASZ:
Az LPG lokálisan, nem pedig globálisan optimális (mint ahogyan az a nevéből is sejthető: Local search for Planning Graphs). Ezért tehát összetettebb problémák esetén nagy valószínűséggel nem a globálisan optimális megoldást (tervet) fogja eredményül adni. A tervek előállítása során véletlenszerű döntések is történnek, aminek hatására az LPG ugyanazzal a bemenettel és opciókkal is különböző eredményt adhat (különböző meghívások alkalmával).

6. KÉRDÉS:
Az LPG által adott megoldás nem optimális. Mit tegyek?
6. VÁLASZ:
Az előbbi kérdés kapcsán már foglakoztunk ezzel. Az LPG által adott megoldás minősége úgy javítható, ha vagy egyszerűsítjük a PDDL leírást, vagy többször hívjuk meg, és a különböző futások közül a legjobb eredményt választjuk.

7. KÉRDÉS:
Hogyan oldhatom meg, hogy egy-egy cselekvés más-más környezetben más-más hatást eredményezzen?
7. VÁLASZ:
Az ilyen cselekvéseket feltételes következményű cselekvéseknek nevezik. Már a PDDL 1.0-ás verziója óta lehetséges a leírásuk. Sajnos azonban az LPG mind a mai napig nem támogatja őket, azaz hibát jelez, ha olyan cselekvéseket definiálunk, melyek következmény részében "when" szerepel. A megoldást több cselekvés bevezetése jelentheti, ahol a feltételes következmények when-feltételei az egyes új cselekvések előfeltételeiben jelennek meg.

8. KÉRDÉS:
Használható-e kvantor a cselekvések következmény részében is?
8. VÁLASZ:
Igen, de csakis csak univerzális.

9. KÉRDÉS:
Az LPG futtatásakor a következő hibaüzenetet kapom: "Goals of the planning problem can not be reached.". Mit jelentsen ez? Miért kaptam? Mit tehetek ellene?
9. VÁLASZ:
Ez valójában nem egy hibaüzenet (error), hanem egy jelzés (warning) arra vonatkozóan, hogy a probléma a jelen konfiguráció mellett nem oldható meg. Minden esetre ellenőrizzük, hogy nem adtunk-e esetleg ellentmondásos célokat a tervkészítőnek! Érdemes lehet továbbá azt is megvizsgálni, hogy vannak-e egymást "kölcsönösen kizáró (mutex)" cselekvések. Ilyen akkor fordul elő, ha egy cselekvés következményei érvénytelenít(het)ik egy másik cselekvés előfeltételeit (azaz pl. olyan tényeket negálnak, amiket a másik cselekvés előfeltételeiben igaznak írunk elő).

10. KÉRDÉS:
Lehet-e a PDDL-ben "számolni"?
10. VÁLASZ:
Igen, a PDDL a 2.1-es verzió óta képes numerikus változók (:fluents) leírására. Ráadásul az LPG is képes kezelni őket. A házi feladatban mégsem várunk el hasonlót. Ennek oka egyrészt az, hogy a numerikus változók bevezetése bonyolítja a leírást, másrészt az LPG nem elég robusztus ebben az esetben. Mindazonáltal, ha valaki mégis használni szeretné őket, nem zárjuk ki a lehetőségét. Bővebb információt a segédlet függelékében (lásd. IV.3), illetve az irodalomjegyzékében hivatkozott megfelelő irodalmakban talál.

11. KÉRDÉS:
Megrekedtem. Nem tudom, hogyan írhatnám le PDDL-ben azt, amit szeretnék.
11. VÁLASZ:
Ilyesmi könnyedén előfordulhat. A házi feladat kapcsán elvárt PDDL leírás kifejezőereje - főleg a természetes nyelv viszonylatában - igencsak korlátozott (habár még így is jóval nagyobb, mint az eredeti STRIPS nyelvé). Megoldást jelenthet segéd-predikátumok és/vagy redundancia bevezetése. Pl. ha eddig volt egy "előtte" predikátumunk, akkor esetleg segíthet, ha ennek fordítottját, egy "mögötte" predikátumot is bevezetünk. Vagy esetleg, ha pl. tároló-jellegű objektumokkal dolgozunk, akkor csak ezeknek, nem pedig lehetséges elemeiknek, definiáljuk a helyét. Ekkor a helyváltoztatás során a tároló helyének megváltoztatásával a részelemek is helyet változtatnak. Természetesen nem csak "helye" predikátum esetében működik ez a megközelítés... Hasonló megoldás adható pl. sorok kezelésére is. Ha mindent bevetettünk, de mégsem jutunk dűlőre, akkor a feladatkiírás újra/átértelmezésével is próbálkozhatunk. Próbáljuk meg egyszerűbben felfogni a feladatot! Példának okáért vessünk egy pillantást a segédlet függelékének IV.2-es pontjára, ahol a Sussman anomália egy alternatív reprezentációja kerül bemutatásra!

12. KÉRDÉS:
Milyen kiterjesztések léteznek még a PDDL-hez, amiket az LPG is kezel?
12. VÁLASZ:
Az LPG elvben PDDL 2.2 kompatibilis. Ez azt jelenti, hogy a típusos (:typing), egyenlőség vizsgálattal (:equality) kiegészített STRIPS-es (:strips) leíráson túl elvben képes numerikus változók (:fluents), temporális cselekvések (:durative-actions), származtatott predikátumok (:derived-predicates), és ún. időzített kezdeti literálok (:timed-initial-literals) kezelésére is. Ezek ismerete és használata messze túlmutat a kisházival kapcsolatos minimál-követelményeken. Használatukat tehát részben ezért sem várjuk el (lásd. 10. kérdés-válasz). A másik, gyakorlatibb ok, amiért nem várjuk el, sőt, nem is preferáljuk igazán ezeknek a kiterjesztéseknek a használatát, az LPG instabilitása. Az LPG ugyanis a gyakorlatban sajnos nem képes robusztus módon kezelni az említett kiterjesztéseket. Rengeteg apró, nem dokumentált "feature" van, ami megnehezíti (vagy tapasztalatlanabb felhasználó esetében akár el is lehetetleníti) a fejlesztést. A kiterjesztések használata tehát nem javasolt! Ezért sem esik szó róluk a segédlet kötelező részében. Mindazonáltal, ha valaki mégis használni szeretné őket, nem zárjuk ki a lehetőségét. Bővebb információt a segédlet függelékében (lásd. IV.3), illetve az irodalomjegyzékében hivatkozott megfelelő irodalmakban talál.

13. KÉRDÉS:
Adhatunk-e összetett (either ...) típust az objektumoknak?
13. VÁLASZ:
A PDDL nyelv megengedné, de az LPG sajnos nem támogatja. Az objektumoknak tehát direkte nem adhatunk összetett típust. Viszont az összetett típus egy alkalmas altípusának - domain leírásba történő - bevezetésével mindez megkerülhető. Ekkor tehát az objektumoknak ezen altípust adjuk meg direkte, ami indirekte azt jelenti, hogy az objektum típusa valójában a fentebb említett összetett típus. Az elkövetkezőkben azonban kifejezetten ügyelnünk kell arra, hogy a predikátumok és cselekvések definíciójában megfelelően használjuk e típusokat! Végső soron az a legcélszerűbb (és legegyszerűbb), ha minden objektumnak elemi típust deklarálunk. Még akkor is, ha a domain leírásban esetleg szerepelnek összetett típusok is (pl. a predikátumok, vagy a cselekvések definíciójában). Tehát a probléma leírásban lehetőleg minden objektumnak elemi típust adjunk meg, és az összetett típusokat csak a domain-leírás leegyszerűsítése céljából használjuk! Ha meggondoljuk (modellünk tükrében), a valóságban is ez a helyzet: minden objektumnak van egy elemi típusa, még ha eközben egy összetettebb típushoz (pl. az object-hez) __is__ tartozik egyben...

14. KÉRDÉS:
Az ellenőrzés nem fogadja el a megoldásomat, pedig nálam lefut (csak hát nagyon lassan)... Miért?
14. VÁLASZ:
Hát épp ezért - mert "nagyon lassan" fut csak le. Arról van szó ugyanis, hogy az ellenőrzés nem manuális. Masszívan parallel módon, automatikusan történik. Amennyiben záros időn belül (egy asztali PC-n max. 15 percen belül) nem ad megoldást, úgy a beadást elutasítjuk. Célszerű tehát nem túlcizellálni a beadott megoldásokat! A lefutást pedig többféleképp is gyorsíthatjuk: például (1) újabb predikátumok bevezetésével - akár csak részben - kiiktatjuk a cselekvésekből a kvantorokat (lásd. pl. segédlet függelékében a VI.2-es szakaszt); továbbá (2) elég egy egyszerűbb, ámde kellőképp szemléletes probléma is, ami már jól érzékelteti a domain leírás által megragadható problémák komplexitását. Ez nem jelenti azt, hogy triviálisan egyszerű problémákat adjunk be. Ne billenjünk át a ló túlsó oldalára! A beadott problémák a domain keretein belül semmiképp se legyenek triviálisak! ...és ne felejtsük el leellenőrizni, hogy - záros időn belül - lefutnak-e, mielőtt beadjuk őket!

15. KÉRDÉS:
Beadott megoldásomon néha lefagy az LPG. Gondot jelenthet ez?
15. VÁLASZ:
Igen. Amint már az előbbi kérdés-válaszban is taglaltuk, a beadást követő ellenőrzés során az LPG futtatása automatikusan történik. Amennyiben véges időn belül (egy asztali PC-n max. 15 percen belül) lefut és ad is megoldást, úgy a beadást elfogadjuk, egyébként nem. Az ellenőrzés során a beadott megoldásokon az LPG csak egyszer fut le ("-speed" paraméterrel). Tehát, ha egy mód van rá, próbáljunk meg robusztus megoldást adni, ami odahaza is stabilan működik! Ekkor tehát nem fog fennállni annak a veszélye, hogy esetleg nem fut le nálunk, és ezért nem fogadjuk el. Megjegyzés: az LPG bizonyos pontokon randomizált módon dönt. Ennek köszönhető többek közt az is, hogy más-más futtatásra (esetleg) más-más megoldást ad.

16. KÉRDÉS:
Az ellenőrzés nem fogadja el a megoldásomat, pedig nálam lefut... Miért?
16. VÁLASZ:
A 14-es kérdés-válaszban már foglalkoztunk ezzel. Ilyen tehát egyrészt akkor fordulhat elő, ha túl lassan fut le a megoldás (több, mint 15 perc alatt egy átlagos asztali PC-n), vagy például akkor is ez a helyzet, ha a kapott megoldás (többnyire a triviálisan egyszerű problémából kifolyólag) triviális, azaz pl. 1-2 lépés hosszú. Az ilyen megoldásokat sem fogadjuk el tehát. A megoldás gyorsítására a 14-es kérdés-válaszban adunk tippet.

17. KÉRDÉS:
Az LPG futtatásakor a következő hibaüzenetet kapom: "unknown constant AAA in literal BBB. check input files". Mit jelentsen ez? Miért kaptam? Mit tehetek ellene?
17. VÁLASZ:
Ezt a hibaüzenetet pl. akkor kaphatjuk, ha egy nem definiált AAA objektumot, vagy konstanst szeretnénk használni a probléma leírásban egy BBB predikátumú tény kimondásakor (pl. az INIT részben)..

18. KÉRDÉS:
Az LPG futtatásakor a következő hibaüzenetet kapom: "syntax error in line X, 'Y': initial facts definition expected syntax error". Mit jelentsen ez? Miért kaptam? Mit tehetek ellene?
18. VÁLASZ:
Ezt a hibaüzenetet pl. akkor kaphatjuk, ha számmal kezdődő nevű objektumot írtunk a probléma leírás INIT részébe. Számmal kezdődő objektumokat és/vagy konstansokat ne használjunk, mert az LPG nem tudja kezelni őket!

19. KÉRDÉS:
Az LPG futtatásakor a következő hibaüzenetet kapom: "syntax error in line X, 'Y': problem name expected syntax error". Mit jelentsen ez? Miért kaptam? Mit tehetek ellene?
19. VÁLASZ:
Ezt a hibaüzenetet pl. akkor kaphatjuk, ha számmal kezdődő nevű objektumot deklaráltunk a probléma leírás OBJECTS részében. Számmal kezdődő objektumokat és/vagy konstansokat ne használjunk, mert az LPG nem tudja kezelni őket!

20. KÉRDÉS:
Az LPG futtatásakor a következő hibaüzenetet kapom: "parse error". Mit jelentsen ez? Miért kaptam? Mit tehetek ellene?
20. VÁLASZ:
Ezt a hibaüzenetet az LPG Linux-os változata dobja pl. akkor, ha számmal kezdődő nevű objektumot használunk valahol a probléma leírásban. Számmal kezdődő objektumokat és/vagy konstansokat ne használjunk, mert az LPG nem tudja kezelni őket!

21. KÉRDÉS:
Az LPG futtatásakor a "The problem is unsolvabe..." vagy a "Goals of the planning problem can not be reached..." kezdetű hibaüzenetet kapom. Mit jelentsen ez? Miért kaptam? Mit tehetek ellene?
21. VÁLASZ:
Az előbbi hibaüzenetet az LPG Windows-os változata , míg az utóbbit az LPG Linux-os változata dobja akkor, ha a probléma nem megoldható. Ez azért van, mert a célok a kiindulási feltételek és cselekvések mellett nem elérhetők. Az is elképzelhető, hogy a célok már önmagukban véve ellentmondásosak. A lényeg tehát az, hogy az így adott probléma nem megoldható. Az LPG ezt biztosan meg tudja mondani (elvi szinten is bizonyított). Ha a problémának nincs megoldása, azaz nem található olyan terv, amely a kiindulási állapotból a célállapotba viszi a környezetet, akkor a probléma nem megoldható, és ezt az LPG jelzi. Ilyen esetben alaposan át kell nézni a kiindulási állapotot, a célállapotot (hogy valóban konzisztensek-e, értelmes kiindulást/célt takarnak, stb), illetve a cselekvéseket sem árt ellenőriznünk, hiszen elképzelhető, hogy bár jó kiindulási és célállapotot adtunk meg, a cselekvések mégsem lettek jól definiálva, mert pl. mutex-ek (azaz kölcsönösen kizárják/kioltják egymást), vagy mert egyszerűen nincsenek is olyan cselekvések, amelyek előállíthatnák a célállapotban megadott tényeket, vagy pedig nincsenek olyan cselekvések, amelyek ezeknek az előbb említett cselekvéseknek az előfeltételeit elő tudnák állítani, stb, stb, stb, egészen addig, hogy lehet, hogy a kiindulási állapotban nem hajthatók végre bizonyos szükséges cselekvések, avagy már azt (is) rosszul definiáltuk. Tehát első nekifutásra ezt a 3-at kell átnézni, hogy helyesek-e: (1) kiindulási állapot, (2) cselekvések, és (3) célállapot.

© 2010-2022 BME MIT | Hibajelentés | Használati útmutató