Aplicatie Matlab Destinata Parametrizarii Controlerelor Fuzzy Logic

LUCRARE DE LICENȚĂ

Aplicație Matlab orientată obiect destinată parametrizării controlerelor fuzzy logic

Cuprins

Introducere

CAPITOLUL I

Logica fuzzy

1.1 Logica clasică versus logica fuzzy

1.2 Elemente de teoria mulțimilor fuzzy

1.3 Tratarea informației fuzzy.

1.4 Concluzii

CAPITOLUL II

Sisteme de conducere inteligentă a proceselor bazate pe controlere fuzzy logic.

2.1 Sisteme de control inteligent al proceselor

2.2 Clasificarea controlerelor fuzzy

2.3 Structura generală a unui Fuzzy Logic Controler

2.4 Structuri ierarhice si hibride

2.5 Concluzii

CAPITOLUL III

Aplicație Matlab orientată obiect destinată parametrizării controlerelor fuzzy logic

3.1 Context: mediul de dezvoltare Matlab/ Guide

3.2 Descrierea etapelor de dezvoltare a aplicației

3.3 Studiu de caz

3.4 Concluzii

Concluzii generale

Recomandări

BIBLIOGRAFIE 64

Introducere

Tema lucrării se numește ‘Aplicație Matlab orientată obiect destinată parametrizării controlerelor fuzzy logic’.

Scopul acestei lucrări este de a crea o interfață grafică cu ajutorul mediului de dezvoltare Matlab/Guide.

Lucrarea este structurată pe trei capitole. Structura se regăsește astfel:

Capitolul I. Logica fuzzy;

Capitolul II. Sisteme de conducere inteligentă a proceselor bazate pe controlere fuzzy logic;

Capitolul III. Dezvoltatea aplicației.

În capitolul I sunt prezentate câteva noțiuni introductive referitoare la logica fuzzy. Tot în acest capitol am discutat despre logica clasică versus logica fuzzy,am prezentat elementele de teorie a mulțimilor fuzzy și tratarea informațiilor fuzzy.

Capitolul II prezintă sistemele de conducere inteligentă a proceselor bazate pe controlere fuzzy,care la rândul ei cuprinde sistemele de control inteligente ale proceselor,clasificarea controlerelor fuzzy,structura generală a unui Fuzzy Logic Controler și în încheierea acestui capitol sunt prezentate structurile ierarhice și hibride.

În capitolul III sunt prezentate câteva noțiuni introductive despre mediul de dezvoltare Matlab/Guide.

În acest capitol sunt descriese etapele de dezvoltare ale aplicației și descrierea componentelor. În final sunt prezentate concluziile referitoare la sistemul prezentat.

CAPITOLUL I

Logica fuzzy

Logica fuzzy a fost definită în anul 1965 de către profesorul Lotfi Zadeh. Logica clasică, lucrează cu două valori numerice exacte,iar logica fuzzy folosește o plajă continuă de valori logice cuprinse în intervalul 0 și 1, unde 0 indică falsitatea completă și 1 indică adevărul complet.

Logica fuzzy oferă instrumente necesare pentru reprezentarea sistemelor inteligente a unor concepte imprecise cum ar fi: „mare”, „mic”, „scump”, „ieftin” ,aceste concepte mai sunt numite și variabile lingvistice, sau variabile fuzzy. În reprezentarea acestora se mai folosesc seturile fuzzy, care colectează din punct de vedere cantitativ interpretarea calitativă a termenilor.

Logica fuzzy o putem utiliza deoarece este flexibilă și ușor de înțeles,poate modela funcții complexe cu un nivel ridicat de precizie ,poate fi combinată cu tehnici convenționale de control și se bazează pe un limbaj natural.Logica fuzzy nu poate fi utilizată dacă există deja o soluție simplă, sau dacă funcționarea controlerelor este foarte bună.[10]

Logica clasică versus logica fuzzy

Aristotel în legea terțului exclus făcea imposibilă o altă variantă.În viața de zi cu zi ne confruntăm cu foarte multe situații în care o astfel de abordare este nerealistă. De exemplu în viața de zi cu zi: "cerul este albastru“.Cerul este într-adevăr albastru,atunci când afară este senin.

Este clar că maniera strictă a evaluării valorilor de adevăr, a propozițiilor nu coincid cu modul mai flexibil în care gândesc oamenii.Logica clasică consideră valoarea de adevăr a propozițiilor în termeni de adevărat sau fals.

În teroria probabilităților Jan Lukasiewicz în 1939 descrie logica trivalentă și mecanismul

matematic de aplicare al ei, bazat pe tripleta {0, 1, 2}. Numărul din acest interval era interpretat drept posibilitatea ca propoziția să fie adevarată sau falsă.[8]

În teoria posibilităților Lotfi Zadeh în anul 1965 pune bazele unui sistem formal de logică matematică prin includerea termenilor din limbajul natural.De exemplu, dacă avem în vedere, mulțimea oamenilor tineri,un copil de 10 ani este cu siguranță tânar în timp ce o persoana de 60 de ani cu siguranță nu este tânară. În cazul acesta, putem afirma că persoana de 10 de ani aparține mulțimii oamenilor tineri într-o măsură mult mai mare decât cea de 60 ani care aparțin oamenilor vârstnici.

Logica fuzzy permite o interpretare cât mai flexibilă a noțiunii de apartenență. Astfel, mai multe obiecte pot aparține unei mulțimi în grade diferite iar lucrul cu termenii nuanțați ai limbajului natural,cuantifică gradul de adevăr al unei afirmații printr-o valoare de adevăr între 0 și 1.Teoria mulțimilor fuzzy a avut inițial ca scopuri modelarea incertitudinilor,generalizarea , simplificarea și procesarea cunoașterii.[9]

Elemente de teoria mulțimilor fuzzy

Mulțimile fuzzy

Începând cu anul 1965 mulțimile fuzzy au fost introduse de către profesorul Lotfi Zadeh cu scopul de a permit reprezentarea conceptelor limbajului natural care au o definiție imprecisă, prin intermediul funcției de apartenență. Multimea fuzzy, spre deosebire de multimile clasice, nu sunt bine delimitate iar elementele sale aparținând mulțimii doar într-o anumită masură.

O propoziție fuzzy conține cuvinte, care sunt folosite ca identificatori pentru mulțimea fuzzy.Valoarea de adevăr fuzzy poate fi exprimată la rândul ei tot printr-o mulțime fuzzy, care se numește calificativ fuzzy.[11]

Pentru reprezentarea mulțimilor fuzzy, trebuie să-i definim mai întai funcția de apartenență, astfel, mulțimea fuzzy A este complet definită prin:

apartenența elementului x la mulțimea valorilor posibile A

A = {(x , ) /xX} sau (1.1)

A = { / x1,…., / xn} reprezentarea simbolică a unei mulțimi fuzzy

Funcții de apartenență

Funcțiile de aparteneță reprezină măsura în care un obiect posedă o anumită proprietate. [9]

µA (x) apartenenta elementului x la multimea valorilor posibile A.

µA (x) : X → [0 1] (1.2)

Fie A o submulțime fuzzy a universului de discurs X. Se numește suportul lui A submulțimea lui X ale cărei elemente au grade de apartenență nenule în A

sup(A) = {x X / µA(x) 0} (1.3)

Dacă suportul este un interval (în cazul mulțimilor fuzzy convexe) se definește și noțiunea de lățime a mulțimii A:

lat(A) = sup(S(A)) – inf(S(A)) (1.4)

Înalțimea lui A se definește drept cea mai mare valoare a funcției de apartenență.O submulțime fuzzy A a lui X este normală dacă. h(A) = l astfel A este subnormală.

h(A) = sup(µA (x)) (1.5)

Se numește nucleul lui A, submulțimea lui X ale cărei elemente au grade de apartenență unitare în A.

n(A) { x X / µA(x) = 1} (1.6)

Vecinătatea, notată V, este definită în cazul unei mulțimi fuzzy ca o mulțime compactă de elemente x pe universul X pentru care gradul de apartenență este nenul și subunitar.

