Structura aplicatiei pe module este dupa cum urmeaza (in ordinea in
care apar in bara de unelte principala): c5p21pe
· modulul pentru administrarea Domeniilor de discurs
· modulul pentru administrarea Multimilor fuzzy
· modulul pentru administrarea Numerelor fuzzy
· modulul pentru administrarea Modificatorilor lingvistici
· modulele pentru administrarea Cuantificatorilor si Operatorilor lingvistici
nu au fost implementate in aceasta versiune
· modulul pentru Evaluarea de Expresii Fuzzy
· modulul pentru Descrierea contextului
Inainte de a trece la descrierea fiecarui modul, tin sa fac unele precizari
cu privire la elementele independente de mediul Visual Basic care au fost folosite
in dezvoltarea aplicatiei.
Este vorba de baza de cunostinte care in fapt este o baza de date relationala
proiectata folosind Microsoft Access’97.
Atentie! Pentru a aduce modificari in structura bazei de cunostinte dar
care sa nu-i afecteze functionalitatea, vor trebui ca relatiile sa fie pastrate
avand structura curenta, bineinteles aceasta se refera si la tipul
campurilor, indecsi, samd. Deci, este bine ca eventualele modificari ale
bazei de date MSAccess sa se limiteze doar la adaugari la structura. Este absolut
necesar sa nu se faca conversia bazei de date de la versiunea Access’97
la o alta versiune tot in scopul de a nu afecta functionalitatea.
O alta observatie este faptul ca baza de cunostinte, chiar daca are extensia
CKB (Context KnowledgeBase), aceasta este recunoscuta ca si structura de catre
MSAccess’97.
Consider necesar sa fac unele precizari in legatura cu modul de reprezentare
interna a multimilor fuzzy continui si discrete:
§ multimile fuzzy continui ca si reprezentare a functiei de apartenenta,
s-a ales ca in baza de date sa se reprezinte fiecare pereche cheie (valoare,
grad) pentru specificarea punctelor din grafic pentru delimitarea elementelor
corespunzatoare: nucleu si zone de imprecizie
§ multimile fuzzy discrete sunt reprezentate in baza de date in
tabela corespunzatoare prin perechea (valoare, grad). Pentru valoare este specificat
codul elementului in relatie cu elementul declarat ca si element discret
in tabela pentru elemente discrete ale domeniilor.
Pentru detalii, consultati baza de date folosind MSAccess’97. Veti gasi
acolo explicatii detaliate privind utilitatea fiecarei tabele respectiv camp
in parte.
Revenind la implementarea modulelor aplicatiei, in continuare sunt descrise
cateva elemente comune tuturor modulelor:
- fiecare modul in parte ale la baza o ferestra (FORMular in VBasic),
ca si interfata de dialog cu utilizatorul. De notat este faptul ca cea mai mare
parte a codului este scris “in spatele” obiectelor grafice
ca raspuns la interactiunea utilizatorului cu acestea (control dirijat de evenimente).
- fiecare modul, are implementata o metoda de regasire a informatiilor si actualizarea
proprietatilor obiectelor grafice (Ex: actualizarea listei cu domeniile definite
in contextul curent).
- fiecare modul are implementate metode pentru modificarea datelor existente
corespunzatoare fiecarui element caracteristic conceptelor folosite (termenul
lingvistic folosit pentru specificarea unei multimi fuzzy, limitele absolute
sau relative ale unui domeniu de discurs, samd).
- fiecare modul are implementate metode pentru actualizarea informatiilor din
baza de cunostinte (salvarea informatiilor referitoare la elementele descrise,
modificate, samd).
- in caz de necesitate, o fereastra (formular) poate deschide alt formular
pentru a putea reprezenta informatiile referitoare la anumite elemente (cazul
proprietatilor multimilor fuzzy), sau dupa caz, extinderea formularului (modulul
pentru domenii, numere fuzzy, modificatori, samd).
- majoritatea modulelor au o bara de instrumente pentru accesarea functiilor
de administrare a elementelor pe care le gestioneaza.
Domenii de discurs -; DomainsDialog
Metode (subrutine/functii) folosite:
setDefaultSettings()
- actualizeaza informatiile pentru initializarea elementelor grafice. Regaseste
domeniile definite in baza de cunostinte si actualizeaza lista cu domenii domainsToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
- identifica butonul apasat din bara de unelte si executa codul corespunzator addNewDomain()
- initializeaza mediul pentru definirea unui nou domeniu deleteDomain()
- sterge domeniul ales din lista impreuna cu toate multimile fuzzy definite
pe acel domeniu saveCommand_Click()
- salveaza informatiile corespunzatoare definirii/modificarii domeniului ales showDomainProperties()
- afiseaza informatiile corespunzatoare domeniului ales
Acestea sunt functiile mai importante implementate. In plus, acest modul
mai ofera posibilitatea de vizualizare a multimilor fuzzy deja definite pe anumite
domenii si accesul catre modulul pentru administrarea elementelor ce definesc
domeniile discrete (pentru domenii discrete) -; vezi metoda de identificare
a optiunilor puse la dispozitie prin intermediul barei de unelte.
Multimi fuzzy -; SetsDialog
Metode (subrutine/functii) folosite:
setDefaultSettings()
- actualizeaza informatiile pentru initializarea elementelor grafice. Regaseste
domeniile definite in baza de cunostinte cat si multimile fuzzy
deja specificate corespunzatoare si actualizeaza lista cu domenii si multimi
fuzzy. setsToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
- identifica butonul apasat din bara de unelte si executa codul corespunzator.
Aici, cel mai adesea se trece controlul catre formularul ce se ocupa de proprietatile
multimilor fuzzy. Asupra acestuia se va reveni. showRelatedSets()
- filtreaza afisarea in lista cu multimi fuzzy, doar a acelor multimi
ce sunt definite pe domeniul ales din lista ascunsa (combo) cu domeniile deleteSelectedSet()
- sterge din baza de cunostinte multimea aleasa din lista
Proprietatile multimilor fuzzy -; SetPropDialog
setDefaultSettings()
- regaseste datele corespunzatoare multimii fuzzy sau initializeaza mediul pentru
definirea unei noi multimi fuzzy showSetProperties()
- actualizeaza informatiile referitoare la multimea fuzzy aleasa initDiscreteValues()
- regaseste datele corespunzatoare elementelor discrete ale domeniului de discurs
pe care se defineste multimea si actualizeaza lista cu elemente disponibile
cat si cele deja folosite pentru a descrie multimea curenta saveCommand_Click()
- salveaza informatiile corespunzatoare multimii fuzzy cu care se lucreaza initGraph() si drawGraph()
- initializeaza zona respectiv afiseaza graficul corespunzator punctelor de
referinta definite. In plus, exista implementate metodele graphPicture_MouseUp,
graphPicture_MouseDown si graphPicture_MouseMove ce permit folosirea tehnicii
Drag&Drop pentru modificarea coordonatelor unui punct in grafic. De
notat este faptul ca aceste puncte sunt memorate intr-un tablou dinamic
pentru o mai buna manevrare, procedeu folosit si in modulul pentru evaluarea
de expresii fuzzy din aceleasi considerente. normalizePoints()
- folosita pentru a ordona punctele in ordine crescatoare dupa valoarea
specificata ca apartinand domeniului de valori permise
Mai sunt implementate metode pentru conversia valorilor reale la cele corespunzatoare
graficului (transpunerea in grafic a punctelor specificate).
Numere fuzzy -; FnumbersDialog
Metode (subrutine/functii) folosite:
setDefaultSettings()
- actualizeaza informatiile pentru initializarea elementelor de interfata. Aici
se face regasirea tuturor numerelor fuzzy definite in contextul curent
impreuna cu proprietatile corespunzatoare. fNToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
- permite executarea operatiilor de administrare a numerelor fuzzy (adaugare,
modificare, stergere, samd) saveCommand_Click()
- permite salvarea informatiilor cu privire la un numar fuzzy deleteFN()
- permite stergerea unui numar fuzzy din baza de cunostinte showFNProperties()
- afiseaza informatiile cu privire la un numar fuzzy drawGraph()
- afiseaza reprezentarea grafica a modului in care un numar fuzzy afecteaza
conform proprietatilor specificate
Modificatori lingvistici -; ModifiersDialog
Metode (subrutine/functii) folosite:
setDefaultSettings()
- regaseste informatiile cu privire la modificatorii lingvistici definiti in
contextul curent cu scopul de a initializa mediul de lucru cu acestia modifiersToolbar_ButtonClick(ByVal Button As MSComctlLib.Button)
- permite executarea operatiilor de lucru cu modificatorii lingvistici (adaugare,
modificare, stergere, samd) downCommand_Click()
- decrementeaza gradul in care afecteaza modificatorul lingvistic ales
din lista upCommand_Click()
- incrementeaza gradul in care modificatorul afecteaza saveCommand_Click()
- salveaza modificarile facute asupra proprietatilor unui modificator lingvistic deleteModifier()
- sterge modificatorul ales
Construirea si Evaluarea Expresiilor fuzzy -; ExprEvDialog
Metode (subrutine/functii) folosite:
setDefaultSettings()
- regaseste informatiile cu privire la domenii, multimi, modificatori, numere
fuzzy, samd, definite in contextul curent si actualizeaza elementele de
intefata showExpression()
- afiseaza expresia construita conform elementelor utilizate in constructor
pentru prima metoda de evaluare (evaluarea gradului de credibilitate/adevar
corespunzator expresiei construite) showEvExpression()
- afiseaza expresia construita conform elementelor utilizate in constructor
pentru cea de-a doua metoda de evaluare (evaluarea gradului de apartenenta a
unei valori specificate la toate multimile definite pe domeniul ales, cu aplicarea
modificatorilor lingvistici pe acele multimi ce accepta sa le fie aplicat un
modificator) isOkToModify(setID As Integer, domain As Integer) As Integer
- verifica daca o multime poate fi modificata (i se poate aplica un modificator
lingvistic). Intoarce -;1 daca se poate aplica modificator la stanga,
1 daca se poate aplica modificator la dreapta si 0 daca nu accepta modificator. modifyLeft(depth As Integer)
- modifica la dreapta multimea cu care se lucreaza modifyRight(depth As Integer)
- modifica la stanga multimea cu care se lucreaza getGrade(value As Double) As Double
- intoarce gradul de apartenenta calculat corespunzator valorii specificate
prin value evaluateCommand_Click()
- executa operatiile de evaluare a expresiei folosind prima metoda de evaluare evalCommand_Click()
- executa operatiile de evaluare a expresiei folosind cea de-a doua metoda de
evaluare
Descrierea contextului -; ContextPropDialog
Metodele folosite aici nu fac decat sa actualizeze campurile corespunzatoare
din tabela cu proprietatile contextului, acestea referindu-se la un Identificator
pentru context, cateva elemente pentru a descrie acest context, cat
si unele note/observatii ce se pot face. Aceste metode sunt cat se poate
de simple si nu fac obiectul unui studiu complex.
Pentru alte informatii cu privire la modul de functionare si utilizarea acestor
module si pentru a intelege mai bine modelul adoptat, aveti la dispozitie
aplicatia impreuna cu ghidul de utilizare/asistenta, codul sursa impreuna
cu toate elementele utilizate in dezvoltare, baza de date in a carei
structura sunt integrate comentarii asupra tabelelor (relatiilor), campurilor,
modului in care sunt implementate relatiile intre campurile
diferitelor tabele.
Pentru alte informatii, trimiteti un eMail la adresa lt_mirel@hotmail.com