Documente online.
Zona de administrare documente. Fisierele tale
Am uitat parola x Creaza cont nou
 HomeExploreaza
upload
Upload




Exsys Corvid

Informatica


Exsys Corvid

Exsys Corvid este destinat pentru a va ajuta sa descrieti etapele logice īntr-un proces de luare a unei decizii īntr-un mod care permite transmiterea cunostiintelor catre altii ca si cum acestia ar dialoga cu un expert uman. Practic acest lucru este similar modului īn care cineva ar explica 11111l1124l altei persoane cum sa rezolve o anumita problema.



Primul pas īn crearea unei aplicatii Corvid este de a alege o problema care sa poata fi descompusa īn etape logice. Pe masura ce va creste experiente dumnavoastra īn lucrul cu Corvid veti īnvata sa utilizati metode avansate de abordare a unor probleme complexe. Pentru īnceput īnsa vom selecta o problema simpla, care poate fi descrisa doar cu cāteva reguli.

Problema trebuie sa poata fi rezolvata utilizānd o logica ce se bazeaza pe propozitii de forma:

" Daca......... atunci......"

" Īn caz ca......... stiu ca......"

Partea de IF poate contine mai multe conditii compuse. De exemplu:

Daca masina nu porneste si indicatorul de combustibil este pe gol Atunci masina nu are combustibil.

Īn caz ca e duminica si e vreme buna stiu ca Alex probabil joaca fotbal.

Dupa cum se va vedea sistemele Corvid poseda mai multe tehnici de tratare a probabilitatii.

Una dintre cele mai bune utilizari ale lui Exsys Corvid este pentru rezolvarea problemelor care implica selectarea celei mai bune solutii atunci cānd exista mai multe solutii posibile.

Exemplu demonstrativ simplu dar care va demonstra multe dintre caracteristicile fundamentale ale lui Exsys Corvid:

- problema de a decide pe care drum sa se mearga la serviciu cu masina de acasa spre serviciu :

pe autostrada - este drumul cel mai rapid atāta timp cāt pe autostrada nu sunt probleme de trafic. Daca sunt astfel de probleme, acest drum devine īngrozitor de īncet. De asemenea nu exista benzina pe autostrada.

pe strazile orasului - este un drum īncet dar sigur. Exista foarte multe benzinarii deschise non-stop. Chiar daca exista probleme de trafic, sunt atātea strazi alternative īncāt acest drum este īntotdeauna sigur.

pe drumul de coasta - este un drum spendid de-a lungul coastei pe vreme buna, dar dificil pe vreme proasta si noaptea. Dureaza cam la fel de mult ca si drumul pe strazile orasului. Nu are īnsa benzinarii. Cānd e posibil este drumul perfect.

Transpunerea pasilor de rezolvare īn reguli IF

  1. Daca īn rezervor sunt sub 20 l de benzina,

Atunci strazile orasului sunt singura varianta.

  1. Daca conditiile de drum sunt rele

Atunci sa nu se aleaga drumul de coasta.

  1. Daca trebuie sa ajungeti repede la serviciu

si nu sunt probleme de trafic pe autostrada

Atunci mergeti pe autostrada.

  1. Daca trebuie sa ajungeti repede la serviciu

si nu sunt probleme de trafic pe autostrada

Atunci nu mergeti pe autostrada.

  1. Daca nu trebuie sa ajungeti repede la serviciu

Atunci drumul de coasta se prefera.

Variabile Corvid

Toata logica īn Corvid este definita prin utilizarea variabilelor Corvid. Variabilele sunt componentele pe care Corvid le utilizeaza pentru a forma reguli si a descrie logica sistemului. Cānd ruleaza o aplicatie Corvid, variabilele care sunt utilizate īn partea de IF a regulii vor trebui sa aiba asignata o valoare. Aceste valori pot proveni din:

īntrebarea directa a utilizatorului ca acesta sa introduca valoarea

derivarea acestor valori din alte reguli

alte surse precum o baza de date

Exista sapte tipuri de variabile, dar majoritatea sistemelor pot fi proiectate utilizānd doar trei dintre acestea:

Variabile de tip Lista Statica - aceasta este o lista simpla multivaloare. Este variabila Corvid cel mai des utilizata si este indicat sa fie utilizata oricāt de des este posibil. Aceasta variabila este formata dintr-o propozitie si doua sau mai multe valori posibile.

Exemplu:

Conditiile de drum sunt bune/rele

Sunt probleme de trafic pe autostrada? Da/Nu

Judetul de domiciliu este: Alba

