Sunteți pe pagina 1din 4

Universitatea Politehnica Timisoara – Facultatea de Inginerie din Hunedoara

Proiect Sisteme bazate pe cunostinte


Strategia de control complexity

Student: Cozac Bogdan


Specializarea: Informatica industriala
Anul IV

1
Universitatea Politehnica Timisoara – Facultatea de Inginerie din Hunedoara

1. Introducere

Inteligența artificială s-a impus ca una dintre cele mai dinamice ramuri ale tehnologiei
informației prin realizările remarcabile atât pe plan teoretic cât şi prin diversitatea aplicațiilor
sale. Între acestea, sistemele expert ocupă un rol important în informatizarea unei mari
diversități de domenii ale activității social-economice.
Există numeroase limbaje pe structura cărora se pot realiza sisteme expert. Din păcate, de
multe ori prezentarea acestora le transformă în cadre rigide în care trebuie să fie cuprinse
faptele din realitate adesea cu eliminări ale unor trăsături esențiale. Abordarea obiectuală a
limbajului CLIPS permite autorului ca, pornind de la fapte, să regăsească natural acele
structuri ale limbajului care concură la surprinderea realității în esențialitatea ei în raport cu
problema ce urmează a fi rezolvată.

2. Prezentarea sistemului de programe 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.

3. Strategii de rezoluție a conflictelor

Atunci când, după faza de filtrare, agenda – structura responsabilă cu memorarea


instanțelor regulilor potențial active – conține mai mult decât o singură regulă, iar declarațiile
de prioritate nu sunt capabile să introducă o ordonare totală a regulilor candidate la a fi
aprinse, selecția trebuie să decidă asupra uneia, care să fie apoi executată. Acest lucru se
poate realiza simplu prin alegerea primei reguli găsite.

2
Universitatea Politehnica Timisoara – Facultatea de Inginerie din Hunedoara

De cele mai multe ori însă se preferă să se facă uz de anumite criterii – strategii de
rezoluție a conflictelor – care ar mări şansele de găsire a soluției.
Prima strategie este mai mult un principiu, pentru că nu introduce o ordonare a instanțelor
regulilor din agendă ci îşi propune să împiedice intrarea motorului de inferențe în bucle
infinite, prin repetarea la nesfârşit a aceloraşi secvențe de reguli aplicate asupra aceloraşi
fapte.
CLIPS implementează câteva strategii de rezoluție a conflictelor. Strategia implicită este
cea în adâncime (depth strategy), dar ea poate fi schimbată prin comanda setstrategy (care
reordonează agenda în conformitate):
- Strategia în adâncime (depth strategy): regulile nou activate sunt plasate în agendă în
fața celor mai vechi de aceeaşi prioritate. Este strategia implicită în CLIPS.
- Strategia în lărgime (breadth strategy): regulile nou activate sunt plasate în agendă în
spatele celor mai vechi de aceeaşi prioritate.
- Strategia simplicității (simplicity strategy): între activările de aceeaşi prioritate
declarată, regulile nou activate sunt plasate în agendă în fața tuturor activărilor regulilor de
egală sau mai mare specificitate.
- Strategia aleatorie (random strategy): regulile activate din agendă sunt ordonate
aleator.
- Strategia complexității (complexity strategy): regulile nou activate sunt plasate în
agendă în fața tuturor activărilor de reguli de egală sau mai mică specificitate.

4. Strategia complexiății

Această strategie dă prioritate regulilor cu condiții mai complexe. Motivația este desigur
aceea că o condiție mai complexă va fi satisfăcută într-o situație mai specifică. O măsură
aproximativă a complexității este dată de numărul de comparări ce trebuie realizate de partea
stângă a regulii:
- fiecare comparare cu o constantă sau o variabilă deja legată contează ca un punct;
- fiecare apel de funcție făcut în partea stângă ca parte a unui element :, = sau test adaugă un
punct;
- funcțiile booleene and şi or nu adaugă puncte dar argumentele lor adaugă;
- apelurile de funcții făcute în interiorul altor apeluri nu contează.

Determinarea strategiei de control curente se face cu comanda get-strategy.


Schimbarea strategiei se face cu comanda set-strategy cu sintaxa:
3
Universitatea Politehnica Timisoara – Facultatea de Inginerie din Hunedoara

(set-strategy strategie)
Dacă se alege strategia complexity cu comanda:
CLIPS> (set-strategy complexity)

Exemplu :
(defrule intreaba-varsta
(not (varsta ?))
=>
(bind ?answer (question “Ce varsta aveti?”))
(assert (varsta ?answer)))

(defrule intreaba-gen
(not (varsta ?))
=>
(bind ?answer (question “Ce gen sunteti?”))
(assert (gen ?answer)))

(defrule intreaba-principalul-simptom
(not (principalul-simptom? TRUE))
=>
(bind ?answer (question “Care este principalul simptom?”))
(assert (principalul-simptom ?answer TRUE))
(set-strategy complexity))

S-ar putea să vă placă și