Documente Academic
Documente Profesional
Documente Cultură
Baze de Date Suport Curs 2010 2011
Baze de Date Suport Curs 2010 2011
CLIPS este un sistem de programe din clasa generatoarelor de sisteme expert, cunoscute
şi sub numele de nuclee de sisteme expert sau unelte de dezvoltare a sistemelor expert. În
esenţă, acest lucru înseamnă că sistemul CLIPS furnizează toate ingredientele - un motor de
inferenţă, modulul de achiziţie a cunoştinţelor, facilităţi pentru construirea unei interfeţe utilizator,
modulul explicativ şi o gamă largă de comenzi - necesare pentru dezvoltarea unui sistem expert.
Pentru construirea unui astfel de sistem, programatorul - numit în acest caz şi inginer de
cunoştinţe - trebuie să codifice cunoaşterea expertă de rezolvare a problemei în limbajul acceptat
de baza de cunoştinţe - numit şi formalism de reprezentare a cunoştinţelor. În cazul sistemului
CLIPS, acest formalism se bazează pe modelul regulilor de producţie, iar motorul de inferenţă se
bazează pe raţionamentul deductiv (înlănţuirea înainte), spre deosebire de Prolog, care foloseşte
raţionamentul inductiv (înlănţuirea înapoi).
Limbajul CLIPS este un limbaj multiparadigmă, adică un limbaj de programare care suportă
mai multe paradigme de programare. Astfel, limbajul CLIPS suportă paradigma procedurală,
paradigma bazată pe reguli (reguli de producţie + înlănţuirea înainte) şi paradigma orientată pe
obiect.
Lucrarea de laborator de faţă are în vedere versiunea CLIPS 6.3.
1
http://ro.wikipedia.org/wiki/CLIPS
Amelia BĂDICĂ, Valentin LIŢOIU 1
2017 / 2018, FEAA, MASTER, MAE I, SISTEME INTELIGENTE ÎN AFACERI, LUCRAREA DE LABORATOR NR 1
Orice program CLIPS este compus dintr-o mulţime de reguli. Aceste reguli operează asupra
unor date memorate sub forma unei baze de fapte - numită şi memorie de lucru.
Un fapt este o secvenţă de unul sau mai multe câmpuri incluse între paranteze rotunde.
Un câmp poate fi de unul dintre tipurile:
cuvânt - este o secvenţă de unul sau mai multe caractere ASCII afişabile, care nu începe cu
nici unul dintre caracterele < \ & $ ? + - (); şi nu conţine nici unul dintre caracterele < \&()
şir de caractere - este un şir de zero sau mai multe caractere arbitrare incluse între
ghilimele; introducerea unei ghilimele într-un şir se face prin prefixarea sa cu un caracter \;
introducerea unui caracter \ într-un şir de caractere se face prin dublarea sa \\
număr - reprezintă un număr întreg sau real; un astfel de câmp conţine trei părţi: semn,
valoare şi exponent.
Câteva exemple de cuvinte sunt:
cont
productivitatea muncii
foarte_mare
!?Î$^*
Câteva exemple de şiruri de caractere sunt:
"a crescut"
"\"acceptabil""
"un sir de caractere"
Câteva exemple de numere sunt:
2
3.4
.78
+5
-3
Amelia BĂDICĂ, Valentin LIŢOIU 2
2017 / 2018, FEAA, MASTER, MAE I, SISTEME INTELIGENTE ÎN AFACERI, LUCRAREA DE LABORATOR NR 1
Câteva exemple de fapte sunt:
(un-camp)
(doua campuri)
(viteza 80 kmph)
(cheltuielile au crescut)
(nume "Loredana Martinescu")
Pentru adăugarea de fapte la baza de fapte se foloseşte comanda assert. Sintaxa ei este
următoarea:
(assert fapt...)
Spre exemplu:
CLIPS> (assert (productia scade))
<Fact-1>
CLIPS> (assert (salariile cresc))
<Fact-2>
CLIPS> (assert (timpul_lucrat scade))
<Fact-2>
CLIPS>
Textul afişat automat de sistem, este indicat îngroşat.
Afişarea conţinutului curent al bazei de fapte se face cu comanda facts:
CLIPS> (facts)
f-0 (initial-fact)
f-1 (productia scade)
f-2 (salariile cresc)
f-3 (timpul_lucrat scade)
CLIPS>
Fiecare fapt are ataşat un număr secvențial unic, începând de la 0, numit indexul faptului.
Faptul cu indexul 0 este introdus automat de sistem și este atribuit faptului (initial-fact.
Indexul se poate folosi pentru a referi un anumit fapt. Spre exemplu, pentru a afişa faptele cu
indexul mai mare sau egal cu 1 se poate folosi comanda:
CLIPS> (facts 1)
şi pentru a afişa faptele cu indexul între 1 şi 4 se poate folosi comanda:
CLIPS> (facts 1 4)
Urmărirea conţinutului memoriei de lucru se poate face comod şi prin vizualizarea ferestrei
Facts, prin activarea opţiunii Facts Window a meniului Window.
Faptele pot fi şterse din baza de fapte cu ajutorul comenzii retract, prin referirea la indexul
lor. Sintaxa sa este:
(retract index fapt...)
Spre exemplu, ştergerea faptelor 1, 3 şi 5 se face cu comanda:
CLIPS> (retract 1 3 5)
Dacă se încearcă ştergerea unui fapt care nu se află în baza de fapte, sistemul CLIPS
semnalează acest lucru printr-un mesaj corespunzător.
Pentru ştergerea tuturor faptelor se foloseşte comanda:
CLIPS> (retract *)
sau comanda
CLIPS> (clear)
Diferența dintre cele două comenzi este aceea că șterge și faptul inițial.
Deseori este convenabil să se poată adăuga la memoria de lucru o mulţime de fapte, în loc de
a adăuga câte un fapt la un moment dat. Acest lucru este în particular valabil pentru mulţimea
iniţială de fapte despre care se ştie că sunt adevărate. O astfel de mulţime de fapte se poate defini cu
ajutorul unui enunţ deffacts, cu următoarea sintaxă:
(deffacts nume comentariu-opţional
fapt...)
Utilizând un astfel de enunţ se poate defini o mulţime de zero sau mai multe fapte care pot fi
manevrate cu un singur nume - cel specificat în enunţul deffacts.
Faptele dintr-un enunţ deffacts sunt adăugate automat la memoria de lucru prin executarea
comenzii reset.
La pornire sistemul CLIPS creează automat un enunţ deffacts cu structura următoare:
(deffacts initial-fact
(initial-fact))
Astfel, după execuţia unei comenzi reset, pe lângă faptele furnizate de programator sub
forma enunţurilor deffacts, în memoria de lucru va apare în plus faptul (initial-fact) cu
indexul f-0. Orice regulă CLIPS care nu are şabloane în partea stângă, are implicit un şablon