V(A) = { x X / 0 µA(x) 1} (1.7)

Tăietura de nivel a mulțimii fuzzy A reprezintă mulțimea elementelor x din universul de discurs X ale căror grade de apartenență sunt cel puțin egale cu valoarea ce definește tăietura, (figura 1.3).

A= { x X / µA(x) ≤ } (1.8)

Punctele de încrucișare se definesc în raport cu două mulțimi fuzzy care partajează un domeniu comun din universul discursului. Astfel punctul de încrucișare a doua muțtimi fuzzy A și B reprezintă acel punct din universul X,figura1.3.[9]

µA(x*) = µB(x*) (1.9)

Figura 1.3.Reprezentarea funcțiile de apartenență a tăieturii de nivel și a punctelor de încrucișare.

Operații cu multimi

Operațiile cu mulțimi fuzzy reprezintă o extindere a celor din logica clasică. Dacă mulțimile fuzzy au grade de apartenență 0 și 1, atunci semnificația operațiilor este aceeași ca în teoria clasică a mulțimilor, de aceea simbolurile utilizate sunt aceleași. [9][11]

Mulțimea fuzzy vidă notată cu este definită printr-o funcție de apartenență

µ0(x) = 0 , x X (1.10)

Fie A și B submulțimi fuzzy ale lui X. Dacă µA= µB,atunci spunem că A și B mulțimile fuzzy sunt egale.Dacă µA ≤ µB atunci mulțimea lui A este inclusă în mulțimea lui B(figura1.4).

A = B ↔ µA(x) = µB(x) , x X (1.11)

µA(x) ≤ µB(x) , x X (1.12)

Definirea negării funcțiilor de apartenență se face cu ajutorul funcțiilor µA și µB

µA(x) = 1 – µA(x) (1.13)

Definirea reuniunii funcțiilor de apartenență se face cu ajutorul funcțiilor µA și µB

A B = {x/ µAB(x), µAB(x) = max µA(x), µB(x))} (1.14)

Definirea intersecțiilor funcțiilor de apartenență se face cu ajutorul funcțiilor µA și µB

A B = {x/ µA B(x), µA B(x) = min µA(x), µB(x)) (1.15)

Definirea diferențelor funcțiilor de apartenență se face cu ajutorul funcțiilor µA și µB

A – B = {x/ µA -B(x), µA -B(x) = min µA(x),1 – µB(x))} (1.16)

Definirea produsului funcțiilor de apartenență se face cu ajutorul funcțiilor µA și µB

A * B = {x/ µA *B(x),unde µA *B(x) = µA(x)* µB(x)} (1.17)

Figura 1.4 Reuniunea mulțimilor fuzzy A și B

Tratarea informației fuzzy.

Fuzzyficarea

Fuzzyficarea este operația prin care se aleg mărimile de intrare și de ieșire după care se definesc mulțimile fuzzy care permit descrierea acestora prin variabile lingvistice (exemplu: mare, mic, etc.).

Scopul fuzzyficării este să permită construirea unei baze de reguli înglobând cunoștințele noastre referitoare atât la procesul condus cât și la metodele de conducere pe care vrem să le aplicăm. Datele de intrare sunt supuse unei prelucrări preliminare în scopul eficientizării procesului.[9]

Inferența presupune patru pași:

Fuzzyficarea variabilelor de intrare. În această etapă valorile de intrare sunt asignate unor variabile fuzzy corespunzătoare. O valoare de intrare este convertită într-un grad de apartenență pentru fiecare calificativ al variabilei fuzzy asociată acesteia.

Evaluarea regulilor și agregarea ieșirilor regulilor. Prin acest proces regulile fuzzy sunt aplicate variabilelor fuzzy și calificativelor acestora. La aplicarea unei astfel de reguli, gradele de apartenență al calificativelor, menționate în partea condițională, sunt propagate către calificativele din partea de concluzii.

Defuzzyficarea. Aceasta constă în transformarea cunoștințelor fuzzy în date efective.[9]

Exemplificarea pașilor inferenței:

Pasul 1: Fuzzyficarea:

Fuzzyficarea pentru intrările stricte x1 și y1 determină gradele de apartenență în mulțimile corespunzătoare(figura 1.5).[10]

Figura 1.5 Fuzzyficarea intrărilor x1 și y1

Pasul 2: Evaluarea regulilor:

Intrările fuzzy fixcate se aplică antecedenților regulilor. Dacă o regulă are antecedenți (premise) multipli, se aplică operatorii fuzzy de intersecție sau reuniune.Există doua tipuri de inferențe (evaluare) Mamdami și Sugeeno.

Inferențele de tip Mamdami sau Larsen presupun la defuzzyficare integrarea funcțiilor de apartenență, ceea ce nu este foarte eficient din punct de vedere computațional ,iar inferența de tip Sugeno este de forma: DACĂ x este A și y este B ATUNCI z este f(x,y) unde f este o funcție matematică .(figura1.6 și figura 1,7).[9]

a1(r) • + …. + an(r) • + a(r),r = 1,…,k

Cel mai utilizat model de inferență Sugeno este cel de ordin zero, în care ieșirea fiecărei reguli fuzzy este o constantă

DACĂ x este A și y este B ATUNCI z este k

Figura 1.6 Evaluare de tip Sugeeno pentru un sistem cu 2 intrări și o iesire

Figura 1.7 Evaluare de tip Mamdami un sistem cu 2 intrări și o iesire

Pasul 3: Agregarea ieșirilor:

Agregarea presupune reuniunea ieșirilor tuturor regulilor, rezultând câte o mulțime fuzzy pentru fiecare variabilă de ieșire(figura 1.8 și figura1.9).[9]

Figura 1.8 Inferența Sugeno

Figura 1.9 Inferența Mamdami

Pasul 4: Defuzzyficarea:

Mulțimile fuzzy agregate sunt transformate în valori stricte după o metodă de defuzzyficare de exemplu metoda centrului de greutate.(figura 1,10, figura 1,11). [9]

Figura 1.10 Algoritm inferență Sugeeno

Figura 1.11 Reprezenta în care ieșirea fiecărei reguli fuzzy este o constantă

DACĂ x este A și y este B ATUNCI z este k

Figura 1.6 Evaluare de tip Sugeeno pentru un sistem cu 2 intrări și o iesire

Figura 1.7 Evaluare de tip Mamdami un sistem cu 2 intrări și o iesire

Pasul 3: Agregarea ieșirilor:

Agregarea presupune reuniunea ieșirilor tuturor regulilor, rezultând câte o mulțime fuzzy pentru fiecare variabilă de ieșire(figura 1.8 și figura1.9).[9]

Figura 1.8 Inferența Sugeno

Figura 1.9 Inferența Mamdami

Pasul 4: Defuzzyficarea:

Mulțimile fuzzy agregate sunt transformate în valori stricte după o metodă de defuzzyficare de exemplu metoda centrului de greutate.(figura 1,10, figura 1,11). [9]

Figura 1.10 Algoritm inferență Sugeeno

Figura 1.11 Reprezentare grafică a inferenței Mamdami

Concluzii

În acest capitol, logica fuzzy oferă posibilitatea de a reprezenta și raționa cunoștinte comune, formulate în mod obișnuit pentru a găsi aplicabilitate în numeroase domenii.Dificultățile apar la determinarea funcțiilor de aparteneță și la reglarea parametrilor.

Logica fuzzy are o valoare deosebită în aplicațiile de control automat unde un sistem de control este imposibil sau dificil de dezvoltat.

Transpunerea în practică a sistemelor fuzzy o datorează permiterea modelării sistemelor neliniare complexe sau imprecis cunoscute, prin transpunerea experienței umane în constituirea regulilor de inferență utilizand variabile lingvistice, iar prezența zgomotului, impreciziei și a incertitudinii duc la un comportament foarte bun.

Teoria mulțimilor fuzzy a avut inițial ca scopuri modelarea incertitudinilor, generalizarea, simplificarea și procesarea cunosterii.

