Recenze softwaru pro fuzzy logiku. Fuzzy Logic: Jasná řešení Fuzzy Logic

Jeho začátky byly matematické teorie fuzzy množin(fuzzy množiny) a ona sama fuzzy logika(fuzzy logika) funguje od roku 1965. Jejím zakladatelem je profesor Lotfi Zadeh z University of Berkeley, který oba tyto koncepty představil ve svém článku „Fuzzy Sets“ v časopise Information and Control. Tento matematický aparát umožnil zavést do tak exaktní vědy, jakou je matematika, fuzzy (rozmazané) koncepty, se kterými pracuje každý, a položil základ pro zásadně nové metody řešení problémů založených na měkkých výpočtech. Všechny tyto novinky mohou při správném použití výrazně usnadnit proces řešení problémů klasifikace, vytváření expertních systémů a budování neuronových sítí.

Praktická aplikace fuzzy logiky se však neomezovala pouze na toto, ve skutečnosti se tento matematický aparát nejvíce rozšířil v teorii automatického řízení. S tím lze spojit vznik dalšího nového konceptu - fuzzy model. Fuzzy model je speciální případ matematického modelu.

1. Teorie fuzzy množin a fuzzy logika

Nová teorie Lotfi Zadeha určitým způsobem rozšiřuje obvyklé hranice matematické logiky a teorie množin. Matematická logika je schopna pracovat pouze s přísně formalizovanými daty a příslušnost objektu ke konkrétní množině je určena pouze dvěma pojmy, to znamená, že pojem „patřít“ sám o sobě je diskrétní veličinou, která může mít dva významy:

  • "1" - pokud objekt patří do jedné nebo druhé sady;
  • "0" - pokud nepatří.

Lotfi Zadeh se ve své teorii fuzzy množin odklonil od diskrétního konceptu „členství“ a zavedl nový – „stupeň členství“ a obvyklé „množiny“ byly nahrazeny „fuzzy množinami“.

1.1. Základní pojmy a definice

Definice 1.Fuzzy sada (fuzzy množina) na univerzální množině je kolekce dvojic , kde je stupeň příslušnosti prvku k fuzzy množině.

Definice 2.Stupeň příslušnosti je číslo z rozsahu . Čím vyšší je stupeň příslušnosti, tím více prvek univerzální množiny odpovídá vlastnostem dané fuzzy množiny. Je-li tedy stupeň členství 0, pak tento prvek množině vůbec neodpovídá, a je-li 1, pak můžeme mluvit naopak o úplné korespondenci. Tyto dva případy jsou okrajové a v případě neexistence jiných možností by tvořily běžný soubor. Přítomnost všech ostatních možností je klíčovým rozdílem mezi fuzzy množinou.

Definice 3.Členská funkce(členská funkce) je funkce, která umožňuje vypočítat stupeň příslušnosti libovolného prvku univerzální množiny k fuzzy množině. Proto rozsah hodnot funkcí členství musí patřit do rozsahu . Ve většině případů je funkce příslušnosti monotónní spojitá funkce.

Definice 4.Lingvistická proměnná je proměnná, jejíž hodnoty mohou být slova nebo fráze nějakého přirozeného nebo umělého jazyka. Fuzzy množiny jsou tvořeny lingvistickými proměnnými. Při definování fuzzy množiny je počet a povaha fuzzy proměnných subjektivní pro každou jednotlivou úlohu.

Definice 5.Termín nastaven je množina všech možných hodnot, které může jazyková proměnná nabývat.

Definice 6.období nazývá se jakýkoli prvek množiny termínů. V teorii fuzzy množin je termín formalizován fuzzy množinou pomocí funkce příslušnosti. Funkce členství pro každý termín je individuální a často jedinečná. Existují různé metody pro konstrukci těchto funkcí: rovně, nepřímý A metody relativní frekvence. Často jsou založeny na charakteristických bodech funkce členství nebo empirických datech od experta v dané předmětové oblasti.

Příklad:

Pojďme definovat nějakou lingvistickou proměnnou nazvanou "Věk". Podle definice je „věk“ období, fáze ve vývoji a růstu člověka, zvířete nebo rostliny. Minimální hodnota této proměnné je 0, to znamená, že osoba je mladší než rok. Vezměme 80 jako maximální hodnotu V závislosti na konkrétním věku člověka můžeme hodnotit: „novorozenec“, „mladý“, „mladý“, „střední věk“, „starý“, „starší“ atd. na. Tento seznam může obsahovat poměrně velké množství položek. Bude to termín stanovený pro naši jazykovou proměnnou a jejími prvky budou termíny.

Obrázek níže ukazuje příklad fuzzy proměnné „Věk“, pro kterou byl specifikován soubor pouze tří pojmů: „Mladý“, „Střední“, „Starý“. Každý z podmínek má svou vlastní členskou funkci.

Uvažujme případ, kdy je věk osoby 30 let, což na obrázku bude odpovídat kolmici nakreslené z bodu (30, 0). Tato čára bude protínat všechny tři funkce členství v bodech:

  1. (30, 0) - průsečík grafu „Věk 30 let“ a grafu „Starý“.
  2. (30, 0,29) - průsečík grafu „Věk 30 let“ a grafu „Průměr“.
  3. (30, 0,027) - průsečík grafu „Věk 30 let“ a grafu „Mladí“.


Ze souřadnic těchto tří bodů můžeme usoudit, že člověka ve 30 letech nelze v žádném případě nazvat starým, a pokud si vybíráte mezi mladým a středním věkem, pak převažuje ten druhý. Stupeň sounáležitosti s výrazem „Průměr“ je 0,29, což je poměrně málo, a ve skutečnosti by pro člověka ve věku 30 let mnohem lépe vyhovoval jiný výraz, například „Mladý“.

Definice 7.Defuzzifikace je postup převodu fuzzy množiny na jasné číslo. V tuto chvíli existuje více než dvacet metod a jejich výsledky se od sebe mohou poměrně výrazně lišit. Je třeba poznamenat, že nejlepších výsledků se dosáhne defuzzifikací pomocí metody těžiště(těžiště).

1.2. Fuzzy logika

Fuzzy logika je zobecněním tradiční aristotelské logiky na případ, kdy je pravda považována za lingvistickou proměnnou. Stejně jako v klasické logice má fuzzy logika své vlastní fuzzy logické operace přes fuzzy množiny. U fuzzy množin jsou všechny stejné operace jako u běžných množin, jen jejich výpočet je řádově složitější. Všimněte si také, že složení fuzzy množin je fuzzy množina.

Hlavními rysy fuzzy logiky, které ji odlišují od klasické logiky, jsou maximální blízkost k odrazu reality a vysoká míra subjektivity, v důsledku čehož mohou ve výsledcích výpočtů s její pomocí vznikat značné chyby.

Fuzzy model - matematický model, jehož výpočet je založen na fuzzy logice. Ke konstrukci takových modelů se přistupuje v případě, kdy předmět zkoumání má velmi slabou formalizaci a jeho přesný matematický popis je příliš složitý nebo jednoduše neznámý. Kvalita výstupních hodnot těchto modelů (chyba modelu) přímo závisí pouze na odborníkovi, který model zkompiloval a nakonfiguroval. Chcete-li minimalizovat chyby, nejlepší možností by bylo sestavit nejúplnější a nejkomplexnější model a poté jej vyladit pomocí strojového učení na velké tréninkové sadě.

Proces vytváření modelu lze rozdělit do tří hlavních fází:

  1. Stanovení vstupních a výstupních parametrů modelu.
  2. Budování znalostní báze.
  3. Výběr jedné z metod fuzzy logické inference.

Další dva přímo závisí na prvním stupni a právě tento stupeň určuje budoucí fungování modelu. Znalostní báze, nebo, jak se tomu jinak říká, báze pravidel, je soubor fuzzy pravidel tvaru: „jestliže, pak“, která určují vztah mezi vstupy a výstupy studovaného objektu. Počet pravidel v systému není omezen a je také určen odborníkem. Obecný formát fuzzy pravidel je:

Lipodmínka (premisa) pravidla,Žezávěr pravidla.

Podmínka pravidla charakterizuje aktuální stav objektu, a závěr- jak tento stav ovlivní objekt. Obecnou formu podmínek a závěrů nelze rozlišit, protože jsou určeny fuzzy logickou inferencí.

Každé pravidlo v systému má hmotnost - tento parametr charakterizuje význam pravidla v modelu. Váhy jsou přiřazeny pravidlu v rozsahu . V mnoha příkladech fuzzy modelů, které lze nalézt v literatuře, nejsou tyto váhy specifikovány, ale to neznamená, že ve skutečnosti neexistují pro každé pravidlo od základu, v tomto případě je váha pevná a stejná do jednoho. Podmínky a závěry pro každé pravidlo mohou být dvou typů:

  1. jednoduchý - zahrnuje jednu fuzzy proměnnou;
  2. kompozitní - jedná se o několik fuzzy proměnných.

V závislosti na vytvořené znalostní bázi pro model je určen fuzzy logický inferenční systém. Fuzzy inference se nazývá získání závěru ve formě fuzzy množiny odpovídající aktuálním hodnotám vstupů pomocí fuzzy báze znalostí a fuzzy operací. Dva hlavní typy fuzzy inference jsou Mamdani a Sugeno.

1.3. Mamdaniho fuzzy závěr

Fuzzy logická inference pomocí Mamdaniho algoritmu se provádí pomocí fuzzy znalostní báze:


Hodnoty vstupních a výstupních proměnných v něm jsou specifikovány fuzzy množinami.

proti fuzzy termín t.

jth pravidla ze znalostní báze;

kde je operace ze s-normy (t-norm), tzn. z mnoha implementací logické operace OR (AND). Nejčastěji používané implementace jsou: pro operaci OR - nalezení maxima a pro operaci AND - nalezení minima.

m

Zvláštností této fuzzy množiny je, že univerzální množinou pro ni je termínová množina výstupní proměnné .

Jinými slovy, pomocí termínů fuzzy logiky proveďte implikaci a agregaci podmínek. Implikace je modelována dvěma metodami: hledáním minima nebo součinu množin a agregací hledáním maxima nebo součtu množin.

Poté získáme výslednou fuzzy množinu, jejíž defuzzifikací získáme přesný výstup systému.

1.4. Fuzzy inference Sugeno

Fuzzy logická inference pomocí algoritmu Sugeno se provádí pomocí fuzzy znalostní báze:


