CLIPS áttekintés. Produkciós rendszerek fejlesztése

Hasonló dokumentumok
SZAKÉRTŐI RENDSZEREK, LOGIKAI KÖVETKEZTETÉS ALAPÚ MEGOLDÁSOK. Integrációs és ellenőrzési technikák, 2017

CLIPS (C Language Integrated Production System)

SZAKÉRTŐI RENDSZEREK, JOGI TUDÁSALAPÚ RENDSZEREK. Strausz György október 2.

A F u z z y C L I P S a l a p j a i

AWK programozás, minták, vezérlési szerkezetek

AWK programozás, minták, vezérlési szerkezetek

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Operációs Rendszerek II. labor. 2. alkalom

É ö É ó Á É ó ü Á Ő Ö ü ö Ö ő ü ö ő Ü ű ő ó ő ó ő ő ő í ö ö ö í ő ü ü ő ü ü ő ö ó ő ő ú ő ő ö ö ő ő ő ú ő ő ü ú

íő ö Ú ö ö ő í ű í ű í í ű ö í ö Ü ö

Ú ú ö é ö é Ú ú ö ű ö ö ű ö é ö ö é í í Ö ö í í Á Á Ó é ű ü é é ü ú é ü é ű ü é

í ű í í í ű ö ü ü ö ú ű ú ö ö í í í ű ö ü ü ö ö ö ö í í í ű ö ü ü ö ü ö í í í ű í ö í ö ö ű í ü ü ö í ö ö ö ü í í ű í ú ö ö ö ü ö ö ú ö ö ö ü ö ö ö ö

ó Ó ó Ó Ő ó Ő Ó Í

ú ü ú ö ú í ü í ű ö ü ü ú ú ö ú ö íö í ú ü

ó ú ó ó ó ó ó ó ó ó ó ó ü ó ü ö ü ó Á Á Ő ű ü ó ó ó Í ó ü ú ü Á Á ű ö ó ó ó ó ö ü

AWK programozás Bevezetés

Szoftvertechnológia alapjai Java előadások

ü ö ű ö ű ö Ö ö ú ü Á ü ü ö

É í ű ö ő ü ú ö ü ö ó ö ü í ő ó ú ő ű ú í ő ö ú ő ű ü í ő ó ü ö í ő í ö í ó ó í ó í ó ű ö ö ú í ő ú í í ó í ő í ő ó í ó ó í ó ó í í í í ó ö ö ü ó í ó

í ó ó ő ő ő Íő í ó í ó ó ő ő ó ő Íő í ó ú ő í í ó ö ő ő í ő ő í ó ü ö í ő ő ó ú ő ő ő ó ő í ő Í ő í ó í ü ő í í ü í í ó ö í ő í í ö í í őí ö í ü í ó ö

é é ó ó ó é ö é é é ó é é é é é é é é é é é é é ú ó é ó ö é é ó é ö é ó é éú é ú ó é é é é é é é é ö é é é ö é Ö é é ö ó é ö é é é é ű é ö ö ü é ö é Í

í ű ű ö í ö í ű í ú ű ű ű í Í í ö í Í ÍÍ ö ü ö í ű í ö ö ö ű í í ö í ö í ü ö í í í ű í ű ö ö ö í ű ö ö ű ü ö ö ö í ú ü ű ö ú í ö ö í ü ö ö í í í í í í

ó Í Ó ó ö ö ó ö ó ó ó ö ó ü ö ó ó Í ó ó ó í Í ó ö í í ó Í ó ö ó í í í ó ö ó ó í ó Í Í ö ö Í ö ó ó ó ö ö ó í ü í ó Í ó ö ó ó í ó ö Í Í

Í Í í ú Í ü í ő í ö ö ö ü í Í Í Í ü í í ü í ő ő

ő ő ü ö ö ü ő ő ö ő ö ő ö ö ó ö ő ő ö í Ö ö í őí ö ö ó ö ö ő ö í Ö ő ő ö ö í í ő í ö ó ő ö ó í ó í Ö Í ó ö í ó ó ö Í Ö ő Í ő ő ó ö ő í ó ö í í í ü ö í