Multimea fuzzy, spre deosebire de multimile clasice, nu sunt bine delimitate iar elementele sale aparținând mulțimii doar într-o anumită masură.

CAPITOLUL II

Sisteme de conducere inteligentă a proceselor bazate pe controlere fuzzy logic.

2.1 Sisteme de control inteligent al proceselor

Un sistem de control inteligent este un sistem cu un grad înalt de adaptabilitate la schimbările neprevăzute, astfel încât instruirea în timpul funcționării poate avea un rol principal.

Sistemul trebuie sa aibă un grad înalt de autonomie în corelație cu necesitatea operării în condiții de incertitudine.

Evaluarea inițială a sistemului se face printr-un set de cunoștințe apriorice procesului vizat, iar acțiunea țintește spre un set de parametrii care reprezintă performanțele impuse sistemului.

Cuvintele cheie ale controlului inteligent sunt:

RF – Regulator fuzzy, FC – fuzzy controler, FLC – fuzzy logic controler.

Regulatorul fuzzy este utilizat doar pentru controlerele ce funcționează în buclă închisă

Fuzzy logic controler este utilizat cu predilecție în sistemele de asistare a deciziilor. Acesta utilizează procesul de inferență la calculele relaționale fuzzy bazate pe operații mai complexe, de tipul implicațiilor logice fuzzy

Fuzzy controlerul este utilizat în conducerea proceselor. Algoritmii de conducere sunt înglobați în protocoale de comenzi, pe baza cărora, în funcție de mărimile de intrare, se vor genera comenzi în urma procesului de inferență logică. [9]

2.2 Clasificarea controlerelor fuzzy

Clasificarea controlerelor fuzzy ce efectuează reglarea în funcție de tipul inferenței sunt:

Regulatoarele Mamdami

Regulatoarele Takagi-Sugeno

Regulatorul Ostergaard – King – Palm

Regulatoarele Mamdami sunt regulatoare la care inferența se bazează pe utilizarea unor relații fuzzy si necesitând operația de defuzificare.Modelarea matematică a acestor regulatoare se bazează pe utilizarea unor relații fuzzy ce necesită operația de defuzzyficare.

Regulatoarele Takagi-Sugeno reprezintă o abordare mai directă a problemei raglării fuzzy,renunțându-se la reprezentarea fuzzy a mărimii de comandă de la ieșire.Inferența în regulatoarele Sugeno are ca rezultat,pentru fiecare regulă,câte o marime fermă.Aceste regulatoare necesită o fază explicită de defuzzificare doar atunci când sunt activate mai multe reguli

Regulatorul Ostergaard – King – Palm se caracterizează prin reguli simetrice față de situația “eroarea este zero și variația erorii este zero” (ε + dε = 0). Condiția de mai sus creează o “linie de demarcație” în planul stărilor sistemului, între zonele cu erori pozitive sau negative.Regulile sunt alese astfel încât ieșirea regulatorului se va opune constant erorii, cu o valoare mai mare decât poziția sistemului în planul stărilor ce este mai depărtată de linia de demarcație.Regulatorul intră într-un regim de funcționare “sliding mode” care îi conferă o robustețe deosebită față de perturbațiile și de modificarea în timp a parametrilor. S-ar putea face o analogie între acest regulator și un sistem mecanic alcătuit dintr-un corp fixat între două resorturi elastice colineare. Indiferent de natura perturbațiilor, corpul va fi menținut în preajma punctului de echilibru.[9]

2.3 Structura generală a unui Fuzzy Logic Controler

Etapele de parcurs pentru definirea unui Fuzzy Logic Controler sunt :(figura 2.1).

Editorul sistemului cu logică fuzzy- FIS Editor;

Editorul funcțiilor de apartenență-Membership Function Editor;

Editorul regulilor fuzzy-Rule Editor;

Fereastra de vizualizare a regulilor-Rule Viewer;

Fereastra de vizualizare a suprafeței ieșire-intrare a sistemului –Surface Viewer.[9]

Figure 2.1 Vizualizarea etapelor unui Fuzzy Logic Controler

Etapele construcției unui Fuzzy Controler sunt reprezentate în figura (figura2.2).

Figure 2.2.Etalele construcției fuzzy controlerului.

Studiul sistemului analizat:

Pentru fiecare intrare și ieșire alegem universul de discurs U ≡ plaja fizică de variație,iar viteza automobilului poate varia între 0 și 180 Km/h.

Clasele care compun universul de discurs

Viteza automobilului (pe autostradă) este cuprină între:

0 – 70 Km/h evaluare: prea scazută

50 – 90 Km/h recomandată

80 – 130 Km/h medie

100 – 140 Km/h peste medie

140 -180 Km/h excesivă

Figura 2.4 Sistem de reglare automat cu regulator fuzzy controler.

Alegerea intrărilor și ieșirilor importante pentru descrierea funcționării sistemului analizat și alegerea frecvenței de eșantionaj (filtarare+Criteriul lui Shannon)

Se calculeză:

eroarea = referința – ieșirea

domeniul de variație a variabilelor interne

[11] (2.1)

Fuzzyficarea intrării și ieșirii:

Pentru fiecare intrare și ieșire se alege universul de discurs U ≡ plaja fizică de variație.

Dacă procesul reacționează diferit în jurul referinței, atunci clasele de apartenență terbuiesc desimetrizate. Funcțiile de apartenență asociate fiecărei clase definesc gradul de apartenență a vitezei date la fiecare dintre clasele definite. Funțiile de apartenență se pot intersecteze dar nu prea mult.

Funcțiile de apartenență sunt de obicei funcții triunghiulare (trimf) și trapezoidale (trapmf) iar formele mai complicate nu aduc nimic în plus în termeni de performanță (figura2.5).[9]

Figura 2.5.Funcții de apartenență

Trapmf – funcție de apartenență de tip trapez

Gbellmf – fucție de tip clopot generalizat

Trimf – functie de tip triunghi

Gaussmf – funcție de apartenență de tip gauss

Gauss2mf – funcție de apartenență de tip gauss cu două fețe

Smf – funcție de apartenență de tip S

Zmf – funcție de apartenență de tip Z

Psigmf – funcție de apartenență ce reprezintă produsul a două funcții de tip sigmoid

Dsigmf – funcție de apartenență ce reprezintă diferența a două funcții de tip sigmoid

Pimf – funcție de apartenență de tip Pi

Sigmf – funcție de apartenență de tip sigmoid

Formalizarea cunoștiințelor:

Fuzzy Controler utilizează o formulare a regulilor prin următoarea sintaxă

IF (condiții asupra intrărilor) THEN (condiții asupra ieșirilor)

«IF presiunea este ridicată THEN valva se deschise »

Aceste reguli sunt enunțate în relație cu cunostințe referitoare la procesul analizat ale unui expert.Numarul maxim de regui ce poate fi definite pe universul U cu n clase fuzzy (m) este:

(2.2)

Putem să nu considerăm anumite configurații de submulțimi fuzzy dacă acestea sunt imposibil de obținut în cazul particular analizat.Pentru comanda automată a sistemului de frânare nu poate fi considerată ca și regula.

«Dacă viteza este importantă și distanța până la obstacol este nulă »

Creșterea sensibilității sistemului obținută prin partiționarea mai fină a universului de discurs a intrărilor generează o creștere semnificativă a numărului de reguli definite de către expert.[9]

Dacă regulile sunt de tipul

« IF ( ) and ( ) and ( ) …THEN ( ) » atunci baza de reguli se scrie sub forma unei matrice de inferență.

« IF (e1 este EZ) and (e2 este GP) THEN (ieșirea este GN) »

Alegerea metodei de inferență:

Operația logică cu ajutorul căreia admitem o propoziție în virtutea unor alte propoziții considerate a priori adevărate se numește inferență.

Exemplu:

« If presiunea este ridicată THEN deschidem puțin valva ». Pp.P = 2,1 bari

În urma fuzzyficării, această valoare a presiunii, va avea un grad de apartenență 0,7 la clasa fuzzy « Presiune ridicată ».

