• Nenhum resultado encontrado

Programarea bazat ă pe reguli ş i sistemele expert

N/A
N/A
Protected

Academic year: 2023

Share "Programarea bazat ă pe reguli ş i sistemele expert "

Copied!
227
0
0

Texto

CLIPS nu este predat în carte în sensul cu care suntem obișnuiți în cărțile „Programare în limbajul XYZ”. Se insistă asupra agendei, a structurii care păstrează activările și arată ce strategii de rezolvare a conflictelor pot fi utilizate și cum poate beneficia programatorul de pe urma schimbării strategiei.

  • Programarea imperativă – rezolvă dictând cum să faci
  • Programarea logică – rezolvă spunând ce vrei să faci
  • Programarea funcŃională – rezolvă apelând o funcŃie
  • Programarea orientată-obiect – rezolvă construind obiecte ce interacŃionează obiecte ce interacŃionează
  • Programarea bazată pe reguli – rezolvă ca într-un joc de Puzzle sau Lego Puzzle sau Lego

O soluție funcțională a problemei platoului urmărește să definească o funcție care ar trebui să returneze lungimea maximă de platou a șirului dat, de lungime n, dacă. Dacă am fi construit obiecte cu această funcționalitate, atunci am putea afla lungimea platoului maxim al șirului întrebând direct primul element, după ce i-am spus că lungimea celui mai lung platou de la începutul vectorului până la acesta este 0. .elementele .

Figura 1: SemnificaŃia predicatului platou(i, p, n, q)
Figura 1: SemnificaŃia predicatului platou(i, p, n, q)

Introducere în sistemele expert

  • Ce sunt sistemele expert ?
  • ParticularităŃi ale domeniului inteligenŃei artificiale
  • Prin ce diferă un sistem expert de un program clasic?
  • Sisteme expert de diagnostic (sau clasificare). Problemele tratate de acestea pot fi recunoscute după următoarele proprietăŃi
  • Sisteme expert de simulare: dacă în sistemele expert de diagnostic şi construcŃie soluŃia era selectată ori respectiv asamblată, simularea serveşte numai
    • Exemple de sisteme expert
    • Evaluarea oportunităŃii sistemelor expert

Sisteme de construcție experte: aici soluția nu mai poate fi găsită prin căutarea în mulțimea existentă. Un sistem este privit ca o unitate al cărei comportament poate fi dedus din cunoașterea comportamentului părților sale constitutive.

Figura 4: Aprofundarea cunoaşterii înseamnă rafinarea conceptelor şi a legăturilor dintre ele
Figura 4: Aprofundarea cunoaşterii înseamnă rafinarea conceptelor şi a legăturilor dintre ele

Partea a II-a

Organizarea unui sistem expert

  • Baza de cunoştinŃe: faptele
  • Regulile
  • Variabile şi şabloane în reguli
  • Legări de variabile şi instanŃe de reguli
  • Agenda
  • Motorul de inferenŃe

Aplicarea acestuia, motivată de constatarea în baza a două numere complexe și de o afirmație care dictează necesitatea efectuării sumei acestora, ar trebui să adauge bazei de cunoștințe un nou fapt de tipul numere complexe și în care părțile reale și imaginare trebuie calculate în calea cunoscută. Regula este considerată „aplicabilă” dacă în baza se constată concomitent trei fapte care îndeplinesc cele trei condiţii, precum cele prezentate mai sus cu privire la pacientul Ionescu.

Înl ă n Ń uirea regulilor în motoarele de inferen Ńă

  • Căutarea soluŃiei în problemele de inteligenŃă artificială
  • ÎnlănŃuirea înainte
  • Despre prezumŃia de lume deschisă/închisă
  • Despre monotonie
  • Despre fapte negate şi reguli cu şabloane negate

Să presupunem cazul unui motor cu lanț înainte care funcționează pe ipoteza lumii deschise pe o bază monotonă. Astfel, pentru un motor care lucrează pe ipoteza lumii închise, să presupunem existența unei reguli R care utilizează în partea de condiții un șablon negat not(P).