Sugenova znalostní báze je podobná znalostní bázi Mamdani, až na závěry pravidel, které nejsou specifikovány fuzzy termíny, ale lineární funkcí vstupů:

Pravidla v Sugenově znalostní bázi jsou jakési přepínače z jednoho lineárního zákona „vstupy – výstupy“ do jiného, ​​rovněž lineárního. Hranice podoblastí jsou rozmazané, proto může být současně splněno několik lineárních zákonů, ale v různé míře.

Tento základ lze také napsat jako:

Zaveďme nový zápis: - funkce příslušnosti vstupní nebo výstupní fuzzy proměnné proti fuzzy termín t.

Stupně příslušnosti vstupního vektoru k fuzzy termínům ze znalostní báze se vypočítají takto:

Tato funkce bude charakterizovat výsledek práce jth pravidla ze znalostní báze;

kde je operace ze s-normy (t-normy), tzn. z mnoha implementací logické operace OR (AND). V Sugenově fuzzy inferenci jsou nejčastěji používané implementace trojúhelníkových norem pravděpodobnostní OR jako s-norma a součin jako t-norma.

Po nalezení pro dostaneme m nové funkce příslušnosti, které společně vytvoří novou fuzzy množinu, označme ji odpovídající vstupnímu vektoru.

Všimněte si, že na rozdíl od výsledku Mamdaniho derivace je výše uvedená fuzzy množina běžnou fuzzy množinou prvního řádu. Je definována na sadě jasných čísel. Výsledná výstupní hodnota je určena jako superpozice lineárních závislostí splněných v daném bodě n- prostor dimenzionálního faktoru. Chcete-li to provést, defuzzifikujte fuzzy množinu nalezením váženého průměru nebo váženého součtu.

2. FuzzyNet knihovna fuzzy logiky

V praxi je tvorba a práce s i velmi jednoduchým fuzzy modelem velmi obtížný úkol, ale existuje mnoho různých softwarových nástrojů a knihoven, které jej výrazně zjednodušují. Na příkladech testovacích skriptů z knihovny FuzzyNet pro MQL5 se podívejme na proces tvorby a práce se dvěma fuzzy modely.

2.1. Návrh systémů typu Mamdani

Prvním příkladem je skript Tips_Sample_Mamdani.mq5 z knihovny FuzzyNet pro MQL5. Implementuje fuzzy model pro výpočet spropitného, ​​které by návštěvník podniku nejraději opustil, na základě jeho hodnocení kvality služeb a jídla. Tento systém má dva fuzzy logické vstupy, jeden výstup, znalostní bázi tří pravidel a inferenční systém typu Mamdani.

Vstupními parametry budou fuzzy proměnné "jídlo" ( jídlo) a „služba“ ( servis), obě proměnné jsou hodnoceny na stupnici od 0 do 10 – to jsou jejich minimální a maximální hodnoty. Proměnná „jídlo“ se skládá ze dvou pojmů: „bez chuti“ ( zatuchlý), "lahodné" ( vynikající). Proměnná „service“ se bude skládat ze tří fuzzy termínů: „bad“ ( chudý), "dobrý" ( dobrý), "skvělý" ( vynikající).

Na výstupu dostaneme fuzzy proměnnou „tip“ ( tipy). Definujme rozsah hodnot pro zbylé spropitné od 5 do 30 % z částky v šeku a vytvořte pro tuto proměnnou tři výrazy: „malý“ ( levný), "průměr" ( průměrný), "velký" ( štědrý).

Znalostní báze tohoto systému se bude skládat ze tří pravidel:

  1. Pokud (služba je špatná) nebo (jídlo není chutné), spropitné je malé.
  2. Pokud (služba je dobrá), spropitné je průměrné.
  3. Pokud (obsluha je vynikající) nebo (jídlo je vynikající), pak velké spropitné.

Nyní, když máme obecnou představu o systému, uvažujme o procesu jeho vytvoření:

  1. Zahrneme soubor MamdaniFuzzySystem.mqh z knihovny FuzzyNet pro MQL5:
    #zahrnout Tento soubor umožňuje vytvářet a pracovat se systémy typu Mamdani.
  2. Nyní můžeme vytvořit prázdný systém Mamdani a dále jej naplnit:
    MamdaniFuzzySystem *fsTips=new MamdaniFuzzySystem();
  3. Vytvořme první vstupní proměnnou „service“. Při vytváření fuzzy proměnných se nejprve zadají parametry pro konstruktor jako název proměnné jako řetězec, poté její minimální a maximální hodnota.
    FuzzyVariable *fvService=new FuzzyVariable("service" ,0.0 ,10.0 );
  4. Přidejme k tomu fuzzy termíny. Jako parametry má konstruktor fuzzy termínů jako první parametr jméno ve formě řetězce a jako druhý parametr odpovídající funkci členství.
    fvService.Terms().Add(new FuzzyTerm("chudý" , new TriangularMembershipFunction(-5.0 , 0.0 , 5.0 ))); fvService.Terms().Add(new FuzzyTerm("dobré" , new TriangularMembershipFunction(0.0 , 5.0 , 10.0 ))); fvService.Terms().Add(new FuzzyTerm("excellent" , new TriangularMembershipFunction(5.0 , 10.0 , 15.0 )));
  5. Funkce příslušnosti v tomto příkladu pro všechny termíny jsou prezentovány ve formě trojúhelníkové funkce.
    Nyní do našeho systému přidáme již připravenou a vygenerovanou fuzzy proměnnou:
  6. fsTips.Input().Add(fvService);
    Obdobně implementujeme druhý vstup pro systém s proměnnou „jídlo“, pouze členy pro tuto proměnnou budou mít lichoběžníkovou funkci příslušnosti.
  7. FuzzyVariable *fvFood=new FuzzyVariable("jídlo" ,0.0 ,10.0 ); fvFood.Terms().Add(new FuzzyTerm("rancid" , new TrapezoidMembershipFunction(0.0 , 0.0 , 1.0 , 3.0 ))); fvFood.Terms().Add(new FuzzyTerm("delicious" , new TrapezoidMembershipFunction(7.0 , 9.0 , 10.0 , 10.0 ))); fsTips.Input().Add(fvFood);
    Protože systém má Mamdaniho inferenci, jeho vstupní a výstupní hodnoty budou určeny stejným způsobem. Proto analogicky vytvoříme výstup:
  8. FuzzyVariable *fvTips=new FuzzyVariable("tipy" ,0.0 ,30.0 ); fvTips.Terms().Add(new FuzzyTerm("levné" , new TriangularMembershipFunction(0.0 , 5.0 , 10.0 ))); fvTips.Terms().Add(new FuzzyTerm("průměr" , new TriangularMembershipFunction(10.0 , 15.0 , 20.0 ))); fvTips.Terms().Add(new FuzzyTerm("velkorysý" , new TriangularMembershipFunction(20.0 , 25.0 , 30.0 ))); fsTips.Output().Add(fvTips); Vytvořme fuzzy pravidla, která budou společně představovat znalostní bázi našeho systému. Chcete-li vytvořit pravidlo, musíte zavolat metodu ParseRule
    z objektu, který reprezentuje náš systém, a předat mu jednoduchou řetězcovou reprezentaci fuzzy pravidla jako parametr: MamdaniFuzzyRule *rule1 = fsTips.ParseRule("pokud (služba je špatná) nebo (jídlo je žluklé), pak (spropitné je levné)" ); MamdaniFuzzyRule *rule2 = fsTips.ParseRule(); MamdaniFuzzyRule *rule3 = fsTips.ParseRule( "pokud (služba je vynikající) nebo (jídlo je vynikající), pak (spropitné je velkorysé)");

    Psaní fuzzy pravidel je přísně typizované a neumožňuje použití neklíčových slov. Klíčová slova jsou: "pokud", "pak", "je", "a", "nebo", "ne", "(" , ")", "mírně", "poněkud", "velmi", "extrémně" ". Poslední čtyři klíčová slova jsou lingvistické kvantifikátory. Klíčová slova také zahrnují všechny názvy proměnných, termínů a funkcí nalezených ve vašem systému. Lingvistické kvantifikátory zvyšují nebo naopak snižují význam fuzzy termů nebo lineárních Sugenových funkcí. Implementace lingvistických kvantifikátorů:

    1. "nepatrně" - "sotva", nahradí výsledek premisy svou krychlovou odmocninou. Výrazně snižuje význam.
    2. "poněkud" - "částečně", nahradí výsledek premisy její druhou odmocninou. Snižuje význam.
    3. „velmi“ - „velmi“, zvyšuje výsledek předpokladu na druhou mocninu. Zvyšuje význam.
    4. "extrémně" - "extrémně", zvyšuje výsledek premisy na třetí mocninu. Výrazně zvyšuje význam.
  9. Zbývá pouze přidat pravidla do systému:
    fsTips.Rules().Add(pravidlo1); fsTips.Rules().Add(pravidlo2); fsTips.Rules().Add(pravidlo3);

Nyní máme hotový model pro výpočet tipů založený na Mamdaniho fuzzy inferenčním systému.

2.2. Návrh systémů typu Sugeno

Příkladem implementace systému typu Sugeno může být skript pro výpočet požadované kontroly systému tempomatu automobilu. Tento skript je popsán v souboru Cruise_Control_Sample_Sugeno.mq5 Knihovna FuzzyNet pro MQL5 a je jedním z příkladů použití fuzzy modelů k řešení problémů automatického řízení.

Právě pro takové jednorozměrné problémy našla fuzzy logika největší rozšíření v automatických řídicích systémech (ACS). Formulace těchto problémů zní asi takto: určitý objekt v okamžiku je ve stavu "A", je nutné, aby v čase přišel do stavu "B". Pro řešení problémů tohoto typu je celé časové období rozděleno na části, najděte časový krok rovný a pak samohybná děla potřebují vyvinout kontrolu v každém bodě , Kde i=0,1,2...n.

Různé PID regulátory si s tímto úkolem snadno poradí, ale mají jednu podstatnou nevýhodu – nedokážou vyvinout, řekněme, „hladké“ řízení. Čili pokud si postavíte tempomat auta na PID regulátoru, při změně rychlosti vás tento systém přivede na tu nastavenou, ale může docházet k různým škubáním a rázům. Fuzzy ovladač bude moci dělat vše mnohem plynuleji a z lidského hlediska pohodlněji.

