You are on page 1of 8

LUCRAREA 9

PREZENTAREA SISTEMULUI DE PROGRAME CLIPS. STRUCTURA GENERAL{ A UNUI


PROGRAM CLIPS
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\[, facilit[\i pentru
construirea unei interfe\e utilizator ]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
@nl[n\uirea @nainte (spre deosebire de Prolog, care folose]te @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\uire @nainte) ]i paradigma orientat[ pe obiect.
Materialul de fa\[ are @n vedere versiunea CLIPS 6.0 din 1993. Sistemul CLIPS este produs de
laboratorul Johnson Space Center, Software Technology Branch din cadrul NASA.
1.INTRODUCERE #N CLIPS. FAPTE
Lansarea @n execu\ie a sistemului CLISP 6.0 se face cu un click pe iconul
apare fereastra principal[ a sistemului, ilustrat[ @n figura 1.

. Pe ecran va

Figura 1.Fereastra principal[ a sistemului CLIPS


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:

L9

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 ghilime @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:
urgenta
urgenta-incendiu
foarte_mare
!?#$^*

C`teva exemple de ]iruri de caractere sunt:


"incendiu"
"\"incendiu\""
"un sir de caractere"

C`teva exemple de numere sunt:


2
3.4
.78
+5
-3
2.51e11

C`teva exemple de fapte sunt:


(un-camp)
(doua campuri)
(viteza 80 kmph)
(urgenta incendiu)
(nume "Amelia Badica")

Ca element de stil, se recomand[ ca o mul\ime de fapte corelate s[ fie specificate cu ajutorul unui
tipar. Un exemplu de tipar este:
(urgenta <tip>)

unde simbolul tip indic[ un c`mp care desemneaz[ o urgen\[ specific[, ca spre exemplu incendiu sau
inundatie.
Fie spre exemplu urm[toarea mul\ime de fapte:
(actiune
(actiune
(actiune
(actiune

activeaza sistem-hidrant)
activeaza alarma-incendiu)
anunta departament-pompieri)
inchide-alimentare-energie-electrica)

Aceast[ mul\ime de fapte poate fi reprezentat[ cu ajutorul urm[toarelor trei tipare:


(actiune activeaza <dispozitiv>)
(actiune anunta <grup>)
(actiune <actiune-specifica>)

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 (urgenta incendiu))
<Fact-0>
CLIPS> (assert (urgenta inundatie))
<Fact-1>

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
(urgenta incendiu)
f-1
(urgenta inundatie)

L9

Fiecare fapt are ata]at un num[r unic, @ncep`nd de la 0, numit indexul faptului. Acest num[r 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.
2.REGULI. EXECU|IA UNUI PROGRAM CLIPS
Orice program CLIPS este o mul\ime de reguli - numit[ ]i baz[ de reguli sau baz[ de
cuno]tin\e. Regulile unui program pot fi introduse direct de la prompterul sistemului CLIPS sau pot fi
@nc[rcate dintr-un fi]ier text, creat cu un editor de texte - un astfel de fi]ier are implicit extensia .clp.
Spre exemplu, un sistem expert pentru monitorizarea unei instala\ii industriale poate folosi o
regul[ care se exprim[ @n limbaj natural astfel: "dac[ urgen\a este incendiu atunci ac\iunea este activarea
sistemului hidrant". O astfel de regul[ se va codifica @n CLIPS astfel:
(defrule urgenta-incendiu "Un exemplu de regula in CLIPS"
(urgenta incendiu)
=>
(assert (actiune activeaza-sistemul-hidrant)))

Formatul general al unei reguli este urm[torul:


(defrule nume-regul[ comentariu-op\ional
]ablon...
=>

ac\iune...)
Se observ[ c[ o regul[ se compune din trei p[r\i: antet, parte st`ng[ ]i parte dreapt[.
Antetul
con\ine cuv`ntul cheie defrule, numele regulii ]i un comentariu op\ional.
Partea st`ng[ a unei reguli con\ine o secven\[ de zero sau mai multe ]abloane, numite ]i
elemente condi\ionale. Un ]ablon este o secven\[ de unul sau mai multe c`mpuri inclus[ @ntre paranteze
rotunde. Dac[ toate ]abloanele din partea st`ng[ a unei reguli se identific[ cu faptele din baza de fapte,
atunci regula este activat[ ]i plasat[ @ntr-o mul\ime de reguli activate numit[ ]i agend[. Dac[ o regul[ nu
con\ine @n partea st`ng[ nici un ]ablon, ei i se va ata]a implicit ]ablonul (initial-fact) din motive care se
vor explica ulterior.
Partea dreapt[ a unei reguli con\ine o secven\[ de zero sau mai multe ac\iuni care trebuie
executate atunci c`nd regula este aprins[. Un exemplu de astfel de ac\iune este ad[ugarea unui fapt la
memoria de lucru, specificat[ prin comanda assert. Termenul de aprindere a unei reguli semnific[
execu\ia efectiv[ a ac\iunilor din partea st`ng[ a regulii. O regul[ va fi aprins[ numai dac[ este activat[ adic[ se afl[ @n agend[. Dac[ agenda con\ine mai multe reguli activate, sistemul CLIPS va selecta ]i
aprinde doar una dintre aceste reguli pe baza unui mecanism de rezolvare a conflictelor. Un astfel de
mecanism se bazeaz[ pe ata]area unor priorit[\i explicite regulilor ]i selectarea pentru aprindere a regulii
de prioritate maxim[. #nc[rcarea unei mul\imi de reguli se face cu comanda load, cu sintaxa:
(load nume-fi]ier)
Spre exemplu, dac[ se editeaz[ un fi]ier care con\ine regula urgen\a-incendiu prezentat[ mai sus
]i acest fi]ier se nume]te unu.clp ]i el este amplasat @n directorul c:\__users\amelia\clips\, atunci el va
putea fi @nc[rcat cu comanda:
CLIPS> (load "c:\\__users\\amelia\clips\\unu.clp")

L9

Facem observa\ia c[ @n acest caz secven\a \\ se poate @nlocui cu / (specificatorul de cale din
UNIX). Editarea fi]ierului unu.clp se poate face cu editorul @ncorporat sistemului CLIPS 6.0, care se
poate activa prin op\iunea Editor... a meniului File, sau cu orice alt editor de fi]iere text - de exemplu
Notepad.
#nc[rcarea unui fi]ier se poate face ]i cu op\iunea Load Constructs a meniului File. Activarea
acestei op\iuni are ca efect generarea automat[ a unei comenzi load.
Este posibil[ salvarea mul\imii curente de reguli cunoscute de sistemul CLIPS @ntr-un fi]ier surs[
CLIPS cu comanda save, cu sintaxa:
(save nume-fi]ier)
Un exemplu este urm[torul:
CLIPS> (save "c:\\__users\\amelia\clips\\doi.clp")

Pentru activarea regulii urgenta-incendiu, faptul (urgenta incendiu) trebuie ad[ugat la memoria de
lucru cu comanda assert, dup[ ce regula a fost @nc[rcat[ cu load. Dac[ acest fapt se afla deja @n memorie,
comanda assert nu va avea nici un efect, deoarece duplicarea faptelor nu este permis[ de sistem. Singura
modalitate va fi @n acest caz ]tergerea faptului vechi cu retract ]i read[ugarea sa cu assert. Aceast[ nou[
versiune va avea un alt index dec`t vechea versiune.
Execu\ia unui program CLIPS se face cu comanda run, cu sintaxa:
(run limit[-op\ional[)
Parametrul op\ional limit[ specifc[ limita maxim[ a num[rului de reguli care vor fi aprinse. Dac[
acest[ limit[ nu se specific[, execu\ia continu[ p`n[ c`nd nu mai exist[ reguli active @n agend[.
Pentru exemplul considerat, utilizarea comenzii run va produce o singur[ aprindere a regulii
urgenta-incediu, datorit[ prezen\ei faptului (urgenta incendiu) @n memoria de lucru. Rezultatul aprinderii
regulii este ad[ugarea faptului (actiune activeaza-sistemul-hidrant) la memoria de lucru.
#n acest moment apare urm[toarea situa\ie interesant[. Ce se @nt`mpl[ dac[ se execut[ din nou
comanda run ? Aparent regula urgenta-incendiu ar trebui s[ se reactiveze, deoarece memoria de lucru
con\ine un fapt care se identific[ cu ]ablonul din partea st`ng[ a regulii. Cu toate acestea lucrurile nu stau
a]a. Sistemul CLIPS a fost programat astfel @nc`t aprinderea unei reguli s[ se comporte similar cu
comportamentul unei celule nervoase la primirea unui impuls. Odat[ stimulat[, o celul[ nervoas[ se va
inactiva pentru o perioad[ de timp. Acest fenomen este cunoscut sub numele de refrac\ie. Similar, o
regul[ aprins[ nu va putea fi reaprins[ prin identificarea par\ii sale st`ngi cu acelea]i fapte care au
determinat aprinderea anterioar[, deoarece astfel s-ar intra @ntr-o bucl[ infinit[. Dac[ se dore]te totu]i
reaprinderea regulii, faptele care au determinat identificarea (m[car unul dintre ele) vor trebui ]terse ]i
read[ugate memoriei de lucru.
Alte comenzi pentru lucrul cu reguli sunt rules ]i ppdefrule. Comanda:
(rules)

determin[ afi]area numelor regulilor din baza de cuno]tin\e. Comanda:


(ppdefrule nume regul[ )
determin[ afi]area textului regulii specificate ca argument. Aceast[ comand[ se poate lansa automat prin
activarea op\iunii Defrule Manager... a meniului Browse ]i selectarea apoi a regulii dorite ]i a butonului
Pprint din fereastra de dialog care apare.
Pentru ]tergerea unei reguli se poate folosi comanda excise cu sintaxa:
(excise nume regul[ )
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.
L9

La pornire sistemul CLIPS creaz[ automat un enun\ deffacts cu structura urm[toare:


(deffacts initial-fact
(initial-fact))

Astfel c[, 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 (initial-fact). Din acest motiv
comanda reset activeaz[ toate regulile care au partea st`ng[ vid[.
Comenzile uzuale penru manevrarea enun\urilor deffacts sunt list-deffacts ]i ppdeffacts. Comanda
list-deffacts permite afi]area numelor tuturor enun\urilor deffacts definite. Sintaxa ei este urm[toarea:
(list-deffacts)

Comanda ppdefacts permite afi]area con\inutului unui anumit enun\ deffacts specificat prin
numele s[u. Sintaxa sa este urm[toarea:
(ppdeffacts nume )
Efectele comenzilor list-deffacts ]i ppdeffacts pot fi ob\inute ]i prin activarea op\iunii Deffacts
Manager... a meniului Browse.
Pentru ]tergera unui enun\ deffacts se poate folosi comanda undeffacts cu sintaxa:
(undeffacts nume )
Ini\ializarea mediului de programare CLIPS se poate face cu comanda clear, care este disponibil[
]i ca op\iune a meniului Execution... . Efectul acestei comenzi este refacerea st[rii sistemului ca ]i cum el
ar fi fost repornit. Comanda clear ]terge con\inutul memoriei de lucru, al mul\imii de reguli ]i al mul\imii
de enun\uri deffacts.
3.MECANISMUL DE EXECU|IE AL UNUI PROGRAM CLIPS
Execu\ia unui program CLIPS presupune execu\ia unui ciclu numit ciclu de inferen\[. La fiecare
trecere prin ciclu exist[ trei faze: identificarea, rezolvarea conflictelor (selec\ia) ]i execu\ia. Faza de
identificare presupune identificarea tuturor regulilor pentru care toate ]abloanele din partea st`ng[ se
identific[ cu con\inutul curent al memoriei de lucru. Acest reguli se numesc active ]i sunt plasate @n
agend[. Rezolvarea conflictelor, numit[ ]i selec\ie, presupune selectarea din agend[, pe baza unei
strategii de rezolvare a conflictelor, a unei singuri reguli active, care va fi ulterior aprins[. Faza de
execu\ie presupune aprinderea regulii selectate @n faza de selec\ie. Aprinderea @nseamn[ execu\ia
ac\iunilor specificate @n partea dreapt[ a regulii. Acest ciclu se execut[ p`n[ c`nd s-au aprins un num[r
predefinit de reguli, sau nu mai exist[ reguli active @n agend[.
Sistemul pune la dispozi\ie o serie de facilit[\i pentru urm[rirea execu\iei unui program @n scopul
depan[rii sale. Aceste facilit[\i sunt oferite de comenzile agenda, matches, watch ]i comenzile de lucru
cu punctele de @ntrerupere.
Comanda agenda permite afi]area con\inutului curent al agendei. #n acest fel vor putea fi
vizualizate regulile active la un moment dat. Se recomand[ testarea comenzii agenda @n urm[torul
context: se @ncarc[ programul unu.clp ]i se adaug[ apoi faptul (urgenta incendiu) la memoria de lucru.
Agenda poate fi monitorizat[ foarte comod ]i prin deschiderea ferestrei Agenda, ac\ion`nd op\iunea
Agenda Window a meniului Window.
Comanda matches permite afi]area ]abloanelor unei reguli care se identific[ cu faptele curente,
pentru fiecare ]ablon indic`ndu-se faptele cu care el se identific[. Sintaxa comenzii este:
(matches nume regul[)
Comanda watch permite controlul informa\iilor afi]ate de CLIPS @n urma execut[rii anumitor
comenzi. Sintaxa sa este:
(watch op\iune)
unde op\iunea poate fi: facts, rules, actvations, all, etc. (pentru o list[ complet[ se recomand[ consultarea
help-ului prin activarea op\iunii CLIPS Help a meniului Help). Op\iunea all permite afi]area tuturor
informa\iilor disponible, adic[ este echivalent[ cu activarea tuturor op\iunilor posibile. Spre exemplu,
dac[ se utilizeaz[ comanda:
CLIPS> (watch facts)

L9

atunci la fiecare ad[ugare a unui fapt la memoria de lucru, sistemul va indica explicit acest lucru prin
afi]area unui mesaj:
CLIPS> (assert (urgenta inundatie))
==> f-0
(urgenta inundatie)
<Fact-0>

Comanda watch se poate lansa ]i prin activarea op\iunii Watch... a meniului Execution.
Comenzile de gestiune a punctelor de @ntrerupere sunt: set-break, show-breaks ]i remove-break.
Se nume]te punct de @ntrerupere, oprirea execu\iei unui program exact @naintea aprinderii unei
reguli. Setarea unui punct de @ntrerupere pe o anumit[ regul[ se face cu comanda set-break cu sintaxa:
(set-break nume regul[)
Comanda:
(show-breaks)

permite afi]area unei liste a tuturor punctelor de @ntrerupere, iar comanda:


(remove-break nume regul[)
specifc[ ]tergerea unui anumit punct de @ntrerupere (dac[ argumentul op\ional nume regul[ este prezent)
sau a tuturor punctelor de @ntrerupere (dac[ argumentul op\ional lipse]te).
Pentru exemplificarea modului de folosire a punctelor de @ntrerupere se consider[ urm[torul
program:
(defrule prima
=>
(assert (aprinde a-doua)))
(defrule a-doua
(aprinde a-doua)
=>
(assert (aprinde a-treia)))
(defrule a-treia
(aprinde a-treia)
=>)

Acest program va fi @nc[rcat, dup[ care vor fi executate comenzile:


CLIPS> (set-break a-doua)
CLIPS> (set-break a-treia)
CLIPS> (watch facts)
CLIPS> (watch rules)
CLIPS> (watch activations)
CLIPS> (reset)
==> f-0
(initial-fact)
==> Activation 0
prima: f-0
CLIPS> (run)
FIRE
1 prima: f-0
==> f-1
(aprinde a-doua)
==> Activation 0
a-doua: f-1
Breaking on rule a-doua.
CLIPS> (run)
FIRE
1 a-doua: f-1
==> f-2
(aprinde a-treia)
==> Activation 0
a-treia: f-2
Breaking on rule a-treia.
CLIPS> (run)
FIRE
1 a-treia: f-2

Se observ[ c[ dup[ lansarea comanzii run, execu\ia s-a oprit @nainte de aprinderea regulii a-doua.
Ea a fost apoi reluat[ cu comanda run, oprindu-se din nou @naintea aprinderii regulii a-treia, find apoi
reluat[ cu run. Datorit[ op\iunilor alese prin comanda watch, se observ[ c[ sistemul afi]eaz[ toate
modific[rile memoriei de lucru (op\iunea facts) ]i toate activ[rile (op\iunea activations) ]i aprinderile de
reguli (op\iunea rules). Ad[ugarea unui fapt la memoria de lucru este simbolizat[ prin ==> ]i ]tergerea
unui fapt (nu apare @n acest exemplu) se simbolizeaz[ prin <==.
#n finalul acestui paragraf vom indica alte c`teva manevre utile care pot fi efectuate direct din
editorul sistemului CLIPS:
selectarea automat[ a unei reguli, fapt sau comenzi din programul editat prin plasarea
cursorului pe entitatea dorit[ ]i activarea op\iunii Balance a meniului Edit;
L9

afi]area unui help contextual pentru anumite cuv`nte cheie (defrule, deffacts, assert, ...) care
desemneaz[ diverse comenzi sau enun\uri ce pot apare @ntr-un program CLIPS, prin plasarea
cursorului pe cuv`tul respectiv, activarea op\iunii Complete... a meniului Edit, selectarea
comenzii @n fereastra de dialog care apare ]i activarea butonului Help;
@nc[rcarea programului editat cu op\iunea Load Buffer a meniului Buffer;
@nc[rcarea por\iunii selectate din programul editat cu op\iunea Load Selection a meniului
Buffer; selec\ia se face cu mouse-ul ca @n orice editor sub Windows sau cu op\iunea Balance a
meniului Edit;
execu\ia @n mod batch (ca ]i cum ar fi fost tastat[ la promterul sistemului) a comenzii
selectate din editor; selec\ia se face cu mouse-ul ca @n orice editor sub Windows sau cu
op\iunea Balance a meniului Edit;
4.UN EXEMPLU DE PROGRAM CLIPS
#n acest paragraf se prezint[ modul de implementare @n CLIPS a unui sistem expert foarte simplu
pentru evaluarea unui proiect de investi\ii. Baza de cuno]tin\e a sistemului va trebui s[ con\in[
urm[toarele cuno]tin\e exprimate @n limbaj natural:
dac[ mediul social este bun, cadrul juridic este stabil ]i protec\ia mediului este cresc[toare
atunci mediul general este acceptabil;
dac[ re\eaua comercial[ este mediocr[, produc\ia este instabil[ ]i fezabilitatea tehnic[ este
medie atunci riscul de fezabilitate este important;
dac[ riscul de fezabilitate este important ]i mediul general este acceptabil atunci riscul
global este important;
dac[ concuren\a este mare, cre]terea pie\ei este medie ]i protec\ia pie\ei este slab[ atunci
@ncas[rile scontate sunt mediocre;
dac[ @ncas[rile scotate sunt mediocre, finan\area extern[ este slab[ ]i nivelul investi\iilor
este important atunci rentabilitatea fondurilor proprii este slab[;
dac[ termenul punerii @n lucru a proiectului este incert ]i @ncas[rile scontate sunt mediocre
atunci timpul de revenire este important
dac[ rentabilitatea fondurilor proprii este slab[, riscul global este important, nivelul
investi\iilor este important, timpul de revenire este important ]i coeren\a/strategia global[
este important[ atunci evaluarea proiectului este mediocr[.
Analiz`nd aceste reguli se observ[ c[ ele au urm[toarea structur[ general[: dac[ variabila v1 are
valoarea a1 ]i variabila v2 are valoarea a2 ]i ... ]i variabila vn are valoarea an atunci variabila vn+1 are
valoarea an+1 ". Av`nd @n vedere acest lucru este util s[ folosim fapte cu urm[torul tipar: (variabil[
valoare).
#n aceste condi\ii, faptele:
mediul social este bun;
cadrul juridic este stabil;
protec\ia mediului este cresc[toare;
re\eaua comercial[ este mediocr[;
produc\ia este instabil[;
fezabilitatea tehnic[ este medie.
se pot reprezenta cu urm[torul enun\ deffacts:
(deffacts fapte-initiale "Multimea initiala de fapte"
(mediu-social bun)
(cadru-juridic stabil)
(protectie-mediu crescatoare)
(retea-comerciala mediocra)
(productie instabila)
(fezabilitate-tehnica medie))

Primele trei reguli enun\ate mai sus @n limbaj natural se pot reprezenta @n limbajul CLIPS astfel:
L9

(defrule mediu-general-acceptabil
(mediu-social bun)
(cadru-juridic stabil)
(protectie-mediu crescatoare)
=>
(assert (mediu-general acceptabil)))
(defrule risc-fezabilitate-important
(retea-comerciala mediocra)
(productie instabila)
(fezabilitate-tehnica medie)
=>
(assert (risc-fezabilitate important)))
(defrule risc-global-important
(risc-fezabilitate important)
(mediu-general acceptabil)
=>
(assert (risc-global important)))

#n acest moment programul - s[-l numim invest.clp, poate fi tastat ]i executat prin parcurgerea
urm[torilor pa]i:
editarea cu editorul @ncorporat sistemului CLIPS;
@nc[rcarea programului (cel mai comod prin meniul sistemului CLIPS sau direct din editor
prin activarea op\iunii Load Buffer meniului Buffer);
execu\ia programului cu comanda run sau activ`nd op\iunea Run a meniului Execution;
vizualizarea bazei de fapte cu comanda facts sau deschiz`nd fereastra Facts Window.
Cititorul este invitat ca, dup[ modelul prezentat, s[ codifice @n CLIPS ]i restul regulilor sistemului
expert de evaluare a unui proiect de investi\ii, s[ defineasc[ noi fapte ini\iale necesare pentru testarea
acestor reguli ]i s[ execute apoi programul ob\inut.

L9

You might also like