Přeskočit na obsah
coden

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.

14 minut Matěj Žalmánek 2026-10-15

Série Základy AI Díl 35 z 83
  1. Mapa umělé inteligence: co je co a jak to do sebe zapadá
  2. Stručná historie umělé inteligence: od Turinga po jazykové modely
  3. Data, model, trénink, inference: základní pojmy na jednom příkladu
  4. Jak číst matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relace: stavebnice, ze které se skládají definice v AI
  6. Funkce a zobrazení: proč je každý model v AI funkce
  7. Logika a důkazy: pravidla, podle kterých se v AI uvažuje
  8. Grafy a stromy: struktura, na které stojí hledání i neuronové sítě
  9. Lineární algebra pro strojové učení: vektory, matice a proč AI hlavně násobí
  10. Derivace, gradient a řetízkové pravidlo: jak model zjistí, kterým směrem se učit
  11. Gradientní sestup: jak se model učí
  12. Co je pravděpodobnost: od hodu kostkou ke Kolmogorovovým axiomům
  13. Podmíněná pravděpodobnost a Bayesova věta: jak změnit odhad, když se dozvíte něco nového
  14. Náhodná veličina a distribuční funkce: jedna funkce, která o rozdělení řekne všechno
  15. Funkce hustoty a pravděpodobnostní funkce: proč má spojitá veličina v bodě pravděpodobnost nula
  16. Střední hodnota, rozptyl a kovariance: kde rozdělení leží, jak je široké a co s čím souvisí
  17. Přehled pravděpodobnostních rozdělení: Bernoulli, binomické, Poisson, rovnoměrné, normální a exponenciální
  18. Zákon velkých čísel a centrální limitní věta: proč se průměry chovají tak předvídatelně
  19. Statistika a odhady parametrů: maximální věrohodnost, MAP a intervaly spolehlivosti
  20. Teorie informace: entropie, křížová entropie a KL divergence — odkud se berou ztrátové funkce
  21. Prohledávání stavového prostoru: BFS, DFS, UCS a A* s animacemi
  22. Hry a protivník: minimax, alfa-beta ořezávání a Monte Carlo tree search
  23. Splňování omezujících podmínek: backtracking, propagace omezení a AC-3 na sudoku a mapě krajů
  24. Logika a znalostní systémy: dopředné a zpětné řetězení, rezoluce a expertní systémy
  25. Plánování: STRIPS, svět kostek, heuristiky z relaxace a plánování v AI agentech
  26. Lokální hledání a simulované žíhání: obchodní cestující přes krajská města
  27. Genetické algoritmy: populace, křížení, mutace a výběr na batohu na výlet
  28. Evoluční strategie a genetické programování: od pravidla jedné pětiny po Keplerův zákon
  29. Optimalizace mravenčí kolonií: jak feromonová stopa najde krátkou cestu
  30. Optimalizace hejnem částic: setrvačnost, vlastní zkušenost a zkušenost hejna
  31. Neuroevoluce: evoluce vah i tvaru neuronových sítí a algoritmus NEAT
  32. Fuzzy množiny a funkce příslušnosti: jak zapsat „trochu teplo“
  33. Fuzzy logika a pravděpodobnost: proč „trochu teplo“ neznamená „pravděpodobně teplo“
  34. Fuzzy logika: t-normy, implikace a pravidla KDYŽ–PAK
  35. Fuzzy řízení: Mamdani a Sugeno od ventilátoru po kyvadlo na vozíku
  36. Fuzzy shlukování: algoritmus fuzzy c-means a body mezi shluky
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidla, která se učí z dat
  38. Markovovy řetězce: přechodová matice, stacionární rozdělení a PageRank
  39. Skryté Markovovy modely: Viterbiho algoritmus a nepoctivé kasino
  40. Bayesovské sítě: proč je tráva mokrá a co z toho plyne pro postřikovač
  41. Kalmanův filtr: jak z nepřesných měření odhadnout, kde auto je a jak rychle jede
  42. Druhy strojového učení: s učitelem, bez učitele, s částečným učitelem a další
  43. Přeučení a regularizace: proč model, který zná data nazpaměť, selže
  44. Vyhodnocení modelu: křížová validace, F1 a křivka ROC
  45. Shlukování a snížení dimenze: k-means, PCA a t-SNE
  46. Klasifikace a regrese: dvě úlohy učení s učitelem
  47. Lineární regrese: nejmenší čtverce geometricky i maticově
  48. Polynomiální a nelineární regrese: jak přímku ohnout
  49. Logistická regrese: sigmoida, šance a křížová entropie
  50. Vícetřídní klasifikace a softmax: od dvou tříd k mnoha
  51. Naivní Bayesův klasifikátor: spamový filtr, který funguje lépe, než by měl
  52. Ztrátové funkce: co přesně model minimalizuje
  53. Rozhodovací stromy a k nejbližších sousedů: modely bez vzorců
  54. Ansámbly: náhodný les a gradient boosting
  55. SVM a jádrový trik: nejširší hranice a jak ji ohnout
  56. Signál a vzorkování: proč platí Nyquistův teorém
  57. Fourierova transformace: rozklad signálu na frekvence
  58. Filtry a konvoluce: vyhlazení, hrany a odstranění šumu
  59. Zvuk a řeč: spektrogram, melová škála a MFCC
  60. Obraz jako signál: pixely, barvy, konvoluce a hrany
  61. Perceptron a umělý neuron: nejjednodušší neuronová síť a co neumí
  62. Neuronová síť od nuly: zpětné šíření chyby krok za krokem
  63. Aktivace, inicializace a normalizace: drobnosti, na kterých hluboká síť stojí
  64. Konvoluční sítě: jak síť poznává obrázky
  65. Rekurentní sítě: paměť pro posloupnosti a mizející gradient
  66. LSTM a GRU: brány, které rozhodují, co si síť zapamatuje
  67. Autoenkodéry: síť, která se učí data stlačit a zase rozbalit
  68. Embeddingy a word2vec: jak se slovo stane vektorem
  69. Mechanismus pozornosti: jak se model naučí, kam se dívat
  70. Transformery a velké jazykové modely: architektura krok za krokem
  71. Tokenizace: jak se text rozseká na kousky pro model
  72. Předtrénování a škálování: proč větší model a víc dat funguje
  73. Doladění a RLHF: jak se z doplňovače textu stane asistent
  74. Prompty, kontext a RAG: jak modelu dát správné informace
  75. Variační autoenkodéry (VAE): nové obrázky ze spojitého latentního prostoru
  76. Generativní adversariální sítě (GAN): padělatel proti detektivovi
  77. Difúzní modely: jak se z čistého šumu stane obrázek
  78. Markovovy rozhodovací procesy: stavy, akce, odměny a Bellmanovy rovnice
  79. Q-learning a DQN: učení hodnoty akcí od tabulky po neuronovou síť
  80. Policy gradient a PPO: učení přímo strategie
  81. Jak funguje AI agent: jazykový model ve smyčce s nástroji
  82. Programování s AI agenty: zadání, testy a kontrola
  83. Vyhodnocení a bezpečnost AI systémů: jak měřit a jak hlídat

