Documente Academic
Documente Profesional
Documente Cultură
Sistem expert
Ce este un sistem expert?
• Un sistem de inteligenţă artificială care se încadrează în tipul
sistemelor bazate pe cunoştinţe.
• Un sistem trebuie să folosească cunoştinţele pentru a genera toate
soluţiile taskului pentru care a fost proiectat.
Ce este un sistem inteligent de diagnoză?
• Un caz particular de sistem expert.
Ex: În această perioadă este mai bine să economisesc sau să fac investiţi?
Baza de cunoştinţe
• este destinată pentru stocarea (memorarea)cunoştinţelor specializate
într-un anumit domeniu, preluate de la expertul uman,sub formă de
piese de cunoaştere care descriu situaţii evidente, fapte reale sau
ipotetice precum şi euristici.
• Reprezentarea cunoştinţelor se face în mai multe moduri, dintre care cele
mai des folosite sunt: reţele semantice, regulile de producţie şi cadrele.
• cunoaşterea este memorată sub forma regulilor de producţie, baza de
cunoştinţe conţine două componente: baza de reguli şi baza de fapte
• prelucrate înaintea implementării pentru a putea fi recunoscute de către
sistemul expert
Baza de cunoştinţe
• stochează cunoştinţe în baza de fapte- sub formă de
• informaţii, pe baza cărora sistemul expert ia decizia
• reguli care descriu raţionamentul folosit în luarea
deciziei.
La stocarea cunoştinţelor în baza de fapte şi în procesul de raţionament,sistemul expert, foloseşte
• operatori logici (AND, OR, NON, APARŢINE, etc),
• operatori matematici (*, /, +, -, %, etc) şi
• propoziţii
În procesul de implementare a cunoştinţelor şi concepere a raţionamentului, există:
1. regulile de ortografie şi folosire a parantezelor, utilizate în matematică şi în logică, pentru ierarhizarea operaţiilor care au
loc,
2. proprietăţilor acestora(comutativitate, asociativitate, etc).
Baza de fapte
• https://dexonline.ro/definitie/euristic/867260
Partea condiţională
• a unei reguli este satisfăcută
• dacă există sau nu anumite fapte în lista de fapte
• sau o anumită instanţă a unei clase definite de utilizator
• sau este îndeplinită o condiţie testată explicit.
• O condiţie din antecedentul (LHS-left side) unei reguli se numeşte
„pattern”.
Motorul de interfeţe=CLIPS
C. motorul de căutare adâncime
- folosit atunci când domină faptele iar căutarea se face pe principiul
concluzia anterioară ca faptă până când concluzia devine una din soluţiile la problema de rezolvat;
„Pattern-matching” (verificare)
• Procesul prin care se verifica faptele şi instanţele care satisfac o anumită
condiţie (pattern)
CLIPS
asigură un mecanism, numit motor de inferenţă,
care verifică automat condiţiile regulilor în conformitate cu starea actuală a listei de fapte şi a listei de
instanţe, determinând regulile aplicabile la un moment dat, care sunt trecute într-o listă numită agendă (agenda conţine
toate regulile aplicabile la un moment dat).
care foloseşte o strategie de rezolvare a conflictelor alegând o singură regulă din mai multe
aplicabile la un moment dat
Exemplu de fapt:
simbolul Persoana -este numele relației faptului,
Faptul conține patru sloturi: nume, vârstă, culoarea ochilor și culoarea părului.
• Valoarea slotului de nume este „John Q. Public”
• Valoarea slotului pentru culoarea ochilor este albastră.
• Valoarea slotului pentru culoarea părului este neagră.
este ilegal dacă name este un slot cu un singur câmp, dar legal dacă name este un slot cu mai multe câmpuri.
Facts ordonate
• Faptele cu un nume de relație care nu are un deftemplate corespunzător se
numesc fapte ordonate
• De exemplu, o listă de numere ar putea fi reprezentată cu următorul fapt:
( number-list 7 9 3 4 20)
Există două cazuri în care faptele ordonate sunt utile.
1. Faptele care constau doar dintr-un nume de relație sunt utile ca indicatori și
arată identic, indiferent dacă a fost definit sau nu un deftemplate. De
exemplu,
(all-orders-processed)
Pentru faptele care conțin un singur slot, numele slotului este de obicei sinonim cu numele relației relației. De exemplu,
faptele:
(time 8:45)
(time (value 8:45))
(food-groups meat dairy bread
(food-groups (values meat dairy bread
fruits-and-veg ) etables)
fruits-and-vegetables))
• sunt la fel de semnificative ca :
• Un fapt deftemplate este un fapt neordonat.
• Ordonat versus neordonat
• Faptele ordonate encodezaă informații cu poziție fixă, care nu este
convenabil de accesat
• Claritatea și independența în ordinea sloturilor sunt virtuți ale
deftemplatefapte
• Comandă suplimentară (de exmodify, duplicate) pentru fapte neordonate
DEFTEMPLATE
Assert =Manipulare a Facts
• Comenzi de bază pentru a opera pe fapte:
• assert, retract, modify, duplicate, facts
• Adăugarea faptelor
– Fapte noi pot fi adăugate la lista de fapte folosind comanda assert.
(assert <fact>+)
Mai mult de un fapt poate fi adăugat folosind o singură data comandă assert. De exemplu, comanda:
Afișare FACT
• Comanda fapte poate fi folosită pentru a afișa faptele în lista de fapte.
(facts)
• Fiecărui fapt care este inserat în lista de fapte i se atribuie un
identificator unic de fapt care începe cu litera f și urmat de un număr
întreg numit indice de fapt.
• De exemplu,
Sintaxa completă este
• Sintaxa completă completă pentru comanda facts este:
(facts [<start> [<end> [<maximum>]]])
Unde <start>, <end>, și<maximum> sunt intregi positivi.
Dacă nu sunt specificate argumente, toate faptele sunt afișate.
– Dacă argumentul <start> este pecificat, toate facts cu fact indexes mai mari
sau egale cu <start> sunt afișate.
– Dacă <start> și <end> sunt specificate, toate facts cu fact indexes mai mari
sau egale cu <start> și mai mici egale uc <end> sunt afișate.
– In final, daca <maximum> este specificat împreună cu <start> și <end>. nu
mai mult de <maximum> facts vor fi afișate.
retract
• Eliminarea faptelor din lista de fapte se numește retragere și se face
cu comanda retract.
– Sintaxa comenzii retract este:
(retract <fact-index>+)
(retract 0)
• O singură comandă retract poate fi utilizată pentru a șterge mai multe
fapte simultan
( retract 0 1)
modify
• Valorile sloturilor deftemplate facts pot fi modificate utilizand
comanda modify
(reset)
Chiar dacă nu ați stabilit nici o declarație deffacts, comanda reset va face un assert de fact (initial‐fact).
– Identificatorul de fapt al faptului inițial este întotdeauna f-0.
Componeța unei Rules
• Regulile pot fi introduse direct în CLIPS sau încărcate dintr-un fișier de
reguli.
• Pseudocodul pentru una dintre regulile posibile din sistemul expert de
monitorizare a plantelor industriale este prezentat după cum urmează:
IF the emergency is a fire
THEN the response is to activate
the sprinkler system
Înainte de a converti pseudocodul într-o regulă, trebuie definite deftemplate-urile pentru tipurile de fapte la care se referă
regulă.
(deftemplate emergency (slot type))
unde câmpul tip al faptului de urgență ar conține simboluri precum incendiu, inundație și întrerupere de curent.
Regula din agenda: fire‐emergyency comanda de rulare va face acum declanșarea regulii.
• Faptul ((response (action activate‐sprinkler‐system) va fi adăugată la lista de fapte ca acțiune a regulii ca și
acțiune a reguli (action activate‐sprinkler‐system existentă în agenda, comanda run va provoca acum declanșarea
regulii.
Regulile din expoziția CLIPS prezintă o proprietate numită refracție, refracție, ceea ce înseamnă că nu se vor
declanșa de mai multe ori pentru un anumit set de fapte.
Refresh poate fi folosit pentru a face regula să se execute din nou (refresh <rule-name>)
Activarea lui Watch, Rules, și Statistics Reguli care sunt urmărite watch: Dacă statisticile sunt watch, mesaje
informaționale vor fi tipărite la
finalizarea unei rulări
Numele logic t îi spune CLIPS să trimită ieșirea către dispozitivul de ieșire standard al computerului, de obicei terminalul.
Utilizând Multiple Rules
• În plus față de regula de urgență în caz de incendiu~ fire‐emergency
rule, sistemul expert de monitorizare a instalației industriale poate
include o regulă pentru situațiile de urgență în care s-a produs.
(defrule fire-emergency
(emergency (type fire))
=>
(printout t "Activate the sprinkler system“ crlf) )
(defrule flood-emergency
(emergency (type flood))
=>
(printout t "Shut down electrical equipment“ crlf) )
• Regulile cu mai multe modele pot fi folosite pentru a exprima aceste
condiții
(deftemplate extinguisher-system
(slot type)
(slot status))
(defrule class-A-fire-emergency
(emergency (type class-A-fire))
(extinguisher-system (type water-sprinkler)
(status off))
=>
(printout t "Activate water sprinkler" crlf))
(defrule class-B-fire-emergency
(emergency (type class-B-fire))
(extinguisher-system (type carbon-dioxide)
(status off))
=>
(printout t "Use carbon dioxide extinguisher"
crlf) )
Orice număr de modele poate fi plasat într-o regulă.– Punctul important de realizat este că regula este
trecută pe ordinea de zi doar dacă toate tiparele sunt satisfăcute de fapte.– Acest tip de restricție se
numește element și condițional.
The SET‐BREAK Command
• CLIPS are o comandă de depanare numită set-break care permite
oprirea execuției înainte ca orice regulă dintr-un anumit grup de reguli
să fie declanșată.
(set-break <rule-name>) CLIPS> (set-break second)
– Examplu cu urm[toarele rules: CLIPS> (reset)
(defrule first CLIPS> (run)
=> FILE 1 first: f-0
(assert (fire second))) Breaking on the second
(defrule second CLIPS>
(fire second)
Comanda show-breaks poate fi folosită pentru a lista toate punctele de
=>
întrerupere. Sintaxa sa este: (show-breaks)
(assert (fire third)))
(defrule third
Comanda remove-break poate fi folosită pentru a elimina
(fire third)
punctele de întrerupere.
=> )
(remove-break [<rule-name>])
Loading șiSaving Constructs
• Încărcarea constructelor dintr-un fișier (load <file-name>)
Unde <file‐name> este un șir sau simbol care conține numele fișierului
care urmează să fie încărcat.
Ex (load “fire.clp”)
• Salvarea constructelor într-un fișier
– Comanda de salvare permite ca setul de constructe stocate în CLIPS
să fie salvat pe un fișier de
(save <file-name>)
Ex (save “fire.clp”).
Comentarii
information regarding the program.
;***************************
• Un comentariu în CILPS este orice text care ;* Programmer: xxx*
începe cu punct și virgulă și se termină cu
;* Title: The Fire Program *
întoarcere la transport.
;* Date: 05/17/04 *
• Este bine să includeți comentarii care descriu ; Deftemplate
constructele și oferă informații despre
(deftemplate emergency “template #1”
program.
(slot type)) ; What type of emergency
(deftemplate response “template #2”
(sloto type)) ; How to respond
; The purpose of this rule is to activate
; the sprinkler if there is a fire
(defrule fire-emergency “An example rule” ;IF
(emergency (type fire))
=> ; THEN
;Activate the sprinkler system
(assert (response (action activate-sprinker-system))))