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.
Séria Základy AI Diel 35 z 52
- Mapa umelej inteligencie: čo je čo a ako to do seba zapadá
- Stručná história umelej inteligencie: od Turinga po jazykové modely
- Dáta, model, tréning, inferencia: základné pojmy na jednom príklade
- Ako čítať matematický zápis: symboly, indexy, sumy a kvantifikátory
- Množiny a relácie: stavebnica, z ktorej sa skladajú definície v AI
- Funkcie a zobrazenia: prečo je každý model v AI funkcia
- Logika a dôkazy: pravidlá, podľa ktorých sa v AI uvažuje
- Grafy a stromy: štruktúra, na ktorej stojí hľadanie aj neurónové siete
- Lineárna algebra pre strojové učenie: vektory, matice a prečo AI hlavne násobí
- Derivácie, gradient a reťazové pravidlo: ako model zistí, ktorým smerom sa učiť
- Gradientný zostup: ako sa model učí
- Čo je pravdepodobnosť: od hodu kockou ku Kolmogorovovým axiómam
- Podmienená pravdepodobnosť a Bayesova veta: ako zmeniť odhad, keď sa dozviete niečo nové
- Náhodná premenná a distribučná funkcia: jedna funkcia, ktorá o rozdelení povie všetko
- Funkcia hustoty a pravdepodobnostná funkcia: prečo má spojitá premenná v bode pravdepodobnosť nula
- Stredná hodnota, rozptyl a kovariancia: kde rozdelenie leží, aké je široké a čo s čím súvisí
- Prehľad pravdepodobnostných rozdelení: Bernoulliho, binomické, Poissonovo, rovnomerné, normálne a exponenciálne
- Zákon veľkých čísel a centrálna limitná veta: prečo sa priemery správajú tak predvídateľne
- Štatistika a odhady parametrov: maximálna vierohodnosť, MAP a intervaly spoľahlivosti
- Teória informácie: entropia, krížová entropia a KL divergencia — odkiaľ sa berú stratové funkcie
- Prehľadávanie stavového priestoru: BFS, DFS, UCS a A* s animáciami
- Hry a protivník: minimax, alfa-beta orezávanie a Monte Carlo tree search
- Splňovanie obmedzujúcich podmienok: backtracking, propagácia obmedzení a AC-3 na sudoku a mape krajov
- Logika a znalostné systémy: dopredné a spätné reťazenie, rezolúcia a expertné systémy
- Plánovanie: STRIPS, svet kociek, heuristiky z relaxácie a plánovanie v AI agentoch
- Lokálne hľadanie a simulované žíhanie: obchodný cestujúci cez krajské mestá
- Genetické algoritmy: populácia, kríženie, mutácia a výber na batohu na výlet
- Evolučné stratégie a genetické programovanie: od pravidla jednej pätiny po Keplerov zákon
- Optimalizácia mravčou kolóniou: ako feromónová stopa nájde krátku cestu
- Optimalizácia rojom častíc: zotrvačnosť, vlastná skúsenosť a skúsenosť roja
- Neuroevolúcia: evolúcia váh aj tvaru neurónových sietí a algoritmus NEAT
- Fuzzy množiny a funkcie príslušnosti: ako zapísať „trochu teplo“
- Fuzzy logika a pravdepodobnosť: prečo „trochu teplo“ neznamená „pravdepodobne teplo“
- Fuzzy logika: t-normy, implikácie a pravidlá AK–TAK
- Fuzzy riadenie: Mamdani a Sugeno od ventilátora po kyvadlo na vozíku
- Fuzzy zhlukovanie: algoritmus fuzzy c-means a body medzi zhlukmi
- Neuro-fuzzy systémy (ANFIS): fuzzy pravidlá, ktoré sa učia z dát
- Markovove reťazce: prechodová matica, stacionárne rozdelenie a PageRank
- Skryté Markovove modely: Viterbiho algoritmus a nepoctivé kasíno
- Bayesovské siete: prečo je tráva mokrá a čo z toho vyplýva pre postrekovač
- Kalmanov filter: ako z nepresných meraní odhadnúť, kde auto je a ako rýchlo ide
- Druhy strojového učenia: s učiteľom, bez učiteľa, s čiastočným učiteľom a ďalšie
- Prompty, kontext a RAG: ako modelu dať správne informácie
- Variačné autoenkodéry (VAE): nové obrázky zo spojitého latentného priestoru
- Generatívne adversariálne siete (GAN): falšovateľ proti detektívovi
- Difúzne modely: ako sa z čistého šumu stane obrázok
- Markovove rozhodovacie procesy: stavy, akcie, odmeny a Bellmanove rovnice
- Q-learning a DQN: učenie hodnoty akcií od tabuľky po neurónovú sieť
- Policy gradient a PPO: učenie priamo stratégie
- Ako funguje AI agent: jazykový model v slučke s nástrojmi
- Programovanie s AI agentmi: zadanie, testy a kontrola
- Vyhodnocovanie a bezpečnosť AI systémov: ako merať a ako strážiť
Celá osnova série Hotovo: 52 z 83 tém
- 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.
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
- 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.
- 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.
- 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:
- Ťažisko (centroid): y*T = ∫ab y · μ(y) dy/∫ab μ(y) dy.
- 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é.
- 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.
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ú
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):
| Úsek | Tvar | Plocha | Ťažisko | Plocha · ťažisko |
|---|---|---|---|---|
| [0; 40] | obdĺžnik výšky 0,2 | 8 | 20 | 160 |
| [40; 45] | trojuholník, klesá | 0,5 | 41,67 | 20,83 |
| [55; 71,67] | trojuholník, rastie | 5,56 | 66,11 | 367,28 |
| [71,67; 100] | obdĺžnik výšky 2/3 | 18,89 | 85,83 | 1 621,30 |
| spolu | 32,94 | 2 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.jsintegrá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
- nultého rádu práve vtedy, keď každé fi je konštantné: fi(x) = ci s ci ∈ ℝ;
- 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.
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
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
- mini ∈ I fi ≤ y*(x) ≤ maxi ∈ I fi;
- 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čí:
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ľava | stojí | padá doprava |
|---|---|---|---|
| naklonená doľava | −10 N | −5 N | 0 N |
| zvislo | −5 N | 0 N | +5 N |
| naklonená doprava | 0 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:
- 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);
- termy uhlovej rýchlosti θ̇: rovnaké tvary so 40 namiesto 6 a 900 namiesto 90;
- 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;
- 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č.
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
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?
| Mamdani | Sugeno | |
|---|---|---|
| Záver pravidla | fuzzy množina („rýchlo“) | číslo alebo lineárna funkcia |
| Výstup | defuzzifikácia, obvykle ťažisko | vážený priemer |
| Výpočet | integrál cez výstup | pár násobení |
| Čitateľnosť | pravidlá ako vety | čísla v záveroch |
| Okraje rozsahu | ťažisko ich nedosiahne | dosiahne |
| Učenie z dát | ná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.