Inżynieria wiedzy Logika rozmyta jako forma reprezentacji wiedzy W systemach sterowania lub podejmowania decyzji |
---|
Zespół: Katarzyna Bosak |
Identyfikator przedmiotu: IW-IS—2015/2016 |
W lasach, zwłaszcza w okresie letnim, bardzo często dochodzi do pożarów. W tym sprawozdaniu postanowiłam rozpatrzeć problem sterowania urządzeniem informującym o ryzyku wystąpienia pożaru. System posiada dwa czujniki: jeden mierzy temperaturę zewnętrzną, drugi sprawdza procent wilgotności ściółki leśnej. Dane z czujnika są przekazywane do sterownika systemu, który zwraca odpowiedni komunikat. W przypadku ryzyka wystąpienia pożaru, informacje zostają przesłane do najbliższego nadleśnictwa, oraz oddziału straży pożarnej, dziki czemu można zapobiec wystąpieniu pożaru
Dane wejściowe:
Wykres Zbiory rozmyte dla zmiennej lingwistycznej: temperatura
Temperatura powietrza, oC, -20-30
Nazwa zbioru | Typ funkcji | Parametry funkcji(punkty przegięcia) |
---|---|---|
A | ||
Mroz | trampf | -20 |
Zimno | trampf | -5 |
chlodno | trampf | 4 |
Cieplo | trampf | 12 |
Upal | trampf | 21 |
Tabela Opisy funkcji przynależności dla zmiennej lingwistycznej: temperatura
Wykres Zbiory rozmyte dla zmiennej lingwistycznej: wilgotność ściółki
Wilgotność ściółki, %, 0-100
Nazwa zbioru | Typ funkcji | Parametry funkcji(punkty przegięcia) |
---|---|---|
A | ||
Bardzo sucho | trampf | 0 |
sucho | trampf | 18 |
wilgotno | trampf | 33 |
mokro | trampf | 48 |
Bardzo mokro | trampf | 65 |
Tabela Opisy funkcji przynależności dla zmiennej lingwistycznej: temperatura
Dane wyjściowe:
W ramach tego, że realizowałam model Sugeno, dane wyjściowe to funckje stałe:
Brak zagrożenia: 0.25
Zagrożenie małe: 0.5
Zagrożenie średnie: 0.75
Zagrożenie duże: 1.0
bardzo sucho | Sucho | wilgotno | mokro | bardzo mokro | |
---|---|---|---|---|---|
mróz | zagrożenie średnie | zagrożenie małe | brak zagrożenia | brak zagrożenia | brak zagrożenia |
zimno | zagrożenie średnie | zagrożenie średnie | brak zagrożenia | brak zagrożenia | brak zagrożenia |
chłodno | zagrożenie duże | zagrożenie średnie | zagrożenie małe | brak zagrożenia | brak zagrożenia |
Ciepło | zagrożenie duże | zagrożenie duże | zagrożenie małe | zagrożenie małe | brak zagrożenia |
Upał | zagrożenie duże | zagrożenie duże | zagrożenie średnie | zagrożenie małe | zagrożenie małe |
Tabela Zachowanie sterownika dla różnych sygnałów wejściowych
Reguły zostały opracowane na podstawie powyższej tabeli. Powstało 25 reguł :
If (temperatura_powietrza is mroz) and (wilgotnosc is bardzo_sucho) then (zagrozenie is zagrozenie_srednie) (1)
If (temperatura_powietrza is zimno) and (wilgotnosc is bardzo_sucho) then (zagrozenie is zagrozenie_srednie) (1)
If (temperatura_powietrza is chlodno) and (wilgotnosc is bardzo_sucho) then (zagrozenie is zagrozenie_duze) (1)
If (temperatura_powietrza is cieplo) and (wilgotnosc is bardzo_sucho) then (zagrozenie is zagrozenie_duze) (1)
If (temperatura_powietrza is upal) and (wilgotnosc is bardzo_sucho) then (zagrozenie is zagrozenie_duze) (1)
If (temperatura_powietrza is mroz) and (wilgotnosc is sucho) then (zagrozenie is zagrozenie_male) (1)
If (temperatura_powietrza is zimno) and (wilgotnosc is sucho) then (zagrozenie is zagrozenie_srednie) (1)
If (temperatura_powietrza is chlodno) and (wilgotnosc is sucho) then (zagrozenie is zagrozenie_srednie) (1)
If (temperatura_powietrza is cieplo) and (wilgotnosc is sucho) then (zagrozenie is zagrozenie_duze) (1)
.If (temperatura_powietrza is upal) and (wilgotnosc is sucho) then (zagrozenie is zagrozenie_duze) (1)
If (temperatura_powietrza is mroz) and (wilgotnosc is wilgotno) then (zagrozenie is brak_zagrozenia) (1)
If (temperatura_powietrza is zimno) and (wilgotnosc is wilgotno) then (zagrozenie is brak_zagrozenia) (1)
If (temperatura_powietrza is chlodno) and (wilgotnosc is wilgotno) then (zagrozenie is zagrozenie_male) (1)
f (temperatura_powietrza is cieplo) and (wilgotnosc is wilgotno) then (zagrozenie is zagrozenie_male) (1)
If (temperatura_powietrza is upal) and (wilgotnosc is wilgotno) then (zagrozenie is zagrozenie_srednie) (1)
If (temperatura_powietrza is mroz) and (wilgotnosc is mokro) then (zagrozenie is brak_zagrozenia) (1)
If (temperatura_powietrza is zimno) and (wilgotnosc is mokro) then (zagrozenie is brak_zagrozenia) (1)
If (temperatura_powietrza is chlodno) and (wilgotnosc is mokro) then (zagrozenie is brak_zagrozenia) (1)
If (temperatura_powietrza is cieplo) and (wilgotnosc is mokro) then (zagrozenie is zagrozenie_male) (1)
If (temperatura_powietrza is upal) and (wilgotnosc is mokro) then (zagrozenie is zagrozenie_male) (1)
If (temperatura_powietrza is mroz) and (wilgotnosc is bardzo mokro) then (zagrozenie is brak_zagrozenia) (1)
If (temperatura_powietrza is zimno) and (wilgotnosc is bardzo mokro) then (zagrozenie is brak_zagrozenia) (1)
If (temperatura_powietrza is chlodno) and (wilgotnosc is bardzo mokro) then (zagrozenie is brak_zagrozenia) (1)
If (temperatura_powietrza is cieplo) and (wilgotnosc is bardzo mokro) then (zagrozenie is brak_zagrozenia) (1)
If (temperatura_powietrza is upal) and (wilgotnosc is bardzo mokro) then (zagrozenie is zagrozenie_male) (1)
Funkcja logiczna | Nazwa operatora | Przyjęty wzór | Uzasadnienie |
---|---|---|---|
And metod | MIN | μA ∩ B(x) = MIN(μA(x), μB(x)) |
|
Or metod | MAX | μA ∪ B(x) = MIN(μA(x), μB(x)) |
----------------- |
Implication | MIN | ----------------- | ----------------- |
Aggregation | MAX | ----------------- | ----------------- |
Defuzzification | Wtaver | $$y_{*} = \frac{\sum_{i = 1}^{n}{w_{i}z_{i}}}{\sum_{i = 1}^{n}w_{i}}$$ |
Wszystkie zaktywizowane funkcje przynależności biorą udział w procesie defuzyfikacji |
Tabela Uzasadnienie przyjętych operatorów
Do implementacji użyłam programu Matlab. Do sprawozdania dołączam plik *.fis a poniżej prezentuję kilka zrzutów ekranu:
Rysunek Fis Editor
Rysunek Membership Function Editor
Rysunek Rule Viewer
Rysunek Rule Editor
Rysunek Surface Viewer
Scenariusz 1:
Dane wejściowe:
temperatura powietrza: 25oC
Wilgotność: 22%
25oC to temperatura, która jest w jednym zbiorze rozmytym- upał[21,23,30,30]
Wilgotność 22% to wartość ze zbioru rozmytego o nazwie sucho [18,20,34,35]
Reguła, która nam mówi o relacji między tymi zbiorami, to reguła nr 10:
If (temperatura_powietrza is upal) and (wilgotnosc is sucho) then (zagrozenie is zagrozenie_duze) (1)
Żeby się dowiedzieć, w jakim stopniu reguła została spełniona w tym przypadku, należało policzyć wartość funkcji przynależności:
μupal = 1, bo b < x ≤ c
μsucho = 1, bo b < x ≤ c
Zagrożenie duże odpowiada funkcji stałej f(x)= 1. Funkcje przynależności dla zbioru upał i sucho mają takie same wartości, więc nie da się wyliczyć minimum.
Wartość wynikowa:
$$y_{*} = \frac{1*1}{1} = 1$$
Powyższy screen pokazuje wyniki działanie programu Matlab dla powyższych danych wejściowych. Jak widać, wynik z Matlaba i wynik wyliczony są takie same
Scenariusz 2:
Dane wejściowe:
temperatura powietrza: 5oC
Wilgotność: 58%
5oC to temperatura, która jest w jednym zbiorze rozmytym- chłodno[4,6,9,13]
Wilgotność 58% to wartość ze zbioru rozmytego o nazwie mokro[48,50,60,70]
Reguła, która nam mówi o relacji między tymi zbiorami, to reguła nr 18:
If (temperatura_powietrza is chlodno) and (wilgotnosc is mokro) then (zagrozenie is brak_zagrozenia) (1)
Żeby się dowiedzieć, w jakim stopniu reguła została spełniona w tym przypadku, należało policzyć wartość funkcji przynależności:
$$\mathbf{\mu}_{\mathbf{chlodno}} = \frac{5 - 4}{6 - 4} = \frac{1}{2} = 0,5,\ \ $$
$$\ bo\ \ dla\ a < x \leq b\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mu = \frac{x - a}{b - a}$$
μmokro = 1, bo b < x ≤ c
Brak zagrożenia odpowiada funkcji stałej f(x)= 0,25
$$\min\left\{ \begin{matrix}
0,5 \\
1 \\
\end{matrix} = w = 1 \right.\ $$
Wartość wynikowa:
$$y_{*} = \frac{0,5*0,25}{0,5} = 0,25$$
Zrzut ekranu z programu Matlab dla danych wejściowych temperatura powietrza=5oC oraz wilgotność=58oC. Wartość wyjściowa z programu pokrywa się z wartością wyliczoną.
Scenariusz 3:
Dane wejściowe:
temperatura powietrza: 21,5oC
Wilgotność: 47%
21,5oC to temperatura, która zawiera się w dwóch zbiorach rozmytych- ciepło[12,14,20,22] oraz upał[21,23,30,30]
Wilgotność 47% to wartość ze zbioru rozmytego o nazwie wilgotno[33,37,46,50]
Reguły, które nam mówią o relacjach między tymi zbiorami, to reguły nr 14 oraz 15:
If (temperatura_powietrza is cieplo) and (wilgotnosc is wilgotno) then (zagrozenie is zagrozenie_male) (1)
If (temperatura_powietrza is upal) and (wilgotnosc is wilgotno) then (zagrozenie is zagrozenie_srednie) (1)
Żeby się dowiedzieć, w jakim stopniu reguły zostały spełnione w tym przypadku, należało policzyć wartość funkcji przynależności:
$$\mathbf{\mu}_{\mathbf{cieplo}} = \frac{22 - 21,5}{22 - 20} = 0,25,\ \ $$
$$\ bo\ \ dla\ c < x \leq d\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \mu = \frac{d - x}{d - c}$$
$$\mathbf{\mu}_{\mathbf{upal}} = \frac{21,5 - 21}{23 - 21} = 0,25,$$
$$\ \ \ bo\ dla\ \ a < x \leq b\ \ \ \ \ \ \ \ \ \ \ \mu = \frac{x - a}{b - a}$$
Zagrożenie małe odpowiada funkcji stałej f(x)= 0,5
Zagrożenie średnie powiada funkcji stałej f(x)=0,75
$$\min\left\{ \begin{matrix}
0,25 \\
0,75 \\
\end{matrix} = w = 0,25 \right.\ $$
Wartość wynikowa:
$$y_{*} = \frac{0,25*0,5 + 0,25*0,75}{0,25 + 0,25} = 0,625$$
Zrzut ekranu z programu Matlab dla danych wejściowych temperatura powietrza=21,5oC oraz wilgotność=47oC. Wartość wyjściowa z programu pokrywa się z wartością wyliczoną.
Scenariusz 4:
Dane wejściowe:
temperatura powietrza: -4oC
Wilgotność: 68%
-4oC to temperatura, która zawiera się w dwóch zbiorach rozmytych- mróz[-20,-20,-10,0] oraz zimno[-5, -3, 3, 5]]
Wilgotność 68% to wartość ze zbioru rozmytego o nazwie bardzo mokro[65, 70, 100, 100]
Reguły, które nam mówią o relacjach między tymi zbiorami, to reguły nr 21 oraz 22:
21.If (temperatura_powietrza is mroz) and (wilgotnosc is bardzo mokro) then (zagrozenie is brak_zagrozenia) (1)
22. If (temperatura_powietrza is zimno) and (wilgotnosc is bardzo mokro) then (zagrozenie is brak_zagrozenia) (1)
Żeby się dowiedzieć, w jakim stopniu reguły zostały spełnione w tym przypadku, należało policzyć wartość funkcji przynależności:
$$\mathbf{\mu}_{\mathbf{\text{zimno}}} = \frac{- 4 - ( - 5)}{- 3 - ( - 5)} = 0.5,\ \ $$
$$\ \ \ \ bo\ dla\ \ a < x \leq b\ \ \ \ \ \ \ \ \ \ \ \mu = \frac{x - a}{b - a}$$
$$\mathbf{\mu}_{\mathbf{\text{mroz}}} = \frac{0 - ( - 4)}{0 - ( - 10)} = 0.4\ ,$$
$$\ \ \ bo\ dla\ \ c < x \leq d\ \ \ \ \ \ \ \ \ \ \ \mu = \frac{d - x}{d - c}$$
$$\mathbf{\mu}_{\mathbf{\text{bardzo\ mokro}}} = \frac{68 - 65}{70 - 65} = 0.5,\ \ $$
$$\ \ \ \ bo\ dla\ \ a < x \leq b\ \ \ \ \ \ \ \ \ \ \ \mu = \frac{x - a}{b - a}$$
Brak zagrożenia odpowiada funkcji stałej f(x)=0,25
$$\min\left\{ \begin{matrix}
0,5 \\
0,5 \\
\end{matrix} = w = 0,5 \right.\ $$
$$\min\left\{ \begin{matrix}
0,4 \\
0,5 \\
\end{matrix} = w = 0,4 \right.\ $$
Wartość wynikowa:
$$y_{*} = \frac{0,4*0,25 + 0,5*0,25}{0,4 + 0,5} = 0,25$$
Zrzut ekranu z programu Matlab dla danych wejściowych temperatura powietrza=-4oC oraz wilgotność=68oC. Wartość wyjściowa z programu pokrywa się z wartością wyliczoną.
Scenariusz 5:
Dane wejściowe:
temperatura powietrza: 10oC
Wilgotność: 33%
10oC to temperatura, która zawiera się w jednym zbiorze rozmytym- chłodno[4,6,9,13].
Wilgotność 33% to wartość ze zbioru rozmytego o nazwie sucho[18, 20,34,35]
Reguła, która określa relacje między tymi zbiorami, to reguła nr 8:
8.If (temperatura_powietrza is chlodno) and (wilgotnosc is sucho) then (zagrozenie is zagrozenie_srednie) (1)
Żeby się dowiedzieć, w jakim stopniu reguła została spełniona w tym przypadku, należało policzyć wartość funkcji przynależności:
$$\mathbf{\mu}_{\mathbf{chlodno}} = \frac{13 - 10}{13 - 9} = 0.75,$$
$$bo\ dla\ \ c < x \leq d\ \ \ \ \ \ \ \ \ \ \ \mu = \frac{d - x}{d - c}$$
μsucho = 1, bo b < x ≤ c
Zagrożenie średnie odpowiada funkcji stałej f(x)=0,75
$$\min\left\{ \begin{matrix}
0,75 \\
1 \\
\end{matrix} = w = 0,75 \right.\ $$
Wartość wynikowa:
$$y_{*} = \frac{0,75*0,75}{0,75} = 0,75$$
Zrzut ekranu z programu Matlab dla danych wejściowych temperatura powietrza=10oC oraz wilgotność=33oC. Wartość wyjściowa z programu pokrywa się z wartością wyliczoną.
Logika rozmyta pozwala nam na pewną nieprecyzyjność w osądach. Nie wszystko da się wyrazić za pomocą logiki dwuwartościowej –tak/nie, należy do zbioru/ nie należy do zbioru. Czasem mówimy, że coś należy do jakiegoś zbioru w jakiejś części. I wtedy korzystamy z logiki rozmytej, dzięki której rozszerzamy pojęcie przynależności elementu do zbioru poprzez wprowadzenie funkcji przynależności.
Model Sugeno jest bardziej zwięzły i skuteczny obliczeniowo w porównaniu z modelem Mamdani. Gdy potrzebujemy na wyjściu mieć konkretną wartość (np. funkcję stałą brak zagrożenia=0.25) to model Sugeno będzie lepszym wyborem.
Fuzzy Logic Toolbox jest biblioteką programu Matlab-Simulink i zawiera zestaw funkcji oraz interfejsy, które ułatwiają projektowanie regulatorów rozmytych. Dzięki tej bibliotece (uruchamianej poprzez wpisanie polecenia >>fuzzy) użytkownik w prosty sposób może zaimplementować swój sterownik rozmyty. Matlab nie wymaga od użytkownika specjalistycznej wiedzy z zakresu programowania- jego interfejs jest przyjazny nawet dla laika. Gdy uruchomimy bibliotekę fuzzy, pojawia nam się Fis Editor (Rysunek 1). Tutaj mamy możliwość wyboru modelu wnioskowania: Mamdani lub Sugeno. Ustalamy ilość danych wejściowych oraz wyjściowych i nazywamy te dane oraz ustalamy sposób realizowania odpowiednich metod logicznych (and i or) oraz implikacji, agregacji i defuzzyfikacji.
Po dwukrotnym kliknięciu w prostokąt znajdujący się nad nazwą zmiennej (wejściowej lub wyjściowej) wyświetli się nam Membership Function Editor (Rysunek 2), który umożliwia nam określenie typu funkcji przynależności, ich wartości oraz punkty przegięcia.
Rule Editor (Rysunek 4) jest narzędziem, dzięki któremu w bardzo intuicyjny sposób możemy stworzyć bazę reguł. Wyniki wnioskowania możemy poznać dzięki Rule Viewer (Rysunek 3) oraz Surface Viewer (Rysunek 5).
Gdy przeprowadzałam obliczenia dla pięciu scenariuszy, za każdym razem wyniki otrzymane przeze mnie pokrywały się z wynikami otrzymanymi z Matlaba. Dlatego można przypuszczać, że za każdym razem wnioskowanie zostało przeprowadzone w sposób poprawny.
Dzięki programowi Matlab z biblioteką Fuzzy Logic Toolbox możemy w szybki i latwy sposób przeprowadzić proces wnioskowania rozmytego. Uważam, że jest to program odpowiedni zarówno dla zaawansowanych informatyków, jak również, dzięki swojej prostocie, dla osób mających mały kontakt z komputerami.