KLIPEK

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.

Tények

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

Szabályok

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

Következtetőgép

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

Konfliktusmegoldási stratégiák

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 verziói

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.

Lásd még

Jegyzetek

  1. Windows rendszeren a más nyelveken írt programok használhatják a CLIPSWin32.DLL dinamikus hivatkozási könyvtárat.
  2. Siebel Essentials: Viszlát Haley, helló OPA! Az eredetiből archiválva: 2014. május 12.
  3. Fordítási hiba  (nem elérhető link)
  4. Útmutató az orosz kódolások támogatásának csatlakoztatásához . Letöltve: 2010. augusztus 17. Az eredetiből archiválva : 2011. április 18..

Linkek

Irodalom