Figura 7: InstanŃele regulilor aplicabile în starea curentă pot tranzita starea sistemului într-o mulŃime  de stări potenŃiale
Figura 7: InstanŃele regulilor aplicabile în starea curentă pot tranzita starea sistemului într-o mulŃime de stări potenŃiale

Regimul de lucru tentativ

Simularea unui motor tentativ printr-un shell de motor irevocabil irevocabil

Condiția pentru aplicabilitatea unei reguli este ca faptele din partea de condiție a regulii să se regăsească printre temeiul de fapt (bazaDeFapteCurenta ..):. rulesFiltered SOME-RULES-FILTERED) și (CurrentFactbase SOME-FACTS) și. reguli aplicate UNELE-REGULI-APLICATE) si (regula R PRI ACTIUNI PRELIMINARE) si. UNELE-ACTUALITATE) şi. stackAppliedRules O-LIST-OF-APL REST-STACK-OF-APL) și (stackAppliedRules O-LIST-APL REST-STACK-APL) și. stackFACTBASES RĂMÂN UNELE FACTE-FACTBAZE) și apoi eliminați (faza de selecție). Dacă (faza de execuție) și (reguliFiltre R) și. regula R PRI ACȚIUNI DE LOCAL) și. înainte de aplicarea regulii după aplicarea regulii. reguli aplicate O-LISTA-REG-APL) și (baza de date CurrentFacts SOME-FACTS). stackApplied Rules LIST-REG-OF-APL) și (stackAppliedRules LIST-REG-APL) și (stackFactBases LIST-OF-FACTS) și.

Figura  13 : Într-o căutare tentativă o regulă este considerată aplicată numai pe calea spre soluŃie
Figura 13 : Într-o căutare tentativă o regulă este considerată aplicată numai pe calea spre soluŃie

ImportanŃa ordinii şabloanelor

Aceste concluzii se bazează toate pe modul de calculare a potrivirilor parțiale: trecerea de la luarea în considerare a primelor k șabloane la luarea în considerare a primelor k+1 șabloane din partea stângă poate adăuga la gama de potriviri parțiale datorită primelor k șabloane la produs a numărului lor și a numărului de elemente corespunzătoare ale șablonului k+1. Prin urmare, nu contează dacă primul șablon face 1 sau 100 de potriviri elementare, deoarece va fi inclus în calculul potrivirilor parțiale ale rețelei de comparații inter-șabloane;. Ambele recomandări duc la reducerea numărului de potriviri parțiale atașate nodurilor de top din rețeaua de comparații inter-șabloane;.

Partea a III-a

Primii pa ş i într-un limbaj bazat pe reguli: CLIPS

Să facem o adunare

Interpretul trebuie să fie instruit în mod explicit că faptele declarate prin definițiile grupului de fapte sunt stocate în baza de fapte. Cu aceasta, retragerea simultană a unui număr de fapte se poate face printr-o comandă: (retract ?*). Să presupunem că o regulă își satisface toate șabloanele bazate pe un set de fapte din bază.

Figura 27: InstanŃele regulii aduna
Figura 27: InstanŃele regulii aduna

Cum realizăm o iteraŃie?

Un sistem bazat pe reguli se concentrează, în general, pe alte tipuri de activități decât cele care se pretează la o soluție coercitivă. În această secțiune, să încercăm să înțelegem cum să procedăm dacă dorim să folosim un sistem bazat pe reguli pentru a implementa un imperativ. Părăsim sistemul bazat pe reguli și construim o procedură imperativă care poate fi apelată din acesta.

Figura 28: Decuparea de reguli dintr-o diagramă imperativă
Figura 28: Decuparea de reguli dintr-o diagramă imperativă

Constrângeri în confruntarea ş abloanelor

Interogări asupra unei baze de date

Deoarece regula se aplică de mai multe ori, în final toate obiectele care îndeplinesc una sau alta dintre condițiile de disjuncție vor fi procesate și eventual eliminate. Acum să încercăm o soluție la cerere, toate piesele din plastic cu aceeași suprafață ca unele piese din lemn, dar mai subțiri decât aceasta. Pentru a răspunde la întrebarea tuturor pieselor de aceeași grosime, în funcție de grupurile de grosime, avem nevoie de două linii.

Un exemplu de sortare

