Preskočiť na obsah
coden

Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku

Regulátor a spätná väzba, fuzzifikácia, odvodzovanie a defuzzifikácia, ťažisko, bisektor a stred maxím, regulátor Takagi–Sugeno, riadiace plochy a fuzzy regulátor, ktorý udrží tyč na vozíku.

14 minút Matěj Žalmánek 2026-10-15

Séria Základy AI Diel 35 z 52
  1. Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
  2. Stručná história umelej inteligencie: od Turinga po jazykové modely
  3. Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
  4. Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
  5. Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
  6. Funkcie a zobrazenia: prečo je každý model v AI funkcia
  7. Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
  8. Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
  9. Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
  10. Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
  11. Gradientný zostup: ako sa model učí
  12. Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
  13. Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
  14. Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
  15. Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
  16. Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
  17. Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
  18. Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
  19. Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
  20. Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
  21. Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
  22. Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
  23. Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
  24. Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
  25. Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
  26. Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
  27. Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
  28. Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
  29. Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
  30. Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
  31. Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
  32. Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
  33. Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
  34. Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
  35. Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
  36. Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
  37. Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
  38. Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
  39. Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
  40. Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
  41. Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
  42. Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
  43. Prompty, kontext a RAG: ako modelu dať správne informácie
  44. Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
  45. Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
  46. Difúzne modely: ako sa z čistého šumu stane obrázok
  47. Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
  48. Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
  49. Policy gradient a PPO: učenie priamo stratégie
  50. Ako funguje AI agent: jazykový model v slučke s nástrojmi
  51. Programovanie s AI agentmi: zadanie, testy a kontrola
  52. Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť

Celá osnova série Hotovo: 52 z 83 tém

Čo si odnesiete
  • Ako fuzzy regulátor prevedie meranie na zásah: fuzzifikácia, odvodzovanie a defuzzifikácia.
  • Čím sa líši Mamdaniho a Sugenov regulátor a prečo ťažisko nedosiahne okraje rozsahu.
  • Ako deväť pravidiel udrží tyč na vozíku — a prečo na udržanie vozíka potrebujú ešte lineárny člen.

Čo sa hodí vedieť vopred: Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK

V roku 1974 sedel Ebrahim Mamdani v londýnskom laboratóriu nad malým parným strojom, ktorý sa klasickými metódami riadiť nedarilo. Skúsený operátor ho pritom ovládal bez problémov — podľa pravidiel ako „keď je tlak trochu vysoký a rastie, uber trochu pary“. Mamdani so svojím študentom Sedrakom Assilianom tie pravidlá zapísal fuzzy logikou a nechal ich riadiť stroj. Fungovalo to. O desať rokov riadili fuzzy regulátory cementárske pece, o ďalších pár rokov metro a práčky. V minulom diele sme sa naučili pravidlá vyhodnotiť; teraz z nich postavíme regulátor, ktorý vydá jedno číslo — a necháme ho balansovať tyč.

Nadväzuje na diely Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK a Neuroevolúcia, odkiaľ si požičiame kyvadlo na vozíku.

1. Regulátor a spätná väzba

Definícia — regulátor

Nech X je množina možných nameraných stavov sústavy (typicky X ⊆ ℝn, kde n ≥ 1 je počet meraných veličín) a U množina prípustných akčných zásahov (typicky U ⊆ ℝm, m ≥ 1). Regulátor (bez vnútornej pamäte — také sú všetky regulátory v tomto diele) je zobrazenie

R : X → U,   x ↦ u = R(x),

ktoré každému nameranému stavu x ∈ X priradí práve jeden zásah u ∈ U. Regulátor teda rozhoduje len podľa súčasného merania. V uzavretej slučke (presne v ďalšej definícii) sa zásah prejaví na sústave, tá sa zmení, zmeria sa znova a regulátor znova zasiahne — typicky desiatky až tisíce ráz za sekundu.

Laicky povedané

