Vous êtes sur la page 1sur 15

Universitatea Politehnica din Timioara Facultatea de Electrotehnic i Electroenergtic Departamentul de Electroenergetic

PROLOG i Elemente de inteligen artificial


Curs 8

Sisteme expert
Curs Anul 3 ISE Titular disciplin: .l.dr.ing. Ioan BORLEA

Cap. 14 SISTEME EXPERT


14.1 Definiie. Caracteristici
Sistemul Expert (Expert System - ES) (SE) este un program de calcul, care ofer soluii la nivelul de expertiz a unui specialist uman ntr-un domeniu de activitate strict determinat. Pentru realizarea acestei performane, SE prelucreaz cu ajutorul unei maini de inferen (motor de inferen) datele i informaiile existente ntr-o baz de cunotine (scrie sub forma de fapte i reguli) pentru a oferi rspunsuri la ntrebrile utilizatorului. SE prezint urmtoarele caracteristici: Transparent: se impune ca raionamentul efectuat de SE s poat fi urmrit de utilizator. Aceasta permite intervenia utilizatorului pentru alegerea variantei preferate. Modificare uoar: se refer la posibilitatea actualizrii simple a bazei de cunotine ca si la utilizarea aceluiai nucleu (interfa i motor de inferen) pentru baze de cunotine diferite (care ns prezint aceeai structur). Sistemele expert mai poart i denumirea de Sisteme Bazate pe Cunotine (Knowledge Based Systems KBS). Cunotinele pot fi reprezentate prin reguli, reele semantice, reele neuronale sau modele hibride.

Aplicaii ale SE n Energetic

La proiectarea reelelor i sistemelor electroenergetice. La exploatarea sistemelor electroenergetice: procesarea alarmelor, diagnoza avariilor, conducerea unei staii electrice, prognoza sarcinii, aprecierea stabilitii statice i dinamice a sistemului, aplicaii privind poluarea mediului ambiant, mentenan, restaurare / reconfigurare, management etc. La analiza sistemelor electroenergetice: coordonarea proteciilor, monitorizarea echipamentelor, diagnoza echipamentelor, diagnoza regimurilor etc.

Necesitatea utilizrii SE n domeniul energeticii

Volumul mare de date achiziionate din sistem. Complexitatea problemei de rezolvat. Natura combinatorie a soluiilor. Informaii incomplete. Starea conflictual ntre informaii.. Reproductibilitatea i stabilitatea expertizei.

14.2 Arhitectura unui sistem expert

Shell
Maina de inferen
Interpretor de reguli Procesor de incertitudini Interfaa cu baza de cunotine

Baza de cunotine
Reguli

Interfa de comunicare

Planificator

Fapte Memorie de lucru

Procesor De ce ?

Procesor Cum ?

Utilizator

Principalele pri componente ale unui SE sunt: Motorul de inferen este componenta principal, activ, a SE care realizeaz procesul de raionament artificial prin deducerea unei noi cunotine din cele existente la un moment dat. El poate efectua i alte operaii cum ar fi: procesarea incertitudinilor, furnizarea de explicaii la ntrebrile De ce ? sau Cum ? etc. Baza de cunotine conine informaiile de care dispune expertul i care stau la baza raionamentelor efectuate de maina de inferen. Aceste cunotine sunt organizate structurat sub form de reguli i fapte aparinnd domeniului de lucru considerat. Interfaa asigur comunicarea dintre utilizator i sistemul expert.

Ansamblul format din maina de inferen i interfaa utilizator, poart denumirea de nucleu (shell, kernel) al SE. SE difer ntre ele doar prin baza de cunotine, care este specific aplicaiei la care se refer, toate avnd acelai nucleu. Prezena procesorului de incertitudini asigur capacitatea SE de a prelucra informaii vagi (fuzzy), ceea ce ofer pe lng performanele superioare ale rezultatelor i posibilitatea unui dialog eficient cu utilizatorul la nivelul capacitii de comunicare umane.

Baza de reguli (BR)

Baza de fapte (BF)

SELECIE

Raionamentul folosit de maina de inferen, care prelucreaz regulile de producie, aparine logicii formale. Raionamentele sunt de tipul :

modus ponens permite ca


Regula candidat

pornind de la regula : Dac A este adevrat i A implic B, atunci B este adevrat i de la aseriunea A (adevrat) se va deduce c propoziia B este adevrat;

FILTRARE

Reguli aplicabile

REZOLVAREA CONFLICTULUI

modus tolens permite ca pornind


de la aceeai regul, enunat mai sus i de la aseriunea non B (B este fals) s se deduc faptul c non A (A este fals).

Regula aleas

EXECUIE

14.3 Principiul de funcionare ale unui sistem expert

Exemplu: Pentru a ilustra principiul de funcionare al unui SE presupunem c dispunem de un set de informaii care permit depanarea unui automobil. Informaiile sunt scrise sub form de reguli if then. Acestea sunt: R1: Dac motorul nu pornete i motorul este alimentat atunci problema este cu bujiile. R2: Dac motorul nu pornete si farurile nu se aprind atunci problema este cu acumulatorul. R3: Dac motorul nu pornete si farurile nu se aprind atunci problema este cu firele de alimentare. R4: Dac motorul nu pornete si farurile se aprind atunci problema este cu demarorul. R5: Dac este benzin n rezervor si este benzin n carburator atunci motorul este alimentat.

