Sterowanie rozmyte: Mamdani i Sugeno od wentylatora po wahadło na wózku
Regulator i sprzężenie zwrotne, fuzyfikacja, wnioskowanie i defuzyfikacja, środek ciężkości, bisektor i średnia maksimów, regulator Takagi–Sugeno, powierzchnie sterowania i regulator rozmyty, który utrzyma drążek na wózku.
Seria Podstawy AI Część 35 z 52
- Mapa sztucznej inteligencji: co jest czym i jak to do siebie pasuje
- Krótka historia sztucznej inteligencji: od Turinga do modeli językowych
- Dane, model, trening, inferencja: podstawowe pojęcia na jednym przykładzie
- Jak czytać zapis matematyczny: symbole, indeksy, sumy i kwantyfikatory
- Zbiory i relacje: klocki, z których składają się definicje w AI
- Funkcje i odwzorowania: dlaczego każdy model AI jest funkcją
- Logika i dowody: reguły, według których rozumuje AI
- Grafy i drzewa: struktura, na której opierają się przeszukiwanie i sieci neuronowe
- Algebra liniowa dla uczenia maszynowego: wektory, macierze i dlaczego AI głównie mnoży
- Pochodne, gradient i reguła łańcuchowa: jak model ustala, w którą stronę się uczyć
- Spadek gradientu: jak uczy się model
- Czym jest prawdopodobieństwo: od rzutu kostką do aksjomatów Kołmogorowa
- Prawdopodobieństwo warunkowe i twierdzenie Bayesa: jak zmienić ocenę, gdy dowiesz się czegoś nowego
- Zmienna losowa i dystrybuanta: jedna funkcja, która mówi o rozkładzie wszystko
- Funkcja gęstości i funkcja prawdopodobieństwa: dlaczego zmienna ciągła ma w punkcie prawdopodobieństwo zero
- Wartość oczekiwana, wariancja i kowariancja: gdzie leży rozkład, jak jest szeroki i co z czym się wiąże
- Przegląd rozkładów prawdopodobieństwa: Bernoulliego, dwumianowy, Poissona, jednostajny, normalny i wykładniczy
- Prawo wielkich liczb i centralne twierdzenie graniczne: dlaczego średnie zachowują się tak przewidywalnie
- Statystyka i estymacja parametrów: największa wiarygodność, MAP i przedziały ufności
- Teoria informacji: entropia, entropia krzyżowa i dywergencja KL — skąd się biorą funkcje straty
- Przeszukiwanie przestrzeni stanów: BFS, DFS, UCS i A* z animacjami
- Gry i przeciwnik: minimax, przycinanie alfa-beta i Monte Carlo tree search
- Spełnianie ograniczeń: backtracking, propagacja ograniczeń i AC-3 na sudoku i mapie czeskich krajów
- Logika i systemy z bazą wiedzy: wnioskowanie w przód i wstecz, rezolucja i systemy ekspertowe
- Planowanie: STRIPS, świat klocków, heurystyki z relaksacji i planowanie w agentach AI
- Przeszukiwanie lokalne i symulowane wyżarzanie: komiwojażer przez czeskie miasta wojewódzkie
- Algorytmy genetyczne: populacja, krzyżowanie, mutacja i selekcja na plecaku na wycieczkę
- Strategie ewolucyjne i programowanie genetyczne: od reguły jednej piątej do prawa Keplera
- Optymalizacja kolonią mrówek: jak ślad feromonowy znajduje krótką drogę
- Optymalizacja rojem cząstek: bezwładność, własne doświadczenie i doświadczenie roju
- Neuroewolucja: ewolucja wag i kształtu sieci neuronowych oraz algorytm NEAT
- Zbiory rozmyte i funkcje przynależności: jak zapisać „trochę ciepło”
- Logika rozmyta a prawdopodobieństwo: dlaczego „trochę ciepło” nie znaczy „prawdopodobnie ciepło”
- Logika rozmyta: t-normy, implikacje i reguły JEŻELI–TO
- Sterowanie rozmyte: Mamdani i Sugeno od wentylatora po wahadło na wózku
- Klasteryzacja rozmyta: algorytm fuzzy c-means i punkty między skupieniami
- Systemy neuro-rozmyte (ANFIS): reguły rozmyte, które uczą się z danych
- Łańcuchy Markowa: macierz przejścia, rozkład stacjonarny i PageRank
- Ukryte modele Markowa: algorytm Viterbiego i nieuczciwe kasyno
- Sieci bayesowskie: dlaczego trawa jest mokra i co z tego wynika dla zraszacza
- Filtr Kalmana: jak z niedokładnych pomiarów oszacować, gdzie jest samochód i jak szybko jedzie
- Rodzaje uczenia maszynowego: nadzorowane, nienadzorowane, półnadzorowane i inne
- Prompty, kontekst i RAG: jak dać modelowi właściwe informacje
- Wariacyjne autoenkodery (VAE): nowe obrazki z ciągłej przestrzeni latentnej
- Generatywne sieci przeciwstawne (GAN): fałszerz kontra detektyw
- Modele dyfuzyjne: jak z czystego szumu powstaje obraz
- Procesy decyzyjne Markowa: stany, akcje, nagrody i równania Bellmana
- Q-learning i DQN: uczenie się wartości akcji od tabeli po sieć neuronową
- Policy gradient i PPO: uczenie się bezpośrednio polityki
- Jak działa agent AI: model językowy w pętli z narzędziami
- Programowanie z agentami AI: zadanie, testy i kontrola
- Ocena i bezpieczeństwo systemów AI: jak mierzyć i jak pilnować
Pełny program serii Gotowe: 52 z 83 tematów
- Jak regulator rozmyty zamienia pomiar na sterowanie: fuzyfikacja, wnioskowanie i defuzyfikacja.
- Czym różni się regulator Mamdaniego od regulatora Sugeno i dlaczego środek ciężkości nie osiąga krańców zakresu.
- Jak dziewięć reguł utrzymuje drążek na wózku — i dlaczego do utrzymania wózka potrzebują jeszcze członu liniowego.
Warto wiedzieć wcześniej: Logika rozmyta: t-normy, implikacje i reguły JEŻELI–TO
W 1974 roku Ebrahim Mamdani siedział w londyńskim laboratorium nad małą maszyną parową, której nie udawało się sterować klasycznymi metodami. Doświadczony operator radził sobie z nią przy tym bez problemu — według reguł w rodzaju „gdy ciśnienie jest trochę za wysokie i rośnie, przykręć trochę parę”. Mamdani ze swoim studentem Sedrakiem Assilianem zapisał te reguły za pomocą logiki rozmytej i pozwolił im sterować maszyną. Zadziałało. Po dziesięciu latach regulatory rozmyte sterowały piecami cementowymi, po kolejnych kilku metrem i pralkami. W poprzedniej części nauczyliśmy się reguły obliczać; teraz zbudujemy z nich regulator, który zwraca jedną liczbę — i każemy mu balansować drążkiem.
Nawiązuje do części Logika rozmyta: t-normy, implikacje i reguły JEŻELI–TO oraz Neuroewolucja, skąd pożyczymy wahadło na wózku.
1. Regulator i sprzężenie zwrotne
Definicja — regulator
Regulator to odwzorowanie u = R(x) ze zmierzonego stanu obiektu x w sygnał sterujący u. W zamkniętej pętli sterowanie wpływa na obiekt, ten się zmienia, zostaje zmierzony ponownie i regulator znowu reaguje — zwykle od kilkudziesięciu do tysięcy razy na sekundę.
Termostat mierzy temperaturę i włącza ogrzewanie; temperatura się zmienia, termostat mierzy ją ponownie. Regulator to reguła „co zrobić, gdy widzę to”. Klasyczna teoria sterowania projektuje go z równań obiektu. Regulator rozmyty składa go z reguł, tak jak wypowiedziałby je doświadczony człowiek.
Definicja — zamknięta pętla w czasie dyskretnym
Komputer mierzy i steruje w krokach długości Δt. Stan xk w kroku k zmienia się zgodnie z równaniami ruchu obiektu F i sterowaniem regulatora:
uk = R(xk), xk+1 = F(xk, uk), k = 0, 1, 2, …
Regulator nie widzi więc ani przyszłości, ani równań F — tylko bieżący pomiar. Dla wahadła z końca tej części Δt = 0,02 s, więc minuta sterowania to 3 000 kroków pętli.
2. Trzy kroki regulatora rozmytego
- Fuzyfikacja zamienia ostre pomiary na stopnie przynależności: 27 °C jest „przyjemnie” w stopniu 0,2 i „ciepło” w stopniu 0,83, wilgotność 60 % jest „wilgotno” w stopniu 0,67.
- Wnioskowanie oblicza reguły tak, jak pokazała poprzednia część: każda reguła ma siłę i przycina swój wniosek; wnioski łączy się maksimum.
- Defuzyfikacja robi z wynikowego zbioru rozmytego jedną liczbę, która trafia do silnika.
Przykład — fuzyfikacja 27 °C i 60 %
Termy z poprzedniej części: przyjemnie to trapez (10, 17, 23, 28), ciepło trójkąt (22, 28, 34), gorąco trapez (30, 36, 40, 40); sucho to trapez (0, 0, 30, 50), wilgotno (40, 70, 100, 100). Na opadającym zboczu trapezu (a, b, c, d) jest μ(x) = (d − x) / (d − c), na rosnącym (x − a) / (b − a).
- przyjemnie(27) = (28 − 27) / (28 − 23) = 1/5 = 0,2,
- ciepło(27) = (27 − 22) / (28 − 22) = 5/6 ≈ 0,83 (27 leży na rosnącym zboczu),
- zimno(27) = gorąco(27) = 0 — 27 leży poza ich nośnikami,
- wilgotno(60) = (60 − 40) / (70 − 40) = 2/3 ≈ 0,67, sucho(60) = 0 (nośnik kończy się w 50).
Wnioskowanie według Mamdaniego to jeden wzór, który składa wyjściowy zbiór rozmyty z przyciętych wniosków:
μout(y) = maxi min( αi, μBi(y) ), αi = T(μAi1(x1), …, μAin(xn))
- μout(y)
- wyjściowy zbiór rozmyty — dla każdej możliwej wartości wyjścia y mówi, jak bardzo popierają ją reguły; to cała funkcja, a nie liczba, dlatego po nim musi jeszcze przyjść defuzyfikacja (na rysunku niżej to zielony obszar)
- αi
- siła i-tej reguły — t-norma T (tu minimum) łączy warunki „i”; reguła nie może zachodzić bardziej niż jej najsłabszy warunek
- μBi(y)
- wniosek reguły, na przykład „szybko” — kształt, jaki miałoby wyjście, gdyby reguła zachodziła w pełni
- min
- przycięcie — wniosek może być poparty tylko w takim stopniu, w jakim zachodzi przesłanka; słaba reguła daje więc niskie „plateau”
- maxi
- łączenie reguł — reguły traktuje się jako alternatywy („lub”), więc wartość y jest poparta w takim stopniu, w jakim popiera ją najsilniejsza reguła
Przykład — wyjściowy zbiór wentylatora
Siły reguł: R1 (zimno lub przyjemnie → wolno) ma α1 = max(0; 0,2) = 0,2; R2 (ciepło i sucho → średnio) min(0,83; 0) = 0; R3 (ciepło i wilgotno → szybko) min(5/6; 2/3) = 2/3; R4 (gorąco → szybko) 0.
Wolno to trapez (0, 0, 20, 45), przycięty na wysokości 0,2: plateau 0,2 aż do y = 40 (tam opadające zbocze (45 − y)/25 spada do 0,2), a potem spadek do zera w 45. Szybko to trapez (55, 80, 100, 100), przycięty na 2/3: zbocze (y − 55)/25 osiąga 2/3 w y = 55 + 25 · 2/3 ≈ 71,67. Wynik:
μout(y) = 0,2 na [0; 40], (45 − y)/25 na [40; 45], 0 na [45; 55], (y − 55)/25 na [55; 71,67] i 2/3 na [71,67; 100].
Cały regulator jako pseudokod, z osią wyjścia podzieloną na siatkę:
def mamdani(vstup, pravidla, mrizka): # mrizka = 0; 0,1; …; 100
sily = []
for r in pravidla: # 1. fuzyfikacja + siła reguły:
sily.append(min( # „i” = minimum, „lub” = maksimum
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. przycięcie i łączenie maksimum
citatel = sum(y * m for y, m in zip(mrizka, vystup))
jmenovatel = sum(vystup) # 3. defuzyfikacja środkiem ciężkości
return citatel / jmenovatel if jmenovatel > 0 else 50
3. Defuzyfikacja
Definicja — metody defuzyfikacji
Dla wyjściowego zbioru rozmytego z funkcją przynależności μ na przedziale wartości wyjścia:
- Środek ciężkości (centroid): y* = ∫ y μ(y) dy / ∫ μ(y) dy.
- Bisektor: y*, dla którego pole pod μ po lewej jest takie samo jak po prawej.
- Średnia maksimów: średnia z punktów, w których μ osiąga maksimum.
Wynikowy zbiór jest jak kupka piasku usypana nad osią obrotów. Środek ciężkości to miejsce, w którym kupka zrównoważyłaby się na desce; bisektor dzieli ją na dwie równie duże połowy; średnia maksimów patrzy tylko na najwyższą część, a resztę ignoruje.
y* = ∫ y · μ(y) dy / ∫ μ(y) dy
- y*
- ostre wyjście — jedna liczba, która trafia do silnika, bo silnik nie rozumie zbioru rozmytego
- y
- położenie na osi obrotów — „ramię dźwigni”; każda wartość głosuje sama na siebie
- μ(y)
- waga głosu — wartości, które reguły popierają bardziej, ciągną wynik mocniej (zielony obszar na rysunku)
- ∫ μ(y) dy
- całkowite pole — dzieląc przez nie, robimy z sumy ważonej średnią ważoną; bez tego wynik rósłby z liczbą reguł, które zadziałają, a nie zależałby od tego, dokąd wskazują
Dla naszego wejścia środek ciężkości daje 65,9 %, bisektor 75,3 % i średnia maksimów 85,9 %. Różnica polega na tym, ile głosu dostaje słabsza reguła R1 („wolno” z siłą 0,2): środek ciężkości bierze ją pod uwagę w całości, średnia maksimów wcale. Środek ciężkości jest najczęściej używany, bo wyjście zmienia się płynnie. Ma jednak wadę: nigdy nie osiąga krańców zakresu. Nawet gdy zadziała tylko reguła „szybko”, środek ciężkości jej trapezu leży na 83 %, a nie na 100 %.
Przykład — środek ciężkości, bisektor i średnia maksimów ręcznie
Wyjściowy zbiór z podrozdziału o krokach składa się z prostokątów i trójkątów, więc całki obliczymy ze znanych pól i środków ciężkości (środek ciężkości trójkąta prostokątnego leży w jednej trzeciej od jego pionowego boku):
| Odcinek | Kształt | Pole | Środek ciężkości | Pole · środek ciężkości |
|---|---|---|---|---|
| [0; 40] | prostokąt o wysokości 0,2 | 8 | 20 | 160 |
| [40; 45] | trójkąt, opada | 0,5 | 41,67 | 20,83 |
| [55; 71,67] | trójkąt, rośnie | 5,56 | 66,11 | 367,28 |
| [71,67; 100] | prostokąt o wysokości 2/3 | 18,89 | 85,83 | 1 621,30 |
| razem | 32,94 | 2 169,41 |
- Środek ciężkości: y* = 2 169,41 / 32,94 ≈ 65,85 %. Komputer w
src/fuzzyrizeni.jszastępuje całkę sumą co 0,1 % i dostaje 65,87 — oba wyniki zaokrąglają się do 65,9 %. - Bisektor: połowa pola to 16,47. Do punktu 71,67 zbiera się 8 + 0,5 + 5,56 = 14,06, brakuje 2,41; na plateau o wysokości 2/3 to 2,41 / (2/3) ≈ 3,62 dalej, czyli y* ≈ 75,3 %.
- Średnia maksimów: maksimum 2/3 obowiązuje na całym [71,67; 100], średnia końców to (71,67 + 100)/2 ≈ 85,8 %. Komputer uśrednia punkty siatki od 71,7 w górę, stąd 85,9 %.
4. Takagi–Sugeno
Defuzyfikacja środkiem ciężkości oznacza liczenie całki — w 1985 roku na małym procesorze pralki czy kamery rzecz kosztowna. Tomohiro Takagi i Michio Sugeno zaproponowali więc reguły, które od razu zwracają liczbę.
Definicja — regulator Takagi–Sugeno
Reguła ma postać JEŻELI x1 jest A1 i … i xn jest An, TO y = f(x1, …, xn). W modelu Sugeno zerowego rzędu f jest stałą, w modelu pierwszego rzędu funkcją liniową c0 + c1x1 + … + cnxn.
Wyjście to średnia ważona wniosków, wagami są siły reguł: y* = ∑i αi fi / ∑i αi.
Każda reguła nie mówi „obroty są szybko” (zbiór rozmyty), lecz „obroty wynoszą 90 %” (liczba). Wynik to średnia propozycji wszystkich reguł, ważona tym, w jakim stopniu która reguła zachodzi. Żadnej całki, tylko kilka mnożeń i jedno dzielenie.
Dajmy wentylatorowi te same reguły, tylko ze stałymi wnioskami: wolno = 15 %, średnio = 50 %, szybko = 90 %. Przy 27 °C i 60 % wilgotności wyjście wynosi (0,2 · 15 + 2/3 · 90) / (0,2 + 2/3) = 63 / 0,867 ≈ 72,7 %.
y* = ∑i αi · fi / ∑i αi
- y*
- ostre wyjście — od razu, bez wyjściowego zbioru rozmytego i bez defuzyfikacji
- αi
- siła reguły, taka sama jak u Mamdaniego — decyduje, ile głosu dostaje reguła
- fi
- propozycja reguły — liczba (rząd 0) albo funkcja liniowa wejść (rząd 1); zastępuje cały kształt „szybko” jednym reprezentantem
- ∑i
- zsumowanie głosów wszystkich reguł — reguły, które nie zachodzą (αi = 0), wnoszą zero
- ∑i αi
- normalizacja — wagi αi / ∑ αk sumują się do 1, więc wynik jest średnią propozycji i nie zależy od tego, jak silnie zachodzą wszystkie reguły razem
Twierdzenie — Sugeno zerowego rzędu osiąga krańce
Jeśli zachodzi co najmniej jedna reguła (∑ αi > 0), wyjście Sugeno zerowego rzędu leży między najmniejszą a największą stałą reguł, które zachodzą: min fi ≤ y* ≤ max fi. Jeśli zachodzą tylko reguły o tej samej stałej c, to y* = c dokładnie.
Dowód: oznaczmy λi = αi / ∑k αk. Wtedy λi ≥ 0, ∑ λi = 1, a y* = ∑ λi fi jest kombinacją wypukłą, która nie może wyjść poza [min fi, max fi]. Jeśli wszystkie fi z λi > 0 są równe c, to y* = c ∑ λi = c. ∎
Środek ciężkości Mamdaniego takiej gwarancji nie daje: nawet sam wniosek „szybko” w pełnej wysokości ma środek ciężkości 83 %, bo do średniej wchodzi też jego rosnące zbocze od 55 %.
5. Powierzchnia sterowania
Regulator jest funkcją dwóch zmiennych, więc da się go narysować w całości. Każde pole to jedna kombinacja temperatury i wilgotności, jasność mówi, jak szybko kręci się wentylator:
Obie powierzchnie wyglądają podobnie — poniżej 20 °C wolno, przy cieple i wilgoci szybko — i przechodzą płynnie, bez skoków. Różnią się na krańcach. Przy 35 °C i 90 % wilgotności Sugeno daje dokładnie 90 %, Mamdani tylko 82,2 %; w chłodzie 15 °C Sugeno daje 15 %, Mamdani 18,4 %. To właśnie ta wada środka ciężkości: regulator Mamdaniego nigdy nie dojeżdża do krańców. W środku, gdzie reguły się nakładają, oba zachowują się z kolei inaczej, bo uśredniają inaczej ukształtowane propozycje.
Definicja — powierzchnia sterowania
Powierzchnia sterowania regulatora o dwóch wejściach to wykres funkcji R: [0; 40] °C × [0; 100] % → [0; 100] %, czyli zbiór {(T, h, R(T, h))}. Rysunek oblicza ją na siatce 41 temperatur (co 1 °C) × 26 wilgotności (co 4 %).
Przykład — róg powierzchni: 35 °C i 90 %
gorąco(35) = (35 − 30) / (36 − 30) = 5/6 ≈ 0,83, ciepło(35) = 0 (trójkąt kończy się w 34), przyjemnie i zimno są równe 0. Zachodzi jedyna reguła R4 (gorąco → szybko) z siłą 0,83.
- Sugeno: y* = 0,83 · 90 / 0,83 = 90 % — dokładnie, zgodnie z twierdzeniem powyżej.
- Mamdani: „szybko” przycięte na 5/6 to trójkąt na [55; 75,83] (pole ½ · 20,83 · 5/6 ≈ 8,68, środek ciężkości 55 + ⅔ · 20,83 ≈ 68,89) i prostokąt na [75,83; 100] (pole 24,17 · 5/6 ≈ 20,14, środek ciężkości 87,92). y* = (8,68 · 68,89 + 20,14 · 87,92) / (8,68 + 20,14) ≈ 82,2 %.
W drugim rogu, przy 15 °C i 30 %, przyjemnie(15) = (15 − 10) / (17 − 10) ≈ 0,71 i zachodzi tylko R1; Sugeno daje dokładnie 15 %, środek ciężkości przyciętego „wolno” 18,4 %.
6. Rozmyte wahadło
W części o neuroewolucji drążek na wózku utrzymywała sieć, której wagi znalazła ewolucja. Teraz spróbujemy reguł, które napisałby człowiek. Wejściem jest kąt drążka i jego prędkość, oba z trzema termami — ujemny, zero i dodatni; wyjściem siła od −10 do +10 N, Sugeno zerowego rzędu:
| kąt \ prędkość kątowa | pada w lewo | stoi | pada w prawo |
|---|---|---|---|
| pochylony w lewo | −10 N | −5 N | 0 N |
| pionowo | −5 N | 0 N | +5 N |
| pochylony w prawo | 0 N | +5 N | +10 N |
Dziewięć reguł w rodzaju „JEŻELI drążek jest pochylony w prawo I pada w prawo, TO pchnij wózek mocno w prawo”. Logika jest taka sama jak przy miotle na dłoni: ręka jedzie pod drążek tam, gdzie drążek pada.
Definicja — regulator rozmyty wahadła
Stan to (x, ẋ, θ, θ̇) jak w części o neuroewolucji, krok 0,02 s. Termy kąta θ (w stopniach): zero to trójkąt (−6, 0, 6), dodatni trapez (0, 6, 90, 90) — rośnie od 0° do 6°, a dalej wynosi 1 —, ujemny symetrycznie. Termy prędkości kątowej θ̇ (°/s) mają ten sam kształt z 40 zamiast 6 (i 900 zamiast 90).
Siła reguły z termami a (kąt) i b (prędkość) to wab = min(μa(θ), μb(θ̇)), wniosek cab to liczba z tabeli, a siła działająca na wózek to F = ∑ wab cab / ∑ wab, przycięta do [−10; 10] N.
Przykład — drążek pochylony o 2° i padający 10 °/s w prawo
Kąt: zero(2) = (6 − 2)/6 = 2/3, dodatni(2) = 2/6 = 1/3. Prędkość: zero(10) = (40 − 10)/40 = 0,75, dodatnia(10) = 10/40 = 0,25. Termy ujemne są równe 0, więc zachodzą cztery reguły:
- pionowo i stoi: w = min(2/3; 0,75) = 2/3, wniosek 0 N,
- pionowo i pada w prawo: w = min(2/3; 0,25) = 0,25, wniosek +5 N,
- w prawo i stoi: w = min(1/3; 0,75) = 1/3, wniosek +5 N,
- w prawo i pada w prawo: w = min(1/3; 0,25) = 0,25, wniosek +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 w prawo — wózek jedzie pod drążek.
Drążek stoi — po kilku sekundach kąt jest praktycznie zerowy. Tyle że wózek powoli odjeżdża, bo reguły nic o wózku nie mówią, i po 22 sekundach wyjeżdża poza tor. Z trzech startów z części o neuroewolucji regulator wytrzymał 22, 12,9 i 15,7 s.
Naprawimy to modelem Sugeno pierwszego rzędu: do każdej stałej w tabeli dodamy 1 · x + 2 · ẋ, gdzie x to położenie wózka, a ẋ jego prędkość. Teraz regulator utrzymuje drążek ze wszystkich trzech startów przez całą minutę, a wózek oddala się od środka najwyżej o 0,58 m. Ciekawy jest znak: gdy wózek odjeżdża w prawo, regulator popycha go jeszcze bardziej w prawo. Drążek pochyla się przez to w lewo — a reguły o drążku odwożą potem wózek z powrotem. „Intuicyjne” przeciwne znaki, które pchałyby wózek prosto do środka, przewracają drążek w ciągu pięciu sekund. Reguły doświadczonego operatora są więc cenne właśnie dlatego, że kodują doświadczenie, na które laik by nie wpadł.
F = ∑ wab cab / ∑ wab + kx x + kv ẋ
- F
- siła działająca na wózek (przed przycięciem do ±10 N)
- ∑ wab cab / ∑ wab
- pierwotny Sugeno zerowego rzędu — dziewięć reguł o drążku; trzyma drążek w pionie, o wózku nie wie nic
- kx x
- reakcja na położenie wózka, kx = 1 N/m — bez niej wózek bezkarnie wyjechałby poza tor; dodatni znak pozornie wysyła wózek na zewnątrz, ale przez to pochyla drążek do środka, a reguły o drążku potem wózek zawracają
- kv ẋ
- reakcja na prędkość wózka, kv = 2 N·s/m — tłumienie; z samym położeniem (kv = 0) wózek oscyluje wokół środka coraz mocniej i ze wszystkich trzech startów wyjeżdża poza tor po 32 do 53 s
W przykładzie powyżej z wózkiem 0,3 m na prawo od środka, który jedzie 0,1 m/s w prawo, wychodzi więc F = 3,61 + 1 · 0,3 + 2 · 0,1 ≈ 4,11 N.
7. Mamdani czy Sugeno?
| Mamdani | Sugeno | |
|---|---|---|
| Wniosek reguły | zbiór rozmyty („szybko”) | liczba albo funkcja liniowa |
| Wyjście | defuzyfikacja, zwykle środek ciężkości | średnia ważona |
| Obliczenia | całka po wyjściu | kilka mnożeń |
| Czytelność | reguły jak zdania | liczby we wnioskach |
| Krańce zakresu | środek ciężkości ich nie osiąga | osiąga |
| Uczenie z danych | trudne | parametry wniosków da się dostroić — zob. ANFIS |
Mamdani sprawdza się tam, gdzie reguły piszą i czytają ludzie. Sugeno tam, gdzie liczy się szybkość obliczeń i gdzie chcemy stroić regulator na podstawie zmierzonych danych — temu poświęcona jest ostatnia część modułu.
8. Regulatory rozmyte w praktyce
- Piec cementowy duńskiej firmy F. L. Smidth był około 1980 roku jednym z pierwszych zastosowań przemysłowych — piec trudno zamodelować, ale operatorzy sterowali nim na podstawie doświadczenia.
- Metro w Sendai (1987) rusza i hamuje według reguł rozmytych; jazda jest płynniejsza, a producent podawał też oszczędność energii.
- Sprzęt AGD. Około 1990 roku japońskie firmy oferowały pralki, które dobierały program według zmętnienia wody i ilości prania, oraz kamery z rozmytym ustawianiem ostrości i stabilizacją obrazu.
- Dziś większość sterowania przemysłowego zapewniają regulatory PID i sterowanie predykcyjne. Reguły rozmyte stosuje się raczej „nad nimi” — przełączają nastawy według trybu pracy — i wszędzie tam, gdzie cenniejsze jest szybko zapisać doświadczenie niż zbudować dokładny model.
9. Podsumowanie
- Regulator rozmyty ma trzy kroki: fuzyfikację, wnioskowanie według reguł i defuzyfikację.
- Defuzyfikacja zamienia wyjściowy zbiór rozmyty na liczbę; dla wentylatora środek ciężkości daje 65,9 %, bisektor 75,3 % i średnia maksimów 85,9 %.
- Sugeno ma we wnioskach liczby albo funkcje liniowe, a wyjście jest średnią ważoną — 72,7 % dla tego samego wejścia, bez całki.
- Powierzchnia sterowania pokazuje cały regulator naraz; środek ciężkości nigdy nie osiąga krańców zakresu.
- Dziewięć reguł o drążku go utrzymuje, ale wózek odjeżdża; Sugeno pierwszego rzędu z położeniem i prędkością wózka utrzymuje jedno i drugie przez całą minutę.
Chcesz to wypróbować na własnej skórze? Poproś agenta AI, żeby napisał rozmyty termostat dla symulowanego pokoju z opóźnieniem ogrzewania, i sprawdź, ile reguł wystarczy, żeby temperatura nie oscylowała.
Masz inne zdanie? Napisz na support@coden-app.com.