SYNTEZA UKŁADU WNIOSKUJĄCEGO – FUZZY LOGIC TOOLBOX
Wstęp teoretyczny
Teoria zbiorów rozmytych została sformułowana przez prof. Lotfi Zadeha w połowie lat sześćdziesiątych jako alternatywa dla klasycznych pojęć dotyczących teorii zbiorów i logiki pochodzących jeszcze z czasów starożytnej filozofii greckiej. Przesłanki do jej powstania i rozwoju wynikły z potrzeby opisania złożonych zjawisk lub słabo zdefiniowanych pojęć, trudnych do opisania przy pomocy klasycznego aparatu matematycznego.
Realizacja ćwiczenia
Zaprojektować rozmyty układ wnioskujący dla następującego problemu:
Zakładając, że jakość obsługi w restauracji jest reprezentowana przez liczbę z przedziału [0, 10] (gdzie 10 oznacza wspaniały), jaki powinien być napiwek?
Utworzenie nowego układu wnioskującego
Zastosowanie zbiorów rozmytych umożliwia stworzenie rozmytego modelu systemu, reprezentującego istotne cechy za pomocą aparatu teorii zbiorów rozmytych. Najważniejszą cechą takich systemów jest to, że ich podstawą jest pojęcie kodowania rozmytego informacji. Systemy rozmyte operują na zbiorach rozmytych zamiast na liczbach, co umożliwia uogólnienie informacji.
Modele rozmyte oparte na wnioskowaniu typu Mamdaniego opierają się na bazie reguł i stosowaniu operatorów lingwistycznych. Jest to podejście najbardziej naturalne z punktu widzenia logiki rozmytej i tym samym jest szeroko stosowane. Wnioskowanie wg Mamdaniego jest wykorzystywane głównie w układach regulacji, gdzie reguły dają wyrażenia lingwistyczne strategii sterowania oparte na znajomości eksperckiej systemu i zdrowym rozsądku.
Zmieniamy nazwę pierwszego wejścia na obsluga, które to posłuży nam w przyszłości jako wejściowy zbiór rozmyty, a wyjście na napiwek, które będzie rozmytą odpowiedzią systemu.
Edycja zbiorów rozmytych
Logika rozmyta wprowadza obliczoną wartość średnią między absolutną prawdą i absolutnym fałszem z rezultatem spomiędzy zakresu 0,0 i 1,0. Wprowadza ona odcienie szarości między czarny/biały i prawdę/fałsz.
Edytujemy wejściowy zbiór rozmyty obsluga, zmieniając jego zakres na przedział [0, 10] i dodając trzy gaussowskie funkcje przynależności:
- slaba [1.5 0],
- dobra [1.5 5],
- wspaniala [1.5 10],
gdzie pierwsza współrzędna oznacza odchylenie ramion funkcji, a druga określa środek funkcji.
Środek funkcji to jedyne miejsce, w którym stopień przynależności jest równy 1.
Wykorzystanie rozkładu Gaussa sprawia, że żadna z tych funkcji nigdy nie osiąga 0, a więc zawsze ma pewien wpływ na wyjściowy zbiór rozmyty.
Następnie modyfikujemy zbiory dla wyjścia napiwek zmieniając zakres na [0 30] i dodajemy 3 funkcje trójkątne:
- maly [0 5 10],
- sredni [10 15 20],
- duzy [20 25 30],
gdzie kolejne współrzędne to wierzchołki trójkąta.
Przy tak ustawionych funkcjach trójkątnych ich środek ciężkości to odpowiednio 5, 15 i 25, a więc osiągnęliśmy określone w ćwiczeniu założenie mówiące, że mały napiwek ma wynosić 5%, średni 15%, a duży 25%.
Edycja reguł
Opis systemu można zbudować za pomocą reguł postaci “jeśli ... to ...”, które mogą pochodzić z kilku źródeł: wiedzy eksperckiej, modelowania jakościowego lub algorytmów automatycznego pozyskiwania wiedzy. Przesłanki (poprzedniki) składają się z koniunkcji i/lub alternatyw wyrażeń lingwistycznych typu “x jest A”, gdzie x jest zmienną, a A jej wartością lingwistyczną. Lingwistyczne “jest” oznacza przynależność do danego zbioru rozmytego opisanego etykietą “A”. Konkluzje (następniki) są zazwyczaj pojedynczym wyrażeniem typu “y jest B”.
Dopisujemy reguły:
-if obsluga is slaba then napiwek is maly,
-if obsluga is dobra then napiwek is sredni,
-if obsluga is wspaniala then napiwek is duzy.
Podgląd reguł
Uzyskany rozmyty układ wnioskujący pozwala obliczyć wartość napiwku w zależności od jakości obsługi. Jeżeli jakości obsługi nadamy poziom 0 nagłówek wbrew ustalonym regułom nie wyniesie dokładnie 5%, a 5,08%. Wynika to z typu funkcji (rozkład Gaussa), która nigdy nie osiąga 0, a więc na wynik ma również nieznacznie wpływ funkcja obsługi dobra i wspaniala.
Jeśli jak na powyższym obrazku jakość obsługi będzie oscylować pomiędzy wartością dobra i wspaniala, w zależności od stopni przynależności poszczególnych funkcji zostanie obliczony właściwy napiwek.
Podgląd powierzchni
Otrzymana powierzchnia pokazuje dokładnie, jak zmienia się wartość napiwku wraz za zmianą jakości obsługi. Łatwo również tutaj dostrzec, że przedział wyliczonego napiwku to [5, 25] %.
Podgląd układu wnioskującego
Dodajemy nowy wejściowy zbiór rozmyty o nazwie jedzenie i zakresie [0 10].
Dodajemy dwie trapezoidalne funkcje przynależności:
- zepsute [-2 0 1 3]
- wyborne [7 9 10 12]
Aby te dane wejściowe miały wpływ na nasz wynik dopisujemy dwie nowe reguły:
- if jedzenie is zepsute then napiwek is maly
- if jedzienie is wyborne then napiwek is duzy
Od teraz na wynikową postać napiwku ma również wpływ jakość jedzenia. Jednak nie każda ocena jedzenia będzie miała odzwierciedlenie w napiwku. Możemy jedynie określić czy jedzenie jest bardzo zepsute, lub jak bardzo wyborne. Jeśli bardzo nam smakuje procent napiwku jest większy, natomiast gdy potrawa nie grzeszy świeżością napiwek jest obniżany. Gdy jakość jedzenia ustalimy w zakresie (3, 7) ocena ta nie wpłynie na wielkość napiwku, będzie ona oparta jedynie na naszych odczuciach związanych z obsługą.
Podgląd powierzchni:
Na podglądnie powierzchni widzimy wpływ nowych danych wejściowych – to odkształcenia fali przy wartościach jedzenia bliskich 0 i 10.
Na poniższym obrazku wartość obsługi jest ustalona tak jak w podpunkcie 2.4, obliczona wartość napiwku nie zmieniła się mimo wprowadzenia danych dotyczących jedzenia, które znajduje się w wcześniej podanym przedziale (3, 7) nie mającym wpływ na wynik.
Kolejny obrazek przestawia już jedzenie ocenione na „niemal” wyborne, co wpłynęło na wysokość napiwku.