ö ö í őí ö ö í ő ö ő ú ú ö ő ú ö ő ú ö ü ö ö ö ö ö ő ö í ő ü ü ő ö ü ű ő ö ú í ö ő ö í í ű ű í ő ö í ú ű ő

ö ő ó í ő ü ő ö ő ő ö í ő ó ő ü ú ő ö í ő ő ö ő ü ó ő ó ű ü ó ő ó ó ü ü ő ő ó ó Á í Ő ó ő ő ó í ő ó ó ő Ó ó ö ö Ö ó ő ó ő ö Ö ő ü ő ó ő ö ő ó í

ő ö ö ő ó ö ü Ö ö ő í í ő ő ű ö ö ú ö ö ö ő ő ö ö ö ö ő ő ö ő ű í Á ó ó ö ő ö ü ö ö í ű ő ö ö í ö í ü ö ü ü ö ö ö ö ő ö ü í í ő ö ö ű ö ö ó ő ö ö ü ó

ú ü ü ú

É Í ó Í Í ó Íó ó ó Á ó ú ö ű ü ú Á Í ó ó

ú í ü ü ö ű í í í í ü ö ö ö ö í í í ű í ö Á ö ö í í ü ö ü ü ű

ú í ü ö ú ö ö ő í ö ü ö ő ö ü ö í í ü ö í ü ő ö ú ú ő ő ő ő ő ő ö ö ő ő ü ö ü ő ő ö í ő ő ü ü ö í ü Á ő í í ő

SZAKÉRTŐI RENDSZEREK, JOGI TUDÁSALAPÚ RENDSZEREK. Strausz György október 27.

Á í ó ó ö Á ö ü É Á É ü É ó ó É ü Á í Á Á ö É ó Á Á Á ó ú É ö ö É Á Á Á í ó Á É É Á ó Á Á É Á ó ü Ű Ö Á Á Á ó ö É Á Á ü É Á É ó É Á Á Á Á Á Á ö ö É Á

Á É Ő Ö É Á Á É í í ő ő ő ó ú ő ü ű ő ü ő í ü ó ú ó ű ő ó ő ő ú ő ő ó ó ó ő í ú ó í ú ó í í É ü ő ó ó

í ő ő Ü Ü Ü Ó í őí Ü ő ű í í ú í ő Ú ő Ü í ő í Ó ő ü í í ú ü Ü ü

ő ő Á Á ó ü ő ó Í ő ö í ö ö óú óú ő ú í ő ú ó ó ó ü ö ö ü ö í ő ö ő ó ü ö ö ü ő í ő ő ó í ó ó ő ő ő ő ü Í ó É ü Ö í ö ő Í Í ő Í ő

ű ő ű ő ő í ü ő ü í ű ű ó ó ü í ü ó ű ő í ó ő ő ő ű ó ü ó ő ő í ó ó í ű ű ű í ó ü ő ű í ó ó ó ő Á Ö ő ó ő ő ó ü ő ó ő ő ő ő í ó í ü ő ő í ű ő ü ü ő ő

í ö ü ö í ó ü ó ó ö í ó ó ó ó ó ó í ü ó ó ö ü ó ó ü ó ó É í ó ö í í ó ó í ö ó ö í ö ö ó í í ó ö í ó ú í ó í ó ü ö ó í ö í ű í ű ó ö í ú í ó ú ö ü í ó

ú ű ú ú ű ú ű ű ú ű ú ű Á ű ű Á ű ű ú ú ú ú ú ú ű ú ú ú ú ú ú ú ú

ű ú Í Ó Á ú Ű ű Ő Ö Á ú Ű Ü ú ú Á ú ű

ú Ü Í ú ú ú ú ú ú

Ö Ö Ú Ó Ö ű Ő Ő ű ű Ü Ő Ó Ő

