Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

TUDÁSALAPÚ RENDSZEREK Gyakorlat - CLIPS. Tartalom 1. Szabályalapú leírás 2. A CLIPS rendszer 3. Ki Csipike? 4. Születésnap 5. Rendezett és nem rendezett.

Hasonló előadás


Az előadások a következő témára: "TUDÁSALAPÚ RENDSZEREK Gyakorlat - CLIPS. Tartalom 1. Szabályalapú leírás 2. A CLIPS rendszer 3. Ki Csipike? 4. Születésnap 5. Rendezett és nem rendezett."— Előadás másolata:

1 TUDÁSALAPÚ RENDSZEREK Gyakorlat - CLIPS

2 Tartalom 1. Szabályalapú leírás 2. A CLIPS rendszer 3. Ki Csipike? 4. Születésnap 5. Rendezett és nem rendezett tények 6. Feladatok 7. Keretrendszer 8. Források

3 Szabályalapú leírás  Szabályalapú leírás esetén Ha... akkor... alakú szabályok segítségével írhatjuk le az ismereteket.  HA feltétel AKKOR művelet  A hétköznapi nyelvben a szabályokat rendszerint a következő formában fogalmazzuk meg (pl): Minden veréb madár.  Ezt a szabályt úgy fogalmazhatjuk át, hogy ha egy élőlény veréb, akkor az az élőlény madár is.

4 Legyenek adottak a következő tények (1-3.) és szabályok (4-9): 1. Ká kígyó. 2. Szilvia elefánt. 3. Csipike veréb. 4. Minden veréb madár. 5. Minden hüllő állat. 6. Minden madár állat. 7. Minden pingvin madár. 8. Minden madár tojással szaporodik. 9. Minden kígyó hüllő.

5 Előreláncolásos következtetés  A felsorolt szabályokat és tényeket két módon is felhasználhatjuk.  Első esetben az itt megadott tényekből indulunk ki, és a szabályokat felhasználva újabb és újabb tényeket generálunk.  Ezt a módszert előreláncolásos következtetésnek nevezzük.

6 Lássuk, hogyan működik ez a módszer az itt megadott tényekkel és szabályokkal! A „Minden veréb madár.” érvényes Csipikére is, azaz Ha Csipike veréb akkor Csipike madár is. Mivel Csipike veréb, így Csipike madár. A „Minden madár állat.” érvényes Csipikére is, azaz Ha Csipike madár akkor Csipike állat is. Mivel Csipike madár az előzőek alapján, így Csipike állat.

7 Cél  Az előreláncolásos következtetés feladata a tények, szabályok következményeinek megkeresése.  Mivel a folyamat során újabb és újabb tények keletkeznek, és ezek határozzák meg a soron következő alkalmazandó szabályt, így a módszer adattal irányított.

8  A másik módszer a visszafele láncolás. Lásd később.

9 A CLIPS rendszer Neve a C Language Integrated Production System kifejezés rövidítése. Már a névből is több dologra következtethetünk:  a production system utal a ha-akkor szabályokra, tehát ez a rendszer nem más mint egy szabályokon alapuló szakértő rendszer;  a C nyelv pedig arra utal, hogy a rendszert a NASA valamikor C-ben kezdte el fejleszteni, s jelenleg többek között ebben a formában is hozzáférhetünk a programhoz.

10 Ki Csipike?  Azt, hogy Csipike veréb azt úgy is írhatjuk, hogy  ( Csipike vereb )  ( vereb Csipike )  ( Csipike egy vereb )  Megj: A program szövegében nem érdemes ékezetes betűket használni.

11 Csipike veréb  Ezt a tényt a rendszer tudomására kell hozni.  A Prologhoz hasonlóan a rendszer adatbázisához az assert utasítással tudunk új dolgokat hozzáadni, s a retract utasítással tudunk onnan valamit törölni. Hozzáadás assert Törlés retract

12 Csipike veréb  Tehát a CLIPS programját elindítva az (assert (vereb Csipike)) hatására veszi tudomásul ezt a tényt a rendszer.  A rendszer által ismert tények lekérdezése: ( facts ) utasítással.  A tények előtt álló számok azért lényegesek, mert egy tévesen megadott tényt az azonosítási száma segítségével lehet törölni. Például (retract 0) törli az elsőként megadott tényt.

