CLIPS (az angol C Language Integrated Production System szóból ) - szoftverkörnyezet szakértői rendszerek fejlesztéséhez . Charles Forgy által javasolt szintaxis és név az OPS -ben ( Official Production System ). A CLIPS első verzióit 1984-től a NASA Johnson Űrközpontjában fejlesztették ki az akkor létező ART*Inference rendszer alternatívájaként , egészen addig, amíg az 1990- es évek elején felfüggesztették a finanszírozást, és a NASA kénytelen volt kereskedelmi termékeket vásárolni.
A CLIPS egy termelési rendszer . A kimeneti megvalósítás a Rete algoritmust használja .
A fő gondolat az, hogy a tudást a következő formában ábrázoljuk:
1. szabály: HA (feltétel1 teljesül) AKKOR (végezze el az 1. lépést) 2. szabály: HA (feltétel2 teljesül) AKKOR (végezze el a 2. lépést) ...Az ilyen ábrázolás közel áll az emberi gondolkodáshoz, és különbözik a hagyományos algoritmikus nyelveken írt programoktól, ahol a cselekvéseket szigorúan az algoritmus szerint rendezik és hajtják végre.
A CLIPS gyorsaságának, hatékonyságának és ingyenességének köszönhetően az egyik legszélesebb körben használt szakértői rendszerfejlesztő eszköz. Mivel nyilvános , eredeti szerzője, Gary Riley még mindig frissíti és karbantartja.
A CLIPS egy komplett objektum-orientált COOL nyelvet tartalmaz szakértői rendszerek írásához. Bár C nyelven íródott , felülete sokkal közelebb áll a LISP programozási nyelvhez . Bővítmények készíthetők C nyelven, CLIPS pedig integrálható C programokba [1] .
A CLIPS-t előre láncolási nyelvként való használatra tervezték, és az eredeti verzióban nem támogatja a visszafelé láncolást.
A többi szakértői rendszerhez hasonlóan a CLIPS is szabályokkal és tényekkel foglalkozik.
Azokat az információkat, amelyek alapján a szakértői rendszer logikus következtetést von le, tényeknek nevezzük . A CLIPS-ben kétféle tény található: rendezett és sablonos . A sablon tényeknek van egy sablonja, amelyet a deftemplate konstrukció ad meg . A rendezett elemeknek nincs kifejezett deftemplate konstrukciójuk, de van benne. A sablon ténye hasonlít egy C-beli szerkezetre vagy egy Pascal-beli jelölésre, a mezőket slot-oknak nevezik, és a slot -konstrukcióval deklarálják . Például a következő sablon egy autók nevű sablont deklarál a következő mezőkkel: modell , szín és szám .
(deftemplate autók (slot modell) (nyílás színe) (helyszám) )A tények a munkamemóriában tárolódnak. Az assert paranccsal az új tények a munkamemóriába kerülnek . Például a következő parancs
(érvényesít (autók))hozzáadja a rendezett tényautókat a munkamemóriához .
A következő parancs egy sablon tényt helyez el három attribútummal.
(állítás (autók ("Audi" modell) (fekete szín") ("WY 2576" szám) ) )A CLIPS nem engedi, hogy azonos slotértékekkel rendelkező tényeket helyezzenek a munkamemóriába, bár ez szükség esetén egy beállítással engedélyezhető.
A tartományismeret a CLIPS-ben szabályokként jelenik meg , amelyek a következő szerkezettel rendelkeznek:
(feltételek) {szinonimák: előzmények a logikában, bal oldal - LHS a CLIPS szempontjából} => (cselekvések) {szinonimák: következmények a logikában, jobb oldal - RHS a CLIPS szempontjából}A szabály bal oldala a feltétele annak kiváltásának, a jobb oldala pedig azok a műveletek, amelyeket a feltételek teljesülése esetén végre kell hajtani. Az => jel egy speciális karakter, amely elválasztja az LHS-t és az RHS-t.
A szabályokat a defrule paranccsal deklarálják . Szabálypélda:
(defrule search-black-audi (autók ("Audi" modell) (fekete szín)) => (nyomtatás t "Van egy fekete Audi!" crlf) )Ez a szabály akkor aktiválódik, ha egy tény ("Audi" modell) és (fekete szín) attribútumokkal jelenik meg a munkamemóriában.
Egy szabály aktiválása nem jelenti annak végrehajtását. A szabály aktiválása egy szabály elhelyezése a CLIPS munkaszabály- vagy napirendi listáján.
Az aktivált szabályok végrehajtásához végre kell hajtani a parancsot (run).
A szabályok munkalistába helyezésének és végrehajtásának folyamatát a következtetési motor (ILM) vezérli. Az MLV bizonyos eseményekre reagál:
Esemény | Akció |
---|---|
TÉNYEK ELHELYEZÉSE A MŰKÖDÉSI MEMÓRIÁBA | 1) Tények leképezése szabályokhoz a tudásbázisból 2) Tények leképezése szabályokhoz a szabályok munkalistájából |
TÉNYEK TÖRLÉSE A MŰKÖDÉSI MEMÓRIÁBÓL | 1) Tények leképezése szabályokhoz a tudásbázisból 2) Tények leképezése szabályokhoz a szabályok munkalistájából |
ÖSSZEHASONLÍTÁS TALÁLT SZABÁLYOKAT A MUNKAMEMÓRIÁBÓL A TÉNYEKNEK MEGFELELŐ SZABÁLYOKAT | Talált szabályok beillesztése a munkaszabályok listájába |
ÚJ SZABÁLYOK A SZABÁLYOK MUNKALISTÁJÁHOZ | a munkaszabályok listája a kiválasztott konfliktusmegoldási stratégia szerint rendeződik |
A JELENLEGI SZABÁLYOKON KÍVÜLI SZABÁLYOKAT A TÉNYEK ÉS A SZABÁLYOK MUNKALISTÁJÁNAK ÖSSZEHASONLÍTÁSA ESETÉN TALÁLT | A nem releváns szabályok (a feltételek nem felelnek meg a tényeknek) törlésre kerülnek a munkalistáról |
FUTÁSI PARANCS (RUN) | A munkalista első szabályának műveletei (jobb oldali) végrehajtásra kerülnek. |
ÜRES VÁLT A SZABÁLYOK MUNKALISTA | Leállítja a szabályok végrehajtását a munkalistáról |
Az ember nem mindig szabhat olyan teljes feltételeket, amelyek kielégítik a valóságot. Van egy legenda, amely szerint a szinopi Diogenész Platón definíciójára válaszolva: „Az ember kétlábú állat, toll nélkül” kitépett egy csirkét, és bevitte az iskolába, és kijelentette: „Íme, a platóni ember!” Amihez Platón kénytelen volt hozzátenni definícióját: „... és széles körmökkel”. Ha olyan szabályok jelennek meg a tudásbázisban, amelyek kielégítik a tényeket, de ellentétes cselekvéseket hajtanak végre, akkor szabályütközés lép fel. Például két szabály van:
1. (Ha valaki meglökött egy másik személyt - meg kell büntetni a huliganizmusért)
2. (Ha valaki meglökött egy másik személyt, akit teherautó vezetett - jutalmazzuk az ember életét, aki megmentette)
Ez a kettő a szabályok ütközni fognak egymással. Az első szabály általánosabb, és mindig aktiválódik, ha a második aktiválva van. De először a második szabályt kell végrehajtani. A CLIPS számos stratégiát kínál az ilyen konfliktusok feloldására. De még ha nem is lehet minden esetre kiválasztani a megfelelő stratégiát, megadhatja a szabályok prioritását. A magasabb prioritású szabályok kerülnek először végrehajtásra.
Különféle tények tehetik alkalmazhatóvá a szabályt. Az alkalmazandó szabály ekkor engedélyezett ( assert ). A tényeket és a szabályokat továbbítási nyilatkozat hozza létre, amint az a példában látható:
(hibák hibaelhárítása (autóprobléma (gyújtáskulcs neve) (állapot bekapcsolva)) (car_problem (motor neve) (státusz wont_start)) (car_problem (name fényszórók) (státusz munka)) ) (törlési szabály 1 (autóprobléma (gyújtáskulcs neve) (állapot bekapcsolva)) (car_problem (motor neve) (státusz wont_start)) => (assert (car_problem (indító név) (állapot hibás)) )A CLIPS leszármazottai a következő nyelvek és környezetek:
A CLIPS for Windows meglévő verziói (clipswin.exe) nem támogatják a cirill betűt (a CLIPS clipsdos.exe konzolos verziója csak UTF-8 formátumban támogatja a cirill betűt). A cirill ábécé teljes támogatásának hiánya a fő oka a CLIPS rossz oroszországi terjesztésének. Ugyanakkor a CLIPS forráskódok nyitottsága lehetővé teszi ennek a helyzetnek a korrigálását. Különösen, ha forrásból fordítunk, lehetőség van a javításokra a koi8-r vagy az ansi1251 támogatásával [4] .
A legújabb verzió a CLIPS 6.3, amely 2015. március 17-én jelent meg.