ő ő ő ő ú É ü ú ú ű ú ű ő ő ő ő Á Á ü ő É É É É É É Á Ú Á Á ő ő ő ő ő É Á Á Á ő ő ő Á ü ő ő ü

ú ú ö ö ü ü ü ü ű ü ü

ú ú ü ü Á ú ú ü ű ű ú ü ü ü ü

Í Ú É ő ő ú ö Ö ú ú ú ö ö ú ö ö ű ö ő ö ö ú ö ő ő ö ö ö ő ő ú ő ú ö ö ö ú ö ö ú ő ö ú ö ű ö ő Ó ő Á ö ő ö ö

É Ö Á Í Á Ó Ö ü

ü É ö É É ö ö ö ü ö ö Á ű ö ű ű ű Á Í ö ö Ó ö

Ö Ö ű ű ű Ú Ú ű ű ű Ú ű

ü ö ú ö ú ü ö ü Á Ó ö ö ö ö ú ü ú ü ü ú ú ö ö ü ü ú ü ü ö ö ű ö ü ü ü ü ö ö

é ú é é é é é é é é é é é é ú é ö é é é ö Ő é é é ú é é é é é é é é ö é é é ö é Ö é é ö é ö é é é ű é ö ö é ö é é ö ö é é ö ö é ö é Ö é ú é é é é é é

É Í Á Á É Ü Ó É É É É Í Ó Ó Ő Á Á É Á É É É É Á É É Á Á É É Á É Í

Ü

Í Ó ü ü í ü ü ü í Í í É í í Í Í ü ü ü í Í ü

É ő ő ű ú Á ő Á ő ű ő ő ő ő ő ő ő ő ű ú ű ű ő ő ő ű

ő ö ő ú ő ö ö ő ó ő ö ü ú ö ö ó ő ö ü ó ó ó ó ő ő ő ó ó ú ő ü ő ö ö ó ü ö ö ő ű ö ö ő ú ú ó ö ő ű ö ó

Í Í Í Ü Ó Ó Ö Á Ü Ü Ó Ü Ü Ó Ö Í É Ö

ő ő Ű ü ú ú Ú ü ű ő ő ő ő Á Á Í ü É ő ő ő ő ő É ő ú ú ú ő Á Ö ő

É ö Ű ő ű ő ő ű ű

ö ö ö ö ö ö ö ü ö ü ö ű ö ú ü ű ö ü Í ö ú ü ü ű ö ú ü Á ü

Ö Ö ú

í Ó ó ó í ó ó ó ő í ó ó ó ó

Ü ű ö Á Ü ü ö ö

É ú É ö ö ű ö ö ö ú ú ú ű ű ú ö ű ö ű ű ü ö ö ü ű ö ü ö ö ö ö ú ü ö ö ö ú ö ö ú ö ö ú ü ú ú ú ű ü ö ö ű ú ű ű ü ö ű ö ö ö ű ú ö ö ü ú ü ö ö ö ü ú ö ű

é ö é Ö é é ő í ó í é ő ö ú é ó é ő ü ü é ó ö é é ó é é ö é ő í é é ő é é ö é ű ö é í ó é é í ö í ó í ó é é ö ó í ó ó í ó é é ö ő í ó ó í ó ü é í ü

ó ú ú ü ú ő ó ő ő ó ó ó ö ó ü ő ó ő ö ü ü ó ö ő É ó ö ö ö ó ó ö ü ü ö ü ó ó ő ó ü ó ü ü ö ö É ú ó ó ö ú ö ü ü ó ó ó ü Á ö ö ü ó ö ó ö ö ö ö ó ó ö ó ó

É Í ü ú É ü ő ő ő ő ú ő ú ü ü ő ü ú ü ű ú ú ü ü Í ü ű ő ő É ő

ő ő ő ő ő ő ú ő ü Á ü ü ő ő ő ő ő ő ő ő ő ő Ö Ó ő ő ő Ö ő ő ő