Termostat zmeria teplotu a pustí kúrenie; teplota sa zmení, termostat ju zmeria znova. Regulátor je pravidlo „čo urobiť, keď vidím toto“. Klasická teória riadenia ho navrhuje z rovníc sústavy. Fuzzy regulátor ho skladá z pravidiel, ako by ich povedal skúsený človek.

Definícia — uzavretá slučka v diskrétnom čase

Nech X a U sú množiny stavov a zásahov a R : X → U regulátor ako v predchádzajúcej definícii. Ďalej nech Δt > 0 je dĺžka kroku (počítač meria a zasahuje raz za Δt), F : X × U → X zobrazenie, ktoré zo stavu a zásahu na začiatku kroku určí stav na jeho konci (získa sa z pohybových rovníc sústavy), a x0 ∈ X počiatočný stav. Uzavretá slučka v diskrétnom čase je dvojica postupností stavov (xk)k ≥ 0 a zásahov (uk)k ≥ 0 určená rekurziou

uk = R(xk),    xk+1 = F(xk, uk),    k = 0, 1, 2, …

Stav xk opisuje sústavu v čase k · Δt. Regulátor teda nevidí budúcnosť ani rovnice F — len súčasné meranie. Pri kyvadle na konci dielu je Δt = 0,02 s, takže minúta riadenia je 3 000 krokov slučky.

2. Tri kroky fuzzy regulátora

vstup 27 °C60 % fuzzifikácia teplo 0,83vlhko 0,67 odvodzovanie R1: 0,2R3: 0,67 defuzzifikácia výstup 65,9 %
Fuzzy regulátor ventilátora krok za krokom
  1. Fuzzifikácia prevedie ostré merania na stupne príslušnosti: 27 °C je „príjemne“ z 0,2 a „teplo“ z 0,83, vlhkosť 60 % je „vlhko“ z 0,67.
  2. Odvodzovanie vyhodnotí pravidlá, ako to ukázal minulý diel: každé pravidlo má silu a oreže svoj záver; závery sa spoja maximom.
  3. Defuzzifikácia z výslednej fuzzy množiny urobí jedno číslo, ktoré ide do motora.
Príklad — fuzzifikácia 27 °C a 60 %

Termy z minulého dielu: príjemne je lichobežník (10, 17, 23, 28), teplo trojuholník (22, 28, 34), horúco lichobežník (30, 36, 40, 40); sucho je lichobežník (0, 0, 30, 50), vlhko (40, 70, 100, 100). Na klesajúcej hrane lichobežníka (a, b, c, d), t. j. pre c ≤ x ≤ d, je μ(x) = d − x/d − c, na rastúcej (a ≤ x ≤ b) je μ(x) = x − a/b − a; trojuholník (a, b, c) je lichobežník (a, b, b, c).

  • príjemne(27) = 28 − 27/28 − 23 = 1/5 = 0,2,
  • teplo(27) = 27 − 22/28 − 22 = 5/6 ≈ 0,83 (27 leží na rastúcej hrane),
  • zima(27) = horúco(27) = 0 — 27 je mimo ich nosičov,
  • vlhko(60) = 60 − 40/70 − 40 = 2/3 ≈ 0,67, sucho(60) = 0 (nosič končí v 50).

Odvodzovanie podľa Mamdaniho je jediný vzorec, ktorý skladá výstupnú fuzzy množinu z orezaných záverov:

μout(y) = maxi min( αi, μBi(y) ),    αi = T(μAi1(x1), …, μAin(xn))

μout(y)
výstupná fuzzy množina — pre každú možnú hodnotu výstupu y hovorí, nakoľko ju pravidlá podporujú; je to celá funkcia, nie číslo, preto za ňou ešte musí prísť defuzzifikácia (na obrázku nižšie je to zelená plocha)
αi
sila i-teho pravidla — t-norma T (tu minimum) spojí podmienky „a“; pravidlo nemôže platiť viac než jeho najslabšia podmienka
μBi(y)
záver pravidla, napríklad „rýchlo“ — tvar, ktorý by výstup mal, keby pravidlo platilo naplno
min
orezanie — záver smie byť podporený len toľko, koľko platí predpoklad; slabé pravidlo tak dá nízku „plošinku“
maxi
spojenie pravidiel — pravidlá sa chápu ako alternatívy („alebo“), takže hodnota y je podporená toľko, koľko ju podporí najsilnejšie pravidlo
Príklad — výstupná množina ventilátora