Je zřejmé, že výstupem našeho fuzzy regulátoru bude nutná změna rychlosti ve formě zrychlení a vstupem bude chyba a první derivace chyby. Chyba je odchylka aktuálního stavu od požadovaného. Jinými slovy, na vstupu systému budou přijaty následující informace:

  • rozdíl mezi aktuální rychlostí vozidla a rychlostí nastavenou v systému tempomatu;
  • jak rychle se tento rozdíl snižuje (zvyšuje).

Takže prvním vstupním parametrem je "chyba rychlosti" ( SpeedError) bude nabývat hodnot od -20 do 20 km/h a bude mít tři pojmy: „snížený“ ( pomalejší), "nezměnilo se" ( nula), "zvýšené" ( rychlejší). Všechny tři termíny budou mít trojúhelníkovou členskou funkci. Druhý vstup je „derivace s ohledem na chybu rychlosti“ ( SpeedErrorDot) s rozsahem od -5 do 5 a fuzzy výrazy "snížilo" ( pomalejší), "nezměnilo se" ( nula), "zvýšené" ( rychlejší) také s trojúhelníkovou funkcí členství.

Protože náš model má inferenční systém Sugeno, výstupní hodnota je "zrychlení" ( Urychlit) nebude mít maximální a minimální hodnotu a místo fuzzy členů budou lineární kombinace vstupních proměnných, které budou mít také názvy: „neměnit“ ( nula), "zvýšit" ( rychlejší), "snížit" ( pomalejší), "podpora" ( func). Zapišme si všechny čtyři lineární kombinace. K tomu si označme proměnné SpeedError jak, SpeedErrorDot Jak , A Urychlit Jak , pak dostaneme rovnice:

Znalostní báze tohoto systému se bude skládat z devíti pravidel:

  1. Pokud (chyba se snížila) a (derivace chybou se snížila), zvyšte zrychlení.
  2. Pokud (chyba se snížila) a (derivace chyby se nezměnila), zvyšte zrychlení.
  3. Pokud (chyba se snížila) a (derivace chyby se zvýšila), pak zrychlení neměňte.
  4. Pokud (chyba se nezměnila) a (derivace podle chyby se snížila), zvyšte zrychlení.
  5. Pokud (chyba se nezměnila) a (derivace chyby se nezměnila), pak zrychlení udržujte.
  6. Pokud (chyba se nezměnila) a (derivace chybou se zvýšila), pak snižte zrychlení.
  7. Pokud (chyba se zvýšila) a (derivace podle chyby se snížila), zvyšte zrychlení.
  8. Pokud (chyba se zvýšila) a (derivace chyby se nezměnila), pak snižte zrychlení.
  9. Pokud (chyba se zvýšila) a (vzrostla derivace chyby), snižte zrychlení.

Podívejme se přímo na průběh vytváření systému:

  1. Pojďme zahrnout soubor SugenoFuzzySystem.mqh z knihovny FuzzyNet pro MQL5:
    #zahrnout Tento soubor umožňuje vytvářet a pracovat se systémy typu Sugeno.
  2. Nyní můžeme vytvořit prázdný systém Sugeno a dále jej naplnit:
    SugenoFuzzySystem *fsCruiseControl=new SugenoFuzzySystem();
  3. Vstupní proměnné pro systém Sugeno se vytvářejí stejným způsobem jako pro systém typu Mamdani.

    Vytvořme proměnnou "chybu rychlosti" a přidejte ji do systému:

    FuzzyVariable *fvSpeedError=new FuzzyVariable("SpeedError" ,-20.0 ,20.0 ); fvSpeedError.Terms().Add(new FuzzyTerm("pomalejší" ,new TriangularMembershipFunction(-35.0 ,-20.0 ,-5.0 ))); fvSpeedError.Terms().Add(new FuzzyTerm("nula" , new TriangularMembershipFunction(-15.0 , -0.0 , 15.0 ))); fvSpeedError.Terms().Add(new FuzzyTerm("faster" , new TriangularMembershipFunction(5.0 , 20.0 , 35.0 )));

    Vytvořme proměnnou „změnu chyby rychlosti“ a také ji přidejte do systému:

    FuzzyVariable *fvSpeedErrorDot=new FuzzyVariable("SpeedErrorDot" ,-5.0 ,5.0 ); fvSpeedErrorDot.Terms().Add(new FuzzyTerm("pomalejší" , new TriangularMembershipFunction(-9.0 , -5.0 , -1.0 ))); fvSpeedErrorDot.Terms().Add(new FuzzyTerm("nula" , new TriangularMembershipFunction(-4.0 , -0.0 , 4.0 ))); fvSpeedErrorDot.Terms().Add(new FuzzyTerm("faster" , new TriangularMembershipFunction(1.0 , 5.0 , 9.0 )));

  4. Vytvořme fuzzy proměnnou typu Sugeno, která bude výstupem systému. Při vytváření fuzzy proměnné bere konstruktor pouze jeden parametr – její jméno. Pak k němu můžete přidat lineární funkce, ale nejprve je třeba tyto funkce definovat a k tomu potřebujete pole koeficientů typu double.

    Tvorba lineární funkce se provádí následovně: každá vstupní proměnná bude neznámá rovnice s koeficientem získaným z pole koeficientů. Koeficienty v poli tedy musí být umístěny v pořadí, v jakém byly zadány vstupní proměnné. Takže pro první vstupní proměnnou bude koeficient s indexem 0, pro druhou - s indexem 1 a tak dále. Délka pole koeficientů proto musí být větší než jedna nebo rovna počtu vstupních proměnných. Pokud jsou délky stejné, bude koeficient volného členu roven nule, jinak bude jeho hodnota rovna poslednímu prvku pole.

    Náš systém má dvě vstupní proměnné, takže délky polí koeficientů by neměly přesáhnout tři. Pojďme deklarovat všechna čtyři pole, na jejich základě zformujeme výše popsané funkce a přidáme je k fuzzy proměnné typu Sugeno a následně ji zadáme do systému:
    SugenoVariable *svAccelerate=new SugenoVariable("Accelerate" ); double coeff1=(0,0 ,0,0 ,0,0 ); svAccelerate.Functions().Add(fsCruiseControl.CreateSugenoFunction("nula" ,coeff1)); double coeff2=(0,0,0,0,1,0); svAccelerate.Functions().Add(fsCruiseControl.CreateSugenoFunction("faster" ,coeff2)); double coeff3=(0,0 ,0,0 ,-1,0 ); svAccelerate.Functions().Add(fsCruiseControl.CreateSugenoFunction("pomalejší" ,coeff3)); double coeff4=(-0,04,-0,1,0,0); svAccelerate.Functions().Add(fsCruiseControl.CreateSugenoFunction("func" ,coeff4)); fsCruiseControl.Output().Add(svAccelerate);

  5. Analogicky se systémem Mamdani vytvoříme všech devět fuzzy pravidel:
    SugenoFuzzyRule *pravidlo1 = fsCruiseControl.ParseRule( "if (SpeedError je pomalejší) a (SpeedErrorDot je pomalejší), pak (Accelerate je rychlejší)"); SugenoFuzzyRule *pravidlo2 = fsCruiseControl.ParseRule( "if (SpeedError je pomalejší) a (SpeedErrorDot je nula) pak (Accelerate je rychlejší)"); SugenoFuzzyRule *pravidlo3 = fsCruiseControl.ParseRule( "if (SpeedError je pomalejší) a (SpeedErrorDot je rychlejší) pak (Accelerate je nula)"); SugenoFuzzyRule *pravidlo4 = fsCruiseControl.ParseRule( "if (SpeedError je nula) a (SpeedErrorDot je pomalejší), pak (Accelerate je rychlejší)"); SugenoFuzzyRule *pravidlo5 = fsCruiseControl.ParseRule( "if (SpeedError je nula) a (SpeedErrorDot je nula) pak (Accelerate je func)"); SugenoFuzzyRule *pravidlo6 = fsCruiseControl.ParseRule( "if (SpeedError je nula) a (SpeedErrorDot je rychlejší) pak (Accelerate je pomalejší)"); SugenoFuzzyRule *rule7 = fsCruiseControl.ParseRule( "if (SpeedError je rychlejší) a (SpeedErrorDot je pomalejší) pak (Accelerate je rychlejší)"); SugenoFuzzyRule *rule8 = fsCruiseControl.ParseRule( "if (SpeedError je rychlejší) a (SpeedErrorDot je nula) pak (Accelerate je pomalejší)"); SugenoFuzzyRule *rule9 = fsCruiseControl.ParseRule( "if (SpeedError je rychlejší) a (SpeedErrorDot je rychlejší) pak (Accelerate je pomalejší)");
  6. Pojďme je přidat do našeho systému:
    fsCruiseControl.Rules().Add(pravidlo1); fsCruiseControl.Rules().Add(pravidlo2); fsCruiseControl.Rules().Add(rule3); fsCruiseControl.Rules().Add(pravidlo4); fsCruiseControl.Rules().Add(pravidlo5); fsCruiseControl.Rules().Add(pravidlo6); fsCruiseControl.Rules().Add(pravidlo7); fsCruiseControl.Rules().Add(pravidlo8); fsCruiseControl.Rules().Add(pravidlo9);

2.3. Výpočet systémů typu Mamdani a Sugeno

Na vstup fuzzy systému musí být přivedena fuzzy proměnná a její hodnota. Jak bylo uvedeno výše, fuzzy proměnné přebírají hodnoty z jejich množiny termínů. V důsledku toho bude výsledek výpočtu systému záviset na funkcích příslušnosti, které odpovídají podmínkám dodaným na vstupu, s fuzzy vstupními proměnnými. Ve většině případů jsou však fuzzy proměnné odesílány na vstup systému ve formě jednoduchých číselných hodnot a na výstupu chtějí získat přesný výsledek ve stejné podobě. V tomto případě se ukazuje, že fuzzy člen nemá explicitní deklaraci a jeho funkce členství je reprezentována jako funkce konstantní příslušnosti. Právě s tímto konkrétním případem pracují systémy napsané pomocí knihovny FuzzyNet.

Co přesně je potřeba dodat na vstup systému a v jaké podobě z něj obdržíme výsledek?

Počet vstupních proměnných pro fuzzy systémy není omezen, každý vstup musí nutně nabývat nějaké hodnoty, proto musíme mít seznam, do kterého budeme hodnoty pro každý vstup ukládat. Prvky tohoto seznamu musí být komplexní objekt se dvěma poli: prvním je fuzzy proměnná a druhým je číselná hodnota typu double . Třídu implementuje soubor Dictionary.mqh z knihovny FuzzyNet v MQL5 Dictionary_Obj_Double, který umožňuje vytvářet takové objekty.