. Inferența va da, de exemplu, un coeficient de adevăr 0,6 acțiuni de « deschidem puțin valva ».

În etapa de defuzzyficare, deschidere fizică corespunzatoare coeficientului 0,6 va fi de 40%

Inferența fuzzy transformă un grad de apartenență într-un alt grad de apartenență .

Există două tipuri de inferență:

min- max

sum- prod.

Inferența min-max, datorită operatorilor implicați, relația fuzzy a mărimile de intrare fuzzyficate se compară pe rând prin operatorul „min” cu premisele fiecărei reguli,iar regulile pentru care comparația produce grade de apartenență diferite de 0 vor fi active și rezultatul final se obține reunind prin operatorul „max”,concluziile fiecărei reguli active ținând cont de gradul ei de activitate (figura 2.6 și figura 2.7).[9]

Figura 2.6. Metoda min-max

Metoda min/max este cea mai utilizată metodă.

Figura 2.7 Metoda sum-prod

Din punct de vedere calitativ, tipurile de metode de inferență dau aproximativ aceleași rezultate .

Defuzzyficarea

Prin procesul de defuzzyficare sunt asociate mărimile fuzzy care au o valoare numerică concretă.Pentru a realiza defuzzyficarea sunt definite diverse metode care permit obținerea unei valori numerice printr-o expresie ce combină mai multe funcții de apartenență (figura 2.8) .[9]

Metoda COG este cea mai utilizată

Figura 2.8 Diferite tipuri de defuzificare și ieșirile acestora.

Metodele cele mai cunoscute sunt:

metoda centrului de greutate al suprafeței delimitată de maximele locale localizează valoarea marimii supuse defuzzyficarii în centrul de greutate al figurii rezultate prin suprapunerea graficelor funcțiilor de apartenență;

metoda centrului de greutate al suprafeței localizează valoarea marimii supuse defuzzyficarii în centrul de greutate al figurii rezultată prin însumarea ariilor graficelor funcțiilor de apartenență individuale;

metoda ponderării centrelor de greutate ale suprafețelor individuale stabilește valoarea finala prin medierea, ponderată cu aria suprafeței, a centrelor de greutate ale suprafețelor graficelor funcțiilor de apartenență individuale;

metoda primului maxim absolut selectează primul punct din domeniul numeric de definiție pentru care funcția de apartenență are valoare maximă;

metoda medierii maximelor locale determină coordonatele punctelor din domeniul numeric de definiție pentru care funcția de apartenență înregistrează maxime locale și face o mediere a acestor coordonate;

metoda centrului de greutate al ariei convexe maxime localizează valoarea rezultată în centrul de greutate al ariei convexe maxime.[9]

2.4 Structuri ierarhice si hibride

Echivalența între regulatoarele clasice și cele de tip fuzzy Mamdami:

Regulator PID discret:

(2.3)

Regula de conducere echivalentă Fuzzy Controler de tip Mamdami este:

« IF eroarea este Ei AND variatia ei este DEj THEN variatia comenzii este DU1»

Structurile regulatoarelor fuzzy de tip Mamdami sunt reprezentate în (fugura 2.9).

Un stadiu superior de organizare a controlului fuzzy se obține prin introducerea unor nivele de ierarhizare a regulilor.

Daca regula activată de primul control fuzzy este insuficientă pentru controlul adecvat al sistemului, se utilizează un al doilea control fuzzy caracterizat de o granulație mai fină a partițiilor fuzzy, care este invocat numai în momentul selectării regulii respective.

Se crește specificitatea regulilor ce pot fi repetate pe mai multe nivele ierarhice.Creșterea exponențială a numărului regulilor Comportarea unui fuzzy controller este de obicei mai puțin precisă și riguroasă.

Regulatorul Fuzzy este comparabil ca și funcționare cu regulatorul de tip P în ceea ce privește eroarea staționara. Ea este redusă prin creșterea granulației sau prin modificarea factorilor de scalare prin care sunt ponderate mărimile de intrare și ieșire dar nu poate fi anulată decât prin introducerea componenței integratoare.

Fuzzy controlerul are rol de supervizare. El urmărește indicatorii de calitate ai reglării și poate lua decizii de adaptare a algoritmilor numerici sau de alegere a structurii optime de reglare.

Se pot anticipa dezvoltări ale sistemelor de reglare adaptivă, în care Fuzzy Controlerul asigură rolul adaptării.[9]

Dezvoltari fuzzy

O perfecționare importantă a fuzzy controlerului este autoadaptarea (figura 2.10).

Parametrii care pot deveni subiecți ai autoadaptării sunt:

Factorii de scalare ai intrărilor și ieșirilor

Baza de reguli de conducere

Parametri ai metodei de inferență

Funcțiile de apartenență ale variabilelor

Traductorul cuplului rezistent provoacă modificarea regimului de funcționare a injectorului

Valoarea impusă +

Figura 2.10 Exemplu de sistem cu autoadaptare.

Fuzzy Controlerul pentru autoorganizarea structurii trebuie să dispună de un tablou de evaluare a performanțelor reglării, de modelul procesului condus și de algoritmul de modificare a parametrilor Fuzzy Controlerului.[9]

Acțiunile de autoorganizare pot fi :

modificarea inferețtei

modificarea granulației

comutarea între mai multe controlere.

Structura autoorganizării Fuzzy Controlerului este reprezentată în (figura 2.11).

intrare ieșire

Figura 2.11 Structură de controler fuzzy cu autoorganizare.

2.5 Concluzii

Reglarea fuzzy are în vedere analiza problemelor de comandă a proceselor, plecând doar de la cunoștințelele experților referitoare la procesul analizat.

În baza regulilor de conducere se pot include reguli cu obiective diferite, cum ar fi optimizarea unor indicatori referitori la precizia reglări, la comportarea dinamică, la economicitatea, la siguranța sistemului

La stabilirea legii de reglare, pot participa operatori umani sau experți care au experiență în cazul procesului care se dorește a fi condus, fără însă a fi necesar ca ei să dețină cunoștințe referitoare la automatizări sau la sistemele fuzzy.

Aprecierea performanțelor și validarea unui sistem cu regulator fuzzy pot fi obținute de obicei numai după realizarea efectivă a sistemului și încercări, sau în cel mai bun caz, prin simulare pe calculator.

CAPITOLUL III

Aplicație Matlab orientată obiect destinată parametrizării controlerelor fuzzy logic

Context: mediul de dezvoltare Matlab/ Guide

Mediul de dezvoltare MATLAB:

Mediul de dezvoltare MATLAB este un pachet de programme de înaltă performanță dedicat calculului numeric , reprezentărilor grafice și evaluărilor tehnice.[1]

MATLAB integrează calcule matriceale, analiză numerică , vizualizare grafică și un limbaj de programare întru-un mediu foarte usor de utilizat , în care exprimarea problemelor și soluțiilor se face printru-un model matematic.

Mediul de dezvoltare MATLAB este un sistem interactiv care inițial a fost conceput astfel încât elementul de bază cu care el operează să fie matricea.

Facilitățile MATLABului:

Calcule numerice și matematică

Dezvoltarea algoritmilor și programe

Modelare și simulare

Analiză de date , vizualizare și exploatarea rezultatelor

Grafică științifică și inginerească

Dezvoltare de aplicații software,incluzâd contrucții de interfețe grafice cu utilizatorul GUI.

Pachetul de programare al madiului de dezvoltare MATLAB conține o întreagă familie de module specifice , denumite tool-box-uri (m-files )și respectiv blockset-uri , care permit rezolvarea unor aplicții din diverse domenii: aparate și acționări electrice , statistică, finanțe și multe altele.[5]

Structura sistemului MATLAB constă :

Mediul de dezvoltare este alcătuit dintr-un set de unelte care nepermit folosirea funcțiilor și fișierelor MATLAB.Multe dintre acestea reprezintă interfețe grafice incluzând fereastra principal MATLAB (MATLAB Desktop) ,fereastra de comenzii (Command Window), fereastra ce memorează instoria comenzilor(Command History) si browser-ele Help,Files, etc.

