Robotika részfeladatai TERVGENERÁLÁS 1. Állapottér-reprezentáció 2. Probléma redukció 3. Probléma dekompozíció 4. Logikai reprezentáció robot-szerkezet építése cél-meghatározás érzékelés, alakfelismerés (látás, hallás, stb. tervgenerálás (elemi m veletsorozat el állítása végrehajtás és korrigálás 1 2 Kocka világ Állapot-leírás logikai állításokkal sztalról egy kockát felemel: sztalra lerak egy kockát: Egy kockát egy kockára rátesz: Egy kockát egy kockáról levesz: pickup(x putdown(x stack(x,y unstack(x,y Elemi állítások on(x,y egy kocka egy másik kockán van clear(x egy kocka teteje üres ontable(x egy kocka az asztalon van handempty robotkar szabad holding(x robotkar egy kockát tart 3 4 Állapot-leírás tulajdonságai pozitív literálok konjunkciója: Konkrét vagy általános állapot-leírás. Változók használata. handempty clear( Teljes vagy hiányos állapot-leírás. Hiányos leírás lehet egyértelm vagy többértelm. on(, clear( ontable( ontable( Helyes vagy ellentmondásos állapot-leírás. Ellen rzés: konstrukcióval vagy logikai következtetéssel. 5 6 1
Ellentmondásos állapot Egy állapot-leírás lehet helyes vagy ellentmondásos z on(, clear( állapot ellentmondásos Egy állapot ellentmondása eldönthet konstrukcióval teljessé alakítjuk ontable, on, holding végrehajtása clear, handempty ellen rzése rezolúcióval, megfelel axiómarendszer alapján Pl.: on(x,y clear(y ontable(x holding(x holding(y Helyes-e az on(, clear( állapot-leírás az alábbi axiómarendszer ismeretében? x holding(x handempty x (holding(x ontable(x x (holding(x clear(x x (ontable(x on(x,y x (clear(y on(x,y Másként feltéve a kérdést: kielégíthetetlen-e az a logikai rendszer, amelyben a fenti axiómákhoz hozzávesszük az on(, clear( állítást? 7 8 ( holding(a handempty (handempty holding(b ( holding(x 21 ontable(x 21 (ontable(x 22 holding(x 22 ( holding(x 31 clear(x 31 (clear(x 32 holding(x 32 ( ontable(x 41 on(x 41,y 41 (on(x 42,y 42 ontable(x 42 ( clear(y 51 on(x 51,y 51 (on(x 52,y 52 clear(x 52 on(, clear(...... ontable(x 6 clear(x 6 ontable( clear( on(x 7, holding( M Minden F(x m velethez megadunk egy El feltétel lista : P F (x röviden P Törlési lista : D F (x röviden D vítési lista : F (x röviden : veletek leírása pickup(x: P: ontable(x,clear(x,handempty D: ontable(x,clear(x,handempty : holding(x 10 pickup( handempty, clear(, on(,, clear(, ontable(, ontable( holding(, clear(, on(,, ontable( 11 putdown(x: P: holding(x D: holding(x Példák további m : ontable(x,clear(x,handempty stack(x,y: P: holding(x clear(y D: holding(x clear(y : on(x,y, clear(x, handempty unstack(x,y: P: on(x,y, clear(x, handempty D: on(x,y, clear(x, handempty : holding(x clear(y veletekre 12 2
Megjegyzés P F nem feltétlenül azonos D F -vel. Például, ha a robotkar egy m velete az asztalon fekv x kockát felteszi az y kockára (pickup(x+stack(x,y: puton(x,y: P F : ontable(x, clear(x,clear(y, handempty D F : ontable(x, clear(y F : on(x,y D F többnyire része P F -nek 13 Megjegyzés Egy M m velet az F(x m velet-leírásnak egy F(xα alappéldánya. (α egy helyettesítés z el feltétel igazolása, valamint a m velet eredményének kiszámolása halmazm veletek segítségével történik. Egy m velet teljes állapot-leírásból (konkrét állapotból teljes állapot-leírást (konkrét állapotot hoz létre. m velet-leírás alapján hiányos és általános állapot-leírást is át lehet alakítani. 14 1. Megoldás állapottér-reprezentációval 2. Redukció a tervgenerálásban Állapotok, m veletek meghatároznak egy állapotgráfot, benne egy kezd - és egy célállapot Megoldási út el állítása el re vagy visszafelé haladó kereséssel visszalépéses gráfkeresés Heurisztika?? 15 16 Állapot redukálása Kiválasztunk egy megvalósítandó L literált Keresünk olyan M=F(xα m veletet, amely b vítési listáján ez a literál szerepel: L M Kiszámoljuk a megel z állapotot: vesszük a m velet el feltételét: P M megvizsgáljuk, hogy a célállapot literáljainak milyen formában kell jelen lenni a megel z állapotban handempty, clear(, clear( unstack(x, x on (x,, clear(x, handempty, true, clear(, false 17 18 3
Regresszió z L literálnak az M m veletre vett regressziója (el dje R[L; M] = L true ha L M és L D M ha L M false ha L D M z M m velethez tartozó redukciós m velet: M (a = P M R[L; M] L a 19 ontable(, clear(, handempty, ontable(, clear( on (,x, clear(, handempty, ontable(, clear( pickup( unstack(, unstack(,x, x on (,, clear(, handempty, ontable( holding(, ontable(, clear( unstack(x, x putdown( stack(,x on (x,, clear(x, handempty, holding(, ontable( holding(, holding(, holding(, clear(x, holding(, ontable( 3. Tervgenerálás dekompozícióval Egy összetett L 1... L n célt tényez nként (célliterálonként valósítunk meg. Egy L literál megvalósítása olyan m velettel történik, amely b vítési listáján (megfelel változó behelyettesítés mellett szerepel az L. Így az L literál megvalósítását visszavezetjük a m velet el feltételének (részcél megvalósítására. részcélokat újra és újra dekomponáljuk, amíg olyan literálokhoz nem jutunk, amelyek teljesülnek a -ban. F 1 L 1 L 11 L 12 részterv 1 L 21 L 1... L n L 2... F 2 részterv 2 Tiszta dekompozíció L n részterv n gráf közönséges ágait hívjuk résztervnek. Megoldás: részterv 1,, részterv n valamilyen sorrendje 21 22 Dekompozíciós reprezentáció Probléma leírás: állapot Kiinduló probléma: cél Egyszer probléma: L, ha L Operátorok: L 1... L n visszavezethet a L 1,..., L n problémákra L visszavezethet a P M problémára, ahol M olyan m velet, hogy az L M D on(,,on(,d on(, on(,d 1.stack(, 2.stack(,D holding( clear( holding( clear(d 3.pickup( 4.pickup( ontable( clear( handempty ontable( clear( handempty Megoldás: 3,1,4,2 vagy 4,2,3,1 23 4
Ellenpélda on(,,on(, on(, on(, 1.stack(, 2.stack(, holding( clear( holding( clear( 3.pickup( 4.pickup( ontable( clear( handempty ontable( clear( handempty 5.unstack(x, on(x, clear(x handempty x Megoldás:? Mi a megoldási terv? Nem hajtható végre az 5,3,1 részterv, mert hiányzik bel le a putdown( két részterv kölcsönösen elrontja egymás el feltételét. részcélok kölcsönhatásban állnak: ha az egyik résztervet kiegészítjük úgy, hogy a másik részterv után végrehajthassuk, akkor az els részterv eredményét, a már megvalósított részcélt rontjuk el. 26 3.1. Résztervek szekvenciális végrehajtása Egy adott szinten egyszerre 1, 2 csak egy részcél megvalósításával 1 2 foglalkozzunk. z el állított résztervet T 1 T 2 azonnal végrehajtjuk, és az T 1 ( így kapott állapotból indulva valósítjuk meg a következ célt. 1 2 T 1 T 2 T 1 ( T 2 (T 1 ( on(,,on(, on(, stack(, holding( clear( pickup( ontable( clear( handempty unstack(x, on(x, clear(x handempty x on(, 27 Döntési pontok, heurisztikák on(,,on(, Melyik célliterált valósítsuk meg el ször? földhöz közelebb es t, habár Melyik m veletet válasszuk? z aktuális állapothoz legjobban illeszked el feltétel t. Melyik változó-helyettesítést alkalmazzuk? on(, stack(, holding( clear( pickup( ontable( clear( handempty 1. unstack(x, on(x, clear(x handempty x on(, 29 5
on(,,on(, on(,,on(, on(, stack(, on(, on(, stack(, on(, holding( pickup( clear( holding( 3. pickup( clear( ontable( clear( handempty ontable( clear( handempty 1.unstack(, 2. putdown(y 1. 2. holding(y y on(,,on(, on(, 4. stack(, 3. pickup( 2. putdown( 1. unstack(, holding( clear( on(, on(, 4. stack(, 3. pickup( 2. putdown( 1. unstack(, on(,,on(, on(, 8. stack(, holding( clear( 7. pickup( ontable( clear( handempty 5. unstack(z, 6. putdown(v on (z, clear(z handempty holding(v z v on(,,on(, Résztervek ütközése on(, 4. stack(, 3. pickup( 2. putdown( 1. unstack(, on(, 8. stack(, 7. pickup( 6. putdown( 5. unstack(, 1, 2 1 2 T 1 T 2 T 1 ( 1 2? 1 T 1 T 2 T 1 ( T 2 (T 1 ( =? cél 36 6
I. STRIPS 1, 2 on(,,on(, 2 1 1 T 2 T 1 T 3 T 1 ( T 2 (T 1 ( Hagyjuk, hogy egy kés bbi (T 2 részterv elrontson egy már megvalósított ( 1 részcélt, amit kés bb újra megvalósítunk az aktuális állapotból kiindulva. 37 on(, on(, on(, 10. stack(, holding( clear( 1. 2. 3. 4. 5. 6. 7. 8. 9.pickup( ontable( clear( handempty Megjegyzés II. RSTRIPS STRIPS mindig talál megoldást, ha a m veleteknek van inverze Ellenpélda: Regiszter csere 39 1, 2 1 2 T 1 T 2 T 1 ( Töröljük a védett 1 részcélt elrontó tervet. Valósítsuk 2 -t a T 1 részterv utolsó m velete el tt legyen ennek a m veletnek a 2 egy újabb el feltétele feltéve, hogy 2 -t nem törli ez a m velet. 40 on(, 4. stack(, 3. pickup( 2. putdown( 1. unstack(, on(,,on(, on(, 8. stack(, 7. pickup( 6. putdown( 5. unstack(, on(, on(, stack(, 3. pickup( 2. putdown( 1. unstack(, holding( on(,,on(, clear( on(, stack(, pickup( putdown( on(, holding( 7
6. stack(, holding( 5. pickup( on(,,on(, on(, ontable( clear( handempty 1. unstack(, 2. putdown( holding( clear( on(, 4. stack(, 3. pickup( handempty El rehelyezés esetei Megjegyzés Ha a literált megvalósító terv véglegesen elrontja annak már megvalósított testvér-literálját. Ha a literált nem tudjuk megvalósítani. (kör, zsákutca Nem helyezhet el re, ha az a m velet, ami elé akarjuk helyezni, törli a literált. Visszalépéses keresésbe ágyazva z RSTRIPS talál megoldást, ha van megoldás? Regiszter-csere 44 3.2. Résztervek összefésülése III. DOMP Térjünk vissza az eredeti dekompozícióhoz, és a párhuzamosan el állított résztervek m veletei között jelöljünk ki - ha kell - végrehajtási sorrendet, sorrendi kötéseket. z így kapott tervet nem kell feltétlenül szekvenciába f zni. 1, 2 1 2 T 1 T 2 45 1. fázis: Résztervek el állítása eredeti dekompozícióval. 2. fázis: felesleges m veletek törlése, sorrendi megkötések felállítása a m veletekre, majd a résztervek összefésülése. 3. fázis: Ha az összefésülés eredménye egy ütközéses terv, akkor új m veletek beillesztésével az ütközéseket megszüntetjük. 46 on(,,on(, on(, =2,4,7,8 on(, =1 =2 D=5,6 clear( 2.stack(, 1.stack(, holding( 4.unstack(, clear( 3.pickup( =3 D=4,7,8 on(, clear( handempty D=2,7,8 =2 ontable( clear( handempty holding( =5 =2 D=3,5,6,7,8 =5,6 6.unstack(, 5.unstack(, D=4,5,6,7,8 =4,7,8 on(, clear( handempty D=1,6 on(, clear( handempty =1 8.unstack(, 7.unstack(, D=3,4,6,7,8 on(, clear( handempty on(, clear( handempty Sorrendi megkötéseket teszünk Természetes sorrend (1.fázis résztervei Mely m veletek nem követhetik egymást feltétel nélkül? z i m velet után nem hajtható végre a j, ha az i törli a j el feltétel-literáljainak egyikét. Ha i m velet után nem hajtható végre a j, akkor feltüntetjük, j mely el feltételei sérülnek. Keresünk olyan k m velete(ket, amely az i után és a j el tt végrehajtva el állítja a sérült feltételt. 48 8
1. részterv: 4 5 3 1 2. részterv: 4 1 3. részterv: 4 5 2 1,2: 2,3: 3,4: 4,5: 1 2 2 3 4 2 3 4? 5 1,5: 2,4: 3,5: 5 2 1 4? 2 5 2 3 4 5 2 3 1 handempty clear( z ütközéses terv preparálása cél állapot leírásából elindulva, a kijelölt m veletek mentén redukció segítségével kiszámoljuk a tervezett megoldás mentén szerepl állapotokat. z ütközést okozó sérült literálokat nem regrettáljuk. Ezután a állapot fel l elindulva kijelöljük az els ütközést feloldó részfeladatot (mi van és minek kéne lenni, megoldjuk, és megyünk tovább. 49 50 4 5 2 3 1 handempty clear( on(, on(, holding( clear( * ontable( clear( 1.stack(, 2.stack(, 5.unstack(, holding( clear( on(, on(, clear( handempty * ontable( 3.pickup( 4.unstack(, ontable( clear( handempty clear( on(, on(, clear( handempty on(, ontable( 51 4. m velet (unstack(, végrehajtása után holding(, clear(, on(,, ontable( El állítandó részcél: on(,, clear(, handempty*, ontable( Megoldás: putdown( clear(-vel szerencsénk van, mert a putdown( ezt is el állította. 52 IV. NONLIN Több-robotkaros kockavilág Párhuzamosítjuk a DOMP els két fázisát: Nem akarjuk a m veletek egyetlen szálra felf zni. mint egy m velet megjelenik, azonnal megmondjuk, hogy mely már meglev m veletekkel ütközhet, és ilyenkor sorrendi kötéseket teszünk, illetve jelöljük azokat az el feltétel literálokat, amelyeket a vizsgált két m velet végrehajtása között kell megvalósítani. Több-robotkaros kockavilágban a NONLIN párhuzamos terv el állítására is képes dott számú robotkar esetén ki kell egészíteni a handempty és a holding állításokat egy robotkarra utaló argumentummal. Tetsz leges számú robotkar esetén töröljük a handempty állítást. Ekkor a tervgenerálástól várjuk a szükséges robotkarok számának meghatározását is Egy robotkar esetén egy-szálú terv készül. 53 54 9
NONLIN algoritmusa ÉL Egy folyamot (irányított, körmentes!, egy nyel (cél és egy forrás ( csúcsot tartalmazó gráf, ahol minden csúcson keresztül vezet legalább egy ból célba tartó út épít algoritmus: Kétféle csúcs: m velet vagy literál Kétféle él: literál címkével vagy anélkül és célcsúcs egy-egy speciális m velet. Kezdetben: a -csúcsból vezet él a célcsúcsba. gráf mindig egy ütközés mentes tervet ábrázol, amely akkor teljes, ha nincs benne literál-csúcs. 55 on(, STRT on(, Gráf-egyszer sítés ÉL Él törlése: Dupla élt összevonunk. z (a,b él törölhet, ha van ezt az élt elkerül a b út a gráfban. törölt él címkéjét (ha van át kell írni az elkerül út utolsó élére. on(, on(, 57 STRT Literál-csúcs eliminálása 1. Ha nincs olyan m velet (nem lehet leszármazottja a literálnak, és nem lehet se a literál szül csúcsának amelyik a literált el állítja vagy van, de a m velet-csúcsból a literálba vezet úton van egy a literált kitörl másik m velet akkor egy olyan új m veletet illesztünk a hálóba, amelynek b vítési listáján szerepel a literál. a literál-csúcsot a m velet-csúccsal helyettesítjük a m veletb l kifutó él címkéje a literál lesz felvesszük új csúcsokként a m velet el feltételének literáljait, és bel lük élt húzunk a m velet-csúcshoz, és mindegyikhez élt húzunk a literál szül csúcsából. 59 ÉL on(, stack(, holding( clear( STRT on(, 10
ÉL on(, stack(, holding( pickup( clear( ontable( ontable( clear( on(, Literál-csúcs eliminálása 2. Ha a literált el állítja egy m velet (nem leszármazottja a literálnak, és nem se a literál szül csúcsának és a m veletcsúcsból a literálba vezet úton nincs a literált kitörl másik m velet, akkor a literál-csúcsot bel le kivezet éllel töröljük, a m veletb l élt húzunk a literál-csúcs szül jéhez az él címkéje a literál lesz STRT 62 on(, ÉL on(, ÉL stack(, on(, stack(, on(, holding( holding( clear( pickup( clear( pickup( clear( ontable( ontable( ontable( clear( clear( unstack(x, STRT on(, clear( x on(x, clear(x STRT on(, ÉL on(, ÉL stack(, on(, stack(, on(, holding( clear( holding( clear( pickup( pickup( ontable( clear( ontable( clear( unstack(, unstack(, on(, clear( STRT on(, clear( STRT 11
ÉL on(, stack(, holding( clear( pickup( ontable( clear( unstack(, on(, clear( STRT on(, stack(, clear( holding( Ütközés (sérül a konzisztencia Egy új m velet (amit most generáltuk vagy változó kötést kapott "ütközhet" már meglev régi m velettel: Nincs köztük sorrend, de közös er forrást használnak. Van köztük kijelölt sorrend és az egyik sérti a másikat (törlési, b vítési és el feltétel listák összevetése, azaz az el bb végrehajtandó m velet (véglegesen törli az utóbbi egyik el feltételét Súlyos sértésr l beszélünk, ha a törölt literált már korábban megvalósítottuk, azaz szerepel valamelyik él címkéjeként. 68 Ütközés feloldása Sorrendet (lehet leg sértésmentes vagy nem súlyosan sért sorrendet jelölünk ki a két m velet között Ha a sorrend sértésmentes, akkor egy irányított élt húzunk az el bb végrehajtandó m veletb l a másikba. Ügyeljünk arra, hogy ne alakuljon ki irányított kör. Ha a sorrend sért, mert az el bb végrehajtandó m velet (a sért véglegesen törli a kés bbi (a sértett L el feltételliterálját, akkor egy irányított élt húzunk sért m veletb l az L literál-csúcshoz. Ha ráadásul a sorrend súlyosan sért is, akkor a fentiek mellett töröljük a sértett m veletbe befutó élek címkéi közül az L literált. 69 ÉL on(, stack(, holding( clear( pickup( ontable( clear( unstack(, on(, clear( STRT on(, stack(, clear( holding( ÉL on(,on(, ÉL on(,on(, stack(, stack(, stack(, stack(, holding( clear( pickup( ontable( clear( clear( putdown( holding( holding( holding( clear( pickup( ontable( clear( clear( holding( putdown( pickup( holding( ontable( clear( unstack(, holding( unstack(, ontable( clear( on(, clear( on(, clear( STRT STRT 12
ÉL on(,on(, stack(, clear( stack(, holding( clear( clear( holding( pickup( putdown( pickup( ontable( clear( holding( ontable( clear( unstack(, 4. Logikai reprezentációk Logikai következtetéssel (rezolúció, szabály alapú következtetés generáljunk tervet! logikai reprezentáció nem is olyan egyszer. on(, clear( STRT 3 robotkar szükséges 74 4.1. Naiv reprezentáció Kézenfekv logikai reprezentáció: Tény: kezd állapot leírása Szabályok: m veletekb l származó P F F állítások él: célállapot leírása izonyítandó: kezd állapot, m veleti szabályok célállapot Kezd állapot: 1. handempty, clear(, clear(, ontable(, ontable( élállapot: on(, Szabályok: x y (holding(x clear(y on(x,y clear(x handempty x y (on(x,y clear(x handempty holding(x clear(y x (holding(x ontable(x clear(x handempty x (ontable(x clear(x handempty holding(x 75 76 Visszafelé haladó szabályalapú reprezentáció Tény: handempty, clear(, clear(, ontable(,ontable( Szabályok: x (ontable(x clear(x handempty holding(x x y (holding(x clear(y on(x,y x y (holding(x clear(y clear(x x y (holding(x clear(y handempty él: on(, 77 Szabályalapú következtetés on(, { x 1 /, y 1 / } on(x 1,y 1 holding( { x 2 /} holding(x 2 stack(, clear( pickup( ontable( clear( handempty ontable( clear( handempty clear( 78 13
axiómák: Klóz formára hozás handempty, clear(, clear(, ontable(,ontable( ontable(x 1 clear(x 1 handempty holding(x 1 holding(x 2 clear(y 2 on(x 2,y 2 holding(x 3 clear(y 3 clear(x 3 holding(x 4 clear(y 4 handempty él: on(, 79 on(, holding( clear( holding( {x 2 /,y 2 /} {x 1 /} holding(x 2 clear(y 2 on(x 2,y 2 /stack(, clear( ontable( clear( handempty Rezolúció ontable(x 1 clear(x 1 handempty holding(x 1 /pickup( handempty clear( ontable( Kezd állapot: 2. handempty, clear(, on(,, ontable( élállapot: on(, Szabályok: x y (holding(x clear(y on(x,y clear(x handempty x y (on(x,y clear(x handempty holding(x clear(y x (holding(x ontable(x clear(x handempty x (ontable(x clear(x handempty holding(x Visszafelé haladó szabályalapú reprezentáció Tény: handempty, clear(, on(,, ontable( Szabályok: x (holding(x ontable(x clear(x handempty x y (on(x,y clear(x handempty clear(y x (ontable(x clear(x handempty holding(x él: on(, 81 82 on(, { x 1 /, y 1 / } on(x 1,y 1 holding( { x 2 /} holding(x 2 stack(, clear( pickup( ontable( clear( handempty { y 3 /} ontable( clear(y 3 handempty unstack(x 3, on(x 3, clear(x 3 handempty { x 3 /} { x 3 /} on(, clear( handempty clear( xiómák: Klóz formára hozás handempty, clear(, on(,, ontable( holding(x 1 clear(y 1 on(x 1,y 1 on (x 3,y 3 clear(x 3 handempty clear(y 3 ontable(x 2 clear(x 2 handempty holding(x 2 él: on(, 84 14
on(, holding( clear( holding( {x 1 /,y 1 /} {x 2 /} ontable( clear( handempty clear( {y 3 /} on (x 3,y 3 clear(x 3 handempty holding(x 1 clear(y 1 on(x 1,y 1 /stack(, clear( ontable(x 2 clear(x 2 handempty holding(x 2 /pickup( handempty ontable( on (x 3,y 3 clear(x 3 handempty clear(y 3 /unstack(x 3, on (, clear(, handempty Problémák Nem generál tervet a válaszadási eljárás: z érvényesé kiegészített on(, on(, célklózban nem tud megjelenni a válasz. bból, hogy mely m velet axiómájával rezolváltunk, még nem nem olvasható ki az alkalmazott m veletek sorrendje. z üres klóz levezetéséhez nem használtuk a putdown m velet axiómáit, pedig arra biztos szükség van. 86 4.2. Tervgenerálás Logikai reprezentáció készítése állapottérreprezentációból: szituáció kalkulus. Ez nem azonos a terv létezésének eldöntésénél használt reprezentációval. Predikátum szimbólumok P(x állítást egy állapot jelzésére alkalmas változóval kell kiegészíteni. P(x,s predikátum így mindig az adott s állapotra vonatkozik majd. kocka-világ probléma predikátumai: ontable(x,s, on(x,y,s, clear(x,s, holding(x,s, handempty(s Például az s 0 kezd állapotban ontable(,s 0, ontable(,s 0, clear(,s 0, clear(,s 0, handempty(s 0 87 88 Függvény szimbólumok z F(x m velet egy állapot állapot operátor, amit paraméterek állapot állapot függvényszimbólumnak tekinthetünk. z F(x(s vagy röviden F(x,s megadja azt az állapotot amelyikbe az s-b l az F(x m velet végrehajtásával jutunk. kocka-világ probléma függvényei: pickup(x,s, putdown(x,s, stack(x,y,s, unstack(x,y,s Egy terv ábrázolása: Pl: stack(,,pickup(,s 0 89 lternatív megoldás az állapot átmenetek jelölésére z F(x m veletek függvényszimbólumai mellett bevezetjük a do:m velet állapot állapot operátort, amit szintén függvényszimbólumnak tekintünk. do(f(x,s megadja azt az állapotot amelyikbe az s-b l az F(x m velet végrehajtásával jutunk. Egy terv ábrázolása: Pl: do(stack(,,do(pickup(,s 0 90 15
Tény-állítások Hatás-szabályok Kezd állás predikátumai az s 0 kezd állapotban Pl: ontable(,s 0, ontable(,s 0, clear(,s 0, clear(,s 0, handempty(s 0 Egyéb megkötések, pickup(x m velet a P listáján szerepl állítások teljesülése esetén hajtható végre, és végrehajtása után teljesülni fognak az listáján szerepl állítások. x s ontable(x,s, clear(x,s, handempty(s holding(x, pickup(x,s Általában az F(x(P,,D m velet hatás-szabálya a x s P F (x,s F (x, F(x,s 91 92 Keret-probléma Keret-probléma megoldása Tegyük fel ontable(,s, ontable(,s, clear(,s, clear(,s, handempty(s. lkalmazzuk a pickup( m veletet az s állapotban. Így a pickup(,s állapotba jutunk. m velet hatás-szabályából kiolvasható, hogy az új állapotban: holding(, pickup(,s De hogyan adjuk meg azt, hogy az új állapotban ontable(, pickup(,s, és a clear(, pickup(,s állítás is teljesül? Vegyük észre, hogy ezek éppen azok, amelyek nem szerepeltek a pickup( D listáján. 93 Keret szabályokkal: Explicit módon leírjuk minden m veletre azt, hogy azok végrehajtásakor mely állítások mely állítások maradnak meg az új állapotban Pl: ontable(,s ontable(, pickup(,s clear(, s clear(, pickup(,s Vegyük észre, hogy ezek éppen azok az állítások, amelyek nem szerepeltek a m velet D listáján. Default szabályokkal: Q(y,s : Q(y D F(x Q(y, F(x, s 94 Keret-szabályok pickup(x m velet a D listáján nem szerepl állítások a clear(u,s (ahol u x, az ontable(u,s (ahol u x, és az on(u,v,s. Ezért x u s clear(u,s, u x clear(u,pickup(x,s x u s ontable(u,s, u x ontable(u,pickup(x,s x u v s on(u,v,s on(u,v,pickup(x,s Általában az F(x(P,,D m velet keret-szabálya az L(u literálra : x u s L(u,s L(u D F (x L(u, F(x,s Összefoglalva Tények kezd állapot egyéb állítások Szabályok: hatás-szabályok: s x P F (x,s F (x, F(x,s keret-szabályok: s x u L(u,s L(u D F (x L(u,F(x,s él: t cél(t 95 96 16
Rezolúció Tények: ontable(,s 0, ontable(,s 0, clear(,s 0, clear(,s 0, handempty(s 0,, Hatás-szabályok: (most csak kett x s ontable(x,s, clear(x,s, handempty(s holding(x, pickup(x,s x y s holding(x,s, clear(y,s on(x,y,stack(x,y,s, clear(y, stack(x,y,s, handempty(stack(x,y,s Keret-szabályok: (most csak egy x u s clear(u,s, u x clear(u,pickup(x,s él: t on(,,t ontable(,s 0, ontable(,s 0, clear(,s 0, clear(,s 0, handempty(s 0,, ontable(x,s clear(x,s handempty(s holding(x, pickup(x,s holding(x,s clear(y,s on(x,y,stack(x,y,s holding(x,s clear(y,s clear(y, stack(x,y,s holding(x,s clear(y,s handempty(stack(x,y,s clear(u,s u=x clear(u,pickup(x,s on(,,t 97 98 on(,, t {x 1 /, y 1 /, t/ stack(,,s 1 } holding(x 1,s 1 clear(y 1,s 1 on(x 1,y 1,stack(x 1, y 1,s 1 holding(,s 1 clear(,s 1 ontable(x 2,s 2 clear(x 2,s 2 handempty(s 2 holding(x 2, pickup(x 2,s 2 {x 2 /, s 1 / pickup(,s 2 } clear(,pickup(,s 2 ontable(,s 2 clear(,s 2 handempty(s 2 {u 3 /, x 3 /, s 3 /s 2 } clear(,s 2 = ontable(,s 2 clear(,s 2 handempty(s 2 clear(u 3,s 3 u 3 =x 3 clear(u 3,pickup(x 3,s 3 on(,, t on(,, t {x 1 /, y 1 /, t/ stack(,,s 1 } on(,,stack(,,s 1 holding(,s 1 clear(,s 1 {x 2 /, s 1 / pickup(,s 2 } on(,,stack(,, clear(,pickup(,s 2 ontable(,s 2 pickup(,s 2 clear(,s 2 handempty(s 2 on(,,stack(,, pickup(,s 2 {u 3 /, x 3 /, s 3 /s 2 } clear(,s 2 = ontable(,s 2 clear(,s 2 handempty(s 2 {s 2 /s 0 } tényklózok on(,,stack(,, pickup(,s 0 {s 2 /s 0 } Szabályalapú következtetés Megjegyzés on(,,t { x 1 /, y 1 /, t/stack(,,s 1 } on(x 1, y 1, stack(x 1, y 1, s 1 holding(, s 1 clear(, s 1 { x 2 /, s 1 / pickup(, s 2 } {u 2 /, s 1 / pickup(, s 2 } holding(x 2, pickup(x 2, s 2 clear(u 2, pickup(, s 2 Jól jönne egy kis heurisztika. Egy adott szinten ugyanazon m velet szabályait illesszük Másik állapottér-reprezentáció segíthet (Green. M veleti (hatás és keret szabályok száma általában csökkenthet Kowalski módszerével. ontable(, s 2 clear(, s 2 handempty(s 2 clear(, s 2 {s 2 /s 0 } {s 2 /s 0 } {s 2 /s 0 } {s 2 /s 0 } {s 2 /s 0 } ontable(, s 0 clear(, s 0 handempty(s 0 clear(, s 0 102 17
Kowalski reprezentációja Ötlet Túl sok szabály van, mert egy hatás-szabály több W L szabályra esik szét egy m veletnek sok keret-szabálya van F L s x u (L(u,s L(u D F (x L(u,F(x,s (másodrend logikával kellene dolgoznunk Univerzum kockák, állapotok, állítások, m veletek Predikátum szimbólumok: HOLD(állítás,állapot PT(m velet,állapot POSS(állapot Függvény szimbólum: do(m velet,állapot 103 104 Tényállítás Szabályok Hatás-szabályok: HOLD(a,do(F(x,s ha a F (x HOLD(holding(x,do(pickup(x,s HOLD(on(x,y,do(stack(x,y,s HOLD(clear(x,do(stack(x,y,s... Kezd állás: HOLD(kezdet,s 0 HOLD(ontable(,s 0, kezd állapot lehetséges: POSS(s 0 Speciális nem-egyenl ségek El feltételek: HOLD(P F (x,s PT(F(x,s s x y (HOLD(holding(x,s HOLD(clear(y,s PT(stack(x,y,s Keret-szabályok: HOLD(a,s a D F (x HOLD(a,do(F(x,s s a x y (HOLD(a,s a holding(x a clear(y HOLD(a,do(stack(x,y,s Lépés-szabály: POSS(s PT(m,s POSS(do(m,s 105 106 élállítás célállítás fenn áll a célállapotban és a célállapot lehetséges t (POSS(t HOLD(cél,t : t (POSS(t HOLD(on(,,t 107 18