Upload
hoangkiet
View
218
Download
3
Embed Size (px)
Citation preview
XII. LABOR - Fuzzy logika
59
XII. LABOR - Fuzzy logika
A gyakorlat célja elsajátítani a fuzzy logikával kapcsolatos elemeket: fuzzy tagsági függvények, fuzzy halmazm�veletek, fuzzy következtet� rendszerek felépítése, defuzzifikációs eljárások, a fuzzy szabályok kitöltése, valamint a MATLAB függvényeit használva elsajátítani a fuzzy következtet� rendszerek tervezésével kapcsolatos fontosabb tudnivalókat.
Elméleti alapfogalmak A fuzzy logika nem más, mint a bináris logika általánosított formája. A fuzzy
logika egy multivalens logikai rendszer. Míg a bináris logika lehetséges értékei 0 vagy 1, addig egy fuzzy rendszer esetében a lehetséges érték elvileg végtelen is lehet.
A klasszikus logika szerint egy elem halmazba tartozása egyértelm�en megállapítható, egy tetsz�leges elemr�l el tudjuk dönteni, hogy eleme-e az adott halmaznak vagy sem. Tehát az, hogy { a∈U} →{0,1}, egyértelm�en eldönthet�. Ha hozzá tartozik, akkor egy logikai igaz, ha nem, azt egy logikai hamis értékkel jellemeztük. Egyszer�ség kedvéért jelöljük a logikai igaz értéket 1-gyel, a hamis értéket 0-val. Ekkor az, hogy egy elem beletartozik-e U-ba jellemezhet� vagy egy 0-val, vagy egy 1-gyel.
A multivalens rendszerben az elem értelmezését így írhatjuk fel: a logikai érték {a∈U} → [0,1] . A fuzzy logika abban hoz újat, hogy a halmazba tartozás 0, illetve 1 értékei nem ennyire meghatározottak, hanem köztes értékek is léteznek, amelyek megmutatják, hogy egy adott elem mennyire tartozik bele a halmazba: nagyon, kissé, kevésbé, vagy egyáltalán nem. Így minden U halmazbeli elemhez hozzárendelünk egy számot, általában 0 és 1 közötti értéket, mely jellemzi az elem halmazba tartozásának mértékét.
Tehát a különbség a bivalens és multivalens rendszer között a logikai kifejezések értékkészletében van. A bivalens rendszer esetében a {0,1} halmaz két elemet tartalmaz, míg a multivalens rendszer a [0,1] intervallumban végtelen sokat. Szükség van egy rendszerre, amely megadja a logikai értéket a [0,1] intervallumból.
Példa: Legyen egy A halmazunk, amely az emberek cm-ben kifejezett testmagassága, és
vegyük csak az egész értékeket: A = {130,131,…,183,…,250} A klasszikus halmazelmélet szerint, ha meg akarunk határozni két részhalmazt, M
jelölje a magas emberek halmazát, L az alacsony emberekét, akkor élesen kell találjunk egy elemet (például 170 cm), amelynél magasabb emberek az M = {170,171,…,250} halmazba tartoznak, míg az alacsonyabbak az L = {130,131,…,169} halmazba. A két részhalmaz, L, M, nem kell feltétlen diszjunkt legyen. Az életben viszont ilyen éles határokat gyakran nem szabhatunk, azt mondjuk valakire, hogy „a körülbelül 155 cm magas illet� nagyjából alacsonynak mondható”. Tehát az állításban van egyfajta bizonytalansági tényez�, „körülbelül”, illetve „nagyjából”. Az egyes elemekhez rendelt értékek éppen ezt a bizonytalanságot hivatottak kezelni. Azt mondjuk, hogy az egyes részhalmazok elemeihez hozzárendelünk egy-egy számot. Például: 5
L = {130(1),140(1),150(0)160(0.8),170(0.5),180(0.1),190(0)} M = {130(0),140(0),150(0),160(0.1),170(0.4),180(0.9),190(1),250(1)} A két halmazban lehetnek teljesen különböz� elemek is, és az elemekhez rendelt
számok között, sem halmazon belül, sem két halmaz között semmilyen összefüggés nincs el�írva, leszámítva azt, hogy szemantikai jelentéssel bíró adatoknak kell lenniük. Ha
Mesterséges Intelligencia Labor
60
mindezt a hozzárendelést függvényben jelenítem meg, tehát a halmaz elemeihez hozzárendelve ábrázoljuk a tagsági beletartozást jelöl� számokat, akkor a tagsági függvényt kapjuk a következ� ábrán.
Meghatározás Legyen A az U univerzum fuzzy részhalmaza (A⊂U) és legyen µ:Α→[0 1]
tagsági függvény, akkor az A fuzzy halmazt az U univerzumból a következ�képpen írjuk le:
� � ���� ����� � � • x–egy tulajdonságérték • µ( x) tagsági függvény: a tulajdonság-értékhez hozzárendeli a
halmazhoz tartozás mértékét [0,1] Diszkrét esetben a fuzzy halmazt a következ�képpen írjuk le:
� � ������� � ������� ��� ������� �������������
Folytonos esetben pedig az alábbi képlet alapján határozzuk meg: � � � ������
A tagsági függvények formája dönt� a fuzzy halmazok leírásában. Az alábbi ábrán
láthatjuk a fontosabb tagsági függvényformákat:
��� � � ������ � ���� ��� �� ������ ! � � ��"������ # ��$
��� � � "����� � ��� ���� �� ������ ! � � ��������� # ��$
x
a2 a1
x
µ(x)
a1 a2
XII. LABOR - Fuzzy logika
61
��� �%&'&( "����� � ��� ���� �� ������ ! � � ���) ��) �� ������ ! � � ��"����� # ��
$
��� �%&&'&&(
"����� � ��� ���� �� ������ ! � � ���������� ! � � �)�* ��* �) �����) ! � � �*"����� # �*$
��� � +,��,-.�/.
��� � �� � 0� 1� 0�-
Fuzzy halmazm�veletek. Hasonlóan a bináris halmazelméletben alkalmazott
halmazm�veletekhez (keresztmetszet, egyesítés, komplementer), a fuzzy logikában is meghatározhatjuk az említett m�veleteket.
Két fuzzy halmaz keresztmetszete (T-norma) ��23�� � 456������ �3�� vagy ��23�� � �����3�� Két fuzzy halmaz egyesítése (T-konorma vagy S norma) ��23�� � 4 �������� �3�� vagy
��23�� � ���� � �3�� �����3�� Az A fuzzy halmaz komplementer halmaza ���� � � ����
x
µ(x)
a1
x
µ(x)
x
µ(x)
c
x
µ(x)
a2 a1 a4 a3
a2 a1 a3
x
µ(x)
Mesterséges Intelligencia Labor
62
A fuzzy szabályozás A fuzzy szabályozó egyszer� felépítés�. Egy bemeneti, egy kiértékel� és egy
kimeneti szakaszból áll. A bemeneti rész letapogatja az érzékel�ket vagy más bemeneteket és leképezi �ket a megfelel� tagsági függvényekre és igazság-értékekre. A kiértékel� szakasz meghatározza a szabályok értékeit és azok kombinációit. Végül, a kimeneti szakasz visszaalakítja a kombinációk értékeit a meghatározott kimeneti szabályzó értékére.
Egy fuzzy szabályozó rendszernek négy f� komponensét különböztetjük meg:
a) fuzzy szabályok adatbázisa: ez a f� komponens, és ha.....akkor szabályok formájában tartalmazza azokat a fuzzy halmazokra épül� ismereteket, amelyekre a szabályozás logikája épül
b) következtet� rendszer: ennek a komponensnek a teljesítményét�l is függ a szabályozó rendszer hatékonysága
c) a fuzzyfikáció: ez nem más, mint a bemenet olyan módosítása, hogy a fuzzy rendszer használhassa
d) a konklúziónak a rendszer számára használható alakra hozását a defuzzyfikáló rendszer végzi A kiértékel� szakasz egy logikai szabály gy�jteményen alapszik, melynek elemei
HA-AKKOR (IF-THEN) mondatok. A HA részt antecedensnek és az AKKOR részt consequensnek (következtetésnek) nevezik. A szabályozási felhasználásokban az antecedens általában egy érzékel� hibája vagy hiba változási sebessége. A következtetés egy szabályzó parancskimenet. A fuzzy szabályozási rendszerek tipikusan több tucat szabállyal rendelkeznek.
Fuzzyfikálás A fuzzy logikát a valós világ nyelvének használata teszi igazán hatékony eszközzé. A nyelvi változók alkalmazása kulcsfontosságú a fuzzy szakért�i rendszerek és a fuzzy kontroll-rendszerek területén. A nyelvi változók értékei szavak, mondatok, vagyis hétköznapi nyelvi elemek lehetnek. A legtöbb valós helyzetben egy precíz válasz nem feltétlenül jelent optimális megoldást a problémára. A fuzzy logika kiterjeszti a szigorú igaz/hamis osztályozást olyan értékekkel, mint például a nagyjából igaz és a teljesen rossz. Ezeket a kifejezéseket nyelvi változóknak, magát a folyamatot fuzzyfikálásnak hívjuk.
Defuzzyfikálás A fuzzy szabályok kiértékelésével kapott eredmény szintén fuzzy, ezen értékek
valós értékekké való visszafordítását nevezzük defuzzyfikálásnak. Különböz� eljárások állnak rendelkezésünkre. Mivel egyidej�leg több kifejezés is érvényes lehet, ezért a defuzzyfikálási eljárás feladata, hogy ezek együttes figyelembevételével hozza meg a döntését. A három legáltalánosabban elterjedt eljárás a Center-of-Maximum (COM), a Center-of-Area (COA) és a Mean-of-Maximum (MOM). A COM módszer esetén a tagsági függvények maximumhelyének súlyozott átlagaként számolja ki a kimeneti értéket, ahol a súlyok a megfelel� szabályok kimeneti értékei.
A legelterjedtebb tagsági függvényforma a háromszög, de a trapéz és harang görbék is használatosak. A függvény formájánál fontosabb az elhelyezett függvények száma és helyzete. Háromtól hét függvényig általában elegend� a bemenet a szükséges tartomány lefedéséhez.
A ki és bemenetek kiválasztása. Úgy építjük fel a rendszert, mint egy jó szakember tenné. A szakember megmondja, hogy milyen bemeneteket használna a rendszer kézbentartására. Az els� lépés az, hogy a szabályozónak milyen információ áll
XII. LABOR - Fuzzy logika
63
rendelkezésére. Ugyanakkor jó, ha nem csak a bemen� jel, hanem annak a deriváltja (változási sebessége) is rendelkezésünkre áll.
Szabályozási ismeretek szabályokba ágyazása A szakember szabályozási ismereteinek lingvisztikus leírását keressük. Ismernünk
kell a ki és bemenetek univerzumát és ezen univerzumoknak megfelel� fuzzy halmazok pontos jelentését. Példa: egy bemenet lehet h�mérséklet, ennek megfelel egy h�mérséklettartomány, és ezt az univerzumot lefedjük fuzzy halmazokkal („nagyon alacsony”, „alacsony”, „közepes”, „magas”, „nagyon magas”). Hasonló módon járunk el minden ki és bemeneti változóval. Nagyon fontos hogy helyesen megbecsüljük a bemen� jelek alsó és fels� korlátjait.
Legyen két bemeneti és egy kimeneti fuzzy szabályzó. A bemen� változó A és B, míg a kimen� változó C. A változók univerzumának lefedése (fuzzy halmazok):
A szabályoknak megfelel� tudásbázist a következ� táblázat tartalmazza
\A Ba Ma a Ma Ba
Bb
Mb
bb Mc Mc
Mb c c
Bb Nem kötelez� minden kombinációra épül� szabály használata, mert nagyon
korlátozza a feldolgozási sebességet. A szabályokat a teljes dinamikájában kell átgondolni. Nagyon fontos, hogy olyan szabályaink is legyenek, amelyek „beindítják” és „leállítják” a szabályzó rendszert, ugyanakkor a be és kimeneti jelek id�beni változatosságát is figyelembe kell venni. A rendszer dinamikájának követése benne kell legyen a tudásbázisban. Ez azt jelenti, hogy nem tölthetjük ki sablonosan a szabálytáblázatot.
c1 c2 c6 c7 c3 c4 c5 c8
NMc NBc Zc PMc PBc
b1 b2 b6 b7 b3 b4 b5 b8
NMb NBb Zb PM PBb
a1 a2 a3 a4 a5
NMa NBa Za PMa PBa
Mesterséges Intelligencia Labor
64
Számoljuk ki a rendszer kimenetelét, ha a két bemen� érték a=ax1 és b=bx1. A táblázatnak megfelel�en a következ� tagsági függvények aktívak a bemeneti
(a,b) értékpárra: • ax1∈[a2, a4] tehát a Za tagsági függvény adja az [a2, a4] halmazhoz való
hozzátartozási értéket, • ax1∈[a1, a3] tehát a NMa tagsági függvény adja az [a1, a3] halmazhoz való
hozzátartozási értéket, • bx1∈[b5, b8] - tehát a PMb tagsági függvény adja a [b5, b8] halmazhoz való
hozzátartozási értéket, • bx1∈[b3, b6] tehát a Zb tagsági függvény adja a [b3, b6] halmazhoz való
hozzátartozási értéket. Látható, hogy mindkét bemenetre két tagsági függvény aktiválódik, ax1-re a Za és
NMa a bx1 –re pedig a Zb és PMb ami összesen négy szabályt jelent, ezek a szabályok a következ�ek: Ha a=NMa és b=Zb akkor c=NMc Ha a=NMa és b=PMb akkor c=Zc Ha a=Za és b=Zb akkor c=PMc Ha a=Za és b=PMb akkor c=Zc Az alábbi négy rajzon a négy szabály azonosítható. Minden rajzon látható az a és b
bemenet, valamint a c kimenet, de minden univerzumra csak egy, a szabálynak megfelel� tagsági függvény van feltüntetve.
Amint látható, a szabályokba a két bemenet között és m�veletet kell elvégezni. A bemeneti érték alapján mindkét tagsági függvényre kiszámoljuk a tagsági értékeket µNMa és µZb és a kimeneti univerzumban a szabálynak megfelel� tagsági függvényen elvégzünk min(µNMa, µZb) értékkel egy alfa vágást. Ezeket a m�veleteket megismételjük mind a négy szabályra.
Ha a=NMa és b=Zb akkor c=NMc
a1 a2 a3 b6 b7 b5 b8 c3 c4 c5 c6
NMa PM Zc
a1 a2 a3 b6 b3 b4 b5 c1 c2 c3 c4
NMa Zb NMc
XII. LABOR - Fuzzy logika
65
A négy szabály közül bármelyik érvényes lehet, tehát a kimeneti univerzum tagsági
függvényein elvégezett alfa vágatból származó részhalmazok egyesítéséb�l kapjuk, amint az alábbi ábrán látható, majd valamelyik típusú defuzzyfikálási algoritmust alkalmazva kiszámoljuk a kimenetet.
Deffuzyfikáló eljárások A súlypont módszer:
A kimen� értéket, a kapott fuzzy választerületeket, mint tömeget tekintve, kiszámítjuk a megfelel� er�k párhuzamos összetevéséb�l származó ered� er�t, amelynek a támadáspontjának c értéke a keresett defuzzyfikált érték.
Az alábbi ábrán látható egy példa.
Felez� módszer:
Annak a vertikális elválasztó vonalnak az ordináta pontját jelöli, mely vonal a fuzzy válasz idomot két egyenl� terület� részre osztja, mint ahogyan az az alábbi ábrán is látható.
c 78999 � 7�999 � 7�999 7�999 7�999
c1 c2 c6 c7 c3 c4 c5 c8
NMc NBc Zc PM PBc
a2 a3 a4 b6 b7 b5 b8 c3 c4 c5 c6
PMZa Zc
a2 a3 a4 b6 b3 b4 b5 c6 c7 c5 c8
Zb Za PMc
Mesterséges Intelligencia Labor
66
Maximumok : Middle of Maximum[MOM], Smallest of Maximum[SOM], Largest
of Maximum [LOM] ezek az értékek néha egybe is eshetnek, de a következ� ábrán, mivel a maximum ténylegesen egy kompakt vízszintes határ, ezért a MOM, SOM és LOM különböz� értéket fog felvenni.
A maximum közepe (Center of Maximum COM):
VII. A Fuzzy Logic Toolbox rövid ismertetése A Matlab parancsablakába fuzzy utasítás beírása után megjelenik egy grafikus
felület, amely a fis változóban tárolt fuzzy szabályozó tulajdonságait mutatja:
Mint látható, a szabályozónak két bemenete és egy kimenete van, az ÉS operátort, valamint az implikációt a szorzás (prod), a VAGY operátort a maximum, a részkonklúziók egyesítését az összeadás (sum) m�veletekkel végezzük, a defuzzifikálást pedig a mean of maxima (maximumok középértéke) eljárással.
c
µc
COM
CMOM
c
µc
CSOCLO
cF
c
µc
XII. LABOR - Fuzzy logika
67
A File menü parancsainak segítségével lehet betölteni ill. elmenteni egy fuzzy szabályozót, úgy lemezre, mint a Matlab változói közé. Innen indítható egy teljesen új szabályozó szerkesztése is.
Az Edit menü alatti utasításokkal adhatunk a szabályozónak további bemeneteket, illetve kimeneteket, és a fenti grafikus felületen kijelölt bemeneti vagy kimeneti változókat eltávolíthatjuk.
A View menüpont alatti parancsok lehet�séget nyújtanak 1. az egyes be/kimeneti változókhoz rendelt tagsági függvények szerkesztésére 2. a szabálybázis szerkesztésére 3. a szabályozó viselkedésének grafikus megjelenítésére különböz� bemeneti
értékek esetében 4. a bemenet-kimenet függvény hiperfelületének megjelenítésére Az alábbiakban ezek rövid részletezése következik: 1. Membership Function Editor
Az Edit menüpont parancsai szolgálnak új tagsági függvények hozzárendelésére,
illetve tagsági függvények eltávolítására. A „FIS Variables” felirat alatt a megfelel� változóra kattintva megjelennek az ahhoz rendelt tagsági függvények, illetve (a „Current variable” ablakrészben) a változó értelmezési tartománya. Egy tagsági függvény grafikonjára kattintva pedig a „Current membership function” ablakrész mutatja annak tulajdonságait. (Pl. „trimf”: háromszög-alakú tagsági függvény)
2. Rule Editor
Mesterséges Intelligencia Labor
68
3. Rule Viewer
Ebben az ablakban látható a három szabály, az egyes szabályok premisszáinak
teljesülési értékei (körülbelül) az „Input” mez�ben megadható bemenet esetén, a részkonklúziók, azok egyesítése, végül pedig a kimeneti érték.
Surface Viewer
Itt látható a szabályozó kimenete a bemeneteinek függvényében. A felület
fromájából következtetni lehet arra, hogy a megírt szabályok helyesek-e vagy nem. Feladat
1) Tervezzünk egy fuzzy szabályzót, amely egy terem h�mérsékletét szabályozza. A rendszernek a két bemenete a h�mérséklet és a h�mérséklet-változás. A terem h�mérsékletét 0 és 30 fok között szeretnénk szabályozni. A rendelkezésünkre álló h�mér� egy folytonos feszültséget ad. 0 fokra az érzékel� 0 V-os feszültséget, míg 30 fokra 5 V-os feszültséget ad.
A végrehajtó egység egy szervomotor, amelynek segítségével szabályozzuk a h�cserél� kaloriferbe beáramló meleg víz hozamát.
• tervezzük meg a két bemeneti és kimeneti univerzumra a tagsági függvényeket • írjuk fel a szabálytáblázatot
XII. LABOR - Fuzzy logika
69
• különböz� bemeneti elempárokra különböz� típusú defuzzyifikáló eljárást alkalmazva számoljuk ki a szabályozó kimenetét
• milyen lehet�ségek vannak a szabályzó hangolására?
2) A rendelkezésünkre áll egy mérlegkar, amelynek két végén két egyenáramú motorral vezérelt propeller található. Egy interfészen keresztül a PC-r�l MATLAB programból szabályozni lehet a két motor fordulatszámát és mérni tudjuk a karnak a vízszintessel bezárt szögét. A feladat az lenne, hogy egy fuzzy szabályzó segítségével a kart egy el�írt szögre szabályozzuk. A szög beolvasására és a vezérl�jelek kiküldésére rendelkezésre áll egy adatgy�jt� kártya. Az adatgy�jt� kártya két analóg kimenetén vezéreljük az egyenáramú motorok fordulatszámát, és egy analóg bemeneti csatornán beolvassuk a kar állását. A rendszer inicializálásához és az adatcséréhez szükséges MATLAB függvények egy példaprogramban érhet�ek el.
Használva a MATLAB fuzzy következtet� rendszerének vizuális tervez�felületét, készítsünk el egy fuzzy szabályzót, amely a kart egy el�írt értékre szabályozza.
Mi kell legyen a szabályzó bemenete, ha egy követ� szabályzót szeretnénk megtervezni?
Ábrázoljuk grafikusan a rendszer válaszát.