8. SISTEME EXPERT BAZATE PE REGULI Mijloacele prin care sistemele expert î și ating obiectivele se bazeaz ă pe mulțimi de fapte și reguli euristice,… [606343]

73

8. SISTEME EXPERT BAZATE PE REGULI

Mijloacele prin care sistemele expert î și ating obiectivele se bazeaz ă pe mulțimi de fapte
și reguli euristice, adic ă reguli pentru gestiunea cuno ștințelor. Un sistem expert bazat pe reguli
are trei componente:
¾ baza de cuno ștințe (sau baza de reguli ) care descrie universul domeniului în care se
aplică sistemul expert; reprezentarea cuno ștințelor se face utilizând reguli de forma:
IF <condi ție_1> și …<condi ție _k>
THEN <ac țiune>
(<condiție_1> și …<condi ție _k> se numesc premisele regulii)
¾ memoria de lucru care conține informa ția de stare necesar ă rezolvării unei probleme;
această informație este de obicei organizat ă sub forma unei mul țimi de aser țiuni numite fapte ;
trebuie făcută distincție între faptele ini țiale, care reprezint ă datele ini țiale ale problemei de
rezolvat și faptele dinamice , care sunt deduse pe m ăsura derul ării procesului de rezolvare a
problemei.
¾ mecanismul de inferen ță care reprezint ă componenta de control și execuție dintr-un
sistem bazat pe reguli; acest mecanism realizeaz ă selectarea unei reguli din baza de cuno ștințe și
declanșarea acestei reguli; efectul acestei declan șări este modificare memoriei de lucru.
Arhitectura unui sistem bazat pe reguli este prezentat ă mai jos:

memoria de lucru fapte baza de reguli
reguli
ac țiuni mecanism de inferen ță

Mecanismul de inferen ță poate folosi trei moduri de ra ționament:

74 M ădălina Roxana Buneci

¾ deductiv , dirijat de fapte ( inferență cu înlănțuire înainte )
¾ inductiv , dirijat de scop ( inferență cu înlănțuire înapoi )
¾ mixt
Un proces de inferen ță cu înlănțuire înainte porne ște de la o mul țime de fapte ini țiale
care sunt înc ărcate în memoria de lucru. La fiecare pas se determin ă o regulă ale cărei premise
sunt satisf ăcute de con ținutul curent al memoriei. Se declan șează acțiunea asociat ă acelei reguli,
după care procesul se reia. Acest proces se opre ște dacă este îndeplinit ă una din urm ătoarele
condiții:
ƒ conținutul memoriei de lucru satisface o anumit ă condiție
ƒ nu mai exist ă reguli aplicabile
ƒ s-a epuizat o cantitate de efort de calcul predefinit
Un proces de inferen ță cu înlănțuire înapoi porne ște de la un scop (o problem ă de
rezolvat) pe care îl descompune în subprobleme primitive. De aceea se spune c ă acest mod de
raționament este dirijat de scop în sensul g ăsirii faptelor care permit atingerea acestuia. Se
observă că raționament este invers decât ra ționamentul deductiv. La fiecare pas se selecteaz ă o
regulă care are în partea de concluzii cel pu țin unul dintre obiectivele de rezolvat. Premisele
acestei reguli se adaug ă la obiectivele ce trebuie rezolvate. Acest proces se opre ște dacă este
îndeplinit ă una dintre urm ătoarele condi ții:
ƒ mulțimea obiectivelor de rezolvat devine vid ă
ƒ nu mai exist ă reguli aplicabile
ƒ s-a epuizat o cantitate de efort de calcul predefinit
Ra ționamentul mixt încearc ă să realizeze compromisuri între cele dou ă moduri de
raționament de baz ă: deductiv și inductiv. Principiul general al acestui mod de ra ționament este
următorul: se fixeaz ă un scop, se determin ă faptele deductibile, se aplic ă mai întâi ra ționamentul
inductiv, care va solicita utilizatorul pentru specificarea valorilor unor fapte necunoscute, dar
interogabile și apoi se aplic ă raționamentul deductiv pentru a deduce tot ce este posibil ș.a.m.d.
Pentru exemplificarea celor dou ă moduri de ra ționament de baz ă vom considera
următoarele reguli:
R1: IF a THEN b
R2: IF c THEN d
R3: IF b THEN c