Vytvořme vstupní seznam pro náš systém typu Mamdani:

CList *in =nový CList; Dictionary_Obj_Double *p_od_Service=nový Dictionary_Obj_Double; Dictionary_Obj_Double *p_od_Food=nový Dictionary_Obj_Double; p_od_Service.SetAll(fvService, Service); p_od_Food.SetAll(fvFood, Food); v .Add(p_od_Service); v .Add(p_od_Food);

Zde Servis A Jídlo- dva vstupní parametry dvojitého typu.

Ve výše popsaných příkladech mají oba systémy, Mamdani i Sugeno, pouze jeden výstup, i když v obecném případě, stejně jako u vstupů, neexistují žádná omezení na jejich počet. Struktura vstupu a výstupu se neliší.

Výstup pro systém typu Mamdani:

CList *result=nový CList; Dictionary_Obj_Double *p_od_Tips=nový Dictionary_Obj_Double;

Nyní pro každý systém zavoláme funkci Vypočítat, který přebírá jeden parametr - seznam vstupů a vrací seznam výstupů. Pomocí indexu 0 z tohoto seznamu získáme hodnoty výstupu systému, který je reprezentován jako objekt třídy Dictionary_Obj_Double. Použití metod Klíč A Hodnota pro daný objekt můžete získat proměnnou a její výsledek, resp.

Proveďme výpočet pro Mamdaniho systém a výsledné číslo zobrazme na obrazovce s fuzzy výstupní proměnnou fvTipy:

Result=fsTips.Calculate(in); p_od_Tips=result.GetNodeAtIndex(0); Alert("Tipy, %: ",p_od_Tips.Value());

Udělejme totéž se systémem typu Sugeno:

CList *in =nový CList; Dictionary_Obj_Double *p_od_Error=nový Dictionary_Obj_Double; Dictionary_Obj_Double *p_od_ErrorDot=nový Dictionary_Obj_Double; p_od_Error.SetAll(fvSpeedError,Speed_Error); p_od_ErrorDot.SetAll(fvSpeedErrorDot,Speed_ErrorDot); v .Add(p_od_Error); v .Add(p_od_ErrorDot); CList *result=nový CList; Dictionary_Obj_Double *p_od_Accelerate=new Dictionary_Obj_Double; vysledek=fsCruiseControl.Calculate(in ); p_od_Accelerate=result.GetNodeAtIndex(0); Alert("Zrychlit, %: " ,p_od_Accelerate.Value()*100 );

Závěr

Můžete se podrobněji seznámit s výše popsanými skripty a také si vytvořit svůj vlastní fuzzy model stažením knihovny FuzzyNet pro MQL5 nebo MQL4. Je důležité pochopit, že vytváření „bojových“ fuzzy modelů je poměrně obtížná práce, dokonce i s použitím jakýchkoli pomocných knihoven, a každý hotový model vyžaduje důkladné testování a konfiguraci.