Biblioteca de fincții matematice MATLAB constă într-o colecție de algoritmi de calcul,pornind de la funcții elementare cum ar fi sumă,sinus,cosines și aritmetică complexă , până la funcții sofisticate precum inversare de matrici,calcul de valorii proprii,funcții Bessel, și transformata Fourier.

MATLAB este un limbaj matrice / vector de un nivel înalt ce include instrucțiuni de control ale buclelor , funcțiilor , structurilor de date,comenzilor de intrare / ieșite și instrucțuni de programare orientate pe obiect. Limbajul MATLAB permite “ programarea superficială” pentru crearea rapidă a unor mici programe de calcul și “ programarea în detaliu” în vederea dezboltării programelor complexe de nivel superior.[5]

Handle Graphics, reprezintă sistemul de grafică MATLAB incluzând atât comenzi de nivel înalt pentru vizualizarea 2D și 3D a datelor, procesare de animație , imagini și grafică ,cât și comenzi de nivel jos ce permite personalizarea completă a reprezentărilor grafice și construirea interfețelor grafice GUI pentru aplicațiile MATLAB.

MATLAB Application Program Interface (API) este o bibliotecă ce permite scrierea programelor C și Fortran ce interacționează cu mediul de dezvoltare MATLAB .[2]

GUIDE:

GUIDE este mediul de dezvoltare pentru interfața utilizator grafică MATLAB , ea furnizază un set de instrumente pentru crearea interfețelor grafice GUI. Aceste elemente grafice simplifică procesul de proiectare și dezvoltare a interfețelor. Instrumentele GUIDE se pot utiliza pentru imaginea interfeței GUI.[7]

GUIDE-ul salvează interfața GUI într-un fișier numit FIG. GUIDE-ul generează automat un fișier de tipul M care poate controla modul de funcționare al interfeței grafice. Fișierul M inițiază interfața utilizator grafică și conține un șablon cu cele mai frecvente callback-uri utilizate ale fiecărei componente executate atunci când un utilizator acționează o componentă GUI. Utilizând editorul M-file putem adauga callback-uri pentru executarea fincțiilor dorite.

Pornirea interfeței grafice se poate face tastând „guide” la prompter-ul de comandă al MATLAB-ului.

Descrierea etapelor de dezvoltare a aplicației

Aplicația este construită din meniul „Etapele configurării Fuzzy Logic Controler”.

Crearea interfeței GUIDE:

În fereastra de comandă a Matlab-ului introducem comanda GUIDE pentru a ne deschide fereastra de creare a interfeței.

Figura 3.1 Fereastra de start a comenzii Guide.

În figura de mai jos este prezentat Editorul Interfață GUIDE.

Figura 3.2 Editorul interfeței guide și instrumentele acestuia.

Crearea interfeței se face cu ajutorul elementelor din tabela de instrumente, acestea fiind te tip drag and drop.

Pentru crearea meniului am folosit următoarea funcție:

Menu Editor.

Figura 3.3 Bara de meniuri.

Figura 3.4 Fereastra ce ilustrează meniurile în etapa de creare.

Meniul Etapele configurării Fuzzy Logic Controler conține la rândul lui următorele submeniuri cum ar fi „Fuzzyficarea”;”Inferență”și ”Defuzzyficarea”.

Figura 3.5 Lista de submeniuri conținută de meniul create anterior.

Din meniul Etapele configurării Fuzzy Logic Controler alegem submeniul Fuzzyficare,care la rândul lui este compus din alte două submeniuri numite Intrări și Ieșiri.

Submeniul Intrări este format din “numărul intrărilor, numărul funcțiilor de apartenență pentru fiecare intrare, tipul funcției de apartenență pentru fiecare intare, domeniul de variație și vizualizarea funcțiilor MF oferite intrărilor”.

În interfață pentru “numărul de intrări” am folosit un buton de tip static text acest buton ne permite afișarea răspunsului.Când dăm click pe numărul de intrări în callback am adăugat următorul cod:

prompt = {'Numar Intrari'};

dlg_title = 'Configurarea FLC';

num_lines = 1;

def = {'2'};

raspuns = inputdlg(prompt,dlg_title,num_lines,def)

set(handles.text16,'string', raspuns);

Figura 3.5 Alegerea numărului de intrări.

Pentru „alegerea numerelor funcțiilor de apartenență” și “alegerea tipului funcțiilor de apartenență” pentru fiecare intrare am folosit patru butoane de tip pop-up menu , aceste butoane ne permit selectarea obțiunilor dorite.La apelarea acestor funcții în callback am adăugat următorul cod:

nrfct = get(handles.popupmenu1,'String');

nrfct = strtrim(nrfct{get(handles.popupmenu1,'Value')});

nrfct = get(handles.popupmenu2,'String');

nrfct = strtrim(nrfct{get(handles.popupmenu2,'Value')});

tipfct = get(handles.popupmenu3,'String');

tipfct= strtrim(nrfct{get(handles.popupmenu3,'Value')});

tipfct = get(handles.popupmenu4,'String');

tipfct = strtrim(tipfct{get(handles.popupmenu4,'Value')});

Figura 3.6 Alegerea numerelor și a funcțiilor de aparteneță

Pentru “domeniul de variație” am adăugăt două slide-uri ,unul pentru viteză, celălalt pentru distanță,iar pentru returnarea răspunsului am adăugat două buton de tip static text.Slide-rul întoarce o valoare string între un minim și un maxim setat din panoul de proprietăți.El facilitează setarea vitezei și distanței, mutând poziția cursorului din cadrul slide-rului.La apelarea domeniul de varieție, în spatele lui am adăugat următorul cod:

viteza=get(handles.slider3_vit,'Value');

set(handles.text27,'String',num2str(viteza));

distanta=get(handles.slider5_dis,'Value');

set(handles.text28,'String',num2str(distanta));

Figura 3.7 Vizualizarea domeniul de variație pentru viteză și distanță.

Iar pentru “vizualizarea funcțiilor MF” am adăugat două grafice axex aceste grafice ne permit crearea unui grafic bidimensional sau tridimensional.Pentru a vizualiza funcțiile în callback am adăugat următorul cod:

a=newfis('Controlul vitezei');

a=addvar(a,'input','Viteza',[0 100]);

a=addmf(a,'input',1,'Mica','trimf',[0 10 25]);

a=addmf(a,'input',1,'Medie','trimf',[15 37 60]);

a=addmf(a,'input',1,'Mare','trimf',[50 75 100]);

axes(handles.axes8);

plotmf(a,'input',1);

a=addvar(a,'input','Distanta',[0 10]);

a=addmf(a,'input',2,'Aproape','trimf',[0 1.5 3.5]);

a=addmf(a,'input',2,'Medie','trimf',[2.5 4 6.5]);

a=addmf(a,'input',2,'Departe','trimf',[5.5 7.5 10]);

axes(handles.axes3);

plotmf(a,'input',2);

Figura 3.8 Vizualizarea funcțiilor MF oferite intrărilor

Submeniul Ieșiri cuprinde “numărul de ieșiri”, numărul funcțiilor de apartenență”, “tipul funcției de apartenență”, “domeniul de variație” și “vizualizarea funcțiilor MF oferite ieșirilor”.

În interfață pentru numărul de ieșiri am adăugat un buton de tip static text, pentru acest buton am adăugat următorul cod:

prompt = {'Numar Iesiri'};

dlg_title = 'Configurarea FLC';

num_lines = 1;

def = {'1'};

raspuns = inputdlg(prompt,dlg_title,num_lines,def)

set(handles.text12,'string', raspuns);

Figura 3.9 Alegerea numărului de ieșire.

Pentru “numărul funcțiilor de apartenență”, tipul funcției de apartenență” am adăugat două butoane de tip pop-up menu.În spatele acestor două funcții am adăugat următorul cod:

nrfct = get(handles.popupmenu5,'String');

nrfct = strtrim(nrfct{get(handles.popupmenu5,'Value')});

tipfct = get(handles.popupmenu6,'String');