Dezvoltarea sistemelor expert în PROLOG 75

Să presupunem c ă mulțimea faptelor ini țiale este{a}. Dac ă se aplică raționamentul deductiv și
condiția de terminare este s ă numai existe reguli aplicabile, atunci inferen ța decurge astfel: se
selectează regula R1 și mulțimea de fapte devine {a,b}. La al doilea pas se selecteaz ă regula R3 și
noua mul țime de fapte ob ținute este {a,b,c}. La al treilelea pas se selecteaz ă regula R2 mul țimea
de fapte ob ținute devine {a,b,c,d}. Deoarece nu mai exist ă reguli care s ă producă fapte noi,
procesul de inferen ță se oprește. Dacă se aplică raționamentul inductiv și scopul care trebuie
demonstrat este c atunci inferen ța decurge astfel: la primul pas se selecteaz ă regula R3 și noul
obiectiv generat este b. La al doilea pas se selecteaz ă regula R1 și noul obiectiv generat este a.
Acest obiectiv este adev ărat ceea ce determin ă ca obiectivul b s ă fie adăugat la mul țimea de
fapte. Ca atare premisa regulii R3 este adev ărată și deci d este demonstrat. În momentul încheierii
inferenței conținutul memoriei de lucru este{a,b,d}.
În PROLOG ra ționamentul folosit este cel inductiv. Prezent ăm în continuare un
microsistem expert de consiliere a persoanelor fizice în domeniul investi țiilor. Sistemul va ține
cont de
ƒ vârsta clientului- persoanele mai în vârst ă trebuie să fie mai precaute
ƒ suma deja investit ă în depozite bancare-plasamente cu grad ridicat de siguran ță
ƒ suma deja investit ă în acțiuni ale societ ăților bine cotate la burs ă- plasamente rentabile
și cu grad de siguran ță rezonabil
Sistemul va recomanda utilizatorului ce sum ă este disponibil ă pentru investi ții riscante dar foarte
rentabile.

domains
suma=real
varsta=integer
predicates
suma_medie_depozite(varsta,suma)
suma_medie_actiuni_bine_cotate(varsta,suma)
suficient_depozite(suma,suma)
suficient_actiuni_bine_cotate(suma,suma)
date_pers( varsta,suma,suma,suma)
recomandare(suma,suma,suma,suma,suma,suma).
afis_recomandare(suma)

76 M ădălina Roxana Buneci