Podrobnější a obsáhlejší popis fuzzy regulátorů.

  • Osovský S. Neuronové sítě pro zpracování informací.
  • Článek od Andrey Masalovich:
  • Klasická logika z definice nemůže pracovat s vágně definovanými pojmy, protože všechny výroky ve formálních logických systémech mohou mít pouze dva vzájemně se vylučující stavy: „pravda“ s pravdivostní hodnotou „1“ a „nepravda“ s pravdivostní hodnotou „0“. “. Jedním z pokusů odklonit se od dvouhodnotové binární logiky k popisu nejistoty bylo zavedení tříhodnotové logiky s třetím stavem „možné“ s pravdivostní hodnotou „0,5“ Lukaševičem. Po zavedení fuzzy množin v úvahu Zadeh navrhl zobecnit klasickou binární logiku založenou na uvažování o nekonečné množině pravdivostních hodnot. Ve verzi fuzzy logiky navržené Zadehem je množina pravdivostních hodnot výroků zobecněna na interval 0;

    1, tzn. zahrnuje klasickou binární logiku a tříhodnotovou Lukaševičovu logiku jako speciální případy. Tento přístup umožňuje uvažovat o prohlášeních s různými pravdivostními hodnotami a provádět uvažování s nejistotou. Nejasné prohlášení

    - je úplnou myšlenkou, jejíž pravdivost či nepravdivost lze posuzovat pouze s určitou mírou jistoty 0 ; 1: „možná pravda“, „možná nepravda“ atd. Čím vyšší je důvěra v pravdivost výroku, tím blíže je stupeň pravdivostní hodnoty 1. V extrémních případech 0, pokud jsme si naprosto jisti nepravdivostí tvrzení, a 1, pokud jsme si naprosto jisti pravdivostí tvrzení, což odpovídá klasické binární logice. Ve fuzzy logice se fuzzy příkazy označují stejně jako fuzzy množiny: A, B, C.... Zaveďme fuzzy zobrazení T: Ω → 0 ;

    1, který působí na množinu fuzzy výroků Ω = A, B, C…. V tomto případě je pravdivostní hodnota výroku A ∈ Ω definována jako T A ∈ 0;

    1 a je kvantitativním hodnocením fuzzy, nejistoty obsažené ve výroku A.

    Logická negace

    T ¬ A = 1 − T A p , p > 0, je fuzzy p-komplement podle Yagera.

    Logická konjunkce fuzzy výroky A a B se označují A ∩ B - jedná se o binární (tj. se dvěma argumenty) logickou operaci, jejímž výsledkem je fuzzy výrok „A a B“, jehož pravdivostní hodnota je:

    T A ∩ B = min T A ;

    T B.

    Kromě výše uvedené historicky uznávané základní definice logické konjunkce (fuzzy „AND“), kterou zavedl Zadeh, lze použít následující alternativní vzorce:

    T A ∩ B = T A T B – v Bandler-Kohoutově bázi;

    T A ∩ B = max T A + T B − 1 ;

    0 – na základě Lukaševič-Giles; TA ∩ B = T B , s TA = 1;

    TA, při TB = 1;

    0, v ostatních případech;

    – na základě Weber.

    Logická disjunkce

    fuzzy výroky A a B se označují A ∪ B - jedná se o binární logickou operaci, jejímž výsledkem je fuzzy výrok „A nebo B“, jehož pravdivostní hodnota je:

    TA ∪ B = max TA; T B.

    Kromě historicky uznávané základní definice logické disjunkce (fuzzy „OR“), kterou zavedl Zadeh výše, lze použít následující alternativní vzorce:

    T A ∪ B = T A + T B − T A T B – v Bandler-Kohoutově bázi;

    TA ∪ B = min TA + T B;

    1 – na základě Lukaševič-Gilés;

    TA ∪ B = TB, s TA = 0;

    TA, při TB = 0;

    1, v ostatních případech;

    – na základě Weber.

    Fuzzy implikace

    fuzzy výroky A a B se označují A ⊃ B - jedná se o binární logickou operaci, jejímž výsledkem je fuzzy výrok „z A následuje B“, „když A, tak B“, jehož pravdivostní hodnota je:

    Celkový počet zavedených definic fuzzy implikace není omezen na výše uvedené. Velké množství prací o studiu různých variant fuzzy implikace je dáno tím, že koncept fuzzy implikace je klíčový při fuzzy inferencích a rozhodování ve fuzzy podmínkách. Zadehova fuzzy implikace je nejrozšířenější při řešení aplikovaných problémů fuzzy řízení.

    Fuzzy ekvivalence fuzzy výroky A a B se označují A ≡ B - jedná se o binární logickou operaci, jejímž výsledkem je fuzzy výrok „A je ekvivalentní B“, jehož pravdivostní hodnota je:

    T A ≡ B = min max T ¬ A ;

    TB ;max TA;

    T¬B.
    Stejně jako v klasické binární logice můžete ve fuzzy logice s použitím logických spojovacích prvků diskutovaných výše tvořit poměrně složité logické příkazy.
    6. září 2017 zemřel ve věku 96 let Lotfi Zadeh, tvůrce fuzzy logiky.

    Společnost, která je založena na technologiích fuzzy logiky a neuronových sítí a ve které v současné době pracuji, zahájila 6. září 2017 takové transformace, že pouze v rámci této velmi fuzzy logiky lze nějak popsat. A od zítřka mi bude ukončena smlouva, i když pokud od 15. září budu nezaměstnaný, tak to lze hodnotit jen lichou logikou - 0,28, 0,78 nebo 1,58 - život ukáže.

    A před dvěma lety, u příležitosti 50. výročí fuzzy logiky, napsal Alexander Malyutin poznámku na vědeckou vyskakovací stránku „Perelman zavolá zpět“ (nowwow.info). Tato stránka je nyní mrtvá, a proto by měl být článek uložen. Ostatně novinář, který kdysi vedl Izvestija, psal o podivné logice. Mimochodem, bloggerky v domácnosti nemusí vycházet - podivná logika je vysvětlena na příkladu pračky. Lepší je naučit se psát od profesionálů.

    Zade před 50 lety navrhl matematický popis živé lidské logiky. V běžné matematické logice existuje pouze „pravda“ (označuje se také číslem 1) nebo „nepravda“ (0). Ve fuzzy logice může být stupeň pravdivosti výroku jakýkoli - přesněji jakékoli číslo od 0 do 1. Je ta dívka támhle krásná? Ani ano, ani ne, ale „0,78; že je krásná."

    Zní to nezvykle. Jak tomu vůbec můžeme rozumět? Pro zjednodušení můžeme předpokládat, že někdo provedl průzkum, ve kterém 78 % respondentů označilo dívku za krásnou a zbytek ne. Mohou mít takové struktury praktické využití? Docela. Řekněme, že se musíte rozhodnout, zda poslat dívku do soutěže Miss Something (vážné náklady!), a k tomu musíte vyhodnotit její šance na výhru. Tehdy se budou hodit hodnocení nejen krásy, ale i dalších důležitých pro vítězství a také nejasných parametrů: důvtipu, erudice, laskavosti atd. Jen je potřeba pochopit, odkud brát stupně pravdy a jak s nimi pracovat fuzzy data. Zadeh pochopil. Do roku 1973 vyvinul matematický aparát nezbytný pro praxi. Mamdani na něm vyrobil svůj vlastní ovladač.

    Předností Lotfiho Zadeha není jen to, že vyvinul novou teorii. Pojmenoval to velmi dobře, vybral běžně používané slovo. Pokud by místo „fuzzy“ vzali nesrozumitelný termín, například „logiku s hodnotou kontinua“ (což mimochodem je), nemělo by šanci stát se široce známým. Nespecialisté by tuto frázi prostě nepoužívali, protože kdo ví, co to znamená.

    Jiná věc je, když má vědecký koncept každodenní homonymum. Pak se průměrnému člověku zdá, že rozumí, o čem to je, zvláště pokud o tom viděl film. Také v matematice a fyzice existuje mnoho takových „srozumitelných“ termínů. Černá díra. Magický čtverec. Horizont událostí. Charmed kvark. Věta o dvou policistech. A samozřejmě - matrice! Kdo by nevěděl, že matrice je, když Keanu Reeves běží po stropě. A o některých tabulkách s čísly nám říkat nemusíte.

    Pro rozvoj vědy jsou užitečné vulgární myšlenky široké veřejnosti. Dokonce by se měla přidat i obyčejná slova. Natočte více filmů o horizontu událostí. Nebojte se průtahů a přehmatů. Jde především o to, aby divák pocítil dotyk na špici vědy a velikosti lidské, potažmo své osobní mysli. Zvláště pokud rozhodnutí o financování výzkumu závisí na takovém divákovi.

    Vynikající sovětský jaderný vědec Georgy Flerov řekl: „Musíte vysvětlit vědecký problém důležitým autoritám ne správným způsobem, ale způsobem, který jim bude srozumitelný. Tohle je bílá lež." Právo. Není třeba zaměňovat management s přednáškami o „spontánním narušení elektroslabé symetrie“. Řekněte nám lépe o „Boží částici“ a „Velkém tajemství gravitace“. Mimochodem, v tom není žádná zvláštní lež - ale existují investice. Nezáleží na tom, že pseudovědecké pohádky dávají vzniknout přemrštěným očekáváním a v důsledku toho přehnané finanční injekci, která končí v troskách. Celkový přínos nakonec převáží. Dot-com bublina splaskla v roce 2001, ale internetová technologie dostala silný impuls.

    V tomto smyslu měla fuzzy logika štěstí nejen se svým jménem, ​​ale také se zařazením na seznam věd a technologií sjednocených pod názvem „umělá inteligence“ – spolu s neuronovými sítěmi, logickým programováním, expertními systémy atd. je již velká marketingová hra, kde seznam účastníků získá efekt balíčkové reklamy v rámci propagace jedné vědecké megaznačky. Žádný vtip: umělá inteligence! To je fascinující vyhlídka, která nemůže být jasnější. Každý dům má železného sluhu. Nechte veškerou práci dělat chytré kybernetické organismy a my budeme jen zadávat PIN kódy a pít Pina Colady. Kvůli takovému světlu na konci tunelu se nešetří penězi.

    Flerovova „bílá lež“ na příkladu umělé inteligence fungovala na 100 %. Japonská vláda utratila v letech 1982 až 1992 půl miliardy dolarů na vývoj „počítače páté generace“ s prvky „myšlení“. Nevyšlo to podle plánu. Zhoršil se zejména logický programovací jazyk Prolog, od kterého se očekávalo, že bude hrát první roli v 80. letech. No dobře. Je to jako s dot-coms: v některých zemích se nakonec stejně naučili vyrábět vynikající roboty.

    Kybernetické systémy dnes vidí, slyší a čtou téměř jako lidé, porážejí šachové velmistry a často řídí výrobní procesy efektivněji než certifikovaní specialisté. Kromě přímých vývojářů je třeba poděkovat za tak silné rozvinutí tématu autorům úspěšné terminologie, dále Isaacu Asimovovi, Arthuru Clarkovi, bratrům Wachowským a celému týmu Gorkého filmového studia, které dal sovětským dětem obrazy robotických umělců.

    Ve skutečnosti nebyli stvořeni žádní inteligentní kyborgové. Není ani možné s jistotou říci, že ve snaze je vytvořit se ubíráme správným směrem. Abychom to viděli, podívejme se, jak v nejobecnějších pojmech funguje „chytrá“ pračka, která díky řídicí jednotce fuzzy logiky dokáže určit, kdy je oblečení „dostatečně čisté“, aby vypustilo vodu a začalo odstřeďovat. Příklad je zajímavý i tím, že ukazuje, jak se dosahuje praktického výsledku na průniku několika oborů: fyziky, chemie a matematiky.
    Úkol řídicího zařízení stroje je následující. Jako vstupní údaje berte míru znečištění oděvu a druh znečištění. Analyzujte je a vygenerujte výstupní parametr: čas praní.

    Za oba vstupní indikátory je zodpovědný optický senzor, který určuje, jak průhledný je mycí roztok. Stupeň znečištění lze posoudit podle stupně jeho průhlednosti: čím špinavější je oblečení vložené do nádrže, tím méně průhledný je roztok. A typ znečištění je určen rychlostí změny průhlednosti roztoku. Tukové látky jsou špatně rozpustné, takže čím pomaleji se mění koncentrace roztoku, tím více tukové kontaminace musíte čelit. To je vše, senzor dokončil svou práci.

    Všimněte si, že uvedl dva přesné parametry, dvě konkrétní čísla: stupeň průhlednosti řešení a rychlost změny průhlednosti řešení. Ale pak algoritmus Ibrahima Mamdaniho začne fungovat.

    V první fázi, která se nazývá fuzzifikace (zavedení fuzziness), jsou obě čísla převedena na fuzzy pojmy. Řekněme, že jsme zavedli tři stupně znečištění: „slabé“, „střední“ a „silné“. Pak se místo úrovně transparentnosti řešení objeví tři nejasné úsudky o kontaminaci: „0,3; slabý", "0,6; průměr", "0,1; silný."

    Co tato čísla znamenají? Stejně jako v případě dívky, o jejíž neostré kráse jsme hovořili na začátku textu, je lze považovat za výsledky jakéhosi referenda, ve kterém 30 % občanů hlasovalo, že znečištění při dané úrovni transparentnosti řešení je slabý, 60 % – že je průměrný, 10 % – že je silný. Uspořádal někdo toto referendum? Můžeme předpokládat, že ano.

    Během vývoje produktu se shromáždili odborníci na praní v pračce a zjistili, jak se budou hlasy „voličů“ dělit v závislosti na míře transparentnosti řešení. Není to šarlatánství, ptáte se, matematika je exaktní věda, jací jsou další odborníci na prádlo? Ano, takhle. Chcete-li seriózně vyřešit problém, najdete užitečné odborníky, jejichž odhady a hodnocení budou smysluplné a užitečné.

    Máme tedy jeden fuzzy parametr „stupeň znečištění“, nyní potřebujeme druhý: „typ znečištění“. Pořádáme další „referendum“. Řekněme, že ukázal, že při takové rychlosti změny koncentrace roztoku, kterou nám senzor poskytl, by měla být uvažována kontaminace, například „0,2; nízký obsah tuku", "0,5; střední obsah tuku", "0,3; vysoký obsah tuku."

    Začíná druhá fáze algoritmu: aplikace fuzzy pravidel. Nyní spolu s odborníky diskutujeme, jaká by měla být doba mytí v závislosti na stupni a typu znečištění. Projdeme-li všechny možné možnosti, dostaneme - třikrát tři - devět pravidel následujícího typu: "pokud je znečištění silné a má střední obsah tuku, pak je doba praní dlouhá." Dále podle zákonů logiky (pro zjednodušení je přeskočíme) vypočítáme míru pravdivosti pro dobu praní. Nechť výsledný čas praní fuzzy je: „0,1; malý", "0,7; průměr", "0,2; velký." Můžete pokračovat do závěrečné fáze.

    Říká se tomu defuzzifikace, tedy odstranění neostrosti – vždyť potřebujeme dát stroji přesné zadání, jak dlouho má buben otáčet. Existují různé přístupy, jedním z běžných je výpočet „těžiště“. Řekněme, že odborníci řekli, že krátká doba mytí je 20 minut, střední 40 minut a dlouhá 60 minut. Poté, když vezmeme v úvahu „váhu“ každé hodnoty, získáme konečný parametr: 20*0,1 + 40*0,7 + 60*0,2 = 42. Oblečení bude „dostatečně čisté“ po 42 minutách praní. Hurá.

    Ibrahim Mamdani přišel s krásnou věcí, že? Na první pohled je to téměř šamanismus. Máte přesná počáteční čísla a potřebujete z nich získat další přesná čísla. Ale nezabýváte se odvozováním vzorců, ale ponoříte se do světa fuzzy pojmů, nějak s nimi operujete a pak se vrátíte zpět do „přesného“ světa – s připravenou odpovědí v rukou.

    Výrobci praček dokonce začali propagovat použití fuzzy logiky a psali Fuzzy Logic, Fuzzy Control, Logic Control přímo na výrobky nebo do návodů. Podnikatelé jsou pragmatičtí lidé a na své produkty nedávají náhodná slova. Pokud tedy na autě vidíte nápis Fuzzy Logic, znamená to: „prodává“ produkt. Technologie kromě svých čistě spotřebitelských vlastností také hypnotizuje kupujícího svým jménem a motivuje jej k rozchodu se stovkou dolarů navíc. Nevím, jestli z toho Lotfi Zadeh dostává tantiémy, ale bylo by to spravedlivé. Na domácích spotřebičích není zmíněno žádné jiné odvětví matematiky.

    Pravděpodobně jste si ale všimli, že v průběhu popisování provozu pračky s fuzzy logikou se nenašlo jediné místo, kde by člověk mohl mít podezření, že má pračka vlastní mysl. Pouze instrukce jako servisní, pouze řešení naprogramovaných problémů. Stroj včas vypustí vodu. Ale nebude rozumět tomu, co dělá a proč. Myšlenka na to, že se přestane mýt a způsobí potopu v koupelně jen tak pro zábavu, se do její mikroprocesorové hlavy nikdy nedostane. Pokud tato myšlenka nenapadne programátora, který jen tak pro zábavu zabuduje do stroje nějakou další Funny Logic. Na něco takového stroj sám myslet nemůže.

    Tolik k umělé inteligenci. Roboti se pouze učí napodobovat lidské činnosti, a to i ty, na které nyní vynakládáme intelektuální úsilí, například překládání z jiného jazyka. I když lépe překládají. Jeřáb vás neurazí, protože je silnější než vy. A příchod jeřábů nevedl ke zmizení vzpěračů. Teprve nyní je zvedání závaží sportem a potěšením a není třeba nosit pytle s cementem na stavbu. Stejné je to s překlady. Program není chytřejší než my, jen jsme do něj dokázali formalizovat a efektivně nahrát některé z našich dovedností, a nyní nemůžeme plýtvat intelektuálním úsilím na technické překlady, ale raději pracovat na, řekněme, Shakespearovi.
    Věřit, že stroje získávají inteligenci díky pokročilé kybernetice, je jako věřit v kult nákladu. Pamatujete si, jak obyvatelé ztraceného ostrova, když viděli na obloze letadlo, vyrobili stejnou postavu ze slámy a mysleli si, že poletí? Tehdy nevěděli nic o kovech a petroleji, nemluvě o zvedací síle - a šli to vysvětlovat.

    Tak je to u nás s „umělou inteligencí“. Roboti budou brzy umět řídit auta a pravděpodobně jednou porazí tým lidí ve fotbale – tím spíše, že tento okamžik přibližují nejen japonští inženýři, ale i náš národní tým. Nepůjde ale o nic jiného než o napodobování rozumného jednání na hřišti. Stejně jako tito domorodci ještě neznáme něco kriticky důležitého, co by nám umožnilo vytvořit inteligentní bytost.

    My, slovy Stanislava Lema, určitě budeme mít Enhancer schopnosti řídit auto – stejně jako jsme již dosáhli Enhancer of the Ability to Stop the Wash. Ale Intelligence Amplifier, jehož vzhled předpověděl velký spisovatel sci-fi, nebude fungovat na základě současných technologií „umělé inteligence“, včetně fuzzy logiky, navzdory vší své eleganci a užitečnosti. Fuzzy logika je jen způsob, jak snížit množství výpočtů při řešení určité třídy problémů. A díky za to.

    Robotických interpretů se není třeba bát. Bolest kreativity, ušlechtilé pudy, vědecký výzkum, snění, důstojnost, sebeobětování, připravenost k hrdinství, dobrodružství, čest, přátelství, pýcha, předsudky, závist, chamtivost, ryzost, arogance, podlost, vulgárnost, odsuzování, podvody, podvody , setups - in Ve všech těchto nominacích si ještě dlouho povedeme mnohem lépe než naši menší polovodičoví bratři.

    Přemýšleli jste někdy o tom, jak člověk přemýšlí? Jaká slova obvykle používáme k vysvětlení míry něčeho? Výrazy „trochu soli“, „trochu zchladit“, „jít trochu dál“, „hodně nalít“, „trochu přinést“ jsou pro člověka zcela běžné. Právě těmito kategoriemi vnímáme okolní realitu. V našem každodenním životě velmi zřídka používáme jasná pravidla a algoritmy. Člověk nemá přesné senzory a měřicí přístroje. Místo toho máme smysly a náš vrozený smysl pro proporce. To se ale nedá nazvat naší nevýhodou, naopak, to je naše hlavní výhoda. To nám umožňuje být adaptivní. Faktem je, že svět kolem nás je tak složitý, že ani jeden super-megachladný počítač nedokáže vzít v úvahu všechny jeho závislosti. Pro přesné počítačové výpočty proto obvykle problém zjednodušujeme, idealizujeme, zahazujeme nedůležité faktory, vytváříme nějaké domněnky atp. Můžeme to udělat právě proto, že náš smysl pro proporce nám umožňuje „z ruky“ posoudit, které faktory přispívají významně a které jsou nevýznamné. Existuje však poměrně hodně problémů, které je poměrně obtížné formalizovat a vytvořit pro ně „jasný“ algoritmus.

    Těžko si například představit, že nějaká automatika bude péct koláče chutnější než babička Zina. V této záležitosti je příliš mnoho „rozmazaných“ faktorů: droždí je pokaždé jiné a mouka je jiná; Hodně také záleží na vlhkosti a teplotě v místnosti. Všechny tyto faktory bude schopna zohlednit pouze zkušená babička.

    Proto je v mnoha případech užitečné dát ovládacímu zařízení „fuzzy myšlení“. V systému, kde je obtížné nebo nemožné zohlednit všechny faktory, které jej ovlivňují, to umožňuje nahradit lidského odborníka s rozsáhlými praktickými zkušenostmi s automatizací. Nyní se na jednoduchém příkladu podíváme, jak se to dělá v technických systémech.

    Jeřábník Vasily pracuje v závodě N. V tomto podniku pracuje již 40 let, od doby, kdy vystudoval střední odbornou školu. Jeho úkolem je zvedat palety s hotovými výrobky pomocí jeřábu a ukládat je do skladovacího prostoru. Jen Vasily ví, jak to udělat. Během mnoha let praxe se jasně naučil, jak určit, jakou rychlostí se potřebuje pohybovat na jeřábu podle toho, jakou zátěž má na háku, kolik metrů před cílem potřebuje začít zastavovat, jak nastavit úhel výložníku jeřábu pro snížení výkyvu palety na háku atd. Všechny tyto zkušenosti mu umožňují zasáhnout cíl se zátěží pokaždé a optimální rychlostí.

    Vasilij však brzy odejde do důchodu a nemá ho kdo nahradit. Vedení závodu navíc nastavilo kurz automatizace výrobního procesu. Aby bylo možné nahradit jeřábníka inteligentním zařízením, je nutné jej vybavit „fuzzy logikou“ a Vasilyho odbornými znalostmi. Pojďme...

    Vstupy a výstupy řídicího systému

    Nejprve si určíme vstupní a výstupní parametry našeho budoucího řídicího systému. Vstupy budou kritéria, podle kterých Vasily obvykle hodnotí aktuální stav systému:

    • Vzdálenost k cíli
    • Amplituda výkyvu zatížení na háku jeřábu

    Výstupy jsou řídicí akce, které může operátor jeřábu zavést do systému a změnit jeho aktuální stav:

    • Plynový pedál - reguluje rychlost, ovlivňuje amplitudu kývání zátěže
    • Brzdový pedál - ovlivňuje plynulost zastavení (amplituda kolísání zátěže)
    • Ovládací rukojeť jeřábového výložníku – nastavuje úhel výložníku, kompenzuje kývání nákladu

    Nyní se pojďme obrátit na samotného Vasilyho, abychom z něj „vytěžili“ neocenitelné odborné znalosti.

    ptáme se:

    — « Vasilij, řekni mi, jakou rychlostí se máš pohybovat, abys náklad dopravil do cíle co nejrychleji, ale aniž bys musel před cílem prudce zabrzdit, což by způsobilo prudké zhoupnutí nákladu?“

    Vasily odpoví asi takto:

    - "No, tak tohle je... jakmile jsem zavěsil náklad, dokud je to místo ještě daleko, sešlápnu plyn na podlahu." V polovině cesty trochu zpomaluji a jdu plynule, aby se lano neviklalo. Pokud se hodně viklá, sešlápnu plyn jen trochu a nakloním výložník mírně do protisměru. Když se přiblížím, úplně pustím plyn, naopak malého zpomalím.“

    Tak jsme od Vasilije dostali první fuzzy pravidla. Když s ním budeme dál komunikovat, zbytek se naučíme. Uveďme si všechna výsledná pravidla ve formě tabulky:

    – jedná se o překlad vstupního parametru systému do „fuzzy“ oblasti.

    První vstupní parametr je „vzdálenost k cíli“. Z hlediska „fuzzy logiky“ to tak je jazyková proměnná , protože jako hodnoty bere spíše slova než čísla. A v chápání počítače je „vzdálenost k cíli“ velmi jasný parametr, měřený v metrech.

    Proto v této fázi musíme od Vasilije zjistit, co je pro něj „blízké“ a co je „velmi blízké“ - určit jeho fuzzy rozsahy v číslech. Třeba 15 metrů mu bude určitě blízko. Ale pokud jde o 6 metrů, bude v odečtech zmaten a klasifikuje tuto hodnotu buď jako „blízko“ nebo jako „velmi blízko“. Proto se „fuzzy rozsahy“ mohou navzájem překrývat. Podívejme se, jak to vypadá na grafu:

    Je volána funkce M(x). členská funkce . Ukazuje, do jaké míry parametr patří k jedné z fuzzy hodnot. Jak je patrné z grafu, vzdálenost 32 metrů se stupněm členství 0,2 se vztahuje k hodnotě „střední“ a se stupněm členství 0,65 k hodnotě „blízko“.

    Čím větší je stupeň členství, tím větší je pravděpodobnost, že počítač proměnné přiřadí odpovídající fuzzy hodnotu. Nezaměňujte však funkci příslušnosti s funkcí rozdělení pravděpodobnosti – nejsou totéž. Proto zejména součet stupňů příslušnosti jednoho vstupního parametru k různým fuzzy hodnotám nemusí být nutně roven 1.

    Pro zbývající vstupní a výstupní parametry systému je potřeba určit přesně stejné funkce členství, opět s využitím odborných znalostí jeřábníka Vasilije.

    Rozhodování

    Jakmile řídicí systém rozfázuje všechny vstupní parametry podle daných funkcí příslušnosti, rozhodovací blok najde odpovídající hodnoty výstupních parametrů pomocí fuzzy pravidel (viz tabulka výše).

    Defuzzifikace

    V této fázi řídicí systém provede inverzní transformaci z fuzzy hodnot výstupních parametrů (zjištěné z tabulky) na čistá čísla. Matematické algoritmy pro tyto transformace jsou různé a závisí na konkrétním problému. Nemá smysl se jimi podrobně zabývat – ať to dělají drsní matematici. Technik potřebuje implementovat pouze jeden ze známých algoritmů.


    Jako regulátor fuzzy logiky můžete použít hotové mikroprocesorové zařízení, které podporuje výše popsané algoritmy. Takové zařízení potřebuje pouze mít funkce příslušnosti všech lingvistických proměnných a fuzzy pravidla. Samozřejmě, pokud si chcete procvičit, můžete si vzít běžný mikrokontrolér a „drsnou“ knihu o matematických algoritmech používaných ve fuzzy logice a implementovat to všechno sami.

    V každém případě bude struktura regulátoru fuzzy logiky něco takového:

    Závěr

    V tomto článku jsme zkoumali základní koncepty fuzzy logiky, která je nedílnou součástí širšího konceptu „umělé inteligence“. Fuzzy logika je široce používána při konstrukci expertních systémů, systémů pro podporu rozhodování a řídicích systémů založených na odborných znalostech. Dále je na řadě článek, ve kterém vám prozradíme, jaké nástroje a zařízení používáme v každodenním životě využívající fuzzy logiku. Ano, ano, neudělal jsem chybu, každý z nás používá zařízení s umělou inteligencí každý den. Ale o tom později, ale to je pro dnešek vše! Pamatujte při čtení LAZY SMART, přibližujete se světu nových technologií! Sbohem!

    2.1 Základní pojmy fuzzy logiky

    Jak bylo zmíněno v předchozích kapitolách, klasická logika pracuje pouze se dvěma pojmy: „pravda“ a „nepravda“ a vylučuje jakékoli mezilehlé hodnoty. Stejně tak booleovská logika neuznává nic jiného než jedničky a nuly.

    Fuzzy logika je založena na použití přirozeného jazyka. Člověk sám určí potřebný počet termínů a každému z nich přiřadí určitou hodnotu popisované fyzikální veličiny. Pro tuto hodnotu bude stupeň příslušnosti fyzikální veličiny k termínu (slovo přirozeného jazyka charakterizující proměnnou) roven jedné a pro všechny ostatní hodnoty - v závislosti na zvolené funkci členství.

    Pomocí fuzzy množin je možné formálně definovat nepřesné a nejednoznačné pojmy jako „vysoká teplota“, „mladý muž“, „průměrná výška“ nebo „velké město“. Před formulací definice fuzzy množiny je nutné definovat tzv. vesmír diskurzu. V případě nejednoznačného pojmu „hodně peněz“ bude jedna částka považována za velkou, pokud se omezíme na rozsah, a částka zcela jiná – v rozsahu.

    Lingvistické proměnné:

    Lingvistická proměnná je proměnná, pro kterou se používají jazykové hodnoty vyjadřující kvalitativní hodnocení nebo fuzzy čísla. Příkladem jazykové proměnné může být rychlost nebo teplota, příkladem jazykové hodnoty charakteristika: velká, střední, malá, příkladem fuzzy čísla může být hodnota: přibližně 5, přibližně 0.

    Lingvistický termínový soubor je soubor všech jazykových hodnot používaných k definování určité jazykové proměnné. Rozsah hodnot proměnné je množina všech číselných hodnot, které může určitý parametr studovaného systému nabývat, nebo množina hodnot, která je významná z hlediska řešeného problému. .

    Fuzzy sady:

    Buď univerzální sada, - prvek a - nějaký majetek. Běžná (křupavá) podmnožina univerzální sada , jehož prvky uspokojují vlastnost , jsou definovány jako množina uspořádaných párů
    ,Kde
    ‒ charakteristická funkce, která má hodnotu 1, pokud splňuje vlastnost, a 0 jinak.

    Fuzzy podmnožina se liší od běžné podmnožiny v podmnožině prvků z Ohledně nemovitosti neexistuje jednoznačná odpověď ano nebo ne. V tomto ohledu fuzzy podmnožina univerzální množiny je definována jako množina uspořádaných párů
    , Kde
    je charakteristická funkce členství, která nabývá hodnot v nějaké uspořádané množině (např.
    ). Funkce členství udává stupeň příslušnosti prvku mnoho . Mnoho
    tzv. sada příslušenství. Li
    , pak lze fuzzy množinu považovat za běžnou crisp množinu.

    Mnoho vesmírných prvků
    , pro které
    , se nazývá nositel fuzzy množiny a je určeno supp A:

    Výška fuzzy sady definovaný jako

    Fuzzy sada se nazývá normální tehdy a jen tehdy
    . Pokud je fuzzy množina není normální, pak jej lze normalizovat pomocí transformace

    ,

    Kde
    - výška této sady.

    Fuzzy sada
    , je konvexní právě tehdy, když pro libovolný
    A
    podmínka splněna

    2.1.1 Operace s fuzzy množinami

    Zapnout. Nechat A - fuzzy množiny na univerzální množině . To říkají obsažené v , Pokud

    Rovnost. a jsou si rovni, jestliže

    Přidání. Nechat
    ,A - fuzzy množiny definované na .A vzájemně se doplňují, pokud.

    Průsečík.
    - největší fuzzy podmnožina obsažená současně v A :

    Sdružení.
    ‒ největší fuzzy podmnožina obsahující všechny prvky z A :

    Rozdíl.
    - podmnožina s funkcí členství:

    2.1.2 Fuzzy vztahy

    Nechat
    - přímý součin univerzálních sestav a
    - určitá sada příslušenství. Fuzzy n-ární relace je definována jako fuzzy podmnožina na , přijímající jeho hodnoty
    . V případě
    A
    nejasný postoj mezi sadami
    A
    funkce bude volána
    , který přiřazuje každou dvojici prvků
    velikost
    .

    Nechat - nejasný postoj
    mezi
    A , A nejasný postoj
    mezi A . Fuzzy vztah mezi
    A , označené
    , definovaný přes A výraz se nazývá kompozice vztahů A .

    Fuzzy implikace.

    Fuzzy implikace je pravidlo ve tvaru: IF
    ŽE
    ,Kde
    – stav a
    - závěr a A - fuzzy množiny definované jejich funkcemi příslušnosti
    ,
    a oblasti definice
    ,respektive. Implikace je označena jako
    .

    Rozdíl mezi klasickou a fuzzy implikací je v tom, že v případě klasické implikace mohou být podmínka a závěr buď absolutně pravdivé, nebo absolutně nepravdivé, zatímco u fuzzy implikace mohou být částečně pravdivé s hodnotou patřící do intervalu . Tento přístup má řadu výhod, protože v praxi jen zřídka nastávají situace, kdy jsou podmínky pravidel plně splněny, a z tohoto důvodu nelze předpokládat, že závěr je absolutně pravdivý.

    Ve fuzzy logice existuje mnoho různých implikačních operátorů. Všechny poskytují různé výsledky, jejichž míra účinnosti závisí zejména na modelovaném systému. Jedním z nejběžnějších implikačních operátorů je Mamdaniho operátor, založený na předpokladu, že míra pravdivosti závěru
    nemůže být vyšší než míra splnění podmínky
    :

    2.2 Konstrukce fuzzy systému

    Mezi vývojem umělé inteligence si expertní systémy získaly stabilní uznání jako systémy pro podporu rozhodování. Jsou schopni shromažďovat znalosti získané člověkem v různých oblastech činnosti. Prostřednictvím expertních systémů je možné řešit mnoho moderních problémů, včetně problémů řízení. Jednou z hlavních metod reprezentace znalostí v expertních systémech jsou produkční pravidla, která umožňují přiblížit se lidskému stylu myšlení. Obvykle je produkční pravidlo zapsáno ve tvaru: „Jestliže (premisa) (spojení) (premisa)… (premisa) THEN (závěr). pomocí logických spojovacích výrazů „AND“, „OR“ .

    Fuzzy systémy (FS) jsou také založeny na pravidlech produkčního typu, ale jako premisy a závěry v pravidle se používají lingvistické proměnné, což se vyhýbá omezením typickým pro klasická produkční pravidla.

    Fuzzy systém je tedy systém, jehož popisná vlastnost je:

    fuzzy specifikace parametrů;

    fuzzy popis vstupních a výstupních proměnných systému;

    nejasný popis fungování systému na základě produkčních pravidel „KDYŽ... PAK...“.

    Nejdůležitější třídou fuzzy systémů jsou fuzzy řídicí systémy (FCS) Jednou z nejdůležitějších součástí FCS je znalostní báze, což je soubor fuzzy pravidel „IF-THEN“, která určují vztah mezi vstupy a výstupy. studovaného systému. Existují různé typy fuzzy pravidel: lingvistická, relační, Takagi-Sugeno model atd.

    Pro mnoho aplikací souvisejících s řízením procesů je nutné sestavit model daného procesu. Znalost modelu umožňuje vybrat vhodný regulátor (řídicí modul). Často je však konstrukce správného modelu obtížným problémem, který někdy vyžaduje zavedení různých zjednodušení. Použití teorie fuzzy množin pro řízení procesů neznamená znalost modelů těchto procesů. Je třeba pouze formulovat pravidla chování ve formě fuzzy podmíněných výroků typu „KDYŽ-POTOM“.

    Obrázek 2.1 -. Struktura fuzzy řídicího systému

    Proces řízení systému přímo souvisí s výstupní proměnnou fuzzy řídicího systému, ale výsledek fuzzy logické inference je fuzzy a fyzický akční člen není schopen takový příkaz vnímat. K tomu, aby bylo možné přejít od fuzzy hodnot veličin k dobře definovaným, jsou zapotřebí speciální matematické metody. Obecně lze celý proces fuzzy řízení rozdělit do několika fází: fuzzifikace, vývoj fuzzy pravidel a defuzzifikace.

    Fuzzifikace znamená přechod k vágnosti. V této fázi jsou přesné hodnoty vstupních proměnných převedeny na hodnoty lingvistických proměnných aplikací některých ustanovení teorie fuzzy množin, konkrétně pomocí určitých funkcí příslušnosti.

    Ve fuzzy logice nejsou hodnoty jakékoli veličiny reprezentovány čísly, ale slovy přirozeného jazyka a nazývají se „termíny“. Hodnotou jazykové proměnné „Vzdálenost“ jsou tedy výrazy „Daleko“, „Zavřít“ atd. Pro implementaci jazykové proměnné je nutné určit přesné fyzikální hodnoty jejích výrazů. Řekněme, že proměnná „Vzdálenost“ může nabývat libovolné hodnoty z rozsahu od 0 do 60 metrů. Podle ustanovení teorie fuzzy množin může být každá hodnota vzdálenosti z rozsahu 60 metrů spojena s určitým číslem, od nuly do jedné, které určuje míru, do jaké daná hodnota fyzické vzdálenosti (například 10 metrů ) patří k jednomu nebo druhému termínu jazykové proměnné „Vzdálenost“ . Potom lze vzdálenosti 50 metrů přiřadit stupeň sounáležitosti s výrazem „Far“ rovný 0,85 a pro výraz „Close“ rovný 0,15. Při položení otázky, kolik členů v proměnné je potřeba pro dostatečně přesnou reprezentaci fyzikální veličiny, se obecně uznává, že pro většinu aplikací stačí 3-7 členů na proměnnou. Většina aplikací je zcela vyčerpána použitím minimálního počtu termínů Tato definice obsahuje dvě extrémní hodnoty (minimum a maximum) a průměr. Co se týče maximálního počtu termínů, není omezen a zcela závisí na aplikaci a požadované přesnosti popisu systému. Číslo 7 je určeno kapacitou krátkodobé paměti člověka, která podle moderních představ pojme až sedm informací.

    Příslušnost každé přesné hodnoty k jednomu z členů lingvistické proměnné je určena pomocí funkce příslušnosti. Jeho podoba může být naprosto libovolná, ale zformoval se koncept tzv. standardních funkcí členství

    Obrázek 2.2 - Standardní funkce členství

    Standardní funkce členství jsou snadno použitelné pro řešení většiny problémů. Pokud však musíte řešit konkrétní problém, můžete zvolit vhodnější formu členské funkce a můžete dosáhnout lepších výsledků pro systém než při použití funkcí standardního formuláře.

    Další fází je fáze vývoje fuzzy pravidel.

    Definuje produkční pravidla propojující lingvistické proměnné. Většina fuzzy systémů používá produkční pravidla k popisu závislostí mezi lingvistickými proměnnými. Typické produkční pravidlo se skládá z předchůdce (jestliže část...) a následku (část PAK...). Předchůdce může obsahovat více než jeden předpoklad. V tomto případě jsou kombinovány pomocí logických spojovacích prvků „AND“ nebo „OR“.

    Proces výpočtu fuzzy pravidla se nazývá fuzzy inference a je rozdělen do dvou fází: zobecnění a závěr.

    Ať platí následující pravidlo:

    POKUD „Vzdálenost“ = střední A „Úhel“ = malý, POTOM „Výkon“ = střední.

    V prvním kroku logického vyvozování je nutné určit stupeň příslušnosti celého předchůdce pravidla. Pro tento účel jsou ve fuzzy logice dva operátory: Min(…) a Max(…). První vypočítá minimální hodnotu stupně členství a druhý vypočítá maximální hodnotu. Kdy použít toho či onoho operátora, závisí na tom, s jakým druhem připojení jsou prostory v pravidle spojeny. Pokud je použito spojení „AND“, použije se operátor Min(…). Pokud jsou prostory sloučeny spojkou „nebo“, je nutné použít operátor Max(…). Pokud má pravidlo pouze jeden předpoklad, operátory nejsou vůbec potřeba.

    Dalším krokem je skutečný závěr nebo závěr. Stejným způsobem se pomocí operátorů Min/Max vypočítá hodnota následku. Počáteční údaje jsou hodnoty stupňů členství předchůdců pravidel vypočítané v předchozím kroku.

    Po provedení všech kroků fuzzy inference najdeme fuzzy hodnotu řídicí proměnné. Aby akční člen mohl přijatý příkaz zpracovat, je nutný řídicí stupeň, při kterém se zbavíme neostrosti a kterému se říká defuzzifikace.

    Ve fázi defuzzifikace dochází k přechodu z fuzzy hodnot veličin na určité fyzikální parametry, které mohou sloužit jako příkazy akčnímu členu.

    Výsledek fuzzy inference bude samozřejmě fuzzy. Například, pokud mluvíme o ovládání mechanismu a příkaz pro elektromotor bude reprezentován pojmem „Průměr“ (výkon), pak to pro akční člen neznamená absolutně nic. V teorii fuzzy množin je postup defuzzifikace podobný hledání charakteristik polohy (matematické očekávání, modus, medián) náhodných veličin v teorii pravděpodobnosti. Nejjednodušší způsob, jak provést proceduru defuzzifikace, je vybrat jasné číslo odpovídající maximu funkce příslušnosti. Vhodnost této metody je však omezena pouze extrémními funkcemi příslušnosti. K odstranění neurčitosti konečného výsledku existuje několik metod: metoda maximálního středu, metoda největší hodnoty, metoda těžiště a další. U víceextrémních funkcí příslušnosti se nejčastěji používá defuzzifikace nalezením těžiště rovinného útvaru ohraničeného souřadnicovými osami a funkcí příslušnosti.

    2.3. Fuzzy inferenční modely

    Fuzzy logická inference je aproximací vztahu „vstup-výstup“ na základě lingvistických výroků jako „KDYŽ-POTOM“ a operací na fuzzy množinách. Fuzzy model obsahuje následující bloky:

    ‒ fuzzifier, který transformuje pevný vektor ovlivňujících faktorů X na vektor fuzzy množin , nezbytné pro provádění fuzzy logické inference;

    ‒ fuzzy znalostní báze obsahující informace o závislosti
    ve formě lingvistických pravidel jako „KDYŽ-PAK“;

    ‒ fuzzy logický inferenční stroj, který na základě pravidel znalostní báze určuje hodnotu výstupní proměnné ve formě fuzzy množiny , odpovídající fuzzy hodnotám vstupních proměnných ;

    ‒ defuzzifier, který transformuje výstupní fuzzy množinu na jasné číslo Y.

    Obrázek 2.3 – Struktura fuzzy modelu.

    2.3.1 Fuzzy model typu Mamdani

    Tento algoritmus popisuje několik sekvenčně prováděných fází. V tomto případě každá následující fáze obdrží jako vstup hodnoty získané v předchozím kroku.

    Obrázek 2.4 – Diagram aktivity procesu fuzzy inference

    Algoritmus je pozoruhodný tím, že pracuje na principu „černé skříňky“. Kvantitativní hodnoty jsou přijímány jako vstup a stejné jako výstup. Na mezistupních se využívá aparát fuzzy logiky a teorie fuzzy množin. To je elegance používání fuzzy systémů. Můžete manipulovat se známými numerickými daty, ale zároveň využívat flexibilní možnosti, které fuzzy inferenční systémy poskytují.

    V modelu typu Mamdani je vztah mezi vstupy X = (x 1 , x 2 ,…, x n) a výstupem y určen fuzzy znalostní bází následujícího formátu:

    ,

    Kde
    - lingvistický termín, který vyhodnocuje proměnnou x i v čísle řádku
    ;
    ), kde - počet spojkových řádků, ve kterých je výstup hodnoceno lingvistickým termínem ;
    - počet termínů použitých pro lingvistické hodnocení výstupní proměnné .

    Pomocí operací ∪(OR) a ∩(AND) lze fuzzy znalostní bázi přepsat do kompaktnější podoby:

    (1)

    Všechny lingvistické termíny ve znalostní bázi (1) jsou reprezentovány jako fuzzy množiny definované odpovídajícími funkcemi příslušnosti.

    Fuzzy znalostní bázi (1) lze interpretovat jako určité rozdělení prostoru ovlivňujících faktorů do podoblastí s neostrými hranicemi, v každé z nich nabývá funkce odezvy hodnoty určené příslušnou fuzzy množinou. Pravidlo ve znalostní bázi je „informační sraženina“, která odráží jeden z rysů vztahu „vstup-výstup“. Takové „shluky bohatých informací“ nebo „granule znalostí“ lze považovat za analogii verbálního kódování, které psychologové zjistili, že se vyskytuje v lidském mozku během učení. Zdá se tedy, že vytvoření fuzzy znalostní báze v konkrétní oblasti není pro odborníka zpravidla obtížné.

    Představme si následující zápis:

    - vstupní funkce členství fuzzy termín
    ,
    těch

    - funkce příslušnosti výstupu y k fuzzy členu
    , tj.

    Stupeň příslušnosti vstupního vektoru
    fuzzy termíny ze znalostní báze (1) je určeno následujícím systémem fuzzy logických rovnic:

    Nejčastěji používané implementace jsou: pro operaci OR - nalezení maxima, pro operaci AND - nalezení minima.

    Fuzzy množina odpovídající vstupnímu vektoru X* je definována následovně:

    kde imp je implikace, obvykle implementovaná jako operace nalezení minima; agg - agregace fuzzy množin, která se nejčastěji realizuje operací hledání maxima.

    Vymazat výstupní hodnotu , odpovídající vstupnímu vektoru
    , je určen jako výsledek defuzzifikace fuzzy množiny . Nejčastěji používanou metodou defuzzifikace je metoda těžiště:

    Modely typu Mamdani a typu Sugeno budou identické, když budou závěry pravidel dány jasnými čísly, tedy pokud:

    1) členy d j výstupní proměnné v modelu typu Mamdani jsou specifikovány singletony - fuzzy analogy ostrých čísel. V tomto případě jsou stupně členství pro všechny prvky univerzální množiny rovny nule, s výjimkou jednoho se stupněm členství rovným jedné;

    2) závěry pravidel ve znalostní bázi modelu typu Sugeno jsou specifikovány funkcemi, ve kterých jsou všechny koeficienty vstupních proměnných rovny nule.

    2.3.2 Fuzzy model typu Sugeno

    Dnes existuje několik modelů fuzzy řízení, jedním z nich je model Takagi-Sugeno.

    Model Takagi-Sugeno se někdy nazývá Takagi-Sugeno-Kang. Důvodem je, že tento typ fuzzy modelu původně navrhli Takagi a Sugeno. Kang a Sugeno však odvedli vynikající práci na identifikaci fuzzy modelů. Odtud pochází i název modelu.

    V modelu typu Sugeno vztah mezi vstupy
    a výstup y je dán fuzzy znalostní bází ve tvaru:

    Kde - nějaká čísla.

    Znalostní báze (3) je podobná (1) až na závěry pravidel , které nejsou specifikovány fuzzy členy, ale lineární funkcí vstupů:

    ,

    Znalostní báze v modelu typu Sugeno je tedy hybridní – její pravidla obsahují premisy ve formě fuzzy množin a závěry ve formě jasné lineární funkce. Znalostní bázi (3) lze interpretovat jako určité rozdělení prostoru ovlivňujících faktorů do fuzzy podoblastí, v každé z nich je vypočítána hodnota funkce odezvy jako lineární kombinace vstupů. Pravidla jsou jakýmsi přechodem z jednoho lineárního „vstupně-výstupního“ zákona do druhého, rovněž lineárního. Hranice podoblastí jsou rozmazané, proto může být splněno několik lineárních zákonů současně, ale s různými váhami. Výsledná výstupní hodnota definováno jako superpozice lineárních závislostí splněných v daném bodě
    n-rozměrný faktorový prostor. Mohl by to být vážený průměr

    ,

    nebo vážený součet

    .

    Hodnoty
    jsou vypočteny jako pro model typu Mamdani, tj. podle vzorce (2). Všimněte si, že v modelu Sugeno se jako operace ˄ a ˅ obvykle používá pravděpodobnostní OR a násobení. V tomto případě lze fuzzy model typu Sugeno považovat za speciální třídu vícevrstvých dopředných neuronových sítí, jejichž struktura je izomorfní k bázi znalostí. Takové sítě se nazývají neuro-fuzzy.



    
    Nahoru