tipfct = strtrim(tipfct{get(handles.popupmenu6,'Value')});

Figura 3.10 Alegerea numărului și tipului de apartenență.

Pentru “domeniul de variație” am adăugat un slide-ur oferit accelerației, iar în callback am adăugat următorul cod:

viteza=get(handles.slider3_vit,'Value');

distanta=get(handles.slider5_dis,'Value');

a=newfis('Controlul vitezei');

a=addvar(a,'input','Viteza',[0 100]);

a=addmf(a,'input',1,'Mica','trimf',[0 10 25]);

a=addmf(a,'input',1,'Medie','trimf',[15 37 60]);

a=addmf(a,'input',1,'Mare','trimf',[50 75 100]);

a=addvar(a,'input','Distanta',[0 10]);

a=addmf(a,'input',2,'Aproape','trimf',[0 1.5 3.5]);

a=addmf(a,'input',2,'Medie','trimf',[2.5 4 6.5]);

a=addmf(a,'input',2,'Departe','trimf',[5.5 7.5 10]);

a=addvar(a,'output','Acceleratie',[0 100]);

a=addmf(a,'output',1,'Frana maxima','trimf',[0 10 20]);

a=addmf(a,'output',1,'Frana medie','trimf',[15 25 35]);

a=addmf(a,'output',1,'Frana slaba','trimf',[30 42 55]);

a=addmf(a,'output',1,'Acceleratie usoara','trimf',[45 55 65]);

a=addmf(a,'output',1,'Acceleratie medie','trimf',[60 70 80]);

a=addmf(a,'output',1,'Accleleratie maxima','trimf',[75 87 100]);

rulelist = [1 1 3 1 1;2 1 2 1 1;3 1 1 1 1;1 2 5 1 1;2 2 4 1 1;3 2 3 1 1;1 3 6 1 1;2 3 5 1 1;3 3 4 1 1];

a=addrule(a,rulelist);

acceleratie=evalfis([viteza distanta],a);

set(handles.text26,'String',num2str(acceleratie));

set(handles.slider4_acc,'value',acceleratie);

Figura 3.11 Vizualizarea domeniului de variație pentru accelerație.

Iar pentru “vizualizarea funcțiilor MF” oferite ieșirilor am adăugat un grafic axex ,în spatele acestei vizualizări am introdus următorul cod:

a=newfis('Controlul vitezei');

a=addvar(a,'input','Viteza',[0 100]);

a=addmf(a,'input',1,'Mica','trimf',[0 10 25]);

a=addmf(a,'input',1,'Medie','trimf',[15 37 60]);

a=addmf(a,'input',1,'Mare','trimf',[50 75 100]);

a=addvar(a,'input','Distanta',[0 10]);

a=addmf(a,'input',2,'Aproape','trimf',[0 1.5 3.5]);

a=addmf(a,'input',2,'Medie','trimf',[2.5 4 6.5]);

a=addmf(a,'input',2,'Departe','trimf',[5.5 7.5 10]);

a=addvar(a,'output','Acceleratie',[0 100]);

a=addmf (a,'output',1,'Frana maxima','trimf',[0 10 20]);

a=addmf (a,'output',1,'Frana medie','trimf',[15 25 35]);

a=addmf (a,'output',1,'Frana slaba','trimf',[30 42 55]);

a=addmf (a,'output',1,'Acceleratie usoara','trimf',[45 55 65]);

a=addmf (a,'output',1,'Acceleratie medie','trimf',[60 70 80]);

a=addmf (a,'output',1,'Accleleratie maxima','trimf',[75 87 100]);

axes(handles.axes9);

plotmf(a,'output',1);

Figura 3.12 Vizualizarea funcțiilor MF oferite ieșirii.

Interfața oferită submeniului Fuzzyficare este reprezentată în (figura 3.13).

Figura 3.13 Interfața oferită opițunilor alese pentru fuzzyficare.

Tot din meniul Etapele configurării Fuzzy Logic Controler alegem submeniul Inferență, care la rândul lui conține următoarele submeniuri “alegerea tipului de regulator, alegerea metodei de agregare, AND metode, OR metode, definirea regulilor și vizualizarea bazei de reguli în interfață”.

Afișarea rezultatelor în interfață din submeniurile Inferență pentru “alegerea tipului de regulator,alegerea metodei de agregare, AND metode, OR metode” am adăugat patru butoane de tip pop-up menu.În spatele acestora am adăugat următorul cod:

reg = get(handles.popupmenu7,'String');

reg = strtrim(reg{get(handles.popupmenu7,'Value')});

metagregare = get(handles.popupmenu8,'String');

metagregare = strtrim(metagregare{get(handles.popupmenu8,'Value')});

andmet = get(handles.popupmenu9,'String');

andmet = strtrim(andmet{get(handles.popupmenu9,'Value')});

ormet= get(handles.popupmenu10,'String');

ormet = strtrim(ormet{get(handles.popupmenu10,'Value')});

Pentru “definirea regulilor” am folosit comanda showrule și am adăugat un buton de tip static text pentru afișare.În callback am adăugat următorul cod:

a=newfis('Controlul vitezei');

a=addvar(a,'input','Viteza',[0 100]);

a=addmf(a,'input',1,'Mica','trimf',[0 10 25]);

a=addmf(a,'input',1,'Medie','trimf',[15 37 60]);

a=addmf(a,'input',1,'Mare','trimf',[50 75 100]);

a=addvar(a,'input','Distanta',[0 10]);

a=addmf(a,'input',2,'Aproape','trimf',[0 1.5 3.5]);

a=addmf(a,'input',2,'Medie','trimf',[2.5 4 6.5]);

a=addmf(a,'input',2,'Departe','trimf',[5.5 7.5 10]);

a=addvar(a,'output','Acceleratie',[0 100]);

a=addmf(a,'output',1,'Frana slaba','trimf',[0 10 20]);

a=addmf(a,'output',1,'Frana medie','trimf',[15 25 35]);

a=addmf(a,'output',1,'Frana maxima','trimf',[30 42 55]);

a=addmf(a,'output',1,'Acceleratie usoara','trimf',[45 55 65]);

a=addmf(a,'output',1,'Acceleratie medie','trimf',[60 70 80]);

a=addmf(a,'output',1,'Accleleratie usoara','trimf',[75 87 100]);

rulelist = [1 1 3 1 1;2 1 2 1 1;3 1 1 1 1;1 2 5 1 1;2 2 4 1 1;3 2 3 1 1;1 3 6 1 1;2 3 5 1 1;3 3 4 1 1];

a=addrule(a,rulelist);

showrule(a);

set(handles.text23,'String', showrule (a));

Fugura 3.14 Afișarea regulilor definite.

Iar pentru “vizualizarea bazei de reguli în interfață” am adăugat același buton de tip static text și am folosit comanda ruleview pentru afișarea regulilor.În spatele acestei baze de reguli am adăugat următorul cod:

a=newfis('Controlul vitezei');

a=addvar(a,'input','Viteza',[0 100]);

a=addmf(a,'input',1,'Mica','trimf',[0 10 25]);

a=addmf(a,'input',1,'Medie','trimf',[15 37 60]);

a=addmf(a,'input',1,'Mare','trimf',[50 75 100]);

a=addvar(a,'input','Distanta',[0 10]);

a=addmf(a,'input',2,'Aproape','trimf',[0 1.5 3.5]);

a=addmf(a,'input',2,'Medie','trimf',[2.5 4 6.5]);

a=addmf(a,'input',2,'Departe','trimf',[5.5 7.5 10]);

a=addvar(a,'output','Acceleratie',[0 100]);

a=addmf(a,'output',1,'Frana maxima','trimf',[0 10 20]);

a=addmf(a,'output',1,'Frana medie','trimf',[15 25 35]);

a=addmf(a,'output',1,'Frana slaba','trimf',[30 42 55]);

a=addmf(a,'output',1,'Acceleratie usoara','trimf',[45 55 65]);

a=addmf(a,'output',1,'Acceleratie medie','trimf',[60 70 80]);

