Documente Academic
Documente Profesional
Documente Cultură
OBIECTIVE
Sistemele expert fac parte din ramura informaticii denumită inteligenţă artificială. Prin
inteligenţă artificială (Artificial Intelligence) se înţelege tehnologia informatică care priveşte
simularea pe calculatorul electronic a unor elemente ale inteligenţei umane (deducţia logică,
capacitatea de a învăţa din experienţă, obţinerea unor concluzii pe baza unor date incomplete,
recunoaşterea vorbirii etc.). Raţionamentul artificial imită raţionamentul natural, specific
creierului fiinţei umane. Abordarea cognitivă a inteligenţei artificiale (raţionamentul artificial
este o încercare de reproducere a raţionamentului natural care este o succesiune de stări şi
procese mentale ce convertesc stimulii priviţi ca date de intrare în rezultate sau date de ieşire) a
permis lui E.A. Feigenbaum să definească inteligenţa artificială ca un ansamblu de tehnici şi
metode prin care se asigură capturarea cunoştinţelor umane şi procesarea simbolică a acestora.
S-au obţinut, astfel, sisteme de gestiune a bazelor de cunoştinţe, prin cunoştinţă înţelegând
informaţie cu înţeles şi informaţie care acţionează (acad. Mihai Drăgănescu). Se reaminteşte aici
că informaţia este o dată care prezintă caracter de noutate, iar calculatorul electronic realizează
prelucrarea automată a datelor. Prin abordarea pragmatică (modul de obţinere a
raţionamentului artificial diferă de modul oferit de modelul biologic), inteligenţa artificială este
definită ca ramură a informaticii care asigură executarea cu ajutorul calculatorului a unor sarcini
(task-uri) pe care fiinţa umană le execută, în anumite situaţii, mai bine decât calculatorul. În
sfârşit, prin abordarea conexionistă (raţionamentul artificial este o încercare de reproducere a
raţionamentului natural care este o succesiune de stări şi procese neuronale), informatica
inteligentă este definită ca acea parte a informaticii care realizează prelucrarea automată a
cunoştinţelor. Se reaminteşte că informatica este ştiinţa care asigură prelucrarea automată a
datelor. În varianta clasică, prelucrarea este algoritmică (problema de rezolvat este descompusă
în paşi elementari, modul de rezolvare este descris prin dispunerea paşilor într-o anumită ordine
prin folosirea celor trei structuri fundamentale de control specifice programării structurate -
secvenţială, alternative şi repetitive şi obţinerea rezultatului prin prelucrarea serială a datelor).
În informatica inteligentă, sunt prelucrate date sub formă de cunoştinţe, adică acele corelaţii
logice şi semantice dintre fapte puse în evidenţă cu ajutorul regulilor de raţionament
(inferenţiere). Prelucrarea cunoştinţelor este o prelucrare simbolică (prelucrare nealgoritmică ce
nu face diferenţa dintre date şi programe) şi are caracter declarativ. Dintre domeniile principale
1
de aplicaţie ale inteligenţei artificiale se enumeră sistemele expert, învăţarea automată,
demonstrarea automată a teoremelor, robotica, jocurile dintre om şi calculator, traducerea
automată, recunoaşterea formelor, realitatea virtuală.
Domeniile activităţii umane conţin probleme dificile de rezolvat (complexe, incomplete,
inconsistente, incerte, bazate pe aprecieri vagi, confuze, slab structurate) de către experţii umani,
adică de acei specialişti cu experienţă acumulată în mulţi ani, cu eforturi de aprofundare a
problematicii domeniilor respective. Experţii umani convertesc problemele din sfera expertizei
în sfera cunoştinţelor comune de specialitate ce sunt bine structurate şi sunt caracterizate de
simplitate, claritate, certitudine, consistenţă, precizie şi completitudine.
Sistemul expert reprezintă un sistem de programe pe calculator, fundamentat pe metode
şi tehnologii ale inteligenţei artificiale, care stochează cunoştinţele mai multor experţi umani
dintr-un domeniu bine definit şi pe care apoi le utilizează pentru rezolvarea problemelor dificile
specifice domeniului. Un sistem expert prezintă următoarele caracteristici: relevanţa mare;
specializarea într-un domeniu bine definit; natura simbolică a cunoştinţelor prelucrate;
independenţa cunoştinţelor de mecanismul de raţionament (inferenţiere); abordarea declarativă
a cunoştinţelor; posibilitatea de a trata cunoştinţe incomplete şi inexacte; capacitatea de a
explica raţionamentele efectuate; exploatarea dinamică a cunoştinţelor prin intermediul
mecanismului de raţionament; folosirea unor metode empirice (bazate numai pe experienţă)
alături de metode ştiinţifice în rezolvarea problemelor. Sistemele expert asigură extinderea
prelucrărilor în domenii dificil de algoritmizat, ce sunt dominate de informaţii calitative
(macroeconomic, juridic, politic, educaţional etc.). Sistemele expert pot fi utilizate ca sisteme
informatice specializate sau pot fi integrate ca subsisteme în sisteme informatice hibride,
inclusiv în sisteme informatice de asistare a deciziei (SIAD) şi în sisteme informatice integrate
economice, în conformitate cu concepţia holonică asupra sistemelor (două sau mai multe
sisteme autonome se pot integra, pentru a îndeplini obiective bine definite, pe baza unor criterii
prestabilite, pentru a forma un nnou sistem de referinţă denumit sistem holonic). Principalele
tipuri de sisteme expert utilizate în domeniul economic sunt: sisteme expert destinate previziunii
şi planificării (de exemplu, previziunea structurii portofoliului de clienţi ai unei societăţi de
asigurări sau planificarea investiţiilor); sisteme expert de diagnosticare (de exemplu,
diagnosticarea situaţiei financiare a unei societăţi comerciale sau supravegherea procesului de
acordare a creditelor într-o bancă); sisteme expert de control şi monitorizare (de exemplu,
gestiunea trezoreriei). Alte tipuri de sisteme expert (folosite în alte domenii decât cel economic)
au funcţii de depanare şi reparare, proiectare, instruire, interpretare, simulare, clasificare.
Conform unor statistici, cele mai folosite tipuri de sisteme expert sunt cele de diagnosticare
(45%), de planificare şi previziune (25%), de control şi monitorizare (15%).
Sistemele expert au apărut în anii 70 ai secolului XX, la început pentru aplicaţii medicale
şi tehnice. Dintre primele sisteme expert realizate, se amintesc MYCIN – pentru diagnosticarea
bolilor datorate infecţiilor bacteriene şi DENDRAL – destinat spectrografiei de masă, ambele
aparţinând Universităţii Stanford din SUA; DART – pentru depanarea calculatoarelor
electronice, aparţinând firmei IBM. Ulterior, aplicaţiile economice ale sistemelor expert au
căpătat o amploare deosebită, în special în domeniile financiar-contabil, bancar şi de marketing
(exemple: LOAN PROBE al asociaţiei de companii de audit Big Eight – pentru auditarea
împrumuturilor de la bănci, SURVEILLANCE EXPERT al bursei din New York, destinat
supravegherii tranzacţiilor, PLAN POWER al firmei Applied Expert Systems, Inc. – planificare
financiară individuală, BUSINESSPLAN – planificare financiară pentru întreprinderi mici, ce
aparţine firmei Sterling Wentworth Corp, ANSPLAN al firmei Ansoft – planificarea firmei pe
baza cotei de piaţă şi diferenţierii produselor, FINANCIAL ADVISOR al firmei Paliadian
Software – gestionarea proiectelor de capitalizare intensivă, PPAM al firmei Lysia – planificare
de marketing pentru un singur produs).
Arhitectura unui sistem expert cuprinde: baza de cunoştinţe, baza de fapte, motorul de
inferenţe, modulul de achiziţie a cunoştinţelor, modulul explicativ şi interfaţa cu utilizatorul.
2
Baza de cunoştinţe şi baza de fapte formează baza de date a sistemului expert.
Baza de cunoştinţe cuprinde date sub formă de cunoştinţe (reprezentate prin reguli, reţele
semantice, reţele neuronale, modele hibride etc.) ale unui domeniu specializat. Aceste cunoştinţe
sunt expresia entităţilor şi a relaţiilor dintre ele din universul real. Crearea unei baze de
cunoştinţe este un proces complex, cu multe iteraţii şi teste, la care participă experţii umani şi
inginerii de cunoştinţe (cogniticienii) ce sunt similari cu analiştii de sisteme informatice.
Baza de fapte include date despre problema de rezolvat (formularea problemei) şi fapte
generate de procesul de raţionamente efectuat de motorul de inferenţe asupra bazei de
cunoştinţe.
Motorul de inferenţe reprezintă partea de prelucrare a sistemului expert şi constituie
subsistemul rezolutiv al acestuia. De exemplu, în cazul sistemelor expert cu reguli de producţie,
motorul de inferenţe preia propoziţii de la intrare (prin interfaţa cu utilizatorul), caută fapte (din
baza de fapte) şi reguli (din baza de cunoştinţe) prin construirea de raţionamente (inferenţe) şi,
în final, trage o concluzie în virtutea căreia acţionează sistemul expert.
Modulul de achiziţie a cunoştinţelor permite conversia cunoştinţelor din forma asigurată
de inginerul de cunoştinţe în forma internă de stocare pe suport magnetic specifică sistemului de
calcul (reprezentarea cunoştinţelor). În plus, modulul de achiziţie a cunoştinţelor reprezintă şi o
interfaţă de comunicare cu baza de date a sistemului expert (către interior) şi cu alte sisteme
informatice (către exteriorul sistemului expert).
Modului explicativ asigură prezentarea în limbaj natural a justificării raţionamentelor
executate de motorul de inferenţe şi a întrebărilor adresate utilizatorului.
Interfaţa cu utilizatorul permite dialogul utilizatorului cu sistemul expert, pentru
introducerea datelor de intrare şi afişarea rezultatelor pentru problema de rezolvat.
Baza de cunoştinţe, baza de fapte, modulul de achiziţie a cunoştinţelor şi modulul
explicativ formează subsistemul cognitiv al sistemului expert, ca sistem bazat pe cunoştinţe, KBS
(Knowledge-Based System).
Cunoştinţele realizează descrierea rezolvării unei clase de probleme. Faptele asigură
descrierea aserţiunilor de instanţiere a unei probleme de rezolvat ce aparţine unei anumite clase
de probleme.
Prin reguli de producţie (în teoria limbajelor formale, denumirea iniţială a fost de reguli
de scriere) se înţeleg regulile de forma IF premize THEN concluzie, unde premizele şi concluzia
reprezintă fapte. Pornind de la calculul propoziţional, reprezentarea cunoştinţelor prin reguli de
producţie utilizează două tipuri de structuri - faptele şi regulile - ce cuprind, uzual, numai entităţi
invariabile (în caz contrar, reprezentarea cunoştinţelor se efectuează cu reguli de producţie cu
variabile). Dacă premizele unei reguli sunt adevărate (faptele componente sunt verificate de
baza de fapte), atunci şi faptele din concluzie sunt adevărate şi pot fi incluse în baza de fapte. Se
foloseşte modus ponens din logica formală (paragraful 2.2). Regulile de producţie sunt stocate în
baza de reguli. Ordinea de înregistrare a regulilor de producţie nu este importantă. Faptele care
descriu cunoştinţele comune ale domeniului de cunoaştere sunt fapte permanente (de exemplu,
în contabilitate, tipul de cont – de activ, de pasiv sau bifuncţional). Faptele specifice problemei
de rezolvat sunt fapte temporare şi sunt şterse după obţinerea concluziei pentru problemă.
Obţinerea concluziei poate reprezenta un succes (în această situaţie se oferă o soluţie pentru
problema de rezolvat) sau poate eşua.
Prin folosirea conectorilor logici pentru legarea faptelor ce compun regula de producţie,
se obţine următorul exemplu de regulă de producţie ce poate fi utilizată pentru dimensionarea
activităţii de producţie a unei întreprinderi (analiza diagnostic a valorii adăugate):
IF gradul de folosire a capacităţilor de producţie creşte
AND productivitatea muncii creşte
AND NOT(cheltuielile cu materialele la 1 leu producţie cresc)
THEN valoarea adăugată creşte.
5
Regulile de producţie cu variabile se folosesc atunci când în formularea regulilor se
folosesc variabile ce generalizează anumite situaţii concrete. De exemplu, la înregistrarea în
contabilitate, pentru un cont de pasiv C1, în raport cu contul C2, se poate folosi următoarea
regulă:
Calculul predicatelor de ordinul întâi este denumit şi logica predicatelor de ordinul întâi
şi are la bază funcţia propoziţională a predicatului. Calculul predicatelor foloseşte declaraţii
logice ca modalitate de reprezentare a relaţiilor dintre obiecte. Predicatul (proprietatea)
desemnează propoziţiile simple cu un singur termen liber. De exemplu, în propoziţia „…este
economist”, subiectul lipseşte şi locul lui se poate completa cu mai multe valori diferite,
obţinându-se astfel mai multe propoziţii adevărate sau false. În spaţiul liber se poate dispune o
variabilă ce este folosită numai pentru subiect (ordinul întâi). În exemplul,
cont_de_activ(c), c este variabila ce permite substituirea cu orice cont de activ, iar în exemplul
cont_de_pasiv(p), p este variabila ce permite substituirea cu orice cont de pasiv.
În logică, relaţiile Rel reprezintă expresii cu două sau mai multe elemente libere, în care
se folosesc conectorii logici (AND, OR, NOT, ↔,→), cuantificatorul universal (∀, „pentru
orice”) şi cuantificatorul existenţial (∃, „există cel puţin o valoare”).
Formatul predicatului este compus din nume_identificator şi listă de argumente.
Argumentele unui predicat sunt argumente de bază (obligatorii) şi argumente opţionale.
Argumentele se introduc într-o anumită ordine. De exemplu, predicatul creditează(401,
100.000.000) are nume_identificator creditează şi argumentele 401 şi 100.000.000.
Dacă subiectul şi predicatul sunt reprezentate prin variabile, un exemplu de regulă cu
propoziţiile P1 şi P2 adevărate este următorul:
Bazele de date deductive fac parte din categoria bazelor de date active adică acele baze
ce sunt caracterizate de comportamentul lor dinamic în raport cu schimbările ce survin în
interiorul acestora sau cu evenimentele ce se produc în afara acestora. Acest comportament
dinamic al bazelor de date active este descris de regulile eveniment – condiţie – acţiune (ECA).
Aceasta înseamnă că atunci când (when) un eveniment se produce, se testează o condiţie şi dacă
(if) aceasta este adevărată la evaluare, atunci (then) se execută o acţiune.
Bazele de date deductive sunt denumite şi baze de date inteligente sau baze de date
bazate pe logică şi sunt caracterizate de posibilitatea gestionării adaptive a datelor în
conformitate cu cerinţele utilizatorilor în luarea deciziilor economice. Bazele de date deductive
sunt baze mari de date ce sunt supuse analizei şi interpretării. Sistemul de gestiune aferent
acestor baze de date deductive cuprinde instrumente de realizare automată a raţionamentelor ce
sunt realizate prin programare logică. Aşa cum s-a arătat mai sus, programarea logică reprezintă
6
un tip de programare bazată pe raţionamente, în care programul este compus din fapte şi reguli
şi are ca rezultat concluzii.
Fundamentarea matematică a bazelor de date deductive este bazată pe universul
Herbrand, adică setul de simboluri de tip constantă din limbajul L, limbaj care nu conţine
simboluri funcţie, dar conţine cel puţin simboluri predicative. Baza Herbrand cuprinde
ansamblul faptelor posibile despre baza de date şi se constituie într-un sistem închis.
Bazele de date deductive utilizează, în principal, logica propoziţiilor de ordinul I, adică
acel limbaj formal ce conţine un alfabet, reguli de sintaxă, axiome şi o regulă de deducţie de
tipul când (when)...dacă (if)... atunci (then) ... Este de menţionat diferenţa esenţială dintre
regulile de producţie specifice sistemelor expert (premisă sau condiţie→concluzie) şi regulile
specifice sistemelor de gestiune a bazelor de date active (eveniment→condiţie →acţiune).
Bazele de date deductive prezintă două componente: componenta asociată modulului
relaţional (SGBDR pentru baza de fapte) şi componenta asociată modulului programării logice
(pentru realizarea interogărilor). Cuplarea dintre SGBDR şi modulul programării logice
(sistemul de raţionamente) poate să fie cuplare slabă (realizată numai în anumite momente de
timp) sau cuplare strânsă (interacţiune continuă, permanentă). Prin integrarea completă a
instrumentelor de realizare automată a raţionamentelor în cadrul SGBDR se obţine un sistem de
gestiune a bazelor de date deductive cu limbaj de descriere a datelor, limbaj de manipulare a
datelor şi limbaj de reguli. Pe baza limbajului Prolog şi a unei interfeţe specializate în lucrul cu
baze de date, s-a realizat limbajul Datalog. Limbajul Datalog este un limbaj declarativ orientat
pe programarea logică acceptat la limbaj standard destinat bazelor de date deductive. Un
program realizat în limbajul Datalog este o secvenţă cu definiţii de proprietăţi. Sintaxa
limbajului nu conţine predicate speciale şi utilizează logica propoziţiilor de ordinul I, fără
simboluri de funcţie.
7
3.2 Metode de inferenţă
3.3.Baza de cunoştinţe
8
Dintre metodele conduse de expertul uman (manuale şi semiautomate) se menţionează
metoda manuală autoraportul expertului ce prezintă toate conceptele şi relaţiile de nivel înalt cu
privire la problema de rezolvat şi metodele asistate de calculator care au, mai întâi, ca rezultat,
un model iniţial al bazei de cunoştinţe. Modelul iniţial al bazei de cunoştinţe se obţine prin
intermediul unor tehnici de modelare vizuală după care, prin rafinare, se realizează baza de
cunoştinţe finală.
Cea mai mare parte a instrumentelor inteligente de achiziţie a cunoaşterii (ETS,
KRITON, AUTOINTELLIGENCE, AQUINAS etc.) au la bază metoda RGA (Repertory Grid
Analysis) fundamentată pe premisa că, de cele mai multe ori, experienţa are la bază percepţia şi
mai puţin intuiţia. Ca urmare, cunoaşterea şi percepţiile asupra domeniului specific expertului
uman sunt clarificate şi organizate într-un model conceptual personal, în următoarea succesiune:
identificarea de către expertul uman a obiectelor relevante din domeniul de expertiză;
identificarea de către expertul uman a atributelor importante în procesul de luare a deciziei;
însoţirea fiecărui atribut cu o schemă binară (caracteristici – opusul acestor caracteristici);
completarea (şi apoi rafinarea) unei scale de la 1 la 3 sau de la 1 la 5 cu răspunsurile la
întrebarea: „Ce caracteristici şi atribute diferenţiază două obiecte de un al treilea?”.
Organizarea cunoaşterii se referă la metoda de reprezentare a cunoştinţelor (reguli de
producţie, de exemplu), verificarea cunoaşterii (asigurarea corectitudinii bazei de cunoştinţe) şi
validarea procesului de inferenţiere (se execută, periodic, pe timpul testării sistemului expert).
Baza de cunoştinţe este actualizată şi întreţinută permanent, prin adăugare de noi
cunoştinţe, cu o atentă monitorizare a nivelului de performanţă a sistemului expert.
Limbajul Prolog este un limbaj de nivel înalt. Numele limbajului PROLOG (limbaj din
generaţia a cincea) provine din PROgramarea LOGică (în engleză, PROgramming in LOGic).
Prin programare logică (programare de raţionamente) se înţelege realizarea unui program care
este format din fapte şi relaţii (relaţii logice între mulţimi de date) din care se obţin concluzii.
Un program Prolog reprezintă o colecţie de fapte şi reguli.
Mediul Turbo Prolog asigură o interfaţă de lucru pentru realizarea sistemelor expert cu
ajutorul limbajului de programare Prolog.
9
Turbo Prolog reprezintă un mediu de dezvoltare ce aparţine companiei Borland. Pagina
de primire conţine patru ferestre: de editare a programelor (Edit), de dialog pentru realizarea
intrărilor şi ieşirilor din program (Dialog), de afişare a mesajelor sistemului de calcul (Message)
şi de depanare a programelor (Trace).
Accesul la meniul principal se efectuează cu tasta F10 sau Alt şi litera de început a unei
opţiuni. Meniurile mediului Prolog sunt următoarele:
Meniul Files are următoarea compunere: Load – încarcă un fişier (F3); Pick – Selectează
un fişier; New File – Fişier nou (fişier nou implicit WORK.PRO); Save – salvează fişierul
curent; Write to – salvează fişierul curent, eventual cu un alt nume; Directory – afişează un
director (folder); Change dir- modifică un director; OS Shell – trecere în sistemul de operare
DOS (Alt-D); Quit – ieşirea din mediul Prolog (Alt-X).
Meniul Compile prezintă următoarele opţiuni: Memory – compilare în memorie care nu
are ca rezultat obţinerea de fişiere .OBJ; OBJ File – compilare pe un suport magnetic care are ca
rezultat obţinerea de fişiere .OBJ; EXE file (auto link) – editarea de legături (link-editarea) cu
obţinerea formei executabile a programului; Project (all modules) – realizarea unui proiect care
are în compunere toate modulele necesare şi modului standard de iniţializare INIT; Link only –
realizează link-editarea unui .OBJ sau a unui proiect .PRJ.
Meniul Options dispune de opţiunile: Link options – opţiuni pentru link-editare prin
specificarea unor biblioteci utilizator; Edit PRJ file – asigură editarea unui fişier .PRJ; Compiler
directives – realizează directivele compilator din program sau din meniu, astfel:
Memory allocation – alocarea memoriei prin care se stabileşte mărimea codului, stack-ului,
trail-ului şi heap-ului;
Run-time check – precizează elementele ce trebuie verificate în timpul execuţiei
programului (break check; stack check; integer overflow check);
Error level – nivelul de eroare, cu valoarea implicită 1;
Non-determ warning- avertizarea pentru nedeterminări (On/Off);
Variable used once warning – variabilă folosită pe timpul avertizării (On/Off);
Printer menu in EXE-file – meniul imprimantei pentru fişierele de tip .EXE (On/Off);
Trace – urmărire (On/Off);
Diagnostics – diagnosticări (On/Off).
Meniul Setup asigură posibilitatea reconfigurării sistemului de calcul, astfel: Colors –
culori; Window size – dimensiunea ferestrei; Directories – directoare; Miscellaneous – setări
diverse ce se referă la specificarea driver-ului, încărcarea automată a mesajelor, rezoluţia
ecranului, redefinirea cheilor funcţionale, definirea help-ului; Load SYS file – încărcarea
fişierului SYS; Save SYS file – salvarea fişierului SYS. Cheile funcţionale, singure sau în
combinaţie (hot keys), au semnificaţia prezentată în tabelul 4.1.
10
Nr. Categoria Semnificaţia Semnificaţia Combinaţie Combinaţie
crt. în engleză în română 1 2
1. Deplasarea Line up Linie în sus ^X Ctrl - E
2. cursorului Line down Linie în jos ^Y Ctrl - X
3. Left Stânga ^[ Ctrl - S
4. Right Dreapta - Ctrl - D
5. Word left Cuvânt stânga Ctrl-^[ Ctrl - A
6. Word right Cuvânt dreapta Ctrl-^Z Ctrl - F
7. Start of line Început linie Home Ctrl – Q,Ctrl-S
8. End of line Sfârşit linie End Ctrl – Q,Ctrl-D
9. Start of page Început pagină Ctrl-Home -
10. End of pag Sfârşit pagină Ctrl-End -
11. Scroll up Defilare în sus Ctrl-W -
12. Scroll down Defilare în jos Ctrl-Z -
13. Page up Pagină în sus PgUp Ctrl-R
14. Page down Pagină în jos PgDn Ctrl-C
15. Start of text Început text Ctrl-PgUp Ctrl – Q,Ctrl-R
16. End of text Sfârşit text Ctrl-PgDn Ctrl – Q,Ctrl-C
17. Previous position Poziţia anterioară Ctrl – Q,Ctrl-P
18. Goto line Salt la linia Ctrl-F2 Ctrl – Q,Ctrl-L
19. Goto position Salt la poziţia Shift-F2 -
20. Insert& Insert new line Inserare linie nouă - Ctrl - N
21. Delete Backspace Şterge un caracter Ctrl - H -
înapoi
22. Delete character Şterge un caracter Del Ctrl - G
înainte
23. Delete word Şterge cuvânt - Ctrl - T
24. Delete to start of Şterge de la - Ctrl – Q,Ctrl -
line începutul liniei până T
în poziţia curentă
25. Delete to end of Şterge din poziţia - Ctrl – Q,Ctrl -
line curentă până la Y
sfârşitul liniei
26. Delete line Şterge linia curentă Ctrl-BackSpace Ctrl - Y
27. Compile & Compile to Compilare în F9
Run memory memorie
28. Compile to OBJ Compilare în OBJ Shift – F9
29. Compile to EXE Compilare în EXE Ctrl – F
30. Compile Project Compilare proiect Alt – F9
31. Run program Rulare program Alt - R
11
Nr. Categoria Semnificaţia Semnificaţia Combinaţie 1 Combinaţie
crt. în engleză în română 2
32. Funcţii Copy block Copiere bloc Ctrl – F5
33. pentru Copy block again Repetare copiere bloc Shift – F5
34. blocuri de Copy block to prn Imprimare bloc Alt – F8
35. caractere Copy block to file Scriere bloc în fişier Alt – F5
36. Copy block from file Scriere bloc din fişier F7
37. Move block (bl) Deplasare bloc Alt – F6
38. Delete block Ştergere bloc Alt – F7
39. Undo delete block Anulare ştergere bloc Ctrl – F7 Ctrl-K,Ctrl-U
40. Change case for a bl Modificare bloc Ctrl-F6
41. Search Căutare Ctrl – F3
42. Search again Repetare căutare Shift – F3
43. Replace Înlocuire F4
44. Replace again Repetare înlocuire Shift – F4
45. Funcţii Resize window Redim. fereastră Shift – F10
46. globale Zoom window Lupă fereastră F5
47. View windows Vizualizare fereastră F6
48. Previous line Linia precedentă F8
49. File mask Mască fişier F4
50. Call editor in GOAL Apel editor în GOAL Ctrl - E
51. Terminate input Terminare intrare F10
52. Hot Keys Load file Încărcare fişier F3
53. Save file Salvare fişier F2
54. Pick file Alt – F3
55. Activate Files Activare fişiere Alt - F
56. Activate OS Activare S.O. Alt - D
57. Activate Options Activare opţiuni Alt - O
58. Activate Compile Activare compilare Alt - C
59. Activate Setup Activare Setup Alt - S
60. Display Hot keys Afişare taste „calde” Alt - H
61. Quit Prolog Părăsire Prolog Alt - X
62. Diverse Help menu Meniu de ajutor F1
63. Show help file Afişare fişier ajutor Shift – F1
64. Auto indentation Auto-indentare Alt - I Ctrl-Q,Ctrl-I
65. Insert mode Modul inserare Ins Ctrl - V
66. Text mode Modul text Ctrl-Q,Ctrl-W
67. Lower case word Litere minuscule Ctrl-B,Ctrl-L
68. Upper case word Litere majuscule Ctrl-B,Ctrl-U
69. Reverse case word Inversare litere Ctrl-B,Ctrl-R
70. Exit editor Ieşire editor F10 Ctrl-K,Ctrl-D
12
definirea tipurilor de date
domains
denumire_material, denumire_furnizor=string
cod_material=integer
cantitate, pret_unitar=real
materiale=material(cod_material, denumire_material, cantitate,
pret_unitar)
13
nume_predicat(tip_argument_1, tip_argument_2, …,tip_argument_m).
Predicatele pot fi predefinite (instrucţiuni Prolog ca read(), write(), assert()) sau definite
de către utilizator (exemple: client, autoturism, extrage_maxim). Predicatele predefinite nu se
declară în secţiunea predicates.
Argumentele predicatului pot fi constante, variabile sau structuri.
Un predicat poate avea aritate (numărul de argumente) multiplă. Pot exista predicate cu
acelaşi nume şi cu arităţi diferite. În acest caz, aceste predicate se declară sub formă grupată,
atât în secţiunea predicates cât şi în secţiunea clauses.
Secţiunea predicates se poate declara globală (global predicates).
Exemplul de secţiune predicates scoate în evidenţă diverse şabloane în care tipurile de
predicate sunt definite de utilizator, iar tipurile de argumente sunt standard (integer, real) sau
definite de utilizator (lista, nume_client, localitate etc.):
predicates
sort(lista, lista)
extrage_maxim(lista, real, lista)
autoturism(marca, tip, culoare, cap_cilindrica, viteza_max)
client(nume_client, localitate, strada, integer, cod_fiscal)
Secţiunea goal (scopuri) poate apare în program – scopuri interne, după secţiunea
predicates (problemă şi soluţie unice) sau sub formă interactivă de prompter (varianta
interpretor) ce aşteaptă introducerea unei clauze (grup de clauze) – scopuri externe. Secţiunea
goal prezintă scopurile interne sub forma unei succesiuni de clauze ce cuprind predicate
standard şi predicate definite de către utilizator şi se încheie cu punct:
goal
apreciere_licitatie.
clauses
sort(l1, l1)
extrage_maxim(l1, 4.2, l1)
autoturism(Dacia, Logan, albastru, 1500, 240)
client(Ionescu Ion, Bucuresti, Unirii, 142, R12300211)
14
constants
nume_patron=”Ionescu Ion” /*sir de caractere*/
numar_salariati=150 /* numar intreg */
cost_unitar=3200/200 /*expresie reprezentand */
/*total_cheltuieli / cant_produse_obtinute */
cota_TVA=0.18 /* numar real */
culoare=galben_48 /* simbol*/
r=’y’ /* tip caracter */
Secţiunea database (bază de date) este folosită pentru declararea şi utilizarea faptelor
(sub formă de bază de date internă) ce trebuie prelucrate (adăugate, modificate sau şterse) în
timpul execuţiei unui program. Fiecare bază de date internă utilizată se declară într-o altă
secţiune database, prin specificarea predicatelor:
database
nume_predicat_1(argument_1,argument_2,…,argument_m)
nume_predicat_2(argument_1,argument_2,…,argument_m)
…
nume_predicat_n (argument_1,argument_2,…,argument_m)
În afara secţiunii goal, secţiunile programului în limbajului Prolog pot fi utilizate de mai
multe ori în cadrul aceluiaşi program. Ca urmare, un program în limbajul Prolog poate fi alcătuit
din mai multe module (astfel încât fiecare modul conţine secţiunile domains, predicates,
clauses, constants).
4.3. Prelucrări
Un program Prolog poate fi structurat pe module, fiecare modul având propriile secţiuni.
Evaluarea unei clauze Prolog are ca urmare obţinerea unui rezultat de tipul Yes sau No. Prin
negaţie (Not), rezultatul obţinut la evaluarea unei clauze este inversat. Întreruperea unui
program poate fi realizată cu break. Ieşirea forţată din program se face cu exit.
Când un program Prolog asigură o singură soluţie, acest program este determinist (altfel,
programul este nedeterminist). Un program Prolog este forrţat să fie determinist cu ajutorul
predicatului fail (false la returnare, cu eşuarea regulii în care apare).
Predicatul fail porneşte backtracking-ul (revenirea pe o altă ramură a arborelui de
căutare atunci când la capătul ramurii curente nu se găseşte ceea ce se caută) care reprezintă
capacitatea sistemului expert de a încerca soluţii alternative în încercarea de a găsi răspunsul la
întrebare. Predicatul cut împiedică realizarea backtracking-ului.
Ciclurile pot fi simulate prin folosirea predicatului fail sau prin recursivitate (capacitatea
unei rutine de a se autoapela).
Expresiile de calcul şi comparaţiile pot fi introduse în premisele unei reguli Prolog.
Introducerea datelor se realizează cu predicatele readln, readchar, readint, readreal,
readterm, file_str, keypressed, unreadchar.
Prelucrarea şirurilor de caractere se obţine cu predicatele concat, str_len, format,
isname, frontchar, fronttoken, frontstr. Conversiile de tip se fac cu predicatele str_int,
str_real, char_int, str_char, upper_lower.
Afişarea datelor se obţine cu predicatele write, writef şi nl.
15
4.4 Aplicaţii economice în limbajul Prolog
/* CLIENT BANCAR */
domains
adresa,nume,firma=string
telefon=symbol
client=cl(nume,adresa,telefon,firma)
predicates
introdu_client(client)
ruleaza
clauses
introdu_client(Cl(Nume,Adresa,Telefon,Firma)):-
write("Care este numele clientului?"),readln(Nume),
write("Care este adresa clientului?"),readln(Adresa),
write("Care este telefonul clientului?"),readln(Telefon),
write("Care este firma clientului?"),readln(Firma).
ruleaza:-introdu_client(Cl(Nume,Adresa,Telefon,Firma)),nl,
write(“----------------------“),nl,write(Cl),nl,nl,nl.
/* PATRONAT FIRME */
domains
nume,den,tip=symbol
predicates
firma(den,tip)
asociat1(nume,den)
asociat2(nume,den)
patronat(nume,nume,den)
clauses
firma(astra,sa).
firma(aspera,srl).
firma(confort,srl).
firma(aerobic,srl).
firma(contact,sa).
asociat1(ionescu,astra).
asociat1(ionescu,confort).
asociat1(popescu,aspera).
16
asociat1(popescu,aerobic).
asociat1(georgescu,contact).
asociat2(cristescu, confort).
asociat2(matei,aerobic).
asociat2(gheorghe,astra).
asociat2(bundea,astra).
patronat(X,Y,Z):-asociat1(X,Z) and asociat2(Y,Z).
Ciclul de viaţă a unui sistem expert (ca a oricărui produs-program sau aplicaţie
informatică) reprezintă perioada cuprinsă între momentul apariţei conceptului şi momentul
scoaterii sistemului din exploatare. Ciclul de viaţă al unui sistem expert este compus din
următoarele etape: analiza preliminară (definirea activităţii care va face obiectul sistemului
expert şi selectarea instrumentelor informatice), modelarea conceptuală (definirea structurii
conceptuale a cunoştinţelor folosite de către expertul uman în domeniul specific care constituie
obiectul sistemului expert), colectarea cunoştinţelor (cunoştinţele se vor utiliza pentru
construirea modelelor conceptuale şi pentru realizarea bazei de cunoştinţe), reprezentarea
cunoştinţelor (formalizarea şi reprezentarea cunoştinţelor în structura necesară pentru stocarea în
baza de cunoştinţe a sistemului expert), validarea sistemului (verificarea şi confirmarea
utilizabilităţii sistemului expert în domeniul specific) şi introducerea în exploatare şi menţinerea
în funcţiune (realizarea etapei operaţionale).
S-au pus la punct mai multe metode de modelare a sistemelor cu baze de cunoştinţe din
care fac parte şi sistemele expert: metoda KADS, metoda COGNITECH, metoda KOD. Aceste
metode preiau o parte din metodologia Merise şi cea orientată pe obiecte.
Metoda KADS (Knowledge Acquisition and Design System) a Comunităţii Europene
diferenţiază descrierea domeniului de descrierea raţionamentelor, foloseşte modele (task-uri)
generice (atelierul SHELLEY) şi conţine următoarele opt etape: studiul iniţial de definire a
problemei de rezolvat (analiza preliminară), analiza de sistem (restricţii, sarcini de expertiză şi
scenarii de folosire), modelarea (realizarea unui model conceptual al expertizei, după care sunt
descrise modelul funcţional, modelul logic şi modelul fizic; se foloseşte un set de primitive de
modelare ce sunt structurate pe patru nivele: nivelul domeniu – descrierea obiectelor, atributelor
şi a relaţiilor dintre acestea; nivelul inferenţă – descrierea primitivelor de inferenţă ce sunt
17
utilizate pentru rezolvarea problemei; nivelul activitate – descrierea scopurilor şi a structurii de
inferenţă; nivelul strategie – descrierea planului general de rezolvare a problemei şi a
cunoştinţelor necesare), implementarea (programarea), testarea (validarea), încărcarea bazelor
de cunoştinţe, interogarea bazelor de cunoştinţe şi întreţinerea sistemului expert. Este utilizată o
ierarhie de modele care se rafinează până la obţinerea formei finale a sistemului expert.
Metoda COGNITECH asigură dezvoltarea sistemelor expert prin intermediul
prototipurilor şi conţine următoarele trei etape: construirea unei machete iniţiale (demonstrator)
cu scopul de evaluare a fezabilităţii sistemului expert; construirea unui prototip de test;
introducerea în exploatare a prototipului testat.
Metoda KOD (Knowledge Oriented Design), metodă structurată dezvoltată în Franţa,
acoperă faza de analiză a domeniului specific sistemului expert, faza de construire a modelului
expertizei şi faza de elaborare a specificaţiei de realizare a sistemului expert. Modelul de
specificare a metodei KOD conţine trei nivele: nivelul static (descrierea obiectelor, percepute şi
gestionate de expert), nivelul dinamic (nivelul acţiunilor ce sunt aplicate asupra obiectelor) şi
nivelul tematic (asigură prin declaraţii succesiunea de transformări de stare asupra domeniului).
Întrebări de autocontrol
18
25. Care sunt predicatele pentru introducerea datelor în limbajul Prolog?
26. Care sunt predicatele pentru prelucrarea şirurilor de caractere în limbajul Prolog?
27. Care sunt predicatele pentru afişarea datelor în limbajul Prolog?
28. Care sunt etapele ciclului de viaţă a sistemelor expert?
29. Descrieţi pe scurt principalele metode de modelare a sistemelor expert.
30. Daţi exemple de medii şi instrumente de dezvoltare a sistemelor expert.
1. Precizaţi destinaţia secţiunilor de bază ale unui program în limbajul Prolog, prin indicarea
corespondenţei între denumirea secţiunii (A…F) şi enunţul destinaţiei (1…6):
a) char d) string
b) symbol e) integer
c) text f) real
3. Achiziţia cunoaşterii se realizează în mai multe faze. Care dintre fazele de mai jos nu este
caracteristică procesului de achiziţie a cunoaşterii?
a) regularizarea d) identificarea
b) conceptualizarea e) formalizarea
c) implementarea f) testarea
7. Care este lungimea maximă (număr de caractere) acceptată pentru numele predicatului în
limbajul Prolog?
19
a) domains c) domain
nume,den,tip=text nume,den,tip=symbol
predicates predicates
firma(den,tip) firma(den,tip)
asociat1(nume,den) asociat1(nume,den)
asociat2(nume,den) asociat2(nume,den)
patronat(nume,nume,den) patronat(nume,nume,den)
b) domains d) domains
nume,den,tip=symbol nume,den,tip=symbol
predicate predicates
firma(den,tip) firma(den,tip)
asociat1(nume,den) asociat1(nume,den)
asociat2(nume,den) asociat2(nume,den)
patronat(nume,nume,den) patronat(nume,nume,den)
BIBLIOGRAFIE
Bibliografie minimală
1. Gherasim, Z.; Cocianu, Cătălina-Lucia – Sisteme expert în economie, Editura Fundaţiei
România de Mâine, Bucureşti, 2005.
2. Zaharie, D.; Năstase, P.; Albescu, Felicia; Bojan, Irina; Mihai, F.; Anica-Popa, Liana –
Sisteme expert, Teorie şi aplicaţii, Editura DUAL TECH, Bucureşti, 2002.
3. Andone, I. – Sisteme inteligente hibride. Teorie. Studii de caz pentru aplicaţii
economice. Ghidul dezvoltatorului, Editura Economică, 2002.
4. Zaharia, M.; Cârstea, Claudia; Sălăgean, Liana – Inteligenţa artificială şi sistemele
expert în asistarea deciziilor economice, Editura Economică, 2003.
Bibliografie suplimentară
5. Tacu, P.Al.; Vancea, R,; Holban, Şt.; Burciu, A. – Inteligenţa artificială. Teorie şi
aplicaţii în economie, Editura Economică, Bucureşti, 1998.
6. Bodea, C. – Inteligenţă artificială şi sisteme expert, Editura INFOREC, Bucureşti, 1998.
7. Davidescu, D.N. – Utilizarea sistemelor expert în domeniul financiar-contabil, Editura
Didactică şi Pedagogică, Bucureşti, 1997.
8. Andone, I.; Ţugui, Al. – Sisteme inteligente în management, contabilitate, finanţe, bănci
şi marketing, Editura Economică, Bucureşti, 1999.
20