í ó ő í é ö ő é í ó é é ó é í é é í é í íí é é é í é ö é ő é ó ő ő é ö é Ö ü é ó ö ü ö ö é é é ő í ő í ő ö é ő ú é ö é é é í é é í é é ü é é ö é ó í é

ö ő ő ü ü Ó ü ö ű Á ő ő ö ő Á Ó ű ö ü ő ő ű

ó É ó í ó ó í í ö í ó í ö ö ö ü ö ó ó ó ü ú ö ü ó ó ö ö ü ü ü ö ö ó ö í ó ű Ü ó í ú í ö í ö í Í ó ó í í ö ü ö ö í ö í ö ö ö ü ó í ö ö ó í ú ü ó ö

ö ö ó ú ö ö ú ü ó ö ö Í ö ö ö ü ó ö ö ú ú ö ü ó ü ó ü ö ú ü ó ü ö ó Á Á ö ü ú ó ö ü ü ö ó ü ü Á ü ö ü ö ü ö ö ö ü ö ú ö ö ö ü ú ö ú ö ű ú ú ü ö ó ö ö

Í ö ö ű ú ö ö Í ö ü ö ü


ű í ú ü ü ü ü ü Ó í ü í í í É Á

ő ö ő ű ó ö ó ű Í Ö Ö Á Í Ó Ö Ü É Ö Ö Ö Á Á Ö É Á Ö

Í Í Ó ű Ü Ó Ó Ü ü Ö Í Ü Í Í ú Ö Ó Í ú ú Ö Ó É Í ű ú

ú ü ü ú Ö ú ü ü ü ü ü ú ü ú ü ű Í ü ü ű ü ű Ó ü Ü ű ú ú Á ü ű ű ü ü Ö ü ű ü Í ü ü

ö ö Ö ó ó ö ó ó ó ü ö í ü ú ó ó í ö ö ö ó ö ü ú ó ü ö ü ö ö Ö ü ö ö Ö ó

ú ű ű É ü ű ü ű ű í ü í ő í Ü ő ő ü ú Í ő ő í ú ü ü ő ü

í í É í ó ó É ö í ó í ó í ó ó í ó í í ó ó ó í ö ö ö ö í í í ó ó ö ó

Ü ü Ü Ö Ó ö ü ö Ó Ú Ó ü Ó ö ö Á ö ö ö ö ü

ű ú ú Ö ó Ö ó ó ó Ö ű ó ű ű ü Á ó ó ó ó ü ó ü Ö ó ó ó Ö ű ű ü Ö ű Á ú ú ú ó ű í í Ő ú Á É Ö í ó ü ű í ó ű ó Ö ú Ő ú ó í ú ó

ö ü ü ú ó í ó ü ú ö ó ű ö ó ö í ó ö í ö ű ö ó Ú ú ö ü É ó í ö Ó Á í ó í í Ú ö ú ö ű ü ó

Ö Ö Ö Ö Ö Á Ű É Ö Ö Ö

ö Ó ű ö ó í ó ü ö Ó ó í ö ö ó Ö ó ö í ó í ó Á í ó Á Á Ő ú ü ó Í ü ú ü

ű Á ü ő ö í ö ö ő ő ő ő ö

Ö ő ü Ö Ö Ő ü ő Ö Ö ü ű Á Í Ö ű ü ő ő ő Ö ü ü ő ő ő Ü ü ő ő ő ü ő ő ü ü

í ó í ó ó ó í í ü ú í ú ó ó ü ü í ó ü ú ó ü í í ü ü ü ó í ü í ü ü í ü ü í ó ó ó í ó í ü ó í Á

ü ő ő ü ü ő ő ű í í ű ő ő ő ü ő ő í í ő ő ő ő ő ő ü ü í ő Ö ő ü í ő ü í í ő ü ő í ő ő í í ő ü ü í ő ü í ő í ő í ő ü í ő í ü í í ő

