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 halmazmveletek, 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értelmen megállapítható, egy tetszleges elemrl el tudjuk dönteni, hogy eleme-e az adott halmaznak vagy sem. Tehát az, hogy { a U} {0,1}, egyértelmen eldönthet. Ha hozzá tartozik, akkor egy logikai igaz, ha nem, azt egy logikai hamis értékkel jellemeztük. Egyszersé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övetkezképpen írjuk le: egy tulajdonságérték µ( ) 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övetkezké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: µ()! "# a 1 a 2 "! # a 1 a 2 60
$ $ XII. LABOR - Fuzzy logika µ() µ() µ() a 1 a 2 a 3 a 1 a 2 a 3 a 4 " ( &! ' ) & )! % "# ( & " &!! ) ' * & * )! * ) % "# * c +,,-. /. µ() µ() 0 1 0 - a 1 Fuzzy halmazmveletek. Hasonlóan a bináris halmazelméletben alkalmazott halmazmveletekhez (keresztmetszet, egyesítés, komplementer), a fuzzy logikában is meghatározhatjuk az említett mveleteket. 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 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ékelket 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étl 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 gyjtemé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érti 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 egyidejleg 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-Maimum (COM), a Center-of-Area (COA) és a Mean-of-Maimum (MOM). A COM módszer esetén a tagsági függvények maimumhelyé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 hmérséklet, ennek megfelel egy hmé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): NB a NM a Z a PM a PB a a 1 a 2 a 3 a 4 a 5 NB b NM b Z b PM PB b b 1 b 2 b 3 b 4 b 5 b 6 b 7 b 8 NB c NM c Z c PM c PB c c 1 c 2 c 3 c 4 c 5 c 6 c 7 c 8 A szabályoknak megfelel tudásbázist a következ táblázat tartalmazza \A B a M a a M a B a B b M b b b Mc Mc M b c c B b 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 idbeni 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=a 1 és b=b 1. A táblázatnak megfelelen a következ tagsági függvények aktívak a bemeneti (a,b) értékpárra: a 1 [a 2, a 4 ] tehát a Za tagsági függvény adja az [a 2, a 4 ] halmazhoz való hozzátartozási értéket, a 1 [a 1, a 3 ] tehát a NMa tagsági függvény adja az [a 1, a 3 ] halmazhoz való hozzátartozási értéket, b 1 [b 5, b 8 ] - tehát a PMb tagsági függvény adja a [b 5, b 8 ] halmazhoz való hozzátartozási értéket, b 1 [b 3, b 6 ] tehát a Zb tagsági függvény adja a [b 3, b 6 ] halmazhoz való hozzátartozási értéket. Látható, hogy mindkét bemenetre két tagsági függvény aktiválódik, a 1 -re a Za és NMa a b 1 re pedig a Zb és PMb ami összesen négy szabályt jelent, ezek a szabályok a következek: Ha a=nm a és b=z b akkor c=nm c Ha a=nm a és b=pm b akkor c=z c Ha a=z a és b=z b akkor c=pm c Ha a=z a és b=pm b akkor c=z c 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 mveletet 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 mveleteket megismételjük mind a négy szabályra. Ha a=nm a és b=z b akkor c=nm c NM a Z b NM c a 1 a 2 a 3 b 3 b 4 b 5 b 6 c 1 c 2 c 3 c 4 NM a PM Z c a 1 a 2 a 3 b 5 b 6 b 7 b 8 c 3 c 4 c 5 c 6 64
XII. LABOR - Fuzzy logika Z a Z b PM c a 2 a 3 a 4 b 3 b 4 b 5 b 6 c 5 c 6 c 7 c 8 Z a PM Z c a 2 a 3 a 4 b 5 b 6 b 7 b 8 c 3 c 4 c 5 c 6 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ébl kapjuk, amint az alábbi ábrán látható, majd valamelyik típusú defuzzyfikálási algoritmust alkalmazva kiszámoljuk a kimenetet. NBc NMc Zc PM PBc Deffuzyfikáló eljárások A súlypont módszer: c 1 c 2 c 3 c 4 c 5 c 6 c 7 c 8 A kimen értéket, a kapott fuzzy választerületeket, mint tömeget tekintve, kiszámítjuk a megfelel erk párhuzamos összetevésébl származó ered ert, 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: c 7999 79997 8 9997 999 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ó. 7999 65
Mesterséges Intelligencia Labor µ c c c F Maimumok : Middle of Maimum[MOM], Smallest of Maimum[SOM], Largest of Maimum [LOM] ezek az értékek néha egybe is eshetnek, de a következ ábrán, mivel a maimum 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 C SO C MOM C LO A maimum közepe (Center of Maimum COM): µ c CO M VII. A Fuzzy Logic Toolbo 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: c 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 maimum, a részkonklúziók egyesítését az összeadás (sum) mveletekkel végezzük, a defuzzifikálást pedig a mean of maima (maimumok 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 lehetsé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 mezben 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 hmérsékletét szabályozza. A rendszernek a két bemenete a hmérséklet és a hmérséklet-változás. A terem hmérsékletét 0 és 30 fok között szeretnénk szabályozni. A rendelkezésünkre álló hmé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 hcseré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 lehetsé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-rl 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érljelek kiküldésére rendelkezésre áll egy adatgyjt kártya. Az adatgyjt 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 érhetek el. Használva a MATLAB fuzzy következtet rendszerének vizuális tervezfelü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