consiliere
max(real,real,real)
fer
fer1
fer2
elimin_fer
clauses
fer:-makewindow(1,113,37,"Consiliere in domeniul investitiilor persoanelor
fizice",0,0,25,80). /*1*/
fer1:-makewindow(2,113,36,"Datele pesoanei care investeste",2,2,12,75). /*2*/
fer2:-makewindow(3,113,36,"Recomandarea sistemului",16,2,7,75). /*3*/
max(X,X,X). /*4*/
max(X,Y,X):-X>Y. /*5*/
max(X,Y,Y):- X<Y. /*6*/
suma_medie_depozite(Varsta,1000):-Varsta<30. /*7*/ suma_medie_depozite(Varsta,3000) :-Varsta>=30,Varsta<40. /*8*/
suma_medie_depozite(Varsta,6000) :-Varsta>=40,Varsta<50. /*9*/
suma_medie_depozite(Varsta,9000):-Varsta>=50. /*10*/
suma_medie_actiuni_bine_cotate( Varsta,1000):-Varsta<30. /*11*/
suma_medie_actiuni_bine_cotate(Varsta ,3000):-Varsta>=30,Varsta<40. /*12*/
suma_medie_actiuni_bine_cotate(Varsta ,5000):-Varsta>=40,Varsta<50. /*13*/
suma_medie_actiuni_bine_cotate(Varsta ,8000):-Varsta>=50,Varsta<60. /*14*/
suma_medie_actiuni_bine_cotate(Varsta,12000):-Varsta>=60. /*15*/
suficient_depozite(Suma_medie,Suma_efectiva):-Suma_medie<=Suma_efectiva. /*16*/
suficient_actiuni_bine_cotate(Suma_medie,Suma_efectiva):-
Suma_medie<=Suma_efectiva. /*17*/
date_pers(Varsta,Suma_efectiva_dep,Sum a_efectiva_act,Suma_invest):-
shiftwindow(2),nl,wri te("Varsta = "),readint(Varsta),nl,
write("Valoarea investiti ilor in depozite = "),readreal(Suma_efectiva_dep),nl,
write("Valoarea investitiilor in actiuni bine cotate = "),readreal(Suma_efectiva_act),
nl, write("Suma pe care doriti sa o investiti = "),readreal(Suma_invest),nl. /*18*/
recomandare(Suma_invest,Suma_efectiva_dep,Suma_medie_dep,Suma_efectiva_act,

Dezvoltarea sistemelor expert în PROLOG 77

Suma_medie_act, Invest):-
suficient_depozite(Suma_medie_dep,Suma_efectiva_dep),
suficient_actiuni_bine_c otate(Suma_medie_act,Suma_efectiva_act),
Invest=Suma_invest,!. /*19*/
recomandare(Suma_invest,Suma_efectiva_dep,Suma_medie_dep,Suma_efectiva_act,
Suma_medie_act,Invest):-
Invest_rec=Suma_invest+(Suma_efectiva_dep-
Suma_medie_dep)+(Suma_efectiva_act-
Suma_medie_act), max(0,Invest_rec,Invest). /*20*/
afis_recomandare(Suma):-shiftwindow(3),nl,write ("Va recomandam sa investiti suma de
"),
writef("%-30.2\n",Suma),cursor(4,30),
write("pentru a termina apasati orice tasta…"), readchar(_). /*21*/
elimin_fer:-shiftwindow(1), removewindow, shiftwindow(2), removewindow,
shiftwindow(3),
removewindow. /*22*/
consiliere:-fer,fer1,fer2,
date_pers(Varsta,Suma _efectiva_dep,Suma_efectiva_act,Suma_invest),
suma_medie_depozite(Varsta,Suma_medie_dep),
suma_medie_actiuni_bine_cotate(Varsta,Suma_medie_act),
recomandare(Suma_invest,Suma_efectiva_dep,Suma_medie_dep,
Suma_efectiva_act, Suma_medie_act,Invest),
afis_recomandare(Invest),elimin_fer. /*23*/

Clauza 18 are ca efect citirea datelor de in trare: vârsta clientului, suma deja investit ă în depozite
bancare, suma deja investit ă în acțiuni bine cotate și suma pe care dore ște să o investeasc ă.
Clauzele de la 7 la 10 stabilesc suma medie care ar trebui investit ă în depozite bancare de client.
Se observ ă că această sumă crește odată cu vârsta. Clauzele de la 11 la 15 stabilesc suma medie
care ar trebui investit ă în acțiuni bine cotate de c ătre client. Și această sumă crește odată cu
vârsta. Clauzele 16 și 17 stabilesc dac ă s-a investit suficient în depozite, respectiv în ac țiuni bine
cotate. Clauzele 19 și 20 codific ă recomandarea sistemului: dac ă s-a investit suficient în depozite
și acțiuni atunci se recomand ă ca întreaga sum ă să fie investit ă în acțiuni riscante, altfel doar o

78 M ădălina Roxana Buneci

parte din aceast ă sumă se investe ște, restul compensând sumele lips ă la valorile depozitelor și
acțiunilor. Clauza 21 are ca efect afi șarea recomand ării sistemului. Interogarea se realizeaz ă prin:

Goal: consiliere

Similar Posts