Celá osnova série 83 z 83 témat hotovo

Co si odnesete
  • 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.

Laicky řečeno

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

vstup 27 °C60 % fuzzifikace teplo 0,83vlhko 0,67 odvozování R1: 0,2R3: 0,67 defuzzifikace výstup 65,9 %
Fuzzy regulátor ventilátoru krok za krokem
  1. 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.
  2. 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.
  3. 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ší:

  1. Těžiště (centroid): y*T = ∫ab y · μ(y) dy/∫ab μ(y) dy.
  2. 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é.
  3. 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.

Laicky řečeno

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í
Je to přesně vzorec pro těžiště tělesa z fyziky, jen hmotu nahrazuje stupeň příslušnosti.
00,51 0102030405060708090100 65,9 75,3 85,9 otáčky ventilátoru (%) stupeň příslušnosti μ (0–1)
Výstup ventilátoru pro 27 °C a 60 % a tři metody defuzzifikace těžištěbisektorstřed maxim

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):

ÚsekTvarPlochaTěžištěPlocha · těžiště
[0; 40]obdélník výšky 0,2820160
[40; 45]trojúhelník, klesá0,541,6720,83
[55; 71,67]trojúhelník, roste5,5666,11367,28
[71,67; 100]obdélník výšky 2/318,8985,831 621,30
celkem32,942 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.js integrá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

  1. nultého řádu, právě když každé fi je konstantní: fi(x) = ci s ci ∈ ℝ;
  2. 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.

Laicky řečeno

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
Integrál těžiště se tu zúžil na součet přes pravidla — místo tisíce bodů mřížky čtyři členy.
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

  1. mini ∈ I fi ≤ y*(x) ≤ maxi ∈ I fi;
  2. 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čí:

Mamdani (těžiště) 02040 050100 teplota T (°C) relativní vlhkost (%) Sugeno (konstanty) 02040 050100 teplota T (°C) relativní vlhkost (%)
Řídicí plochy ventilátoru: Mamdani a Sugeno

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á rychlostpadá dolevastojípadá doprava
nakloněná doleva−10 N−5 N0 N
svisle−5 N0 N+5 N
nakloněná doprava0 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:

  1. 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);
  2. termíny úhlové rychlosti θ̇: stejné tvary s 40 místo 6 a 900 místo 90;
  3. 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;
  4. 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č.

jen tyč (Sugeno 0. řádu) 22,0 s tyč i vozík (Sugeno 1. řádu) 24,0 s+
Fuzzy regulátor kyvadla: prvních 24 sekund

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
Proč se lineární část dá vytknout: každý závěr je cab + kxx + kvẋ se stejnými k, a vážený průměr konstanty kxx + kvẋ je zase ona sama (váhy se sčítají na 1).

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?

MamdaniSugeno
Závěr pravidlafuzzy množina („rychle“)číslo nebo lineární funkce
Výstupdefuzzifikace, obvykle těžištěvážený průměr
Výpočetintegrál přes výstuppár násobení
Čitelnostpravidla jako větyčísla v závěrech
Kraje rozsahutěžiště je nedosáhnedosáhne
Učení z datobtíž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.

Agent na vašem počítači, ovládaný z telefonu