Documente online.
Username / Parola inexistente
  Zona de administrare documente. Fisierele tale  
Am uitat parola x Creaza cont nou
  Home Exploreaza
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 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 14114d324o :

" 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:
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 )