Ö Ö ö Ó Ó Ó Ó Ü ú ü Ű Ö Ö Ö ö Ü ö Í ü ű

í í ü í í í í í Ó ő ő í í í Ú ü Ú í í Ú ő ü Ú ü ő

í ü í ü ő ő ü Í ő ő ő ú í ő ő ö ö ö ű ü í ő ő í ú ö ö ú ő ő ú í ő í ő ö ö í ő ü ü í ő ö ü ü ú í í ü ő í ü Í í í í ö ő ö ü ő í ő ő ü ű ő ő í ő í í ő ő

ö ö ö Ö ö ú Ö í Ö ű ö í Ö í ö ü ö í ú Ö Ö ö í ű ö ö í ö ö Ő ö í ü ö ö í Ö ö ö í ö í Ő í ű ű í Ö Ó í ö ö ö ö Ö Ö ö í ü ö ö Ö í ü Ö ö í ö ö ö ö ö Ö ö í

ü ö ö ő ü ó ó ú ó

ű ú ü ü ü Í ü ö ü ö ü ö ü Ó ü ö ü ö ö ü ű ű ú ü ö ö ü Ó ö ű ü ö ú ö ö ü ü ű ü ü ö ö ü ü ú ö ö ü ü ú ü

í í í í ó í ó ö ö í ű ü ó ó ü ú Á Á ó ó ó ó ó ó í ó ö ö ü Ó ö ü í ö ó ö í í ö í ó ó í ö í ú ó ú í ö ú ö ö ö í ó ó ó ú ó ü ó ö í ó ó í í í Á í ó ó ó

ó ö í í ü Ű Ö ó ó ű ö ü Í í í ö Ö Ó ö Ű Ö ú ó ó í í ű ö ö ö ö í ó ö ö í ö ű ö ű ö ö ö ö ö í ó Ö Ö ü ú ö ó ü ö Ö ű ö Ö ü ó ö ö ó ö ö Ó í ű ö ű ö ö ű í

ű ö ú ö ö ö ö í ű ö ö ö ű ö ö ö í ü ú í ű í ö í ú ű í ü ö ö ú ö í ö ű ú ü ö ö í ö ü ö ú ű ö ö ö í Á í ü í ö ü ö í ü ö Ő ü ö í ű ü ö í í í í í

Átírás:

CLIPS áttekintés Produkciós rendszerek fejlesztése

CLIPS történet CLIPS = C Language Integrated Production System Fejlesztették: NASA s Johnson Space Center (80-as évek közepén) C nyelvet alkalmazták a megvalósításra, LISP szintaktikát követtek (C nyelv választása: hatékonyabb kód, LISP fordítóktól való függetlenség, más nyelveken írt modulokkal integrálás) Alap változat: produkciós szabály interpreter. Objektum orientált kiterjesztés: COOL = CLIPS Object- Oriented Language

Mi is ez valójában? Klasszikus szabályalapú szakértoi rendszer CLIPS szabályleíró nyelv CLIPS kiegészíto komponensek Elorekövetkeztetés (CLIPS) vs. visszakövetkeztetés (pld. MYCIN)

A CLIPS elonyei: Miért érdekes a CLIPS? Magas-szintu interpreter Produkciós szabály interpreter Objektum orientált programozási nyelv LISP-szeru procedurális nyelv Számos különbözo platformon fut: UNIX, Linux, Windows, MacOS Egy public-domain jól dokumentált szoftver

CLIPS, mint szabályleíró nyelv Az eredeti CLIPS két modult tartalmazott: produkciós szabályleíró nyelv procedurális nyelv A szabályleíró nyelv fontosabb komponensei ténybázis szabálybázis következtetogép

Szabályalapú szakértoi rendszer komponensei Tudásbázis (szabályok) K ö v e t k e z t e t o - gép Agenda Munkamemória (tények) Magyarázatg e n e r á l á s Tudásbeszerzés támogatása U I

