XII. LABOR - Fuzzy logika
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
59
Mesterséges Intelligencia Labor
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) x a1
a2
" "
x a1
60
a2
$
!
#
!
#
$
XII. LABOR - Fuzzy logika
( &
µ(x)
' & %
x a1
a2
a3
( & &
µ(x)
' & &
x a1
a2
a3
%
a4
µ(x)
"
)
)
!
!
"
#
"
*
*
!
"
+
!
)
)
x
$
!
#
,
) *
*
$
,- . /.
c µ(x)
0
x
1
0
-
µ(x)
x a1 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
4 56
23
3
3
vagy
Két fuzzy halmaz egyesítése (T-konorma vagy S norma)
23
23
4
3
Az A fuzzy halmaz komplementer halmaza
3
vagy 3
61
Mesterséges Intelligencia Labor
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
62
XII. LABOR - Fuzzy logika
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): NBa
NMa
a1
Za
a2
NBb
b2 b3
NBc
Zb
b4
NMc
PBa
a4
a3
NMb
b1
PMa
a5
PM
b5
b6
Zc
PMc
PBb
b7
b8 PBc
c8 c1 c2 c3 c4 c5 c6 c7 A szabályoknak megfelel tudásbázist a következ táblázat tartalmazza Ma
a
bb
Mc
Mc
Mb
c
c
\A
Ba
Ma
Ba
Bb Mb
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.
63
Mesterséges Intelligencia Labor
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 Ha Ha Ha
és és és és
a=NMa a=NMa a=Za a=Za
b=Zb b=PMb b=Zb b=PMb
akkor akkor akkor akkor
c=NMc c=Zc c=PMc 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 NMa
a1
a2
Zb
a3
b3
b4
NMa
a1
64
a2
b5
NMc
b6
c1
c2 c3
PM
a3
b5
b6
b7
c4
Zc
b8
c3
c4
c5
c6
XII. LABOR - Fuzzy logika
Za
a2
Zb
a4
a3
b3
b4
Za
a2
b5
PMc
b6
c5 c6 c7 Zc
PM
a4
a3
b5
b6
c8
b7
b8
c3
c4
c5
c6
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. NBc
NMc
c1
Zc
c2 c3
c4
PM
PBc
c5 c6 c7
c8
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.
c
Felez módszer:
999 7
999 78
999 7 999 7
999 7
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ó.
65
Mesterséges Intelligencia Labor
µc c cF 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. µc c CSO CMOM CLO A maximum közepe (Center of Maximum COM): µc
c CO M 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.
66
XII. LABOR - Fuzzy logika
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
67
Mesterséges Intelligencia Labor
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
68
XII. LABOR - Fuzzy logika
• •
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.
69