Úvod do fuzzy logiky a fuzzy regulátory
Tato publikace vznikla jako součást projektu CZ.04.1.03/3.2.15.2/0285 „Inovace VŠ oborů strojního zaměření“, který je spolufinancován evropským sociálním fondem a státním rozpočtem České republiky
Milan Turek, 21. 8. 2007
1 Obsah 2
Fuzzy Logic Toolbox ................................................................................................................ 3 2.1 2.1.1
FIS Editor ..................................................................................................................... 4
2.1.2
Editor funkcí příslušnosti (Membership Function Editor) ........................................... 6
2.1.3
Editor pravidel (Rule Editor)........................................................................................ 8
2.1.4
Rule Viewer ................................................................................................................ 10
2.1.5
Surface Viewer ........................................................................................................... 11
2.2
3
Návrh vlastností fuzzy regulátoru .................................................................................... 3
Implementace fuzzy regulátoru v SIMULINKu ............................................................ 12
2.2.1
FIS Matrix (FIS matice) ............................................................................................. 12
2.2.2
Fuzzy Logic Controler ............................................................................................... 12
LITERATURA ....................................................................................................................... 14
2 Fuzzy Logic Toolbox Pro návrh fuzzy regulátoru v MATLABu slouží Fuzzy Logic Toolbox. Vlastní simulační výpočty včetně reálných měření s využitím fuzzy regulátoru se provádí v SIMULINKu. Jedním z možných případů, kdy je možné fuzzy regulátor použít, je řízení natočení kol robotu. Úkolem je vytvořit regulátor, který – na základě odchylky od požadovaného směru jízdy a rychlosti – nastaví optimální natočení kol. Problém je v tom, že neexistují rovnice, které by popisovaly závislost optimálního natočení kol na základě uvedených hodnot. Jediné co je známo, jsou obecná pravidla typu: „pokud je odchylka od požadovaného směru velká, je třeba velké natočení kol, ale jen při malé rychlosti, jinak hrozí převrácení robotu“ atd. Na základě takto vyjádřených údajů je vytvoření klasického regulátoru velmi obtížné, neli dokonce nemožné, ale pro vytvoření fuzzy regulátoru tyto údaje zcela postačují.
2.1 Návrh vlastností fuzzy regulátoru Předtím, než je možné fuzzy regulátor použít v SIMULINKu, je nutné definovat jeho chování. To je možné provést buď z příkazového řádku, nebo pomocí interaktivního grafického prostředí Graphical User Interface (GUI). Musí se nadefinovat vstupní a výstupní proměnné, jejich rozsahy, funkce příslušnosti, inferenční a rozhodovací pravidla a metody fuzzyfikace a defuzzyfikace. Pro tyto požadavky můžeme vyjádřit strukturu fuzzy regulátoru blokově dle obrázku 16. Tuto strukturu v souladu s Fuzzy Logic Toolboxem budeme označovat jako inferenční fuzzy systém (FIS - Fuzzy Inference System).
Obr.16: Inferenční fuzzy systém (FIS – Fuzzy Inference Systém) Grafické uživatelské prostředí GUI obsahuje nástroje pro vytvoření, editaci a zobrazování inferenčního fuzzy systému (FIS). Inferenční fuzzy systém (FIS) zahrnuje všechny procesy od definování vstupů až po definování výstupů regulátoru. FIS tvoří tři editory a dvě zobrazení. FIS Editor (editor inferenčního systému fuzzy regulátoru) – definování počtu vstupů a výstupů a jejich pojmenování.
Membership Function Editor (editor funkcí příslušnosti) – definování funkcí příslušnosti vstupních a výstupních hodnot. Rule Editor (editor pravidel) – definování inferenčních pravidel. Rule Viewer (grafické zobrazení pravidel) – grafické zobrazení pravidel a konkrétní hodnoty výstupu pro konkrétní hodnoty vstupu. Surface Viewer (grafické zobrazení plochy akčních zásahů) – zobrazení závislosti výstupu na vstupech. 2.1.1 FIS Editor FIS Editor se spustí napsáním příkazu: FUZZY Spuštění FIS Editoru a současné nahrání uloženého FIS se provede napsáním příkazu: FUZZY <JMENO_SOUBORU> Nahrát uložený FIS je také možné z menu FIS Editoru.
Obr.17: FIS Editor
Hlavní menu FIS Editoru obsahuje tři položky. File, které obsahuje položky umožňující vytváření nového FIS, ukládání FIS, načítání FIS, tisk a ukončení FIS Editoru. Edit, které obsahuje položky vrácení posledního kroku, přidání vstupních a výstupních proměnných, smazání proměnných, spuštění Membership Function Editoru a Rule Editoru. View, ze kterého je možné zobrazit Rule Viewer a Surface Viewer. V grafickém okně existují tři typy bloků – vstupní proměnné, typ inference a výstupní proměnné. Levá dolní část okna slouží k zadání způsobu výpočtu metod AND, OR, atd. V pravé části se zobrazují parametry jednotlivých proměnných a je možné zde proměnné přejmenovat. Jsou-li spojovací linky mezi bloky vyznačeny čárkovanou čarou, pak nejsou jednotlivé bloky parametrizovány nebo parametrizace není správně ukončena a tento blok není možné zapojit a spustit. Dvojím kliknutím na vybranou vstupní proměnnou reprezentovanou obrázkem je možno přejít do Membership Function Editoru (editoru funkcí příslušnosti). Dvojím kliknutím na typ inference reprezentované obrázkem je možno přejít do Rule Editoru (editoru rozhodovacích pravidel). Dvojím kliknutím na vybranou výstupní proměnnou reprezentovanou obrázkem je možno přejít do Membership Function Editor (editoru funkcí příslušnosti). Příklad: Nastavte parametry FIS: 2 vstupní proměnné v(t), Odchylka(t) a jedna výstupní proměnná NatoceniKol(t). Vše uložte do souboru robot.fis Postup: 1. Spustit FIS Editor (napsáním příkazu fuzzy). 2. Přidat druhý vstup (menu Edit – Add variable – Input). 3. Přejmenovat první vstup (kliknout na blok input1 a v políčku Name napsat v(t)). 4. Přejmenovat druhý vstup (kliknout na blok input2 a v políčku Name napsat Odchylka(t)). 5. Přejmenovat výstup (kliknout na blok output1 a v políčku Name napsat NatoceniKol(t)). 6. Uložit na disk (menu File – Export – To Disk…). 7.
2.1.2 Editor funkcí příslušnosti (Membership Function Editor) Spustí se z FIS Editoru buď přes menu (Edit – Membership functions…) nebo dvojím kliknutím na blok vstupu nebo výstupu. Slouží pro definování rozsahů a funkcí příslušnosti jednotlivých proměnných. Jeho okno (viz obr.18) se skládá ze čtyř hlavních částí. V levém horním rohu jsou ikony všech proměnných. Kliknutím na ikonu proměnné se proměnná stane aktivní a zbylé části okna slouží k její editaci. Vpravo vedle ikon proměnných je graf s funkcemi příslušnosti, který umožňuje jejich editaci. V levé dolní části je možné nastavit povolený rozsah vybrané proměnné (políčko Range) a zobrazovaný rozsah vybrané proměnné (políčko Display Range). V pravé dolní části je možné nastavit vlastnosti funkce příslušnosti, vybrané v grafu. Je zde možné nastavit jméno vybrané funkce příslušnosti (políčko Name), její tvar (rozbalovací seznam Type) a parametry (políčko Params). Jména funkcí příslušnosti je dobré nastavovat na smysluplné hodnoty, protože se později pomocí nich definují pravidla, která definují závislost výstupu na vstupu. Tvary funkcí příslušnosti, které je možné nastavit jsou: trimf (trojúhelníková), trapme (lichoběžníková), gbellmf, gausmf (gausovská), gaus2mf, pimf, dsigmf a psigmf. Intuitivnější nastavení parametrů funkce příslušnosti je možné pomocí myši v grafu. Výběr funkce příslušnosti se provede kliknutím na požadovanou funkci příslušnosti, editace její pozice se provádí uchopením a přetažením, změna rozměrů uchopením obdélníčku vykresleného na vybrané funkci příslušnosti a jeho přetažením na novou pozici.
Obr.18: Editor funkcí příslušnosti (Membership Function Editor) Smazání vybrané funkce příslušnosti se provede stiskem klávesy Delete, nebo pomocí menu (Edit – Remove selected MF). Smazání všech funkcí příslušnosti je možné pomocí menu (Edit – Remove all MFs). Přidat funkci příslušnosti lze pomocí menu Edit – Add MFs… Po jeho výběru se zobrazí dialog z obrázku 19, ve kterém vyberete tvar přidávaných funkcí příslušnosti (MF type) a jejich počet (Numer of MFs).
Obr.19: Okno pro přidání funkce příslušnosti (Add membership functions)
Příklad: Nadefinujte rozsah hodnot a funkce příslušnosti proměnné v(t ) tak, jak jsou vidět na obr. 18. Postup: 1. Vybrat proměnnou v(t ) (kliknout na její ikonu v levé horní části okna). 2. Nastavit rozsah hodnot proměnné (změnit hodnoty v políčku Range – první je minimální hodnota a druhá – oddělená mezerou – je maximální hodnota). 3. Vymazat předdefinované funkce příslušnosti (Menu Edit – Remove all MFs). 4. Přidat pět funkcí příslušnosti gausovského tvaru (Menu Edit – Add MFs… a v dialogu nastavit hodnoty podle obr. 19). 5. Nastavit pozici funkce příslušnosti (v grafu kliknout na funkci příslušnosti a přetáhnout ji na požadovanou pozici). 6. Nastavit velikost funkce příslušnosti (kliknout na obdélníček vykreslený na funkci příslušnosti a tažením změnit velikost). 7. Změnit jméno funkce příslušnosti (kliknutím vybrat a požadované jméno napsat do políčka Name). 8. Opakovat kroky 5, 6 a 7 pro zbylé čtyři funkce příslušnosti. 2.1.3 Editor pravidel (Rule Editor) Spustí se ve FIS Editoru přes menu View – Edit Rules, nebo dvojitým kliknutím na blok typu inference. Slouží k nadefinování pravidel, která určují závislost mezi vstupními a výstupními proměnnými. Jak vypadá jeho okno, je vidět na obr. 20. V horní části okna je seznam nadefinovaných pravidel a pod ním jsou seznamy hodnot, které mohou nabývat jednotlivé proměnné. Nejsou zde konkrétní čísla, ale jména funkcí příslušnosti, nadefinovaných v Membership Function Editoru, neboli hodnoty lingvistických proměnných. Nadefinování nového pravidla se poté provádí následujícím způsobem. Vyberou se hodnoty vstupních proměnných a jejich vzájemný vztah, odpovídající hodnota výstupní proměnné a váha pravidla (políčko Weight). Stiskem tlačítka Add rule se pravidlo přidá. Vybrané pravidlo lze smazat pomocí tlačítka Delete rule. Postup změny již nadefinovaného pravidla je následující. Vybere se pravidlo, které se má změnit, poté se provede nadefinování nových hodnot jako při vytváření nového pravidla a stiskem tlačítka Change rule se provede změna pravidla. Příklad:
Nadefinujte pravidlo: Je-li rychlost velmi velká nebo odchylka velmi malá, bude natočení kol velmi malé. Váhu pravidla nastavte na 0,5 . Předpokládá se, že jsou nadefinované funkce příslušnosti všech proměnných. Postup: 1. Vybrat hodnotu VelmiVelka vstupní proměnné v(t ) . 2. Vybrat hodnotu VelmiMala vstupní proměnné Odchylka(t ) 3. Vybrat hodnotu VelmiMale výstupní proměnné NatoceniKol (t ) . 4. V boxu Connection vybrat hodnotu or . 5. Nastavit váhu pravidla (do políčka Weight napsat 0,5). 6. Přidat pravidlo (stisk tlačítka Add rule).
Obr.20: Editor pravidel (Rule Editor)
2.1.4 Rule Viewer Spustí se pomocí menu View – Rules. Slouží ke grafickému zobrazení nadefinovaných pravidel a výsledků inference pro zadané hodnoty vstupů. Umožňuje zobrazit konkrétní hodnotu výstupu pro konkrétní hodnoty vstupů. Hodnota výstupu se zobrazí po vybrání hodnot vstupů a zároveň se zobrazí, která pravidla byla použita pro její zjištění a jaký měla pravidla podíl na výsledné hodnotě. Příklad: Zjistěte jaké natočení kol odpovídá rychlosti 3ms
1
a odchylce od požadovaného směru 300 .
Postup: 1. Vybrat ve sloupci v(t ) hodnotu 3 (kliknutím a případným tažením myší). 2. Vybrat ve sloupci Odchylka(t ) hodnotu 30 (kliknutím a případným tažením myší). 3. Přečíst hodnotu natočení kol.
Obr.21: Rule Viewer
2.1.5 Surface Viewer Spustí se pomocí menu View – Surface. Slouží ke grafickému zobrazení závislosti výstupu na vstupech. Zobrazí graf závislosti výstupu na vstupech pro všechny možné hodnoty vstupů - viz. obr.22.
Obr.22: Surface Viewer
2.2 Implementace fuzzy regulátoru v SIMULINKu 2.2.1 FIS Matrix (FIS matice) Aby bylo možno spustit simulaci v SIMULINKu, je třeba Fuzzy Inference System uložit pod jeho jménem do pracovního prostředí MATLABu (workspace). Protože v MATLABu je základem maticový popis i způsob ukládání informací, jsou informace uložené v Fuzzy Inference System FIS uloženy jako matice. Tato matice je označována jako FIS Matrix (FIS Matice). Uložení FIS matice do pracovního prostředí MATLABu se provede z FIS Editoru pomocí menu File – Export – To Workspace… Před uložením se FIS editor dotáže na jméno FIS matice (jméno proměnné prostředí MATLABu). 2.2.2 Fuzzy Logic Controler Fuzzy regulátor je v SIMULINKu reprezentován prvkem Fuzzy Logic Controler, který je umístěn ve Fuzzy Logic Toolboxu - viz. obr.23. Do schématu simulovaného systému SIMULINKu se přidá klasickým způsobem, tj. uchopením a přetažením na pracovní plochu.
Obr.23: Fuzzy Logic Controler
Takto se získá fuzzy regulátor, který nemá implementovánu logiku – neumí přiřadit správnou hodnotu výstupu vstupům. Implementace logiky regulátoru se provede jednoduše přiřazením vytvořené FIS matice zapsáním jejího jména do parametrů bloku Fuzzy Logic Controler -viz. obr.24. Poté je již fuzzy regulátor nadefinován a připraven k použití.
Obr.24: Parametry bloku Fuzzy Logic Controler Závěrem této kapitoly je třeba zdůraznit, že předložený návod k používání Fuzzy Logic Toolboxu se omezuje na vysvětlení základních kroků v grafickém prostředí GUI. Nezabývá se vůbec návrhem fuzzy regulátoru pomocí příkazového řádku Command Line a vyžaduje proto pro hlubší pochopení další studium [4,5,6].
3 LITERATURA [1] Modrlák O.: FUZZY ŘÍZENÍ A REGULACE Studijní materiály, Technická univerzita v Liberci, Liberec, 2002 [2] Passino K.M., Yurkovich S.: Fuzzy control. Addison Wesley Longman, Inc., Menlo Park, California, 1998, ISBN 0-201-18074-X [3] Vysoký, P.: Fuzzy řízení. Skripta, ČVUT Praha, 1997. [4] Pivoňka, P.: Analysis and Design of Fuzzy Controller. In: Fuzzy Control. Theory and Praxis, Physica-Verlag, 2000, ISBN 3 - 7908-1327-3. [5] Gulley, N., Jang,J.S.: Fuzzy Logic Toolbox. For Use with MATLAB.The Math Works, Inc.1995 [6] The Student Edition of MATLAB.Version 4, User’s Guide.The Math Works, Inc. 1995, Prentice Hall, Englewood Cliffs. ISBN 0-13-184979-4 [7] SIMULINK Dynamic System Simulation for MATLAB.Using Simulink, Version 2 The Math Works, Inc.1997