Sily pravidiel (farby podľa vzorca vyššie): R1 (zima alebo príjemne → pomaly) má α1 = max(0; 0,2) = 0,2; R2 (teplo a sucho → stredne) α2 = min(5/6; 0) = 0; R3 (teplo a vlhko → rýchlo) α3 = min(5/6; 2/3) = 2/3; R4 (horúco → rýchlo) α4 = 0.

Pomaly je lichobežník (0, 0, 20, 45), orezaný vo výške 0,2: plošinka 0,2 až po y = 40 (tam klesajúca hrana 45 − y/25 klesne na 0,2) a potom pokles k nule v 45. Rýchlo je lichobežník (55, 80, 100, 100), orezaný vo výške 2/3: hrana y − 55/25 dosiahne 2/3 v y = 55 + 25 · 2/3 ≈ 71,67. Výsledok:

μ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 ako pseudokód, s výstupnou osou rozdelenou na mriežku:

def mamdani(vstup, pravidla, mrizka):        # mrizka = 0; 0,1; …; 100
    sily = []
    for r in pravidla:                          # 1. fuzzifikácia + sila pravidla:
        sily.append(min(                        #    „a“ = minimum, „alebo“ = 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. orezanie a spojenie maximom
    citatel = sum(y * m for y, m in zip(mrizka, vystup))
    jmenovatel = sum(vystup)                    # 3. defuzzifikácia ťažiskom
    return citatel / jmenovatel if jmenovatel > 0 else 50

3. Defuzzifikácia

Definícia — metódy defuzzifikácie

Nech [a, b] ⊂ ℝ, a < b, je interval možných výstupov a μ : [a, b] → [0, 1] funkcia príslušnosti výstupnej fuzzy množiny, ktorá je integrovateľná a má kladnú plochu, ∫ab μ(y) dy > 0 (aspoň jedno pravidlo platí). Defuzzifikácia je predpis, ktorý funkcii μ priradí jedno číslo y* ∈ [a, b]. Tri najbežnejšie:

  1. Ťažisko (centroid): y*T = ∫ab y · μ(y) dy/∫ab μ(y) dy.
  2. Bisektor: číslo y*B ∈ [a, b], pre ktoré ∫ay*B μ(y) dy = ∫y*Bb μ(y) dy. Také číslo existuje, pretože ľavá strana je spojitá neklesajúca funkcia hornej hranice, ktorá rastie od 0 po celú plochu; ak je μ v okolí riešenia nulová, nie je jediné.
  3. Stred maxím: nech h = maxy ∈ [a, b] μ(y) a M = {y ∈ [a, b] : μ(y) = h} je množina bodov, v ktorých sa maximum nadobúda. y*M je priemer bodov množiny M; ak je M = [m1, m2] interval (ako vo všetkých príkladoch tohto dielu), je y*M = m1 + m2/2.

Ťažisko je teda vážený priemer všetkých výstupov s váhou μ, bisektor delí plochu pod μ na dve rovnaké polovice a stred maxím sa pozerá len na najviac podporené výstupy.

Laicky povedané

Výsledná množina je ako kôpka piesku nasypaná nad osou otáčok. Ťažisko je miesto, kde by sa kôpka na doske vyvážila; bisektor ju rozdelí na dve rovnako veľké polovice; stred maxím sa pozerá len na najvyššiu časť a zvyšok ignoruje.

y* = ∫ y · μ(y) dy/∫ μ(y) dy

y*
ostrý výstup — jedno číslo, ktoré ide do motora, pretože motor fuzzy množine nerozumie
y
poloha na osi otáčok — „rameno páky“; každá hodnota hlasuje sama za seba
μ(y)
váha hlasu — hodnoty, ktoré pravidlá podporujú viac, ťahajú výsledok silnejšie (zelená plocha na obrázku)
∫ μ(y) dy
celková plocha — delením z váženého súčtu urobíme vážený priemer; bez neho by výsledok rástol s tým, koľko pravidiel vystrelí, nie podľa toho, kam ukazujú
Je to presne vzorec pre ťažisko telesa z fyziky, len hmotu nahrádza stupeň príslušnosti.
00,51 0102030405060708090100 65,9 75,3 85,9 otáčky ventilátora (%) stupeň príslušnosti μ (0–1)
Výstup ventilátora pre 27 °C a 60 % a tri metódy defuzzifikácie ťažiskobisektorstred maxím

Pre náš vstup dá ťažisko 65,9 %, bisektor 75,3 % a stred maxím 85,9 %. Rozdiel je v tom, koľko hlasu dostane slabšie pravidlo R1 („pomaly“ so silou 0,2): ťažisko ho berie do úvahy celé, stred maxím vôbec. Ťažisko je najpoužívanejšie, pretože výstup sa mení plynulo. Má však chybu: nikdy nedosiahne okraje rozsahu. Aj keď vystrelí len pravidlo „rýchlo“, ťažisko jeho lichobežníka leží na 83 %, nie na 100 %.

Príklad — ťažisko, bisektor a stred maxím ručne

Výstupná množina z oddielu o krokoch sa skladá z obdĺžnikov a trojuholníkov, takže integrály vypočítame zo známych plôch a ťažísk (ťažisko pravouhlého trojuholníka leží v tretine od jeho zvislej strany):

ÚsekTvarPlochaŤažiskoPlocha · ťažisko
[0; 40]obdĺžnik výšky 0,2820160
[40; 45]trojuholník, klesá0,541,6720,83
[55; 71,67]trojuholník, rastie5,5666,11367,28
[71,67; 100]obdĺžnik výšky 2/318,8985,831 621,30
spolu32,942 169,41

Stĺpec „Plocha“ sčítaný dá menovateľ vzorca pre ťažisko, stĺpec „Plocha · ťažisko“ jeho čitateľ (farby podľa vzorca vyššie).

  • Ťažisko: y* = 2 169,41/32,94 ≈ 65,85 %. Počítač v src/fuzzyrizeni.js integrál nahrádza súčtom po 0,1 % a dostane 65,87 — oboje sa zaokrúhli na 65,9 %.
  • Bisektor: polovica plochy je 32,94/2 = 16,47. Po bod 71,67 sa nazbiera 8 + 0,5 + 5,56 = 14,06, chýba 2,41; na plošinke výšky 2/3 je to 2,41/2/3 ≈ 3,62 ďalej, teda y* ≈ 71,67 + 3,62 ≈ 75,3 %.
  • Stred maxím: maximum 2/3 platí na celom [71,67; 100], priemer okrajov je 71,67 + 100/2 ≈ 85,8 %. Počítač priemeruje body mriežky od 71,7 vyššie, preto 85,9 %.

4. Takagi–Sugeno

Defuzzifikácia ťažiskom znamená počítať integrál — v roku 1985 na malom procesore práčky alebo kamery drahá vec. Tomohiro Takagi a Michio Sugeno preto navrhli pravidlá, ktoré rovno vracajú číslo.

Definícia — regulátor Takagi–Sugeno

Nech n ≥ 1 je počet vstupov, r ≥ 1 počet pravidiel a T t-norma (tu minimum; pozri diel o fuzzy logike). Pre každé i = 1, …, r a j = 1, …, n nech Aij je fuzzy množina na ℝ s funkciou príslušnosti μAij : ℝ → [0, 1] a fi : ℝn → ℝ funkcia. i-te pravidlo má tvar

AK x1 je Ai1 a … a xn je Ain, TAK y = fi(x1, …, xn).

Pre vstup x = (x1, …, xn) ∈ ℝn je sila i-teho pravidla αi(x) = T(μAi1(x1), …, μAin(xn)) ∈ [0, 1]. Ak je ∑i=1r αi(x) > 0, je výstup regulátora Takagi–Sugeno

y*(x) = ∑i=1r αi(x) · fi(x)/∑i=1r αi(x).

Regulátor je

  1. nultého rádu práve vtedy, keď každé fi je konštantné: fi(x) = ci s ci ∈ ℝ;
  2. prvého rádu práve vtedy, keď každé fi je afinné (v literatúre sa obvykle hovorí „lineárne“): fi(x) = ci0 + ci1x1 + … + cinxn s cij ∈ ℝ.

Výstup je teda vážený priemer návrhov fi(x), váhami sú sily pravidiel.

Laicky povedané

Každé pravidlo nehovorí „otáčky sú rýchlo“ (fuzzy množina), ale „otáčky sú 90 %“ (číslo). Výsledok je priemer návrhov všetkých pravidiel, vážený tým, nakoľko ktoré pravidlo platí. Žiadny integrál, len pár násobení a jedno delenie.

Dajme ventilátoru rovnaké pravidlá, len s konštantnými závermi: pomaly = 15 %, stredne = 50 %, rýchlo = 90 %. Pri 27 °C a 60 % vlhkosti platí len R1 (sila 0,2) a R3 (sila 2/3) a výstup je (farby podľa vzorca nižšie)

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 — rovno, bez výstupnej fuzzy množiny a bez defuzzifikácie
αi
sila pravidla, rovnaká ako pri Mamdanim — určuje, koľko hlasu pravidlo dostane
fi
návrh pravidla — číslo (0. rád) alebo lineárna funkcia vstupov (1. rád); nahrádza celý tvar „rýchlo“ jediným reprezentantom
∑i
sčítanie hlasov všetkých pravidiel — pravidlá, ktoré neplatia (αi = 0), prispejú nulou
∑i αi
normalizácia — váhy αi/∑k αk sa sčítajú na 1, takže výsledok je priemer návrhov a nezáleží na tom, ako silno platia všetky pravidlá dohromady
Integrál ťažiska sa tu zúžil na súčet cez pravidlá — namiesto tisíc bodov mriežky štyri členy.
Veta — Sugeno nultého rádu dosiahne okraje

Nech je daný regulátor Takagi–Sugeno nultého rádu s r ≥ 1 pravidlami, ktoré majú konštantné závery f1, …, fr ∈ ℝ, a nech x ∈ ℝn je vstup, pre ktorý majú pravidlá sily α1, …, αr ∈ [0, 1] a ∑i=1r αi > 0 (aspoň jedno pravidlo platí). Označme I = {i ∈ {1, …, r} : αi > 0} množinu pravidiel, ktoré platia. Potom

  1. mini ∈ I fi ≤ y*(x) ≤ maxi ∈ I fi;
  2. ak existuje c ∈ ℝ také, že fi = c pre všetky i ∈ I, je y*(x) = c.

Dôkaz: označme λi = αi/∑k=1r αk. Potom λi ≥ 0, λi = 0 pre i ∉ I, ∑ λi = 1 a y* = ∑i ∈ I λi fi je konvexná kombinácia čísel fi, i ∈ I. Odhadom fi ≥ minI f dostaneme y* ≥ minI f · ∑ λi = minI f, a rovnako zhora. Ak sa všetky fi s i ∈ I rovnajú c, je y* = c ∑ λi = c. ∎

Ťažisko Mamdaniho takú záruku nemá: aj samotný záver „rýchlo“ v plnej výške má ťažisko 83 %, pretože do priemeru vstupuje aj jeho rastúca hrana od 55 %.

5. Riadiaca plocha

Regulátor je funkcia dvoch premenných, takže sa dá nakresliť celý. Každé políčko je jedna kombinácia teploty a vlhkosti, jas hovorí, ako rýchlo sa ventilátor točí:

Mamdani (ťažisko) 02040 050100 teplota T (°C) relatívna vlhkosť (%) Sugeno (konštanty) 02040 050100 teplota T (°C) relatívna vlhkosť (%)
Riadiace plochy ventilátora: Mamdani a Sugeno

Obe plochy vyzerajú podobne — pod 20 °C pomaly, s teplom a vlhkom rýchlo — a prechádzajú plynulo, bez skokov. Líšia sa na okrajoch. Pri 35 °C a 90 % vlhkosti dá Sugeno presne 90 %, Mamdani len 82,2 %; v chlade pri 15 °C dá Sugeno 15 %, Mamdani 18,4 %. To je tá chyba ťažiska: Mamdaniho regulátor nikdy nedôjde až k okrajom. V strede, kde sa prekrývajú pravidlá, sa zasa oba správajú inak, pretože priemerujú inak tvarované návrhy.

Definícia — riadiaca plocha

Nech X1, X2 ⊆ ℝ sú množiny hodnôt dvoch vstupov a R : X1 × X2 → ℝ regulátor s jedným výstupom. Riadiaca plocha regulátora R je graf funkcie R, t. j. množina

{(x1, x2, R(x1, x2)) : x1 ∈ X1, x2 ∈ X2} ⊆ ℝ3.

Pri ventilátore je x1 = T ∈ [0; 40] teplota v °C, x2 = h ∈ [0; 100] relatívna vlhkosť v % a R(T, h) ∈ [0; 100] otáčky v %. Obrázok ju vyčísľuje na mriežke 41 teplôt (po 1 °C) × 26 vlhkostí (po 4 %).

Príklad — roh plochy: 35 °C a 90 %

horúco(35) = 35 − 30/36 − 30 = 5/6 ≈ 0,83, teplo(35) = 0 (trojuholník končí v 34), príjemne aj zima sú 0. Platí jediné pravidlo R4 (horúco → rýchlo) so silou 5/6. Farby podľa vzorcov Sugena a ťažiska vyššie.

  • Sugeno: y* = 5/6 · 90/5/6 = 90 % — presne, podľa vety vyššie.
  • Mamdani: „rýchlo“ orezané v 5/6 je trojuholník na [55; 75,83] (plocha 1/2 · 20,83 · 5/6 ≈ 8,68, ťažisko 55 + 2/3 · 20,83 ≈ 68,89) a obdĺžnik na [75,83; 100] (plocha 24,17 · 5/6 ≈ 20,14, ťažisko 87,92). y* = 8,68 · 68,89 + 20,14 · 87,92/8,68 + 20,14 ≈ 82,2 %.

V druhom rohu, 15 °C a 30 %, je príjemne(15) = 15 − 10/17 − 10 = 5/7 ≈ 0,71 a platí len R1; Sugeno dá presne 15 %, ťažisko orezaného „pomaly“ 18,4 %.

6. Fuzzy kyvadlo

V diele o neuroevolúcii balansovala tyč na vozíku sieť, ktorej váhy našla evolúcia. Teraz skúsime pravidlá, ktoré by napísal človek. Vstupom je uhol tyče a jeho rýchlosť, oba s tromi termami — záporný, nula a kladný; výstupom sila od −10 do +10 N, Sugeno nultého rádu:

uhol \ uhlová rýchlosťpadá doľavastojípadá doprava
naklonená doľava−10 N−5 N0 N
zvislo−5 N0 N+5 N
naklonená doprava0 N+5 N+10 N

Deväť pravidiel ako „AK je tyč naklonená doprava A padá doprava, TAK zatlač vozík silno doprava“. Logika je rovnaká ako pri metle na dlani: ruka ide pod tyč tam, kam tyč padá.

Definícia — fuzzy regulátor kyvadla

Nech stav sústavy je (x, ẋ, θ, θ̇) ∈ ℝ4 ako v diele o neuroevolúcii: x je poloha vozíka (m), ẋ jeho rýchlosť (m/s), θ uhol tyče od zvislice (v stupňoch, kladný doprava) a θ̇ uhlová rýchlosť (°/s); krok slučky je Δt = 0,02 s. Nech L = {záporný, nula, kladný} je množina termov. Regulátor je určený týmito údajmi:

  1. termy uhla θ: μnula je trojuholník (−6, 0, 6), μkladný lichobežník (0, 6, 90, 90) — rastie od 0° do 6° a ďalej je 1 —, μzáporný zrkadlovo lichobežník (−90, −90, −6, 0);
  2. termy uhlovej rýchlosti θ̇: rovnaké tvary so 40 namiesto 6 a 900 namiesto 90;
  3. pre každú dvojicu termov a, b ∈ L (a pre uhol, b pre rýchlosť) pravidlo so silou wab = min(μa(θ), μb(θ̇)) a konštantným záverom cab ∈ {−10, −5, 0, 5, 10} N z tabuľky vyššie;
  4. sila na vozík F(θ, θ̇) = max(−10, min(10, ∑a, b ∈ L wab cab/∑a, b ∈ L wab)) N, t. j. výstup Sugena nultého rádu orezaný na [−10; 10] N (keby boli všetky sily nulové, je F = 0).
Príklad — tyč naklonená o 2° a padajúca 10 °/s doprava

Uhol: nula(2) = 6 − 2/6 = 2/3, kladný(2) = 2/6 = 1/3. Rýchlosť: nula(10) = 40 − 10/40 = 0,75, kladná(10) = 10/40 = 0,25. Záporné termy sú 0, takže platia štyri pravidlá (farby podľa vzorca Takagi–Sugeno vyššie: w hrá úlohu αi, c úlohu fi):

  • zvislo a stojí: w = min(2/3; 0,75) = 2/3, záver 0 N,
  • zvislo a padá doprava: w = min(2/3; 0,25) = 0,25, záver +5 N,
  • doprava a stojí: w = min(1/3; 0,75) = 1/3, záver +5 N,
  • doprava a padá doprava: w = min(1/3; 0,25) = 0,25, záver +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

Sila je kladná, mieri teda doprava — vozík ide pod tyč.

len tyč (Sugeno 0. rádu) 22,0 s tyč aj vozík (Sugeno 1. rádu) 24,0 s+
Fuzzy regulátor kyvadla: prvých 24 sekúnd

Tyč stojí — po pár sekundách je uhol prakticky nulový. Lenže vozík pomaly odchádza, pretože pravidlá o vozíku nič nehovoria, a po 22 sekundách vyjde z koľajnice. Z troch štartov z dielu o neuroevolúcii vydržal regulátor 22, 12,9 a 15,7 s.

Opravíme to Sugenom prvého rádu: ku každej konštante v tabuľke pripočítame 1 · x + 2 · ẋ, kde x je poloha vozíka a ẋ jeho rýchlosť. Teraz regulátor udrží tyč zo všetkých troch štartov celú minútu a vozík sa od stredu vzdiali najviac o 0,58 m. Zaujímavé je znamienko: keď vozík odchádza doprava, regulátor ho postrčí ešte viac doprava. Tyč sa tým nakloní doľava — a pravidlá o tyči potom vozík odvezú späť. „Intuitívne“ opačné znamienka, ktoré by vozík tlačili rovno k stredu, zhodia tyč do piatich sekúnd. Pravidlá skúseného operátora sú teda cenné práve preto, že kódujú skúsenosť, ktorú by laik nevymyslel.

F = ∑ wab cab/∑ wab + kx x + kv ẋ

F
sila na vozík (pred orezaním na ±10 N)
∑ wab cab/∑ wab
pôvodné Sugeno nultého rádu — deväť pravidiel o tyči; drží tyč zvislo, o vozíku nevie nič
kx x
reakcia na polohu vozíka, kx = 1 N/m — bez nej by vozík beztrestne vyšiel z koľajnice; kladné znamienko vozík zdanlivo posiela von, ale tým nakloní tyč dovnútra a pravidlá o tyči potom vozík vrátia
kv ẋ
reakcia na rýchlosť vozíka, kv = 2 N·s/m — tlmenie; so samotnou polohou (kv = 0) vozík kmitá okolo stredu čoraz viac a zo všetkých troch štartov vyjde z koľajnice za 32 až 53 s
Prečo sa lineárna časť dá vybrať pred zátvorku: každý záver je cab + kxx + kvẋ s rovnakými k, a vážený priemer konštanty kxx + kvẋ je zasa ona sama (váhy sa sčítajú na 1).

V príklade vyššie s vozíkom 0,3 m vpravo, ktorý ide 0,1 m/s doprava, teda vyjde F = 3,61 + 1 · 0,3 + 2 · 0,1 ≈ 4,11 N (farby podľa vzorca vyššie).

7. Mamdani, alebo Sugeno?

MamdaniSugeno
Záver pravidlafuzzy množina („rýchlo“)číslo alebo lineárna funkcia
Výstupdefuzzifikácia, obvykle ťažiskovážený priemer
Výpočetintegrál cez výstuppár násobení
Čitateľnosťpravidlá ako vetyčísla v záveroch
Okraje rozsahuťažisko ich nedosiahnedosiahne
Učenie z dátnáročnéparametre záverov sa dajú naladiť — pozrite ANFIS

Mamdani sa hodí tam, kde pravidlá píšu a čítajú ľudia. Sugeno tam, kde záleží na rýchlosti výpočtu a kde chceme regulátor ladiť z nameraných dát — tomu sa venuje posledný diel modulu.

8. Fuzzy regulátory v praxi

  • Cementárska pec dánskej firmy F. L. Smidth bola okolo roku 1980 jedným z prvých priemyselných nasadení — pec sa ťažko modeluje, ale operátori ju riadili podľa skúseností.
  • Metro v Sendai (1987) sa rozbieha a brzdí podľa fuzzy pravidiel; jazda je plynulejšia a výrobca uvádzal aj úsporu energie.
  • Spotrebiče. Okolo roku 1990 ponúkali japonské firmy práčky, ktoré podľa zakalenia vody a množstva bielizne volili program, a kamery s fuzzy ostrením a stabilizáciou obrazu.
  • Dnes väčšinu priemyselného riadenia obstarávajú PID regulátory a prediktívne riadenie. Fuzzy pravidlá sa používajú skôr „nad nimi“ — prepínajú nastavenia podľa prevádzkového režimu — a všade, kde je cennejšie rýchlo zapísať skúsenosť než zostaviť presný model.

9. Zhrnutie

  • Fuzzy regulátor má tri kroky: fuzzifikácia, odvodzovanie podľa pravidiel a defuzzifikácia.
  • Defuzzifikácia prevedie výstupnú fuzzy množinu na číslo; pre ventilátor dá ťažisko 65,9 %, bisektor 75,3 % a stred maxím 85,9 %.
  • Sugeno má v záveroch čísla alebo lineárne funkcie a výstup je vážený priemer — 72,7 % pre ten istý vstup, bez integrálu.
  • Riadiaca plocha ukazuje celý regulátor naraz; ťažisko nikdy nedosiahne okraje rozsahu.
  • Deväť pravidiel o tyči ju udrží, ale vozík odíde; Sugeno prvého rádu s polohou a rýchlosťou vozíka udrží oboje celú minútu.

Chcete si to vyskúšať? Nechajte AI agenta napísať fuzzy termostat pre simulovanú izbu s oneskorením kúrenia a skúste, koľko pravidiel stačí, aby teplota nekmitala.

Máte na to iný názor? Napíšte na support@coden-app.com.

Agent na vašom počítači, ovládaný z telefónu