Bihor

Variabile numerice - care pot avea un domeniu de valori numerice( cu mult prea multe valori posibile spre a fi cuprinse īntr-o lista statica).

Exemplu:

IF numarul de litri de combustibil īn rezervor este mai mic decāt 20

THEN strazile orasului sunt singura posibilitate

Variabile de confidenta - aceste variabile sunt de obicei optiunile posibile dintre care sistemul trebuie sa aleaga cea mai buna solutie. Lor li se poate asigna o valoare de confidenta care arata daca respectivele solutii sunt o recomandare adecvata sau neadecvata. O anumita variabila poata avea asignata diferite valori prin mai multe reguli. Aceste valori sunt combinatii din toate regulile pentru a determina o valoare de confidenta finala pentru acea variabila. Corvid permite mai multe moduri de a combina valorile de confidenta. Cel mai simplu mod este īnsumarea lor. Va puteti īnchipui valorile ca un numar de puncte care se aduna sau scad din scorul unei solutii posibile(sau unei recomandari). Īntr-o regula, variabilelor de confidenta li se asigneaza o valoare īn partea THEN a regulii astfel:

Exemplu:

Daca conditiile de drum sunt rele

Atunci drumul_de_coasta=-100

Noduri

Logica de luare a deciziilor īn Corvid este descrisa utilizānd "nodurile". Un nod poate fi gāndit ca o propozitie īn partea de IF sau de THEN a unei reguli.

Exemplu:

IF trebuie sa ajungi repede la serviciu: Da

AND sunt probleme de trafic pe autostrada: Nu

THEN autostrada=20

Exista 2 noduri IF si un nod THEN.

Observatie:

Nodurile pot fi īncuibate, astfel īncāt sa se aplice tuturor nodurilor de sub ele. Astfel rezulta o diagrama logica arborescenta, care permite o viziune de ansamblu a logicii si ajuta sa se verifice daca sunt acoperite toate cazurile posibile.

Exemplu:

 

Blocuri Logice īn Corvid

Blocurile logice īntr-un sistem Corvid indica modul CUM sa se faca un anumit lucru, īn timp ce blocurile de comanda indica CE sa se faca si CĀND.

IF

AND

ADD

THEN

VARIABLE

Blocurile de comanda Corvid

Blocurile de comanda pot include un control procedural foarte complex, cu bucle repetitive si imbricate(īncuibate), dar majoritatea sistemelor au blocuri de comanda foarte simple cu doar cāteva comenzi.

Blocurile de comanda tipice spun sistemului pentru care variabile sa derive valori si apoi sa afiseze rezultatele.

Add a new Command Block pentru a īncepe un bloc de comanda.

Exista 2 tipuri de comenzi ce pot fi adaugate unui bloc de comanda:

Comenzi de control

Comenzi operationale