a=addmf(a,'output',1,'Accleleratie maxima','trimf',[75 87 100]);

rulelist = [1 1 3 1 1;2 1 2 1 1;3 1 1 1 1;1 2 5 1 1;2 2 4 1 1;3 2 3 1 1;1 3 6 1 1;2 3 5 1 1;3 3 4 1 1];

a = addrule(a, rulelist);

ruleview(a);

Figura 3.15 Vizualizarea bazei de regulilor.

Vizualizarea opțiunilor alese pentru submeniul Inferență este reprezentată în (figura 3.16)

Figura 3.16 Opținerea rezultatelor și stabilirea regulilor pentru infernță.

Din submeniul Defuzzyficare când alegem opțiunea alegerea metodei de defuzzyficare, adăugăm butonul de tip static text pentru afișare, pentru alegerea metodei în callback am adăugat următorul cod”

prompt = {'Metoda de defuzzyficare'};

dlg_title = 'Configurarea FLC';

num_lines = 1;

def = {'Centroid'};

raspuns = inputdlg(prompt,dlg_title,num_lines,def)

set(handles.text22,'string', raspuns);

Iar pentru “vizualizarea ieșirilor” am folosit un grafic de tip axex și comanda gensurf. În callback pentru a vizualiza ieșirile am adăugat următorul cod:

fis=newfis('Controlul vitezei');

fis=addvar(fis,'input','Viteza',[0 100]);

fis=addmf(fis,'input',1,'Mica','trimf',[0 10 25]);

fis=addmf(fis,'input',1,'Medie','trimf',[20 37 55]);

fis=addmf(fis,'input',1,'Mare','trimf',[50 75 100]);

fis=addvar(fis,'input','Distanta',[0 10]);

fis=addmf(fis,'input',2,'Aproape','trimf',[0 1.5 3]);

fis=addmf(fis,'input',2,'Medie','trimf',[2.5 4 6]);

fis=addmf(fis,'input',2,'Departe','trimf',[5.5 7.5 10]);

fis=addvar(fis,'output','Acceleratie',[0 100]);

fis=addmf (fis,'output',1,'Frana maxima','trimf',[0 10 20]);

fis=addmf (fis,'output',1,'Frana medie','trimf',[15 25 35]);

fis=addmf (fis,'output',1,'Frana slaba','trimf',[30 42 55]);

fis=addmf (fis,'output',1,'Acceleratie usoara','trimf',[45 55 65]);

fis=addmf (fis,'output',1,'Acceleratie medie','trimf',[60 70 80]);

fis=addmf (fis,'output',1,'Accleleratie maxima','trimf',[75 87 100]);

rulelist = [1 1 3 1 1;2 1 2 1 1;3 1 1 1 1;1 2 5 1 1;2 2 4 1 1;3 2 3 1 1;1 3 6 1 1;2 3 5 1 1;3 3 4 1 1];

fis=addrule(fis,rulelist);

axes(handles.axes10);

gensurf(fis);

Figura 3.17 Vizualizarea ieșirilor

Vizualizarea opțiunilor alese pentru submeniul Defuzzyficare este reprezentată în

(figura 3.18).

Figura 3.18 Vizualizarea opțiunilor alese.

Studiu de caz

În continuare vom prezenta modalitatea de parametrizare a unui regulator fuzzy pentru controlul vitezei unui automobil cu ajutorul toolbox-ului integrat în Matlab, fuzzy logic toolbox.

Fuzzy Logic Controler are două intrări Viteza, Distanța și o singură ieșire Accelerația.

În ferastra de comandă a Matlab-ului vom scrie comanda fuzzy după care va apărea următoarea fereastră (figura3.1).

Figura 3.1 Editorul FIS.

Pentru construirea regulatorului fuzzy trebuie să parcurgem anumite etape.

1.Definirea intrărilor și ieșirilor ale regulatorului fuzzy

Pentru a crea intrările și ieșirile regulatorului vom folosii comenzile:

Edit/Add input

Edit/Add output

Figura 3.2 Modelul Fuzzy pentru reglarea vitezei unui automobile.

2 Definirea funcțiilor de apartenență

Pentru definirea funcțiilor de apartenență pentru fiecare intrare și ieșire vom folosi comenzile (Figura 3.3):

View/Edit Membership function

Edit/Add MFS (pentru intrarea Viteză)

Edit/Add MFS (pentru intrarea Distanță)

View/Edit Membership function

Edit/Add MFS(pentru ieșirea Accelerație)

Figura 3.3 Definirea funcțiilor de apartenență pentru fiecare intrare.

Figura 3.3 Definirea funcțiilor de apartenență pentru fiecare intrare și ieșire.

3.Definirea regulilor

Pentru stabilirea și vizualizarea regulilor vom folosii următoarea comandă:

View/Rule Editor (figura 3.4)

View/Rule (figura 3.5)

Figura 3.4 Definirea regulilor.

Figura 3.5 Vizualizarea bazei de reguli.

4.Simularea și vizualizarea rezultatelor

Vizualizarea răspunsului regulatorului fuzzy se face cu ajutorul interfeței grafice Surface View iar sistemul de inferență este de tip Mamdani și regula de defuzzyficare este metoda centroid (Figura 3.6).

View/Surface

Figura 3.6 Vizualizarea ieșirilor.

5.Intervalele atribuite parametrilor lingvistice:

Pentru parametrii lingvistici ai vitezei se vor atribui următoarele intervale:

Mica

Medie

Mare

[0 25]

[15 60]

[50 100]

Pentru parametrii lingvistici ai distanței se vor atribui urmatoarele intervale:

Aproape

Medie

Departe

[0 0.35]

[0.25 0.65]

[0.55 1]

Pentru parametrii lingvistici ai acceleratiei ce includ si regimul de frânare li se vor atribui urmatoarele intervale:

Frana_maxima

Frana_medie

Frana_slaba

Acceleratie_slaba

Acceleratie_medie

Acceleratie_maxima

[0 20]

[15 30]

[30 55]

[45 65]

[60 80]

[75 100]

6.Setul de reguli al regulatorului fuzzy:

Dacă Viteza este Mica și Destetanta este Aproape atunci Acceleratie este Frana_slaba

Dacă Viteza este Medie și Distanta este Aproape atunci Acceleratie este Frana_medie

Dacă Viteza este Mare și Distanta este Aproape atunci Acceleratie este Frana_maxima

Dacă Viteza este Mica și Distanta este Medie atunci Acceleratie este Acceleratie_mede

Dacă Viteza este Medie și Distanta este Medie atunci Acceleratie este Acceleratie_usoara

Dacă Vieza este Mare și Distanta este Medie atunci Acceleratie este Frana_slaba

Dacă Viteza este Mica și Distanta este Departe atunci Acceleratie este Acceleratie_maxima

Dacă Viteza este Medie și Distanta este Departe atunci Acceleratie este Acceleratie_medie

Dacă Viteza este Mare și Distanta este Departe atunci Acceleratie este Acceleratie_usoara

7. Testarea aplcației în urama introducerilor de valori pentru intrari:

Pentru testarea aplicației se vor intoduce următoarele valori pentru intrări.

Viteza este 40 și aparține intervalului [15 60]

Figura 3.7 Rezultatul vizualizării vitezei.

Distanța este 0.5 și aparține intervalului [0.25 0.65]

Figura 3.8 Rezultatul vizualizării distanței.

Analizând regulile prezentate în pasul anterior Accelerația va trebui să fie ușoară ceea ce înseamnă că trebuie să aparțină intervalului [45 65]

Figura 3.9 Rezultatul vizualizării accelerației.

Concluzii

Mediul de dezvoltare MATLAB furnizează instrumentele necesare pentru calculul numeric și analiza statistică.

Regulatoarele de tip fuzzy au avantajul că pot furniza un răspuns al sistemelor nonlineare folosind cunoștințele operatorului uman.

Interfața guide furnizează instrumente pentru crearea interfețele grafice, aceste elemente grafice simplifică procesul de proiectare și dezvoltarea informațiilor.

