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 .
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.
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).
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.
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 ?
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.
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ă.
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.
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.
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.
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).
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