Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
Regulátor a zpětná vazba, fuzzifikace, odvozování a defuzzifikace, těžiště, bisektor a střed maxim, regulátor Takagi–Sugeno, řídicí plochy a fuzzy regulátor, který udrží tyč na vozíku.
Série Základy AI Díl 35 z 83
- Mapa umělé inteligence: co je co a jak to do sebe zapadá
- Stručná historie umělé inteligence: od Turinga po jazykové modely
- Data, model, trénink, inference: základní pojmy na jednom příkladu
- Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relace: stavebnice, ze které se skládají definice v AI
- Funkce a zobrazení: proč je každý model v AI funkce
- Logika a důkazy: pravidla, podle kterých se v AI uvažuje
- Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
- Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
- Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
- Gradientní sestup: jak se model učí
- Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
- Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
- Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
- Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
- Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
- Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
- Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
- Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
- Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
- Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
- Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
- Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
- Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
- Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
- Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
- Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
- Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
- Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
- Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
- Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
- Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
- Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
- Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
- Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
- Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
- Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
- Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
- Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
- Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
- Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
- Přeučení a regularizace: proč model, který zná data nazpaměť, selže
- Vyhodnocení modelu: křížová validace, F1 a křivka ROC
- Shlukování a snížení dimenze: k-means, PCA a t-SNE
- Klasifikace a regrese: dvě úlohy učení s učitelem
- Lineární regrese: nejmenší čtverce geometricky i maticově
- Polynomiální a nelineární regrese: jak přímku ohnout
- Logistická regrese: sigmoida, šance a křížová entropie
- Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
- Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
- Ztrátové funkce: co přesně model minimalizuje
- Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
- Ansámbly: náhodný les a gradient boosting
- SVM a jádrový trik: nejširší hranice a jak ji ohnout
- Signál a vzorkování: proč platí Nyquistův teorém
- Fourierova transformace: rozklad signálu na frekvence
- Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
- Zvuk a řeč: spektrogram, melová škála a MFCC
- Obraz jako signál: pixely, barvy, konvoluce a hrany
- Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
- Neuronová síť od nuly: zpětné šíření chyby krok za krokem
- Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
- Konvoluční sítě: jak síť poznává obrázky
- Rekurentní sítě: paměť pro posloupnosti a mizející gradient
- LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
- Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
- Embeddingy a word2vec: jak se slovo stane vektorem
- Mechanismus pozornosti: jak se model naučí, kam se dívat
- Transformery a velké jazykové modely: architektura krok za krokem
- Tokenizace: jak se text rozseká na kousky pro model
- Předtrénování a škálování: proč větší model a víc dat funguje
- Doladění a RLHF: jak se z doplňovače textu stane asistent
- Prompty, kontext a RAG: jak modelu dát správné informace
- Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
- Generativní adversariální sítě (GAN): padělatel proti detektivovi
- Difúzní modely: jak se z čistého šumu stane obrázek
- Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
- Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
- Policy gradient a PPO: učení přímo strategie
- Jak funguje AI agent: jazykový model ve smyčce s nástroji
- Programování s AI agenty: zadání, testy a kontrola
- Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat
Celá osnova série 83 z 83 témat hotovo
- Jak fuzzy regulátor převede měření na zásah: fuzzifikace, odvozování a defuzzifikace.
- Čím se liší Mamdaniho a Sugenův regulátor a proč těžiště nedosáhne krajů rozsahu.
- Jak devět pravidel udrží tyč na vozíku — a proč k udržení vozíku potřebují ještě lineární člen.
Co se hodí znát předem: Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
V roce 1974 seděl Ebrahim Mamdani v londýnské laboratoři nad malým parním strojem, který se klasickými metodami řídit nedařilo. Zkušený operátor ho přitom ovládal bez problémů — podle pravidel jako „když je tlak trochu vysoký a roste, uber trochu páru“. Mamdani se svým studentem Sedrakem Assilianem ta pravidla zapsal fuzzy logikou a nechal je řídit stroj. Fungovalo to. Za deset let řídily fuzzy regulátory cementářské pece, za dalších pár let metro a pračky. V minulém dílu jsme se naučili pravidla vyhodnotit; teď z nich postavíme regulátor, který vydá jedno číslo — a necháme ho balancovat tyč.
Navazuje na díly Fuzzy logika: t-normy, implikace a pravidla a Neuroevoluce, odkud si půjčíme kyvadlo na vozíku.
1. Regulátor a zpětná vazba
Definice — regulátor
Nechť X je množina možných naměřených stavů soustavy (typicky X ⊆ ℝn, kde n ≥ 1 je počet měřených veličin) a U množina přípustných akčních zásahů (typicky U ⊆ ℝm, m ≥ 1). Regulátor (bez vnitřní paměti — takové jsou všechny regulátory v tomto dílu) je zobrazení
R : X → U, x ↦ u = R(x),
které každému naměřenému stavu x ∈ X přiřadí právě jeden zásah u ∈ U. Regulátor tedy rozhoduje jen podle současného měření. V uzavřené smyčce (přesně v další definici) se zásah projeví na soustavě, ta se změní, změří se znovu a regulátor znovu zasáhne — typicky desítky až tisíce krát za sekundu.
Termostat změří teplotu a pustí topení; teplota se změní, termostat ji změří znovu. Regulátor je pravidlo „co udělat, když vidím tohle“. Klasická teorie řízení ho navrhuje z rovnic soustavy. Fuzzy regulátor ho skládá z pravidel, jak by je řekl zkušený člověk.
Definice — uzavřená smyčka v diskrétním čase
Nechť X a U jsou množiny stavů a zásahů a R : X → U regulátor jako v předchozí definici. Dále nechť Δt > 0 je délka kroku (počítač měří a zasahuje jednou za Δt), F : X × U → X zobrazení, které ze stavu a zásahu na začátku kroku určí stav na jeho konci (získá se z pohybových rovnic soustavy), a x0 ∈ X počáteční stav. Uzavřená smyčka v diskrétním čase je dvojice posloupností stavů (xk)k ≥ 0 a zásahů (uk)k ≥ 0 určená rekurzí
uk = R(xk), xk+1 = F(xk, uk), k = 0, 1, 2, …
Stav xk popisuje soustavu v čase k · Δt. Regulátor tedy nevidí budoucnost ani rovnice F — jen současné měření. U kyvadla na konci dílu je Δt = 0,02 s, takže minuta řízení je 3 000 kroků smyčky.
2. Tři kroky fuzzy regulátoru
- Fuzzifikace převede ostrá měření na stupně příslušnosti: 27 °C je „příjemně“ ze 0,2 a „teplo“ ze 0,83, vlhkost 60 % je „vlhko“ ze 0,67.
- Odvozování vyhodnotí pravidla, jak to ukázal minulý díl: každé pravidlo má sílu a ořízne svůj závěr; závěry se spojí maximem.
- Defuzzifikace z výsledné fuzzy množiny udělá jedno číslo, které jde do motoru.
Příklad — fuzzifikace 27 °C a 60 %
Termíny z minulého dílu: příjemně je lichoběžník (10, 17, 23, 28), teplo trojúhelník (22, 28, 34), horko lichoběžník (30, 36, 40, 40); sucho je lichoběžník (0, 0, 30, 50), vlhko (40, 70, 100, 100). Na klesající hraně lichoběžníku (a, b, c, d), tj. pro c ≤ x ≤ d, je μ(x) = d − x/d − c, na rostoucí (a ≤ x ≤ b) je μ(x) = x − a/b − a; trojúhelník (a, b, c) je lichoběžník (a, b, b, c).
- příjemně(27) = 28 − 27/28 − 23 = 1/5 = 0,2,
- teplo(27) = 27 − 22/28 − 22 = 5/6 ≈ 0,83 (27 leží na rostoucí hraně),
- zima(27) = horko(27) = 0 — 27 je mimo jejich nosiče,
- vlhko(60) = 60 − 40/70 − 40 = 2/3 ≈ 0,67, sucho(60) = 0 (nosič končí v 50).
Odvozování podle Mamdaniho je jediný vzorec, který skládá výstupní fuzzy množinu z oříznutých závěrů:
μout(y) = maxi min( αi, μBi(y) ), αi = T(μAi1(x1), …, μAin(xn))
- μout(y)
- výstupní fuzzy množina — pro každou možnou hodnotu výstupu y říká, jak moc ji pravidla podporují; je to celá funkce, ne číslo, proto za ní ještě musí přijít defuzzifikace (na obrázku níže je to zelená plocha)
- αi
- síla i-tého pravidla — t-norma T (zde minimum) spojí podmínky „a“; pravidlo nemůže platit víc než jeho nejslabší podmínka
- μBi(y)
- závěr pravidla, třeba „rychle“ — tvar, který by výstup měl, kdyby pravidlo platilo naplno
- min
- oříznutí — závěr smí být podpořen jen tolik, kolik platí předpoklad; slabé pravidlo tak dá nízkou „plošinku“
- maxi
- spojení pravidel — pravidla se chápou jako alternativy („nebo“), takže hodnota y je podpořená tolik, kolik ji podpoří nejsilnější pravidlo
Příklad — výstupní množina ventilátoru
Síly pravidel (barvy podle vzorce výše): R1 (zima nebo příjemně → pomalu) má α1 = max(0; 0,2) = 0,2; R2 (teplo a sucho → středně) α2 = min(5/6; 0) = 0; R3 (teplo a vlhko → rychle) α3 = min(5/6; 2/3) = 2/3; R4 (horko → rychle) α4 = 0.
Pomalu je lichoběžník (0, 0, 20, 45), oříznutý ve výšce 0,2: plošinka 0,2 až do y = 40 (tam klesající hrana 45 − y/25 spadne na 0,2) a pak pokles k nule v 45. Rychle je lichoběžník (55, 80, 100, 100), oříznutý ve výšce 2/3: hrana y − 55/25 dosáhne 2/3 v y = 55 + 25 · 2/3 ≈ 71,67. Výsledek:
μout(y) = 0,2 na [0; 40], 45 − y/25 na [40; 45], 0 na [45; 55], y − 55/25 na [55; 71,67] a 2/3 na [71,67; 100].
Celý regulátor jako pseudokód, s výstupní osou rozdělenou na mřížku:
def mamdani(vstup, pravidla, mrizka): # mrizka = 0; 0,1; …; 100
sily = []
for r in pravidla: # 1. fuzzifikace + síla pravidla:
sily.append(min( # „a“ = minimum, „nebo“ = maximum
max(mu(t, vstup[prom]) for t in terminy)
for prom, terminy in r.kdyz))
vystup = [max(min(a, r.pak(y)) for a, r in zip(sily, pravidla))
for y in mrizka] # 2. oříznutí a spojení maximem
citatel = sum(y * m for y, m in zip(mrizka, vystup))
jmenovatel = sum(vystup) # 3. defuzzifikace těžištěm
return citatel / jmenovatel if jmenovatel > 0 else 50
3. Defuzzifikace
Definice — metody defuzzifikace
Nechť [a, b] ⊂ ℝ, a < b, je interval možných výstupů a μ : [a, b] → [0, 1] funkce příslušnosti výstupní fuzzy množiny, která je integrovatelná a má kladnou plochu, ∫ab μ(y) dy > 0 (aspoň jedno pravidlo platí). Defuzzifikace je předpis, který funkci μ přiřadí jedno číslo y* ∈ [a, b]. Tři nejběžnější:
- Těžiště (centroid): y*T = ∫ab y · μ(y) dy/∫ab μ(y) dy.
- Bisektor: číslo y*B ∈ [a, b], pro které ∫ay*B μ(y) dy = ∫y*Bb μ(y) dy. Takové číslo existuje, protože levá strana je spojitá neklesající funkce horní meze, která roste od 0 do celé plochy; je-li μ v okolí řešení nulová, není jediné.
- Střed maxim: nechť h = maxy ∈ [a, b] μ(y) a M = {y ∈ [a, b] : μ(y) = h} je množina bodů, kde se maxima nabývá. y*M je průměr bodů množiny M; je-li M = [m1, m2] interval (jako ve všech příkladech tohoto dílu), je y*M = m1 + m2/2.
Těžiště je tedy vážený průměr všech výstupů s vahou μ, bisektor dělí plochu pod μ na dvě stejné poloviny a střed maxim se dívá jen na nejvýše podpořené výstupy.
Výsledná množina je jako hromádka písku nasypaná nad osou otáček. Těžiště je místo, kde by se hromádka na prkně vyvážila; bisektor ji rozdělí na dvě stejně velké půlky; střed maxim se dívá jen na nejvyšší část a zbytek ignoruje.
y* = ∫ y · μ(y) dy/∫ μ(y) dy
- y*
- ostrý výstup — jedno číslo, které jde do motoru, protože motor fuzzy množině nerozumí
- y
- poloha na ose otáček — „rameno páky“; každá hodnota hlasuje sama za sebe
- μ(y)
- váha hlasu — hodnoty, které pravidla podporují víc, táhnou výsledek silněji (zelená plocha na obrázku)
- ∫ μ(y) dy
- celková plocha — dělením z váženého součtu uděláme vážený průměr; bez něj by výsledek rostl s tím, kolik pravidel vystřelí, ne podle toho, kam ukazují
Pro náš vstup dá těžiště 65,9 %, bisektor 75,3 % a střed maxim 85,9 %. Rozdíl je v tom, kolik hlasu dostane slabší pravidlo R1 („pomalu“ silou 0,2): těžiště ho bere v úvahu celé, střed maxim vůbec. Těžiště je nejpoužívanější, protože výstup se mění plynule. Má ale vadu: nikdy nedosáhne krajů rozsahu. I když vystřelí jen pravidlo „rychle“, těžiště jeho lichoběžníku leží na 83 %, ne na 100 %.
Příklad — těžiště, bisektor a střed maxim ručně
Výstupní množina z oddílu o krocích se skládá z obdélníků a trojúhelníků, takže integrály spočítáme ze známých ploch a těžišť (těžiště pravoúhlého trojúhelníku leží v třetině od jeho svislé strany):
| Úsek | Tvar | Plocha | Těžiště | Plocha · těžiště |
|---|---|---|---|---|
| [0; 40] | obdélník výšky 0,2 | 8 | 20 | 160 |
| [40; 45] | trojúhelník, klesá | 0,5 | 41,67 | 20,83 |
| [55; 71,67] | trojúhelník, roste | 5,56 | 66,11 | 367,28 |
| [71,67; 100] | obdélník výšky 2/3 | 18,89 | 85,83 | 1 621,30 |
| celkem | 32,94 | 2 169,41 |
Sloupec „Plocha“ sečtený dá jmenovatel vzorce pro těžiště, sloupec „Plocha · těžiště“ jeho čitatel (barvy podle vzorce výše).
- Těžiště: y* = 2 169,41/32,94 ≈ 65,85 %. Počítač v
src/fuzzyrizeni.jsintegrál nahrazuje součtem po 0,1 % a dostane 65,87 — obojí se zaokrouhlí na 65,9 %. - Bisektor: polovina plochy je 32,94/2 = 16,47. Do bodu 71,67 se nasbírá 8 + 0,5 + 5,56 = 14,06, chybí 2,41; na plošince výšky 2/3 to je 2,41/2/3 ≈ 3,62 dál, tedy y* ≈ 71,67 + 3,62 ≈ 75,3 %.
- Střed maxim: maximum 2/3 platí na celém [71,67; 100], průměr krajů je 71,67 + 100/2 ≈ 85,8 %. Počítač průměruje body mřížky od 71,7 výš, proto 85,9 %.
4. Takagi–Sugeno
Defuzzifikace těžištěm znamená počítat integrál — v roce 1985 na malém procesoru pračky nebo kamery drahá věc. Tomohiro Takagi a Michio Sugeno proto navrhli pravidla, která rovnou vracejí číslo.
Definice — regulátor Takagi–Sugeno
Nechť n ≥ 1 je počet vstupů, r ≥ 1 počet pravidel a T t-norma (zde minimum; viz díl o fuzzy logice). Pro každé i = 1, …, r a j = 1, …, n nechť Aij je fuzzy množina na ℝ s funkcí příslušnosti μAij : ℝ → [0, 1] a fi : ℝn → ℝ funkce. i-té pravidlo má tvar
KDYŽ x1 je Ai1 a … a xn je Ain, PAK y = fi(x1, …, xn).
Pro vstup x = (x1, …, xn) ∈ ℝn je síla i-tého pravidla αi(x) = T(μAi1(x1), …, μAin(xn)) ∈ [0, 1]. Je-li ∑i=1r αi(x) > 0, je výstup regulátoru Takagi–Sugeno
y*(x) = ∑i=1r αi(x) · fi(x)/∑i=1r αi(x).
Regulátor je
- nultého řádu, právě když každé fi je konstantní: fi(x) = ci s ci ∈ ℝ;
- prvního řádu, právě když každé fi je afinní (v literatuře se obvykle říká „lineární“):fi(x) = ci0 + ci1x1 + … + cinxn s cij ∈ ℝ.
Výstup je tedy vážený průměr návrhů fi(x), váhami jsou síly pravidel.
Každé pravidlo neříká „otáčky jsou rychle“ (fuzzy množina), ale „otáčky jsou 90 %“ (číslo). Výsledek je průměr návrhů všech pravidel, vážený tím, jak moc které pravidlo platí. Žádný integrál, jen pár násobení a jedno dělení.
Dejme ventilátoru stejná pravidla, jen s konstantními závěry: pomalu = 15 %, středně = 50 %, rychle = 90 %. Při 27 °C a 60 % vlhkosti platí jen R1 (síla 0,2) a R3 (síla 2/3) a výstup je (barvy podle vzorce níže)
y* = 0,2 · 15 + 2/3 · 90/0,2 + 2/3 = 63/0,867 ≈ 72,7 %.
y* = ∑i αi · fi/∑i αi
- y*
- ostrý výstup — rovnou, bez výstupní fuzzy množiny a bez defuzzifikace
- αi
- síla pravidla, stejná jako u Mamdaniho — určuje, kolik hlasu pravidlo dostane
- fi
- návrh pravidla — číslo (0. řád) nebo lineární funkce vstupů (1. řád); nahrazuje celý tvar „rychle“ jediným reprezentantem
- ∑i
- sečtení hlasů všech pravidel — pravidla, která neplatí (αi = 0), přispějí nulou
- ∑i αi
- normalizace — váhy αi/∑k αk se sečtou na 1, takže výsledek je průměr návrhů a nezáleží na tom, jak silně platí všechna pravidla dohromady
Věta — Sugeno nultého řádu dosáhne krajů
Nechť je dán regulátor Takagi–Sugeno nultého řádu s r ≥ 1 pravidly, která mají konstantní závěry f1, …, fr ∈ ℝ, a nechť x ∈ ℝn je vstup, pro který mají pravidla síly α1, …, αr ∈ [0, 1] a ∑i=1r αi > 0 (aspoň jedno pravidlo platí). Označme I = {i ∈ {1, …, r} : αi > 0} množinu pravidel, která platí. Pak
- mini ∈ I fi ≤ y*(x) ≤ maxi ∈ I fi;
- existuje-li c ∈ ℝ takové, že fi = c pro všechna i ∈ I, je y*(x) = c.
Důkaz: označme λi = αi/∑k=1r αk. Pak λi ≥ 0, λi = 0 pro i ∉ I, ∑ λi = 1 a y* = ∑i ∈ I λi fi je konvexní kombinace čísel fi, i ∈ I. Odhadem fi ≥ minI f dostaneme y* ≥ minI f · ∑ λi = minI f, a stejně shora. Jsou-li všechna fi s i ∈ I rovna c, je y* = c ∑ λi = c. ∎
Těžiště Mamdaniho takovou záruku nemá: i samotný závěr „rychle“ v plné výšce má těžiště 83 %, protože do průměru vstupuje i jeho rostoucí hrana od 55 %.
5. Řídicí plocha
Regulátor je funkce dvou proměnných, takže se dá nakreslit celá. Každé políčko je jedna kombinace teploty a vlhkosti, jas říká, jak rychle se ventilátor točí:
Obě plochy vypadají podobně — pod 20 °C pomalu, s teplem a vlhkem rychle — a přecházejí plynule, bez skoků. Liší se na krajích. Při 35 °C a 90 % vlhkosti dá Sugeno přesně 90 %, Mamdani jen 82,2 %; v chladnu 15 °C dá Sugeno 15 %, Mamdani 18,4 %. To je ta vada těžiště: Mamdaniho regulátor nikdy nedojede do krajů. Ve středu, kde se překrývají pravidla, se zase oba chovají jinak, protože průměrují jinak tvarované návrhy.
Definice — řídicí plocha
Nechť X1, X2 ⊆ ℝ jsou množiny hodnot dvou vstupů a R : X1 × X2 → ℝ regulátor s jedním výstupem. Řídicí plocha regulátoru R je graf funkce R, tj. množina
{(x1, x2, R(x1, x2)) : x1 ∈ X1, x2 ∈ X2} ⊆ ℝ3.
U ventilátoru je x1 = T ∈ [0; 40] teplota ve °C, x2 = h ∈ [0; 100] relativní vlhkost v % a R(T, h) ∈ [0; 100] otáčky v %. Obrázek ji vyčísluje na mřížce 41 teplot (po 1 °C) × 26 vlhkostí (po 4 %).
Příklad — roh plochy: 35 °C a 90 %
horko(35) = 35 − 30/36 − 30 = 5/6 ≈ 0,83, teplo(35) = 0 (trojúhelník končí v 34), příjemně i zima jsou 0. Platí jediné pravidlo R4 (horko → rychle) se silou 5/6. Barvy podle vzorců Sugena a těžiště výše.
- Sugeno: y* = 5/6 · 90/5/6 = 90 % — přesně, podle věty výše.
- Mamdani: „rychle“ oříznuté v 5/6 je trojúhelník na [55; 75,83] (plocha 1/2 · 20,83 · 5/6 ≈ 8,68, těžiště 55 + 2/3 · 20,83 ≈ 68,89) a obdélník na [75,83; 100] (plocha 24,17 · 5/6 ≈ 20,14, těžiště 87,92). y* = 8,68 · 68,89 + 20,14 · 87,92/8,68 + 20,14 ≈ 82,2 %.
V druhém rohu, 15 °C a 30 %, je příjemně(15) = 15 − 10/17 − 10 = 5/7 ≈ 0,71 a platí jen R1; Sugeno dá přesně 15 %, těžiště oříznutého „pomalu“ 18,4 %.
6. Fuzzy kyvadlo
V dílu o neuroevoluci balancovala tyč na vozíku síť, jejíž váhy našla evoluce. Teď zkusíme pravidla, která by napsal člověk. Vstupem je úhel tyče a jeho rychlost, oba se třemi termíny — záporný, nula a kladný; výstupem síla od −10 do +10 N, Sugeno nultého řádu:
| úhel \ úhlová rychlost | padá doleva | stojí | padá doprava |
|---|---|---|---|
| nakloněná doleva | −10 N | −5 N | 0 N |
| svisle | −5 N | 0 N | +5 N |
| nakloněná doprava | 0 N | +5 N | +10 N |
Devět pravidel jako „KDYŽ je tyč nakloněná doprava A padá doprava, PAK zatlač vozík silně doprava“. Logika je stejná jako u koštěte na dlani: ruka jede pod tyč tam, kam tyč padá.
Definice — fuzzy regulátor kyvadla
Nechť stav soustavy je (x, ẋ, θ, θ̇) ∈ ℝ4 jako v dílu o neuroevoluci: x je poloha vozíku (m), ẋ jeho rychlost (m/s), θ úhel tyče od svislice (ve stupních, kladný doprava) a θ̇ úhlová rychlost (°/s); krok smyčky je Δt = 0,02 s. Nechť L = {záporný, nula, kladný} je množina termínů. Regulátor je určen těmito údaji:
- termíny úhlu θ: μnula je trojúhelník (−6, 0, 6), μkladný lichoběžník (0, 6, 90, 90) — roste od 0° do 6° a dál je 1 —, μzáporný zrcadlově lichoběžník (−90, −90, −6, 0);
- termíny úhlové rychlosti θ̇: stejné tvary s 40 místo 6 a 900 místo 90;
- pro každou dvojici termínů a, b ∈ L (a pro úhel, b pro rychlost) pravidlo se silou wab = min(μa(θ), μb(θ̇)) a konstantním závěrem cab ∈ {−10, −5, 0, 5, 10} N z tabulky výše;
- síla na vozík F(θ, θ̇) = max(−10, min(10, ∑a, b ∈ L wab cab/∑a, b ∈ L wab)) N, tj. výstup Sugena nultého řádu oříznutý na [−10; 10] N (kdyby byly všechny síly nulové, je F = 0).
Příklad — tyč nakloněná o 2° a padající 10 °/s doprava
Úhel: nula(2) = 6 − 2/6 = 2/3, kladný(2) = 2/6 = 1/3. Rychlost: nula(10) = 40 − 10/40 = 0,75, kladná(10) = 10/40 = 0,25. Záporné termíny jsou 0, takže platí čtyři pravidla (barvy podle vzorce Takagi–Sugeno výše: w hraje roli αi, c roli fi):
- svisle a stojí: w = min(2/3; 0,75) = 2/3, závěr 0 N,
- svisle a padá doprava: w = min(2/3; 0,25) = 0,25, závěr +5 N,
- doprava a stojí: w = min(1/3; 0,75) = 1/3, závěr +5 N,
- doprava a padá doprava: w = min(1/3; 0,25) = 0,25, závěr +10 N.
F = 2/3 · 0 + 0,25 · 5 + 1/3 · 5 + 0,25 · 10/2/3 + 0,25 + 1/3 + 0,25 = 5,417/1,5 ≈ 3,61 N
Síla je kladná, míří tedy doprava — vozík jede pod tyč.
Tyč stojí — po pár sekundách je úhel prakticky nulový. Jenže vozík pomalu ujíždí, protože pravidla o vozíku nic neříkají, a po 22 sekundách vyjede z koleje. Ze tří startů z dílu o neuroevoluci vydržel regulátor 22, 12,9 a 15,7 s.
Opravíme to Sugenem prvního řádu: ke každé konstantě v tabulce přičteme 1 · x + 2 · ẋ, kde x je poloha vozíku a ẋ jeho rychlost. Teď regulátor udrží tyč ze všech tří startů celou minutu a vozík se od středu vzdálí nejvýš o 0,58 m. Zajímavé je znaménko: když vozík ujíždí doprava, regulátor ho postrčí ještě víc doprava. Tyč se tím nakloní doleva — a pravidla o tyči pak vozík odvezou zpátky. „Intuitivní“ opačná znaménka, která by vozík tlačila rovnou ke středu, shodí tyč do pěti sekund. Pravidla zkušeného operátora jsou tedy cenná právě proto, že kódují zkušenost, kterou by laik nevymyslel.
F = ∑ wab cab/∑ wab +kx x + kv ẋ
- F
- síla na vozík (před oříznutím na ±10 N)
- ∑ wab cab/∑ wab
- původní Sugeno nultého řádu — devět pravidel o tyči; drží tyč svisle, o vozíku neví nic
- kx x
- reakce na polohu vozíku, kx = 1 N/m — bez ní by vozík beztrestně ujel z koleje; kladné znaménko vozík zdánlivě posílá ven, ale tím nakloní tyč dovnitř a pravidla o tyči pak vozík vrátí
- kv ẋ
- reakce na rychlost vozíku, kv = 2 N·s/m — tlumení; se samotnou polohou (kv = 0) vozík kmitá kolem středu čím dál víc a ze všech tří startů vyjede z koleje za 32 až 53 s
V příkladu výše s vozíkem 0,3 m vpravo, který jede 0,1 m/s doprava, tedy vyjde F = 3,61 + 1 · 0,3 + 2 · 0,1 ≈ 4,11 N (barvy podle vzorce výše).
7. Mamdani, nebo Sugeno?
| Mamdani | Sugeno | |
|---|---|---|
| Závěr pravidla | fuzzy množina („rychle“) | číslo nebo lineární funkce |
| Výstup | defuzzifikace, obvykle těžiště | vážený průměr |
| Výpočet | integrál přes výstup | pár násobení |
| Čitelnost | pravidla jako věty | čísla v závěrech |
| Kraje rozsahu | těžiště je nedosáhne | dosáhne |
| Učení z dat | obtížné | parametry závěrů jde naladit — viz ANFIS |
Mamdani se hodí tam, kde pravidla píšou a čtou lidé. Sugeno tam, kde záleží na rychlosti výpočtu a kde chceme regulátor ladit z naměřených dat — tomu se věnuje poslední díl modulu.
8. Fuzzy regulátory v praxi
- Cementářská pec dánské firmy F. L. Smidth byla kolem roku 1980 jedním z prvních průmyslových nasazení — pec se těžko modeluje, ale operátoři ji řídili podle zkušenosti.
- Metro v Sendai (1987) se rozjíždí a brzdí podle fuzzy pravidel; jízda je plynulejší a výrobce uváděl i úsporu energie.
- Spotřebiče. Kolem roku 1990 nabízely japonské firmy pračky, které podle zakalení vody a množství prádla volily program, a kamery s fuzzy ostřením a stabilizací obrazu.
- Dnes většinu průmyslového řízení obstarávají PID regulátory a prediktivní řízení. Fuzzy pravidla se používají spíš „nad nimi“ — přepínají nastavení podle provozního režimu — a všude, kde je cennější rychle zapsat zkušenost než sestavit přesný model.
9. Shrnutí
- Fuzzy regulátor má tři kroky: fuzzifikace, odvozování podle pravidel a defuzzifikace.
- Defuzzifikace převede výstupní fuzzy množinu na číslo; pro ventilátor dá těžiště 65,9 %, bisektor 75,3 % a střed maxim 85,9 %.
- Sugeno má v závěrech čísla nebo lineární funkce a výstup je vážený průměr — 72,7 % pro tentýž vstup, bez integrálu.
- Řídicí plocha ukazuje celý regulátor najednou; těžiště nikdy nedosáhne krajů rozsahu.
- Devět pravidel o tyči ji udrží, ale vozík ujede; Sugeno prvního řádu s polohou a rychlostí vozíku udrží obojí celou minutu.
Chcete si to osahat? Nechte AI agenta napsat fuzzy termostat pro simulovaný pokoj se zpožděním topení a zkuste, kolik pravidel stačí, aby teplota nekmitala.
Máte na to jiný názor? Napište na support@coden-app.com.