Combinând interfața furnizată de funcția guide și regulatorul fuzzy generat prin intermediul comenzii cu acelaș nume, putem crea sisteme ce simulează procese întâlnite în viața reală.

Concluzii generale

În această lucrare ,în primul capitol, am prezentat teoria mulțimilor fuzzy care este cea mai generală teorie a incompletitudinii formulată panâ în prezent.

Logica fuzzy oferă posibilitatea de a reprezenta și raționa cu cunoștinte comune, formulate în mod obișnut și de aceea și-a găsit aplicabilitatea în numeroase domenii. Dificultățile apar la determinarea funcțiilor de aparteneță și la reglarea parametrilor.

Transpunerea în practică a sistemelor fuzzy o datorează permiterea modelării sistemelor neliniare complexe sau imprecis cunoscute, prin transpunerea experienței umane în constituirea regulilor de inferență utilizand variabile lingvistice, iar prezența zgomotului, impreciziei și a incertitudinii duc la un comportament foarte bun.

Teoria mulțimilor fuzzy a avut inițial ca scopuri modelarea incertitudinilor, generalizarea, simplificarea și procesarea cunosterii.

Multimea fuzzy, spre deosebire de multimile clasice, nu sunt bine delimitate iar elementele sale aparținând mulțimii doar într-o anumită masură.

În al doilea capitol am scris despre reglarea fuzzy care are în vedere analiza problemelor de comandă a proceselor, plecând doar de la cunoștințelele experților referitoare la procesul analizat.

În baza regulilor de conducere se pot include reguli cu obiective diferite, cum ar fi optimizarea unor indicatori referitori la precizia reglări, la comportarea dinamică, la economicitatea, la siguranța sistemului

La stabilirea legii de reglare, pot participa operatori umani sau experți care au experiență în cazul procesului care se dorește a fi condus, fără însă a fi necesar ca ei să dețină cunoștințe referitoare la automatizări sau la sistemele fuzzy.

Aprecierea performanțelor și validarea unui sistem cu regulator fuzzy pot fi obținute de obicei numai după realizarea efectivă a sistemului și încercări, sau în cel mai bun caz, prin simulare pe calculator.

În capitolul trei am prezentat mediul de dezvoltare Matlab /Guide/Simulink.

Mediul de dezvoltare MATLAB furnizează instrumentele necesare pentru calculul numeric și analiza statistică.

Regulatoarele de tip fuzzy au avantajul că pot furniza un răspuns al sistemelor nonlineare folosind cunoștințele operatorului uman.

Interfața guide furnizează instrumente pentru crearea interfețele grafice,aceste grafice simplifică procesul de proiectare și dezvoltarea informațiilor.

Combinând interfața furnizată de funcția guide și regulatorul fuzzy generat prin intermediul comenzii cu acelaș nume, putem crea sisteme ce simulează procese întâlnite în viața reală.

Recomandări

Deși aplicația noastră se bazează pe controlul inteligent al accelerației folosind un regulator fuzzy, aceasta nu poate oferii răspunsuri pentru parametrii ce depășesc intervalele prestabilite pentri intrări.

Dezvoltări ulterioare ale procesului

Integrăm regulatorul fuzzy intr-o structură de reglare pentru a evalua performanțele conducerii inteligente a proceselor în raport cu tehnicile clasice de reglare.

BIBLIOGRAFIE

[1] DRAGOMIR Otilia,Florin DRAGOMIR, Eugenia MINCA, Cristian DUMITRACHE, Teoria sistemelor automate.Fundamente teoretice si aplicatii Matlab, Editura MatrixRom, Bucuresti, 2010, ISBN: 978- 973- 755- 646- 2 (in Romanian);

[2] Calin SOARE, Sergiu ILIESCU, Valentin TUDOR, Ioana FAGARASANU,Otilia DRAGOMIR, Florin DRAGOMIR, Proiectarea asistata de calculator in Matlab si Simulink. Conducerea avansata a proceselor, Editura Agir, Bucuresti, 2006, ISBN 973-720-092-6978-973-720-092-1(in Romanian);

[3] Eugenia MINCA, Cristian DUMITRACHE, Iulian BREZEANU, Veronica STEFAN, Florin DRAGOMIR,Otilia DRAGOMIR, Conducerea inteligenta a sistemelor automate. Fundamente teoretice (vol.I), Editura MatrixRom, Bucuresti, 2010, ISBN:978-973-755-565-6 (in Romanian);

[4] Eugenia MINCA, Cristian DUMITRACHE, Iulian BREZEANU, Veronica STEFAN, Florin DRAGOMIR,Otilia DRAGOMIR,“ Conducerea inteligenta a sistemelor automate. Aplicatii (vol.II) “, Editura MatrixRom, Bucuresti, 2010, ISBN:978-973-755-566-3 (in Romanian);

[5] http://www.tmt.ugal.ro/crios/Support/ANPT/Tutoriale/MATLAB_IN_INGINERIE.pdf (accesat în mai 2014);

[6] http://ro.scribd.com/doc/216079379/Curs-MATLAB-Simulink (accesat în mai 2014);

[7] http://aparate.elth.ucv.ro/IVANOV/Master/MOOEE/Laborator/Creare%20GUI.pdf (accesat în mai 2014);

[8] http://florinleon.byethost24.com/curs_ia.htm (accesat în iunie 2014);

[9] http://moodle.fie.valahia.ro/course/view.php?id=91 (accesat în iunie 2014);

[10] http://ro.wikipedia.org/wiki/Logic%C4%83_fuzzy (accesat în mai 2014);

[11] http://inf.ucv.ro/~ghindeanu/lab/sicc/carteb5.pdf (accesat în iulie 2014);

..

BIBLIOGRAFIE

[1] DRAGOMIR Otilia,Florin DRAGOMIR, Eugenia MINCA, Cristian DUMITRACHE, Teoria sistemelor automate.Fundamente teoretice si aplicatii Matlab, Editura MatrixRom, Bucuresti, 2010, ISBN: 978- 973- 755- 646- 2 (in Romanian);

[2] Calin SOARE, Sergiu ILIESCU, Valentin TUDOR, Ioana FAGARASANU,Otilia DRAGOMIR, Florin DRAGOMIR, Proiectarea asistata de calculator in Matlab si Simulink. Conducerea avansata a proceselor, Editura Agir, Bucuresti, 2006, ISBN 973-720-092-6978-973-720-092-1(in Romanian);

[3] Eugenia MINCA, Cristian DUMITRACHE, Iulian BREZEANU, Veronica STEFAN, Florin DRAGOMIR,Otilia DRAGOMIR, Conducerea inteligenta a sistemelor automate. Fundamente teoretice (vol.I), Editura MatrixRom, Bucuresti, 2010, ISBN:978-973-755-565-6 (in Romanian);

[4] Eugenia MINCA, Cristian DUMITRACHE, Iulian BREZEANU, Veronica STEFAN, Florin DRAGOMIR,Otilia DRAGOMIR,“ Conducerea inteligenta a sistemelor automate. Aplicatii (vol.II) “, Editura MatrixRom, Bucuresti, 2010, ISBN:978-973-755-566-3 (in Romanian);

[5] http://www.tmt.ugal.ro/crios/Support/ANPT/Tutoriale/MATLAB_IN_INGINERIE.pdf (accesat în mai 2014);

[6] http://ro.scribd.com/doc/216079379/Curs-MATLAB-Simulink (accesat în mai 2014);

[7] http://aparate.elth.ucv.ro/IVANOV/Master/MOOEE/Laborator/Creare%20GUI.pdf (accesat în mai 2014);

[8] http://florinleon.byethost24.com/curs_ia.htm (accesat în iunie 2014);

[9] http://moodle.fie.valahia.ro/course/view.php?id=91 (accesat în iunie 2014);

[10] http://ro.wikipedia.org/wiki/Logic%C4%83_fuzzy (accesat în mai 2014);

[11] http://inf.ucv.ro/~ghindeanu/lab/sicc/carteb5.pdf (accesat în iulie 2014);

Similar Posts