Comezile de control trateaza buclele FOR, WHILE sau IF (cu ajutorul gupului de butoane de control din stānga-jos a ferestrei. Acestea sunt comenzi foarte puternice pentru sisteme avansate, dar sunt rar necesare īn majoritatea sistemelor.

Comenzile operationale spun aplicatiei Corvid sa efectueze anumite operatii specifice.

Exemplu:

Se da click pe butonul Add care deschide fereastra Commands(Fig.1.1), Tab-ul Variables, cel mai utilizat, permite construirea a trei tipuri de comenzi pentru variabile.

Fig.1.1

  1. SET - asigneaza o valoare unei variabile. Īn majoritatea cazurilor acest lucru se face mai bine īn blocurile logice, astfel īncāt aceasta asignare de obicei nu este necesara īn sistemele simple.
  2. DERIVE - utilizeaza blocurile logice si alte mijloace pentru a gasi valoarea unei variabile. Acest tip de comanda pentru variabile este cel mai adesea utilizata pentru executia aplicatiior Corvid. O simpla comanda DERIVE va spune motorului de inferente Corvid sa utilizeze toate blocurile logice pentru a determina valoarea uneia sau mai multor variabile utilizānd īnlantuirea īnapoi(backward chaiining) daca este necesar.
  3. ASK - īntreaba utilizatorul final valoarea unei variabile, indiferent de logica sistemului.

Corvid cere automat utilizatorului valorile unor variabile īntr-o ordine determinata de logica sistemului. Cāteodata dezvoltatorul s-ar putea sa doreasca sa forteze ca valoarea unei variabile sa fie ceruta la un anumit moment.

Majoritatea sistemelor simple utilizeaza o singura comanda DERIVE pentru a executa regulile.

Īn exemplul nostru, trebuie spus sistemului Corvid sa utilizeze regulile din blocurile logice pentru a calcula valoarea pentru fiecare variabila de confidenta din sistem(fiecare solutie posibila - drum spre serviciu - fiind o variabila de confidenta).

Exemplu:

Derive a value from TO BE and Logic Block

All Confidence Variables

Rezulta DERIVE CONF

Fig.1.2

Astfel vor fi testate toate regulile din blocurile logice care seteaza valori pentru variabilele de confidenta. Daca sunt necesare pentru aceasta valorile altor variabile, utilizatorul sistemului va fi īntrebat pentru a furniza acea informatie.

Mai trebuie utilizata īnsa si o comanda pentru afisarea rezultatelor. Toate comenzile sunt adaugate relativ la comanda curenta selectata.

Exemplu:

DERIVE CONF

 


Command

Add Below

 


Rezulta fereastra Command, din care se selecteaza Tab-ul Results(Fif.1.3).

Fig.1.3

Se bifeaza :

Display Default Results Screen

OK

 

Rezulta

Vor fi derivate valori pentru toate variabilele de confidenta, utilizānd īnlantuirea si introducerea datelor necesare de catre utilizator iar īn cele din urma vor fi afisate valorile tuturor variabilelor setate īn sistem.

Executia

Pentru lansarea īn executie se foloseste butonul Run.

Corvid construieste automat o pagina HTML si utilizeaza applet-ul Corvid Runtime, care este afisat īn fereastra CorvidBrowser. Se raspunde la īntrebari, se afiseaza rezultatul, se alege butonul Back, Restart sau butonul Exit din dreapta jos pentru a īncheia executia. Applet-ul Corvid Runtime contine motorul de inferente Corvid. Acesta este creierul sistemului Corvid. El verifica blocul de comanda pentru a vedea ce actiune i s-a spus sa faca si apoi utilizeaza blocurile logice pentru a face ceea ce i s-a spus.

Exemplu implementat īn Corvid:

Prima etapa:adaugarea variabilelor:

      Variabile de tip Lista Statica

Conditii_de_drum

Ajuns_repede

Trafic_pe_autostrada

      Variabile numerice

Cantitatea_de_combustibil

      Variabile de confidenta

Autostrada

Drumul_de_coasta

Strazile_orasului

Pentru adaugarea variabilelor dam click pe icon-ul variabilei: Add/Edit Variables.

Aceasta va duce la afisarea ferestrei Variables:

Fig.1.4

Fereastra Variables are mai multe optiuni. Īn partea stānga gasim si selectam variabila dorita. Pentru a adauga o variabila noua dam click pe butonul New. Aceasta actiune duce la afisarea ferestrei de dialog New Variable:

Fig.1.5

Īn aceasta fereastra introducem numele variabilei, selectam tipul acesteia si apoi click pe butonul Ok.

Toate variabilele au un nume si un prompt.

Numele variabilei este prescurtarea folosita ca referinta a variabilei īn Blocul Logic, formule, comenzi etc. Numele acesteia trebuie sa fie usor de identificat si de īnteles.

Promptul este textul care poate fi folosit pentru a cere utilizatorului valoarea variabilei ca īn final sa o afiseze ca si rezultat. Prompt-ul se introduce īn fereastra Variable la Main Prompt. Toate variabilele au un Promp care descrie īn detaliu destinatia variabilei:

Fig.1.6

Exista diferite controale care pot fi utilizate pentru a atribui valori unei variabile. Tipul controlului poate fi selectat alegānd Tab-ul Ask With, iar de aici se selecteaza unul dintre controalele dorite:

Fig.1.7

Cel mai des utilizat control este Radio Button. Exeplu de Radio Button:

Numai o valoare poate fi selectata din cadrul acestui grup īn timp ce oricare alta valoare selectata anterior se deselecteza implicit.

Checkbox-ul se aseamana cu butoanele radio, doar ca pot fi selectate mai multe valori simultan. Exemplu de checkbox:

Daca variabila este de tip Lista Statica, vom selecta Tab-ul Static List:

Fig.1.8

Variabilele de tip Static List au o lista posibila de valori folosita pentru definirea logica a sistemului si pe care utilizatorul o poate selecta. Definirea textului valorii este similar cu definirea prompt-ului pentru variabile. La fel ca si īn cazul prompt-ului, acesta este o prescurtare a numelui.

Full Text

Full Text este textul care descrie valoarea. Acesta poate avea orice lungime. Full Text-ul va fi afisat utilizatorului cānd sistemul cere valorile variabilei.

Short Text

Short text-ul este o valoarea unica a variabilei(Fig.1.8).

Dupa completarea valorii la Full Text se alege butonul Copy sau tasta Enter de la tastatura pentru transcrierea valorii si la Short Text(Fig.1.8).

Variabilele numerice pot avea o limita minima(Lower Limit) si o limita maxima(Upper Limit) īn care se pot īncadra(Fig.1.9). Sunt acceptate doar valorile Integer. Daca utilizatorul, īn timpul executiei atribuie o valoare īn afara limitelor aceasta nu va fi acceptata.

Fig.1.9

Variabila de tip colectie este o lista de tip sir de puncte. Punctele pot fi adaugate sau mutate din lista de sistem. Variabilele Collection sunt folosite adesea cu MetaBlocurile.

Variabilele de confidenta calculeaza o valoare finala de confidenta a variabilelor. O variabila poate avea asociate mai multe valori prin mai multe reguli.

Parametrul Calculation controleaza cum pot fi combinate diferite reguli pentru a se obtine o valoare de confidenta finala.

SUM - aduna toate valorile asignate unei variabile

AVERAGE - face media tuturor valorilor asignate unei variabile

MAX - returneaza valoarea maxima asignata

MIN - returneaza valoarea minima asignata, etc(Fig.1.10).

Fig.1.10

A doua etapa:adaugare Logic Block

Pentru a adauga un bloc logic se da click pe icon-ul Add a New Logic Block .

Actiunea are ca efect afisarea ferestrei Logic Block:

Fig.1.11

Īn lista de tip drop down din partea de sus a ferestrei este afisat numele blocului logic, implicit acesta este Logic Block1. Pentru schimbarea numelui se da click pe butonul Edit Name.

Blocul logic este alcatuit din mai multe noduri IF si THEN care descriu logica sistemului.

Pentru a adauga un nod IF alegem din grupul IF din partea de jos a ferestrei butonul Add. Aceasta alegere are ca efect deschiderea fereastrei Add to block (fig.1.12). Īn partea stānga a ferestrei sunt specificate toate variabilele active īn momentul actual:

Selectam variabila care ne intereseaza si din fereastra dreapta tab-ul Static List selectam valoarea dorita pentru aceasta variabila

Click Add to List

Fig.1.12

Click pe butonul Done din partea stānga jos se adauga nodul īn fereastra Logic Block.

Daca exista mai multe noduri IF acestea se adauga īn blocul logic astfel:

Folosind butonul Below din grupul AND pentru a adauga un nod dupa nodul selectat

Folosind butonul Above din grupul AND pentru a adauga un nod īnaintea nodului selectat

Folosind butonul Below din grupul Same Level pentru a adauga un nod la acelasi nivel cu cel selectat, dar pozitionarea acestuia īn blocul logic va fi dupa nodul selectat.

Folosind butonul Above din grupul Same Level pentru a adauga un nod la acelasi nivel cu cel selectat, dar pozitionarea acestuia īn blocul logic va fi īnaintea nodului selectat.

Adaugarea nodurilor THEN

Din partea de jos a ferestrei se alege din grupul THEN butonul Variable. Īn urma acestei actiuni se deschide fereastra Add to Block, adaugarea nodului THEN fiind similara cu adaugarea nodurilor IF. Logic Block1 va fi urmatorul(Fig.1.13):

Fig.1.13

Pentru exemplul nostru avem īnca 2 blocuri logice, care sunt prezentate mai jos(Fig.1.14; Fig.1.15). Construirea acestora este similara cu cea a blocului logic prezentat mai sus.

Fig.1.14

Fig.1.15

A treia etapa: adaugare Command Block

Dānd click pe icon-ul Add a New Command Block , se va deschide fereastra Command Block.

Din partea de jos a ferestrei se alege din grupul Command butonul Add( a se vedea explicatiile de la blocurile de comanda).

A patra etapa: lansarea īn executie

Aceasta se face dānd click pe icon-ul Run .


Document Info


Accesari: 3704
Apreciat: hand-up

Comenteaza documentul:

Nu esti inregistrat
Trebuie sa fii utilizator inregistrat pentru a putea comenta


Creaza cont nou

A fost util?

Daca documentul a fost util si crezi ca merita
sa adaugi un link catre el la tine in site


in pagina web a site-ului tau.




eCoduri.com - coduri postale, contabile, CAEN sau bancare

Politica de confidentialitate | Termenii si conditii de utilizare




Copyright © Contact (SCRIGROUP Int. 2024 )