Szabályalapú szakértoi rendszer komponensei Té nybázis (té nylista): a problé ma kezdeti vagy aktuális állapotát reprezentálja. Adat, ami alapján következtethetünk. Szabálybázis (tudásbázis): szabályok halmaza, amely leírja, hogy hogyan juthatunk el a problémától a megoldásig. (A CLIPS csak elorefele következtetést támogat.)

Szabályalapú szakértoi rendszer komponensei K ö v e t k e z t e t o g é p : v e z é r l i a v é g r e h a j t á s t. Illeszti a tényeket a szabályokhoz, hogy meghatározza mely szabályok alkalmazhatóak. Felismer-végrehajt ciklusban dolgozik: Illeszt és (match): tények szabályok feltétel részéhez illesztése Választás (choose): mely szabályok alkalmazhatóak Végrehajtás (execute): a gyoztes szabályban leírt akciók végrehajtása

Elorekövetkeztetés vs. Hátrakövetkeztetés A CLIPS egy elorekövetkezteto rendszer. Illeszti a szabály feltétel részét (LHS) a munkamemória tartalmához, és végrehajtja az akció részét (RHS) a kiválasztott szabálynak. Kiinduló tények -> konklúziók. Hátrakövetkeztetésnél (híres példa MYCIN) a cél elore ismert és a cél felderítéséhez ennek elofeltételeit vizsgáljuk. Ha egy elofeltételnek további elofeltételei vannak, akkor ezt részcélnak tekintjük és ugyanúgy felderítjük, mint a célt, mindaddig, amíg nincsenek további részcélok. Sok esetben használható mindketto, vagy a két módszer kombinációja

A C L I P S e l é r h e t o s é g e http://www.ghg.net/clips/clips.html

A Clips indítása 1. UNIX alatt az interpreter indítása clips interpreter bejelentkezése CLIPS> Kilépés CLIPS: (exit). 2. Változatok: xclips (grafikus felület unix alatt) winclips (grafikus felület windows alatt) CLIPS ActiveX komponens (integráláshoz)