Dialogul este de forma:

Este benzin in rezervor ? Da Este benzina in carburator ? Da Motorul pornete ? Nu


De ce ? Pentru c urmeaz s tiu dac problema este cu bujiile deoarece motorul este alimentat. Cum ? Conform regulii R5 dac este benzin n rezervor i dac este benzin n carburator atunci motorul este alimentat i % ai confirmat ca este benzina si % ai confirmat ca este benzina in carburator.

14.4 Reprezentarea cunotinelor prin reguli if-then


predicates pb_este(symbol) farurile(symbol) motorul(symbol) benzina(symbol) ask(symbol, symbol) clauses pb_este(cu_bujiile) if

motorul(este_alimentat), motorul(nu_porneste). pb_este(cu_acumulatorul) if motorul(nu_porneste), farurile(nu_se_aprind). pb_este(cu_firele_de_alimentare) if motorul(nu_porneste), farurile(nu_se_aprind). pb_este(cu_demarorul) if motorul(nu_porneste), farurile(se_aprind). motorul(este_alimentat) if benzina(este_in_rezervor), benzina(este_in_carburator). motorul(X) if ask(motor, X). bezina(X) if ask(bezina, X). farurile(X) if ask(farurile, X). ask(Atribut, Valoare) if write(Atribut, : , Valoare, ? ), readln(R), R=y. pb_este(X), write( Problema este cu: , X).

goal

14.5 Exemplu de sistem expert pentru diagnoza unei reele electrice simple
ntr-o cldire este instalat o reea electric de joas tensiune format din dou circuite (1 i 2) i cteva dispozitive electrice dup cum urmeaz:

- 4 becuri conectate cte dou pe fiecare circuit; - un cuptor conectat la circuitul 1; - un calculator conectat la circuitul 2.
Fiecare circuit este protejat printr-o siguran.
Problema de diagnoz care se pune este:

1. identificarea siguranei care a acionat la declanare n urma unui defect


(sccurtcircuit sau suprasarcin) SAU

2. identificarea dispozitivului defect ,


atunci cnd un observator constat la un moment dat c anumite dispozitive funcioneaz iar altele nu. Sistemul expert va rezolva problema cu ajutorul cunotinelor despre reeaua electric respectiv cuprinse n baza de cunotine i cu ajutorul observaiilor furnizate de observator. De fapt este necesar a se dovedi dac un anumit dispozitiv este defect sau dac o anumit siguran este acionat la defect.

predicates
device( symbol) deviceN( symbol) fuse( symbol) fuseN( symbol) fuseF( symbol) different( symbol, symbol) connected( symbol, symbol) connectedD( symbol, symbol) samefuse( symbol, symbol) on( symbol) working ( symbol) stareDevice( symbol) stareFuse( symbol) provedBD( symbol) provedFF( symbol) provedIF( symbol) citestechar

clauses device( heater). device( light1). device( light2). device( light3). device( light4). device (computer). % Identific dispozitivele deviceN( Device) if not (device( Device)), write(" Dispozitiv inexistent !!! "). fuse( fuse1). fuse( fuse2).

% Identific fuzibilele fuseN( Fuse) if not (fuse( Fuse)), write(" Fuzibil inexistent !!! "). connected( light1, fuse1). connected( light2, fuse1). connected( heater, fuse1). connected( light3, fuse2). connected( light4, fuse2). connected( computer, fuse2).

different( X, Y) if not (X=Y).


%Device1 i Device2 sunt conectate la acelai fuzibil samefuse( Device1, Device2 ) if connected( Device1, Fuse), connected( Device2, Fuse), different( Device1, Device2).

fuseF( Fuse) if not (fuseN( Fuse)). % Identifica fuzibilul Fuse pentru Device dat connectedD( Device, Fuse) if device( Device), fuse( Fuse), connected( Device, Fuse), write(" Yes "). connectedD( Device, Fuse) if device( Device), fuse( Fuse), not (connected( Device, Fuse)), write(" No ").

% Citeste raspuns (y/n) citestechar if write(" Raspundeti cu y sau n: "), readchar(X), write(X), nl, X='y ; X='Y'.

% Dovedeste dispozitiv defect provedBD( Device) if on( Device), connectedD( Device, Fuse), provedIF( Fuse), not(working( Device)).

% Device este ON ? % Dovedeste fuzibil intact on( Device) if provedIF( Fuse) if device( Device), connectedD( Device, Fuse), write( "Intrerupator",Device," este inchis ?"), working( Device). citestechar. % Dovedete fuzibil ars %Device funcioneaz ? provedFF( Fuse) if working( Device) if connectedD( Device1, Fuse), device( Device), on( Device1), write( "Functioneza ", Device," ? "), not (working( Device1)), citestechar. samefuse( Device2, Device1), on( Device2), not (working( Device2)).

% Stare dispozitiv stareDevice( Device) if provedBD( Device), write( Device, " este defect."), nl. stareDevice( Device) if not (provedBD( Device)), write( Device, " este functional."), nl.
% Stare fuzibil stareFuse( Fuse) if provedFF( Fuse), write( Fuse, " este arsa."), nl. stareFuse( Fuse) if provedIF( Fuse), write( Fuse, " este buna."), nl. goal clearwindow, connectedD( light1, fuse2). stareDevice( heater). on(fuse1).

% %

Cursul viitor urmeaz:


Arbori i grafuri n Prolog