Ca urmare, aceste trei reguli se vor aplica numai dacă nu se aplică niciuna dintre regulile de mai sus. O pereche formată din numele unui profesor ales aleatoriu și valoarea punctajului său este apoi introdusă în această listă. Regula de sortare din extrema stânga se ocupă de cazul în care valoarea punctajului unui profesor este mai mare decât cea mai mare valoare introdusă în listă, adică cea din extrema stângă a listei.

Despre controlul execu Ń iei

  • Criterii utilizate în ordonarea agendei
  • Urmărirea execuŃiei
  • Strategii de rezoluŃie a conflictelor
  • ImportanŃa ordinii asertărilor
  • Eficientizarea execuŃiei prin schimbarea ordinii comenzilor retract şi assert

Strategia de profunzime: regulile nou activate sunt trecute în agendă înaintea celor mai vechi cu aceeași prioritate. Strategie de lățime: regulile nou activate sunt plasate în ordinea de zi în spatele regulilor mai vechi cu aceeași prioritate. Strategia complexității: regulile nou activate sunt plasate în agendă înaintea tuturor activărilor de reguli cu specificitate egală sau mai mică.

Figura 31: ActivităŃile motorului
Figura 31: ActivităŃile motorului

Recursivitatea în limbajele bazate pe reguli

Turnurile din Hanoi