13 Új tények generálása, törlése  A program működése során az általunk megadott tények és szabályok alapján újabb tényeket generál.  Új programfuttatás esetén rendszerint ki kell törölnünk a gép által generált tényeket. Több száz tény esetén reménytelen feladat egyenként kitörölni ezeket a tényeket.  Épp ezért létrehozhatjuk a kiinduló tények csoportját a deffacts kulcsszóval, melyet a tények elnevezése követ, s majd a tények maguk.

14 Betöltés  Ezek a csoportok begépelhetők az előbbi módon, vagy akár egy külső fájlból is beolvashatóak. (Ez utóbbi természetesen sokkal kényelmesebb.)  A Csipikére és a többiekre jellemző tények a csipike.clp fáljban találhatóak, ezeket a ( load "csipike.clp") paranccsal lehet betölteni.

15 Mentés  Ha valaki a rendszeren belül definiálja a kiinduló tényeket vagy szabályokat, akkor a save paranccsal mentheti ki.  Ez nem menti a generált tényeket.  Azokat a save-facts segítségével menthetjük, és a load-facts segítségével tölthetjük vissza.

16 (reset)  A szabályok betöltése még nem elegendő ahhoz, hogy egyből használatba vegyük a tényeket.  Ehhez előbb ki kell adni a ( reset ) parancsot, amely aktivizálja a kiinduló tényeinket, illetve még létrehoz egy ( initial-fact) tényt is.

17 Hello world!  Ez utóbbi tényt felhasználva bemutatjuk a Hello world! programot, mellyel sok programnyelv ismertetése elkezdődik. Ez a program a CLIPS-ben a következőképpen néz ki: (defrule hello "Hello world" (initial-fact) => (printout t "Hello" crlf) )

18 „Minden veréb madár.”  A szabályok a Prologban sem tartalmazták kiírva a kvantorokat, de oda kellett volna gondolni azokat. Itt szintén ugyanaz a helyzet. A Minden veréb madár. szabály formalizáltja a ∀ x(v(x) ⊃ m(x)) volt. Innen  első lépésben el kell hagyni a kvantort,  a másodikban a ⊃ jel helyett a => jeleket kell írni,  harmadikként a változók a CLIPS-ben kérdőjellel kezdődnek.

19 „Minden veréb madár.” Ezzel eljutottunk a (vereb ?x) => (madar ?x) alakhoz, ami már majdnem jó, csak meg kell mondani, hogy mit szeretnénk csinálni a következményben szereplő ténnyel. Esetünkben a rendszer tudomására hozni, azaz alkalmazni rá az assert parancsot.

20 defrule vereb-madar Ezzel kész a szabály, csak adni kell neki egy nevet (pl. vereb-madar), és esetleg egy kis magyarázó szöveget (Minden veréb madár). Összességében a parancs a következőképpen néz ki: (defrule vereb-madar "Minden veréb madár" (vereb ?x) => (assert (madar ?x)) )

21 (run)  Ha már adott az összes szabály meg a tények, akkor a (run) paranccsal indítható el a következtetés.  Megj: Ha nem akarjuk indítani, csak látni, hogy hogyan indulna el az egész, akkor az agenda parancsot kell használni.  Mindebből persze nem látunk semmit.

22 (run)+ facts  A facts parancs kiadásával láthatjuk, hogy miről bizonyíthatjuk be a tények és szabályok alapján, hogy valóban állat.  Persze ezt is lehet automatizálni. Készíthetünk egy olyan szabályt, amely kiírja az állatok neveit: ( defrule allathirdetes "Kiirjuk az állatok neveit" (allat ?x) => (printout t ?x " állat." crlf) )

23 Feladatok Adjuk hozzá az adatbázishoz (ezután adjuk ki a run parancsot)! 1. Vilit, aki veréb 2. Palit, aki madár Listázzuk ki a tényeket! Töröljük ki a 7-dik tényt! Töröljük a tényeket 3-tól 6-ig! Mit tapasztalunk a sorszámokra vonatkozóan?

24 Feladatok Töröljük az adatbázist (clear)! Adjuk hozzá a következő tényeket az adatbázishoz! …

25 Feladatok 1. Autójavítás 2. Rendőrségi nyilvántartás 3. Sör 4. Házasságközvetítő

26 Források  


Letölteni ppt "TUDÁSALAPÚ RENDSZEREK Gyakorlat - CLIPS. Tartalom 1. Szabályalapú leírás 2. A CLIPS rendszer 3. Ki Csipike? 4. Születésnap 5. Rendezett és nem rendezett."

Hasonló előadás


Google Hirdetések