Instrument software pentru
(principii si metode de implementare)
Structura aplicatiei pe module este dupa cum urmeaza (in ordinea in care apar in bara de unelte principala):
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