Alapveto CLIPS parancsok (exit) (clear) (reset) (run) kilépés a munkakörnyezet megtisztítása a tényektol, szabályoktól és minden aktív definíciótól visszaállítja a ténybázist a kiindulási állapotra (kitöröl minden létezo tényt, létrehoz egy initial-fact tényt létrehozza a programban definiált tényeket (deffacts) A reset kiadárára minden futtatás elott szükség van! v é g r e h a j t j a a b e t ö l t ö t t p r o g r a m o t a C L I P S interpreterben a definiált szabályok és tények felhasználásával.

Alapveto CLIPS parancsok (load filename.clp ) betölti a fájlban található CLIPS programot. Elvégzi a program szintaktikai elemz és ét. (facts) list áz z a a p i l l a n a t n y i l a g é r vé n y e s s z a bá l y o k a t (rules) list ázza a s zab á lyb á z i s s z a bá lyait.

Néhány fontos Clips utasítás Tény hozzáadása a ténybázishoz: (assert (first-fact asserted)) Szabály definiálása: (defrule first_rule (first-fact asserted) => (assert (second-fact asserted)))

Hello World CLIPS-ben (defrule start (initial-fact) => (printout t Hello, world! crlf))

Futtatás A hello-world.clp fájl szerkesztése CLIPS környezet indítása (clips vagy xclips) Program betöltése (load hello-world.clp) Betöltés után a CLIPS visszajelez (sikeres betöltés- TRUE): (load hello-world.clp) defining defrule start +j TRUE

Futtatás (2) Alaphelyzetbe állítás(reset) Indítás: (run) ^E - reset ^R - run Kilépés: ^Q vagy (exit)

Mezok 7 féle adattípust ismer a CLIPS (tokenek). float: [+\-] <digit>* [.<digit>*] [e E[+ -]<digit>*] integer: [+ -] <digits> * symbol: [<] <char>* string: < c h a r > * ( e. g. J o h n, 8 4 8-3 0 0 0 ) external address instance name instance address

Érvényes kifejezések Példák fire emergency-fire activate_sprinkler_system shut-down-electrical-junction-387!?#$^* (A CLIPS kisbetu-nagybetu érzékeny!)

T é n y e k A tények egyszeru kifejezések, amelyek tartalmaznak egy relációnevet, és opcionálisan további rekeszeket. Példa: (person (name John )) Gyakran használunk keret struktúrákat: (deftemplate) konstrukció

(deftemplate) (deftemplate <relation_name> [<comment>] <slot-definition>* ) <slot-definition> is: (slot <slot-name>) (field <slot-name>) (multislot <slot-name>)

Példák: (single-field) (two fields) (speed 38 mph) Érvényes tények (cost 78 dollars 23 cents) (name John Doe )

(deftemplate) példa (deftemplate person an example template (multislot name) (slot age) (slot eye-color) (slot hair-color)) CLIPS> defining deftemplate: person TRUE

T é n y e k ( 2 ) A Deftemplate lehet implicit = sorrend megadása: (numbers 1 2 3) Té nyek hozzáadása: (assert <fact>) Té ny törlése : (retract <fact-index>*) Té nyek listázása: (facts) visszaadja a tényeket és ezek azonosítóit, pl.f-0

Példák tényekre CLIPS> (deftemplate course electives (slot number)) CLIPS> (assert (course (number comp674)) (course (number comp672))) <Fact-1> CLIPS> (facts) f-0 (course (number comp674)) f-1 (course (number comp672)) For a total of 2 facts CLIPS> (retract 1) CLIPS> (facts) f-0 (course (number comp674)) For a total of 1 fact

T é n y e k m ó d o s í t á s a Módosítás: (modify <fact-index> <slot-modifier>*) <slot-modifier> is (<slot-name> <slot-value>) Példa: CLIPS> (modify 0 (number comp675)) <fact-2> CLIPS> (facts) f-2 (course (number comp675)) for a total of 1 fact

T é n y e k d u p l i k á l á s a Másolat készítése: Példa (folytatva) CLIPS> (duplicate 2 (number comp775)) <fact-3> CLIPS> (facts) f-2 (course (number comp675)) f-3 (course (number comp775)) For a total of 2 facts A (duplicate) megváltoztatja a tényt az eredeti törlése n é l k ü l

T é n y e k c s o p o r t j á n a k h o z z á a d á s a (deffacts <deffacts-name> [<comment>] <facts>*) (reset)

T é n y e k t ö r l é s e Tényeket lehet törölni, visszavonni (retract <fact-index>) (retract 2) Több tény törlése (retract 1 2)

(deftemplate) példa Több deklaráció egyszerre: (deffacts student-ids (student (name Tarzan)) (student (name Jane) (age 19))) Eredmény: (student (name Tarzan) (age 18)) (student (name Jane) (age 19))

LHS => RHS Szabályok (1) Szintaktika: (defrule <rule-name> [<comment>] [<declaration>] ; salience => <patterns>* ;LHS, premises, patterns, ;conditions, antecedent <actions>*) ;RHS, actions, consequent

Példa: Szabályok (2) (defrule class-a-fire-emergency (emergency fire) => (printout t FIRE!!! crlf)) Egy szabálynak több premisszája lehet: (defrule class-b-fire-emergency (emergency fire) (fire-class B) => (printout t Use carbon dioxide extinguisher crlf))

Agenda Ha a LHS mintái illeszkednek az érvényes tényekhez, akkor a szabály aktiválja a CLIPS és felrakja az agendára. Szabályo sorrendje: salience (prioritás). Ha az agenda üres a program leáll. Refraction: m i n d e n s z a b á l y t e g y s z e r h a j t v é g r e a rendszer egy adott tényhalmazra => (refresh)

Salience Alaphelyzetben az agenda egy stack.. A legutoljára aktivált szabályt hajtja végra. Salience, prioritás változtat a sorrenden. Alapértelmezett érték: 0.

Konfliktus feloldási stratégia Frissesség Utoljára felker ült szabályok preferálása. CLIPS time-tag-ek Specifikusság Az a szabály, amely a legjobban illeszkedik az adott helyzetre preferált. Hasznos, ha általános és kivételkezelo szabályokkal dolgozunk Cilkusmentesség Ugyanazokra az adatokra csak egyszer hajtja végre a szabályokat. Megakadályozza a ciklusokat Használt szabályok újratöltése (refresh) )

