Content extract
KANDÓ KÁLMÁN MŰSZAKI FŐISKOLA INFORMATIKAI INTÉZET IRÁNYÍTÁSTECHNIKA FUZZY IRÁNYÍTÁSTECHNIKA BEVEZETÉS ÉS LABORATÓRIUMI GYAKORLATOK ÍRTA: Bitay György BEVEZETÉS 2 Amikor a mindennapi életben valakit vagy valamit egy jelzővel illetünk, akkor azt a valamit vagy valakit beillesztjük az ezzel a sajátsággal rendelkező dolgok halmazába. Jelzőink azonban nem rendelkeznek éles határokkal, nem precízek. Például, ha azt mondjuk valakiről, hogy magas, eltekintve attól a ténytől, hogy ennek a megítélése helytől, néptől, nemtől stb. változik, állításunk nem takar egy konkrét értéket, sőt, még egy éles intervallumot sem. Nálunk, (ha nem a kosárlabdacsapatról van szó), egy 180 centiméteres ember magasnak számít. De mit mondjunk egy 179 centiméteres emberről? Azt mondhatjuk erre, hogy ő is magas, egy picit kevésbé, mint az előző, és ahogy megyünk lejjebb a magassággal, úgy csökken annak a mértéke, hogy az illető
beleillik a magasak sorába. Jelzőink tehát elmosódott határú intervallumok, és ennek köszönhetően, pár fogalom elég az emberi magasság leírására, mondjuk, 120 centimétertől 250 centiméterig: törpe, alacsony, közepes, magas, óriás. Ha ezt valahogy grafikonon akarnánk ábrázolni, azt a pontot, ahol, vagy ahonnan kezdve az állításunk tárgya teljesen megfelel ezen tulajdonságnak, jellemző értéknek nevezhetnénk, és egyet adnák neki értékként a koordinátán, majd ahogy távolodnánk ettől az értéktől az abcisszán, úgy csökkenne az egyes egészen a zéróig. Ezzel egy időben nőne a megfeleltetés mértéke a szomszédos fogalom számára Bevezetés a fuzzy logika elméletébe A fuzzy logika egyik alapfogalma a fuzzy halmaz, ami a klasszikus halmazfogalom kiterjesztése. A klasszikus értelemben vett halmaz jelölhető A={ x| P(x)} ahol x a P tulajdonságokkal bíró A halmaz egy eleme, és ∀x x∈A. Véges halmazt definiálhatunk az
elemek felsorolásával: A={x1,x2,xi,}, és ∀xi xi∈A. A halmazokra definiálhatunk műveleteket pl. két halmaz A és B uniója egy olyan halmaz C melyre: C =A∪B (∀x, x∈A vagy x∈B), vagy két halmaz A és B metszete egy olyan halmaz C melyre: C =A∩B (∀x, x∈A és y∈B), stb . Ha X az univerzális halmaz (az összes használt halmaz halmaza), akkor egy A halmaz jellemezhető a µ(x) karakterisztikus függvényével oly módon, hogy minden x elemre nézve µ(x)=1, ha x hozzátartozik A-hoz és µ(x)=0, ha x nem tartozik A-hoz. Tehát µ(x) két diszkrét (crisp) értékkel rendelkezik: 1, 0. Egy fuzzy halmaz A meghatározható x, µ(x) párosok halmazával, A={x, µ(x)| x∈X}, ahol x az X crisp halmaz (amely halmazt univers of discourse-nak, a szóban forgó elemek összességének neveznek) egy eleme és µ(x) (amit x tagsági függvényének neveznek az A fuzzy halmazban) mely egy [0 1] intervallum valamely értékét veheti fel, azaz a tagsági függvény X-nek a [0
1] intervallumra való egy leképezését jelenti. Egy fuzzy halmaz B tartalmazza A fuzzy halmazt (azaz A részhalmaza B-nek) B ⊇ A, akkor és csak akkor, ha µ(x)Α≤ µ(x)Β minden x-re. Két fuzzy halmaz A és B uniója egy olyan fuzzy halmaz C, ahol C=A∪B, melynek tagsági függvénye a következőképpen fejezhető ki A és B tagsági függvényeivel: µΑ(x)=µΑ(x)∨µΒ(x) ahol ∨ logikai OR operátor Két fuzzy halmaz A és B metszete egy olyan fuzzy halmaz C, ahol C=A∩B, melynek tagsági függvénye a következőképpen fejezhető ki A és B tagsági függvényeivel: µC(x)=µΑ(x)∧µΒ(x) ahol ∧ logikai AND operátor. Egy fuzzy A halmaz ¬A komplemense egy olyan fuzzy halmaz melyre: µ(x)¬Α=1-µ(x)Α. Mi a fuzzy halmaz műveleteket, mint a tagsági függvényekkel végzett logikai műveleteket definiáltuk. Ez a halmazelmélet és az ítéletkalkulus közti izomorfizmus miatt volt lehetséges (sőt a Bool algebra és az előzők között). Már most az a
kérdés, hogy milyen függvények használhatók, mint általánosított AND és OR operátorok, a sokértékű (végtelenértékű) fuzzy logika esetében? A válasz az ú.n trianguláris normák (triangular norms) használata A trianguláris normák olyan kétváltozós függvények, melyek bizonyos feltételeket elégítenek ki. Az ú.n T-norma használható, mint általánosított AND operátor, az S-norma (vagy Tkonorma) mint általánosított OR operátor A T-normára felírható feltételek a következők: T( 0,0)=T(a,0)=T(0,a)=0 T(a,1)=T(1,a)=a T(a,b)<=T(c,d) if a<=c and b<=d T(a,b)=T(b,a) T{a,T(b,c)}=T{T(a,b),c} --határfeltételek --monotonicitás --kommutativitás --asszociativitás Az S-normára felírható feltételek a következők: S(1,1)=S(a,1)=S(1,a)=1 S(a,0)=S(0,a)=a S(a,b)<=S(c,d) if a<=c and b<=d S(a,b)=S(b,a) S{a,S(b,c)}=S{S(a,b),c} --határfeltételek --monotonicitás --kommutativitás --associativitás Az első követelmény a
hagyományos halmazok korrekt általánosítását írja elő, a második magában foglalja, hogy A és B fuzzy halmazok tagsági függvényeinek csökkenése nem hozhatja magával A és B uniója vagy metszete tagsági függvényének növekedését, a harmadik az operátorok használatánál a fuzzy halmaz elemeinek sorrendje közömbös, végül a negyedik követelmény megengedi az unió vagy a metszet használatát bármennyi halmaz bármilyen sorrendű párosításában. Sokfajta T- és S-normát ajánlottak, de a leggyakrabban használt T-norma a minimum és a szorzat operátor, a leggyakrabban használt S-norma a maximum és a valószínűségi összeg (a+b-ab) operátor. A legfontosabb operátorok a minimum és a maximum operátor, csak ezek elégítik ki a disztributivitás törvényét: µA∪(B∩C)(x)=µ(Α ∪Β)∩(Α∪C)(x) µΑ∩(Β∪C)(x)=µ(A∩B)∪(A∩C)(x). A maximum és a minimum operátoroknak van egy bizonyos hibatűrő képessége, mert ha eldőlt, hogy
melyik változó a kisebb (vagy nagyobb), a formula nem függ tovább csak egy változótól. Be lehet bizonyítani, hogy a minimum operátor a T-normák közül a legnagyobb, a maximum operátor az S-normák közül a legkisebb. A klasszikus logikában a logikai formulákat melyek értéke mindig igaz, függetlenül a bennük szereplő változók értékétől, tautológiáknak nevezzük. Néhányat közülük deduktív következtetésekre használunk. Ezeket következtetési szabályoknak hívják A legfontosabb ilyen tautológia a Modus ponens: Modus tollens: ∧(a⇒b))⇒b (¬b∧(a⇒b))⇒¬a ((a⇒b)∧(b⇒c))⇒(a⇒c) (a Hipotetikus syllogizmus: (a⇒b)⇒(¬b⇒¬a) Kontrapozíció: A leggyakrabban használt következtetési szabály a modus ponens, melyet a következőképpen jelölhetjük: premissza 1 (vagy előzmény, a tény): x A (x ∈ A) premissza 2 (a szabály): ha x A (x ∈ A) akkor y B (x ∈ B), implikáció
--------------------------------------------------------------------------------------------------következmény (vagy következtetés): y B (y ∈ B) Miután itt más-más halmazhoz (A és B) tartozó két elem, x és y, viszonyáról van szó, és az elemek viszonyát a relációk fejezik ki, ezért néhány szót kell ejtenünk a hagyományos majd a fuzzy relációkról. Relációk Legyen két crisp halmaz A és B, melyek elemei x és y, azaz (∀x), (∀y) x∈A és y∈B, akkor a két halmaz Descartes szorzatán A×B azt a halmazt értjük, melynek elemei a két halmaz elemeiből alkotott rendezett párok, azaz (∀x),(∀y) (x,y)∈A×B. Az A×B Descartes szorzat egy részhalmaza a gráf, más megfogalmazásban, a (binér) reláció: G ⊆A×B és (x,y)∈G. A reláció jelölése még: xRy Egy gráf első és második projekciójának nevezik az A, ill. a B halmaz azon x, ill y elemeinek A* ill. B* részhalmazát, amelyekből álló (x,y) rendezett párok G-hez tartoznak, azaz:
A* =G pr1 = {x/(x,y)∈G}, ill. B* =G pr2 = {y/(x,y)∈G}. Ebből következik, hogy G ⊂ A*×B ⊂ A×B. A relációk maguk is halmazok, így az egyazon A×B Descartes szorzatból származó relációkra érvényesek a halmazokra értelmezett operációk, úgymint az unió, metszet, complemens stb. Mivel a reláció (gráf) egy részhalmaz, definiálható a karakterisztikus függvénye segítségével: minden (x,y)∈A×B párra µ(x,y)=1 ha (x,y)∈R és µ(x,y)= 0 ha (x,y)∉R. Legyen két crisp halmaz A és B, melyek elemei x és y, azaz (∀x),(∀y) x∈A és y∈B. Fuzzy relációnak nevezzük és R-rel jelöljük: ∀(x,y)∈A×B : µR(x,y)∈M=[0,1]. Egy fuzzy reláció első projekciója: µR(1)(x)= MINy µR(x,y), második projekciója: µR(2)(y)= MINx µR(x,y). Két fuzzy reláció uniója: P=R∪L egy olyan fuzzy reláció, amelyre µR∪L(x,y)=MAX[µR(x,y),µL(x,y)] Két fuzzy reláció metszete: P=R∩L egy olyan fuzzy reláció, amelyre
µR∩L(x,y)=MIN[µR(x,y),µL(x,y)] Legyen két fuzzy reláció R⊂ X×Y és L⊂ Y×Z, akkor a max-min kompozíciót a következőképpen definiálhatjuk: RoL olyan fuzzy reláció, hogy µRoL(x,z)=MAXy[MIN(µR(x,y), µL(y,z))], ahol x∈X, y∈Y és z∈Z. Tekintsünk egy E1 halmaz leképezését E2 halmazba, amit így jelölünk: E1E2 ahol ha x∈E1 és y∈E2 , y∈Γ{x} Legyen µA(x) a tagsági függvénye A⊂ E1 µA(x); akkor a Γ leképezés indukál egy B⊂ E2 fuzzy halmazt E2-ben melynek tagsági függvénye: µB(y)=MAXx∈Γinv{y}[µA(x)], ha Γinv{y}≠0 ahol Γinv = Γ -1 inverz leképezés, és µB(y)=0 ha Γinv{y}=0 A függvény fogalma kifejezhető a x∈E1 és y∈E2 halmazokra a következő frázissal: ”ha x=a, akkor y=b az f függvény által“ , vagy xy, vagy másképpen y=f(x). Legyen X∈E1 és Y∈E2 , és tekintsük a következő R fuzzy relációt E1 és E2 között. Ekkor definiálhatjuk ha X=A akkor Y=B az R fuzzy reláción keresztül, és írhatjuk: A
R B Ha az R fuzzy reláció tagsági függvénye µR(x,y), µA(x) az A fuzzy halmazé, µB(y) az B fuzzy halmazé, akkor: µB(y)= MAXx∈E1MIN[µA(x), µR(x,y)] vagy másképpen írva ∨x[µA(x)∧µR(x,y)] azaz B= AoR. A fuzzy okfejtés (más néven közelítő okfejtés) egy következtetési eljárás amelyet arra használunk, hogy következtetéseket vonjunk le fuzzy ha-akkor szabályok halmazából és egy vagy több előfeltételből. A fuzzy okfejtés bevezetése előtt beszélnünk kell a következtetés kompozíciós szabályáról, (compositional rule of inference, Zadeh) ami a fuzzy okfejtés alapvető elve. A következtetés kompozíciós szabálya a következő ismerős fogalom kiterjesztése. Tegyük fel, hogy van egy görbénk y=f(x) amely meghatározza x és y viszonyát. Ha adva van x=a, akkor y=f(x)-ból következik, hogy y=b=f(a). [2] Első lépésként általánosítsuk ezt úgy, hogy a érték helyett legyen egy intervallum és f(x) legyen egy
intervallumfüggvény. Hogy megtalálhassuk az eredmény intervallum értékét y=b, amely x=a intervallumnak felel meg, mi először megalkotjuk a-nak a cilindrikus kiterjesztését (azaz kiterjesztjük a értelmezési tartományát X-ről X×Y-ra, egy dimenzióról kettőre), majd megkeressük ennek a metszetét az intervallum változójú görbével. I-nek a vetülete az y tengelyre adja az y=b intervalt. Tovább lépve az általánosítással feltesszük, hogy A egy fuzzy halmaza X-nek, és F egy X×Y-on értelmezett fuzzy reláció. Hogy megtaláljuk az eredményül szolgáló B fuzzy halmazt, mi ismét megalkotjuk A-nak a cilindrikus kiterjesztését c(A)-t, (azaz kiterjesztjük A értelmezési tartományát X-ről X×Y-ra, hogy megkapjuk c(A)-t). c(A) és F metszete képezi az analógiáját az előbb tárgyalt I metszetnek: Az y tengelyre vetítve a c(A)∩F metszetet, nyerjük y-t mint egy fuzzy halmazt B-t az y tengelyen. Legyenek µA, µc(A), µB és µF a tagsági
függvényei A -nak, c(A)-nak, B-nek és F-nek, ahol µc(A)(x,y) = µA(x). Ekkor: µc(A) ∩F(x,y) = MIN[µc(A)(x,y), µF(x,y)]= MIN[µA(x), µF(x,y)]. Az y tengelyre vetítve a c(A)∩F metszetet nyerjük: µA(y)=MAXxMIN[µA(x), µF(x,y)]= ∨x[µA(x)∧µF(x,y)]. Ezt a képletet max-min kompozíciónak nevezik (ahogy már láttuk fentebb), és így jelölik B= AoF. A max-min kompozíción alapuló Fuzzy okfejtés Legyenek A, A’, B fuzzy halmazok X-ben, X-ben, Y-ban.Tegyük fel, hogy az AB fuzzy implikációt mint az X×Y szorzathalmazon értelmezett R fuzzy relációval fejezhetjük ki. Ekkor a B’ fuzzy halmaz, melyet x A előfeltétel és “ha x A akkor y B” fuzzy szabály által kaphatunk, meghatározható a µB’(y)=MAXxMIN[µA’(x), µR(x,y)]= ∨x[µA’(x)∧µR(x,y)], vagy B’= A’oR=A’o(AB) Most már az általánosított modus ponens használható következtetések származtatására feltéve, hogy fuzzy implikációnkat AB–t, mint megfelelő binér fuzzy
relációt definiáltuk. premissza 1 (vagy előzmény, a tény): x A, premissza 2 (a szabály): ha x A akkor y B, ----------------------------------------------------------------------------------------következmény (vagy következtetés): y B Ahol A közel van A-hoz és B közel van B-hez. Ez a szabály a fuzzy ha. , akkor szabály, a fuzzy implikáció A következmény olyan tagsági értékkel igaz, amennyire az előzmény igaz. Rendszerint nemcsak egy előzmény van, hanem kettő vagy több is. Ebben az esetben a ha , akkor szabály a következőképpen néz ki: ha x1 A1 és x2 A2 és .xn An akkor y B Az előzmény minden tagjának megvan a saját tagsági értéke, és nekünk össze kell ezeket vonnunk, hogy egy közös tagsági értékhez jussunk, amely a szabály hatásfokát (firing strength) vagy a szabály teljesülésének mértékét adja. Az összevonás operátorai a T- és S-normák Fuzzy modellek (Fuzzy Következtetési Rendszerek, Fuzzy Inference Systems) A
Fuzzy Következtetési Rendszer egy népszerű számítási keretrendszer, mely a fuzzy halmazelmélet, a fuzzy ha ., akkor szabályok és a fuzzy okfejtés fogalmaira épült Már sikeresen alkalmazták olyan területeken, mint az automatikus irányítás, döntéselemzés, szakértői rendszerek, stb. A fuzzy következtetési rendszerek alapstruktúrája három fogalmi összetevőt tartalmaz: • A szabályrendszert (rule base), amely fuzzy szabályok egy választékát tartalmazza, • egy adatbázist vagy szótárt, amely meghatározza a fuzzy szabályok tagsági függvényeit, • egy okfejtési mechanizmust, amely végrehajtja a következtetési procedúrát a szabályokon egy adott feltételen, hogy egy ésszerű kimenetet vagy következtetést nyerjünk. Fuzzy A Következtetési Rendszer blokkvázlata [2] A fuzzy modelleknek három típusa van, melyek a kimenetben különböznek egymástól: − A Mamdani-féle fuzzy modell kimenetei fuzzy halmazok konvex tagsági
függvényekkel. A teljes fuzzy kimenetet az egyes kimeneteken (amelyek egyenlők minden egyes szabály hatásfokának (firing strength) és a kimeneti tagsági függvényének minimumával) alkalmazott max operátorral kapjuk. Különböző sémákat ajánlottak a teljes fuzzy kimenet végső crisp értékének kiválasztására, úgymint a tagsági függvénygörbe alatti területének középpontja (center of area), a maximumok átlaga (mean of maximum), stb. − A Tsukamoto-féle fuzzy modell kimenetei fuzzy halmazok, monoton tagsági függvényekkel. A teljes fuzzy kimenet minden egyes szabály hatásfokának (firing strength, amely a premissza rész tagsági értékeinek minimuma vagy szorzata) és a kimeneti tagsági függvények súlyozott átlaga. - A Sugeno-Tagaki-féle modell kimenetei crisp egyenletek. Minden egyes szabály kimenete a bemeneti termek plusz egy konstans term lineáris kombinációja, a végső kimenet az egyenkénti kimenetek súlyozott átlaga. Egy
fuzzy rendszer építése a fuzzyTECH 4.0 MCU-320 Explorer segítségével Egy fuzzy rendszer felépítése magában foglalja mindazon dolgokat, amikről eddig szó volt: tagsági függvényeket, fuzzy logikai operátorokat és ‘ ha . akkor ’ szabályokat A rendszer építése öt részre bontható: − a bemenő változók crisp -->fuzzy átalakítása: fuzzifikálás, − fuzzy operátorok (AND vagy OR) alkalmazása a premissza részben, − implikáció (premissza --> konklúzió), − az érintett szabályok konklúzióinak összevonása, − a kimeneti fuzzy változó defuzzifikációja. Az input változók fuzzifikálása Az első lépés az, hogy meghatározzuk a bemeneti változókat, valamint, hogy ezek milyen mértékben tartoznak a megfelelő fuzzy halmazokhoz, azaz a tagsági függvényeket. A bemenetek mindig határozott (crisp), számszerű, fizikai értékek, melyeket az értelmezési tartomány (universe of discourse) behatárol. A kimenetek fuzzy tagsági
értékek, amelyek mindig számok 0 és 1 között, kiszámításuk táblázatosan vagy függvényekkel történhet. A fuzzy operátor használata Ha már a bemeneteket fuzzifikáltuk, tudjuk, hogy az előfeltétel egyes részei milyen mértékben elégítik ki az összes szabályt. Ha egy adott szabály előfeltétele több részből áll, akkor egy fuzzy operátort kell alkalmaznunk, hogy egy olyan számot kapjunk, amely reprezentálja az előfeltétel eredményét az adott szabályra nézve. Ezt a számot használjuk a kimeneti függvényhez. A fuzzy operátor bemenete a fuzzifikált bemenő változók kettő vagy több tagsági értéke, a kimenet egy igazság érték. Ahogy már volt róla szó korábban, akármelyik jól definiált módszer alkalmazható arra, hogy betöltse az AND vagy az OR operáció szerepét. Az Explorer oktatási változata min függvényt használ az AND, és max függvényt az OR operátor megtestesítésére. Az implikáció módszerének kiválasztása
Mielőtt alkalmaznánk egy módszert az implikációra, gondot kell fordítanunk a szabály súlyozására. Minden szabálynak van egy súlya (egy szám 0 és 1 között) mellyel megszorozzuk az előfeltétel által adott számot. Általában a súly egyenlő eggyel és így nem befolyásolja az implikációs folyamatot. Azonban időről időre megkövetelhetjük, hogy súlyozzunk egyes szabályokat más szabályokhoz viszonyítva, olyan módon, hogy ezt az értéket az egytől különbözővé tesszük. Az implikációs módszert meghatározva, az előzmény alapján (egy szám) alakítjuk ki a következményt (ami egy fuzzy halmaz). Az implikáció bemenete egyetlen szám, melyet az előzmény ad, a kimenet egy fuzzy halmaz. Az implikációt minden szabályra nézve végre kell hajtani. Az Explorer oktatási változatában ugyanazt az AND operátort, a min függvényt használjuk implikációra, amely az előzmény által meghatározott szám magasságában levágja a kimeneti fuzzy
halmazt. Az összes kimenet összevonása A párhuzamosan működő összes szabály kimeneteit egységbe kell foglalni. Azaz az összes, a kimeneteket reprezentáló fuzzy halmazt összegeznünk kell egyetlen fuzzy halmazban, a következő, a végső fázis, a defuzzifikáció érdekében. Az összevonás minden kimeneti változóra nézve egyszer történik meg. Az összevonás bemenete az implikáció által minden egyes szabályra adott vágott fuzzy halmazok listája, a kimenete egyetlen, az összes kimeneti változóra vonatkozó fuzzy halmaz. Megjegyzendő, hogy az összevonás módszere kommutatív, tehát lényegtelen a szabályok feldolgozásának sorrendje. Az Explorer oktatási változatában a max operátort használjuk. Defuzzifikáció A defuzzifikáció bemenete egy fuzzy halmaz (az összevont kimeneti halmaz) és a kimenete egy szám- a crisp jelleg végül vissza lett állítva. Erre szükség is volt, mert jelenlegi berendezéseink csak a konkrét fizikai
értékeket képesek feldolgozni. A fuzzy jelleg segít a szabályok értékelésében a közbenső lépések folyamán, a végső kimenet az összes kimeneti változóra azonban egy-egy crisp szám. Ilyenformán adva van egy fuzzy halmaz, amely egy intervalluma a kimeneti értéknek, nekünk egy számra van szükségünk. Több féle módszer van ennek lebonyolítására, talán a legnépszerűbb a görbe alatti terület súlyvonalának kiszámítása (center of area vagy center of gravity), de vannak egyéb módszerek, mint a middle of maximum (mean of maximum), (a kimeneti halmaz maximumának átlag értéke), largest of maximum (right of maximum), and smallest of maximum (left of maximum). Megemlítjük, hogy az Explorer oktatási változatában a center of gravity módszer egy gyorsított változatát használják. Laboratóriumi feladatok megoldása a fuzzyTECH 4.0 MCU-320 Explorer segítségével A fuzzyTECH 4.0 MCU-320 Explorer egy oktatási verziója az Inform Software
Corpcég Precompiler nevű termékének, ami egy Windows alapú programrendszer fuzzy irányítású rendszerek tervezésére. Az oktatási verzió korlátozásai közé tartozik, hogy két bemenet, egy kimenet és egy szabályblokk megengedett, csak lineáris (l-shape) tagsági függvények használhatók, azaz S-,Z-alakú, trapéz, lambda és singleton. A crisp változók típusa 16 bites integer lehet A logikai operátorok közül a min és max operátorok, a defuzzifikáció a CoA módszer egyik válfaja lehet, ahol az integrálást egyszerűsítik (Fast CoA). A program kimenete alapvetően egy szövegfile ami leírja a tervezett rendszert (.ftl), de az oktatási verzió egy ún DSK assembler kimenettel is rendelkezik, amit speciálisan egy DSK KIT nevű kártyára fejlesztettek ki. A DSK KIT egy TMS320C50 DSP alapú kártya megfelelő hardware környezettel, ami tartalmaz, többek között, AD és DA konvertert. A DSK KIT biztosítja, hogy valódi objektumokat irányíthassunk,
amik jól reprezentálják az életben előforduló feladatokat. Az IBM PC csak a fejlesztői környezetet és a futtatandó program letöltését biztosítja. A lefordított ASM file azonban csak a fuzzy operációkhoz szükséges rutinokat, táblázatokat tartalmazza, a felhasználó feladata, hogy egy keretprogramot, valamint az input-output programot megírja. A keretprogram bizonyos nevekkel hivatkozik a változókra és a beépítendő file-okra, ezért azok nevei kötöttek. A fuzzy modellek működtetéséhez szükséges programok egy MYDSK nevű alkönyvtárban vannak. A programrendszernek szüksége van bizonyos mért, fizikai adatokra (pl. a fizikai intervallumok határai, bizonyos jellemző értékek, stb.) amit egy teszt program segítségével lehet begyűjteni. A tesztprogramot indító batch után a Norton Commander Terminál Emulation programjával kötjük össze a DSP-t a PC-vel soros vonalon. A beállítás 1200 Baud, 8 bit, 1 start és 2 stop bit legyen, vonali
algoritmus nélkül. Egy return leütésére az első sorban a nyelvi változó neve, alatta a mért crisp (konkrét, fizikai) érték, decimálisan, jelenik meg. A kimenetet kisebb léptékkel a + -, nagyobbal a > < gombokkal változtathatjuk meg. Az AD és a DA mérési tartománya -3V -tól +3V- ig tart, a felbontása 14 bites. Mivel a fuzzyTECH Explorer a processzornak szánt adatokat (Code Values) csak pozitív decimális formájában fogadja el, egy konverziót alkalmazunk, így a legkisebb érték -3V megfelel 0-nak, 0V 8192-nek, +3V 16383-nak. A mérőprogram ezzel a konverzióval jelzi ki az adatokat Amikor a fuzzyTECH Explorerrel megalkottuk a fuzzy rendszert, compile-lal lefordítottuk DSK assembler file-lá, kilépünk az explorerből és a MYDSK alkönyvtárban elindítjuk a megfelelő működtető batch file-t. Első lépésként az behívja a PE2 nevű editort, hogy egy file vezérelt javítást eszközöljünk, (beütendő: m i return F4), amivel kilépünk a
PE2-bôl. A batch végzi a fordítás elindítását, végül betölti a programot a DSP-be. Ettől a pillanattól kezdve a DSP-ben futó program működteti a modellt. Az ESC karakterrel törölhetjük a DSPt, (pl vészmegállítás esetén), vagy control C-vel megszakítjuk az összeköttetést a PC és a DSP között, így a fuzzy program működése önállóvá válik. Ha használni akarjuk a soros debug funkciót az Explorerben, akkor előtte el kell indítani a sors átvitel batch file-ját a MYDSK alkönyvtárból, majd az összekötő kábelen lévő kapcsolót át kell állítani, ami megszakítja a display ready jelet a kábelen, mert a fuzzyTECH Explorer menetközben ezt kiadja, de ez a jel szolgál a DSP törlésére is. Az Explorerben az Option-ban a Terminal menüpontban 9600 Baud sebességet és a megfelelő com-ot kell beállítani. Egy mintapélda megoldása: DC-motor vezérlés A feladat egy DC motor sebességének tartása egy adott értéken, melyet a fuzzy
rendszeren belül adunk meg, mivel külső eszköz nem áll rendelkezésünkre a DSK KIT -ben. A bemeneti fizikai változók: a másodpercenkénti fordulatszám, a szöggyorsulás. A kimeneti változó a motorra adott feszültség, ami 0 V-tól 3V-ig változhat. (Valójában az input-output program impulzusszélesség modulációval dolgozik. A sebesség mérése a motor tengelyére szerelt tárcsán levő lyukak segítségével történik.) A teszt program segítségével nemcsak a szokásos jellemző értékekről szerezhetünk adatokat, de a program mutatja a mérés ideje alatti maximális és minimális szöggyorsulást is. A Windows-ból elindítjuk a fuzzyTECH 320 Explorert, a file menüpontban elindítjuk a New menüpontot elindítva a Generate system? kérdésre igennel válaszolva a következő ablak jelenik meg: Itt megadhatjuk a nyelvi változók kezdeti paramétereit, de ne feledkezzünk meg a korlátozásokról! Az input termek száma legyen három, az output
termeké öt. Ezután a rendszerünk blokksémája a következő: A megfelelő változót egérrel kijelölve (jobboldali IT gomb, majd ATTRIBUTES menüpont) az in1 legyen n (fordulatszám), in2 legyen o (szögsebesség), out1 legyen p (meghajtófeszültség). A blokkséma az új nyelvi változókkal a következő: Most egyenként kiválasztva a nyelvi változókat (baloldali IT gomb vagy return gomb) meghatározzuk a tagsági függvényeket. Az Explorer felajánlja a tagsági függvényeket a következő formában: A szélső változóknak S és Z típusúnak, a közbensőkét lambda típusúnak deklarálja, a töréspontok arányosan helyezkednek el az intervallumon. A termeket kiválasztva (a baloldali IT gomb vagy return gomb) saját neveket adhatunk ezeknek, (itt nincs korlátozás). Legyenek például a sebesség termjei SLOW; OK FAST. Az OK term csúcsa (jellemző értéke) az a fordulatszám, amit tartani akarunk. A tagsági függvények alatt a jobboldali IT
gombot megnyomva kiválasztjuk a Base Variable menüpontot. Itt két különböző típusú érték jelenik meg, melyek minimumát és maximumát meg kell adnunk. A Code Values azok az értékek melyekkel a DSP dolgozik Ezeket a test program alapján adhatjuk meg. A Shell Values azok az értékek melyek a grafikonokon jelennek meg és a fizikai értékeket reprezentálják (pl. fordulat/másodperc, cm, stb) Ha használni akarjuk a Serial Debug funkciót, ide is a Code Values értékeit kell írnunk. Legyenek a szögsebesség termjei M (mínusz), ZERO és P (plusz), azaz a célunk a nulla szöggyorsulás, de a szabályozás alatt gyorsulhat vagy lassulhat is. Legyenek a kimenet termjei például: ZERO; SMALL OK; MORE; LARGE Ezután a Project Editor blokkséma rule block részét kiválasztva megjelenik a Rule Base táblázatos formában. Az Explorer először az összes variációt felajánlja, ezekből kell delete gombbal a nem szükségeseket törölni. Valamely nyelvi
értékre rápozícionálva azt megváltoztathatjuk egy másikra vagy üresre (dont care). A DoS (degree of support) értékét szintén megváltoztathatjuk egy, egynél kisebb értékre, ami azt jelenti, hogy az a szabály kevesebb súllyal vesz részt a fuzzy következtetésben (firing). Ezzel a fuzzy rendszer kész, az ftl file-t m.ftl néven el kell menteni A Compile menü DSK 320 C50x almenüjével kell lefordíttatni m.asm néven Ezután kiléphetünk a programból és az m.bat batch-csel elindíthatjuk a fordítást és a betöltést, a már tárgyalt módon Ha ki akarjuk próbálni a rendszerünket, választhatjuk a Debug menü Serial Link menüpontját. Előtte azonban a Norton Comanderből el kell indítani a serial batch-et, majd átkapcsolni a kábelkapcsolót, és úgy indítani a Windowst és az Explorert. Az Analyzer majd a Time Plot funkciókat választva megkaphatjuk az adott nyelvi változó időbeli lefolyását. Amennyiben a tagsági függvényeket választjuk ki,
azon is látható a pillanatnyi érték egy mozgó függőleges vonal segítségével. A tagsági függvények jellemző értékeit akár menetközben is változtathatjuk, megfigyelve az okozott hatást. Sajnos a rendszer mintavételezési ideje elég nagy, így csak a lassú folyamatoknál hozza ki a kellő eredményt. Lebegő pingpong labda feladat A berendezés áll egy függőleges üvegcsőből, benne egy pingpong labdával, egy ventillátorból, amelynek légárama tartja a labdát, a felső részén pedig egy ultrahangos távolságmérő (szonár) helyezkedik el. A feladat az, hogy úgy szabályozzuk a ventillátor fordulatszámát a ráadott feszültség segítségével, hogy a labda a megadott magasságban lebegjen. A nyelvi változók: − a bemenet: a magasság (dx) és annak változási sebessége (v) − a kimenet: a ventillátorra adott feszültség (p). − A mintavételezési idő 10 ms. Vigyázat! A szonár csak kb. 20 cm távolságig mér, azon belül a
maximális 3 Voltot adja ki A file-ok neve ‘pi.*’. Daruirányítás feladat A berendezés áll egy kb. 120 cm hosszú sínen mozgó kis kocsiból, a ráerősített rúdon függő teherből, a kocsit csigás áttételeken keresztül mozgató motorból. A kocsi a sín egyik végén áll, a másik végén egy kijelölt hely van, ahova úgy kell a kocsit hajtani, hogy minél gyorsabban, de a teher belengése nélkül érkezzen meg. A teher függőlegessel bezárt szögét egy potenciométer, a céltól való távolságát egy helipot méri. A kocsi sebessége a motorra adott feszültség nagyságától függ. A nyelvi változók: − a bemenet: a teher szöge (Angle) és a céltól való távolsága (Distance), − a kimenet: a motorra adott feszültség (Power). Vízszintszabályzás feladat A berendezés áll egy üveg medencéből, melyben víz van, egy huzalellenállásos vízszintmérőből és három szivattyúból. Az első a víz betöltésére szolgál, a második a
kiszívására, a harmadik pedig a vízszint mesterséges befolyásolására (zavar). A feladat a vízszint egy adott szinten való tartása. A nyelvi változók: − bemenet: a mélység (dx) és annak időbeli változása (v) − kimenet: a szivattyúkra adott feszültség (p). A mintavételezési idő 100 ms A file-ok neve ‘wt.*’. IRODALOMJEGYZÉK 1. Bagyinszki János: FUZZY LOGIC 2. Jyh-Shing Roger Jang, Chuen-Tsai Sun: Neuro-Fuzzy Modeling and Control 3. Arnold Kauffmann: Introduction to the Theory of Fuzzy Subsets 4. Inform Software Corp.: fuzzyTECH 40 MCU-320 Explorer leirás Volume I TARTALOMJEGYZÉK Bevezetés a fuzzy logika elméletébe 3 Fuzzy modellek (Fuzzy Következtetési Rendszerek, Fuzzy Inference 9 Systems) Egy fuzzy rendszer építése a fuzzyTECH 4.0 MCU-320 Explorer 12 segítségével Laboratóriumi feladatok megoldása a fuzzyTECH 4.0 MCU-320 Explorer segítségével 14 Egy mintapélda megoldása: DC-motor vezérlés 15 Lebegő pingpong labda
feladat 24 25 Daruirányítás feladat 26 Vízszintszabályzás feladat 27 IRODALOMJEGYZÉK