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
Atunci strazile orasului sunt singura varianta.
Atunci sa nu se aleaga drumul de coasta.
si nu sunt probleme de trafic pe autostrada
Atunci mergeti pe autostrada.
si nu sunt probleme de trafic pe autostrada
Atunci nu mergeti pe autostrada.
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
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 .
|