La început, stiva va conține apelul inițial al procedurii recursive hanoi, apoi apelul din partea de sus a stivei la fiecare pas va fi interpretat astfel: dacă este un apel recursiv - atunci va fi extins într-o secvență din trei apeluri: un prim apel recursiv, o mutare elementară și un al doilea apel recursiv, iar dacă este o mutare elementară - se va executa. Obiectul Hanoi descrie un apel recursiv; obiectul mutare descrie un apel de mutare elementar; indexul deține un index unic de identificare a apelantului; nr-disk indică numărul de discuri; orig, dest în ambele tipuri de obiecte reprezintă indicii media sursă și respectiv destinație; rez dă indicele de susţinere a manevrei. Rețineți că regulile transform-recursion1-to-move și print-move pot fi concentrate într-una, caz în care nu mai avem nevoie de obiecte de tip (move.

Figura 32: Turnurile din Hanoi
Figura 32: Turnurile din Hanoi

Calculul factorialului

Prima regulă va modifica stiva prin înlocuirea apelului factorial din partea de sus a stivei cu un apel de produs și adăugând un nou apel factorial deasupra acestuia. A doua regulă, interpreta-produs, micșorează stiva după ce doar apelurile de produs rămân pe stivă. Verificarea naturii numerice a primelor argumente ale apelurilor de produs este inutilă, având în vedere modul în care sunt construite aceste apeluri.

Figura 34: Reprezentare în care rezultatul este separat de stivă
Figura 34: Reprezentare în care rezultatul este separat de stivă

Partea a IV-a

Dezvoltarea de aplica Ń ii

Opera Ń ii pe liste, stive ş i cozi

  • Inversarea unei liste
  • Maşini-stivă şi maşini-coadă
  • Un proces care lucrează cu stiva
  • Un proces care lucrează simultan cu o stivă şi o coadă
  • Evaluarea expresiilor

În acest fel, regula de pregătire va fi filtrată și în toate cazurile în care este filtrată regula elementului de mutare. Procesul se va desfășura în două faze: prima - descărcarea cozii, respectiv încărcarea stivei - și a doua - încărcarea cozii, respectiv descărcarea stivei. Devine clar că avem nevoie de o mașină de stivă generală (și nu avem niciun motiv să credem că lucrurile nu ar fi la fel în cazul cozii) care să poată fi „clonată” la orice număr de copii, astfel încât manipularea lor să fie independentă iar dezvoltarea lor trebuie sincronizată folosind comenzi push și pop, care se adresează fiecăruia separat, și registrele care dețin elementele de sus.

Figura 35: Lista (privită ca o coadă) inversată prin intermediul unei stive
Figura 35: Lista (privită ca o coadă) inversată prin intermediul unei stive

Sisteme expert în condi Ń ii de timp real

Servirea clienŃilor la o coadă

Există două tipuri de evenimente externe în această problemă: clienții care intră în coadă și ticăitul ceasului în timp real. Regula pentru apariția unui client în coadă este activată dacă ceasul ajunge la momentul în care un client ar trebui să fie luat în considerare pentru că acesta intră în coadă. Următoarea regulă simulează ceasul: faptele care stochează timpul și numărul de minute rămase pentru a servi clientul înainte sunt actualizate - primul crește, al doilea scade.

Evenimente externe pseudo-aleatorii

Să pregătim următoarea simulare în timp real, făcând mai întâi codul care generează simboluri noi la intervale de timp aleatorii într-un interval de timp dat. Intervalul de timp în care apar aparițiile simbolului este dat ca parametru într-un fapt maxinterval, în secunde. Numele unui client este generat de regula de randare prin intermediul funcției (gensym), unde clientul însuși este declarat prin includerea unui fapt de client în bază.

Jocul 8-puzzle

Scopul punctelor * este de a separa coloanele formate din două elemente (un număr care indică partea și un număr de coloană) astfel încât expresia șablon care identifică numărul coloanei să nu confunde o coloană cu o parte. Primul șablon identifică linia goală, iar al doilea șablon - linia de deasupra acestuia. Variabila ?col identifică coloana spațiului, astfel încât spațiul să poată fi mutat în sus în aceeași coloană.

Jocul cu vaporaşe

Este ușor de observat că numărul de instanțe de pe tabloul unui șablon crește pe măsură ce încearcă să descopere zone mai mici. Lăsarea ordinii de aplicare a regulilor la voința strategiei de soluționare a conflictului folosită de sistem poate avea ca rezultat o acumulare de hit-uri în anumite zone, evidențiate de șabloane care caută zone mici. Al doilea motiv pentru care ar trebui să ne intereseze dispunerea elementelor din plan în jocul cu aburi este legat de strategia de joc pe care o folosim atunci când scufundăm o navă odată ce a fost făcută o primă lovitură.

  • MaimuŃa şi banana – o primă tentativă de rezolvare
  • Hill-climbing
  • O maimuŃă ezitantă: metoda tentativă exhaustivă
  • O maimuŃă decisă: metoda best-first

Ne va fi convenabil să stocăm în acest fapt, ulterior, toți operatorii care pot fi aplicați la starea curentă. Punctele stărilor la care poate fi trecută starea curentă sunt calculate prin scăderea punctului predicat care trebuie șters din rezultatul stării curente și adăugând la rezultat punctul predicat care trebuie adăugat. Operator: pleacă-din-cap-MC >> Stare: (MC-lângă CB-MB-departe).

Figura 40: O secvenŃă de stări şi tranziŃii care rezolvă problema
Figura 40: O secvenŃă de stări şi tranziŃii care rezolvă problema

Calculul circuitelor de curent alternativ

Pentru a modela problema noastră ca un calcul bazat pe reguli, rețineți că putem descompune calculul rezistenței echivalente a oricărui circuit RLC serie-paralel într-o secvență de operații în serie sau paralelă care implică doar două componente ale circuitului. Putem introduce direct valorile rezistențelor, capacităților și inductanțelor, caz în care trebuie organizat un calcul pentru a le aduce în format de număr complex. În continuare, definim circuitul printr-un set de fapte de forma (seria ) și (paralel . ), unde cu notăm combinația în serie sau paralelă realizată, iar și – circuitele parțiale incluse în grupare.

Figura 41: Un exemplu de grupare serie-paralel
Figura 41: Un exemplu de grupare serie-paralel

Imagem

Figura 2: RelaŃia dintre predicatele asociate la doi indecşi alăturaŃi cărora le corespund platouri  maxime inegale
Figura 3: RelaŃia dintre predicatele asociate la doi indecşi alăturaŃi cărora le corespund  platouri maxime egale
Figura 4: Aprofundarea cunoaşterii înseamnă rafinarea conceptelor şi a legăturilor dintre ele
Figura 6: SpaŃiul stărilor în problemele de inteligenŃă artificială
+7

Referências

Documentos relacionados

As toxinas foram identificadas como as variantes MC-LR, MC-RR, MC-YR e MC-LA, sendo que algumas dessas variantes não tinham sido reportadas nessas espécies de Microcystis..