Konfliktus feloldási stratégia Elodleges a prioritás. 7 stratégia állítható: The depth strategy The breadth strategy The simplicity strategy The complexity strategy The LEX strategy The MEA strategy It is possible also to set strategy to random szintaktika: (set-strategy <strategy>)

Változók Változó neve? Karakterrel kezdodik: Példa: (course (number?cmp)) Változókat használunk Mintaillesztés I/O Tények mutatói

Példák változókra (defrule grandfather (is-a-grandfather?name) => (assert (is-a-man?name)) ) (defrule grandfather (is-a-grandfather?name) => (assert (is-a-father?name)) (assert (is-a-man?name)) (printout t?name is a grandfather crlf) )

Példák tények törlésére (defrule change-grandfather-fact?old-fact <- (is-a-grandfather?name) => (retract?old-fact) (assert (has-a-grandchild?name) (is-a-man?name)) )

Példák tények törlésére (2) Több tény törlése: (retract?fact1?fact2?fact3) Minden tény törlése: (retract *)

Standard I/O Nyomtatás STDOUT: (printout t ) ú j s o r : crlf Olvasás STDIN :(read)

Standard I/O Példák (1) Billentyuzet példa: (defrule to-start Rule to start & enter a name (phase choose-name) => (printout t Enter your name crlf) (assert (your-name =(read)))) ; = is optional Változók használata: (defrule to-start => (printout t Enter something: ) (bind?something (read)) (printout t You have entered?something crlf))

Összetettebb példa: Standard I/O Példák (2) (defrule continue-check?phase <- (phase check-continue) => (retract?phase) (printout t Do you want to continue? crlf) (bind?answer (read)) ) (if (or (eq?answer yes) (eq?answer y)) then (assert (phase continue)) else (halt))

File I/O File I/O (load <filename>) (save <filename>)

Prioritás példa Detection Isolation Salience Recovery

Vezérlési struktúra példa (1) (defrule detection-to-isolation?phase <- (phase detection) (declare (salience 10)) => (retract?phase) (assert (phase isolation))) (defrule isolation-to-recovery?phase <- (phase isolation) (declare (salience 10)) => (retract?phase) (assert (phase recovery)))

Vezérlési struktúra példa(2) (defrule recovery-to-detection?phase <- (phase recovery) (declare (salience 10)) => (retract?phase) (assert (phase detection))) (defrule find-fault-location-and-recovery (phase recovery) (recovery-solution switch-device?replacement on) => (printout t Switch device?replacement on crlf))

A vezérlési és probléma tudás elválasztása Expert Knowledge Detection Rules Recovery Rules Isolation Rules Control Knowledge Control Rules Salience

Vezérlési struktúra példa(3) Az elozo szabályok általánosabb formában (deffacts control-information (phase detection) (phase-after detection isolation) (phase-after isolation recovery) (phase-after recovery detection)) (defrule change-phase (declare (salience -10))?phase <- (phase?current-phase) (phase-after?current-phase?next-phase) => (retract?phase) (assert (phase?next-phase)))

Vezérlési struktúra példa(4) Fázisok szekvenciájaként (ciklikusan) (deffacts control-information (phase detection) (phase-sequence isolation recovery detection)) (defrule change-phase (declare (salience -10))?current-phase <- (?phase?current-phase) (phase-sequence?next-phase $?other-phases) => (retract?current-phase) (assert (phase?next-phase)) (assert (phase-sequence $?other-phases?next-phase)))