Rzeszów, 11.03.20013r.
Sztuczna Inteligencja
Laboratorium 1
„SYNTEZA UKŁADU WNIOSKUJĄCEGO - FUZZY LOGIC TOOLBOX”
Grupa L16
Jacob Sobota
Krzysztof Wroński
Jakub Zimoń
Wstęp
Fuzzy Interference System jest graficznym programem do analizowania, projektowania i symulowania systemów opartych na logice rozmytej. Uruchomienie programu następuje poprzez wpisanie „fuzzy” w głównym oknie programu „MATLAB”. Edytor FIS ma szeroki zasób kształtów funkcji przynależności, rozmytych operatorów logicznych, metod implikacji i agregacji. Zmienne wejścia i wyjścia edytuje się za pomocą poleceń Edit/Add/Remove. Efekt końcowy można obserwować dzięki zakładce View/Rules pokazujące działanie reguł i stany wyjścia dla aktualnie ustawionych wartości wejść. Zakładka View/Surface pozwala na podgląd wykresu powierzchni sterowania.
Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z pakietem Fuzzy Logic Toolbox for Matlab firmy MathWorks.
Problematyka ćwiczenia
Naszym zdaniem jest stworzenie układu wnioskującego pozwalającego na obliczenie wysokości napiwku w restauracji. Napiwek jest uzależniony, od jakości obsługi, reprezentowanej liczbą [0 10], gdzie 10 oznacza wspaniała.
Przebieg ćwiczenia
Tworzenie nowego układu wnioskującego
W głównym oknie „Matlab” wpisując polecenie „fuzzy” uruchamiamy Fuzzy Interference System. Następnie zmieniamy nazwę input1 na obsługa oraz output1 na napiwek. System zapisujemy, jako „napiwek.fis”.
Edycja zbiorów rozmytych
Wybieramy Edit/Membership Functions oraz dla pola obsługa ustawiamy Range na [0 10]. Dodajemy 3 funkcje gaussowskie. Zmieniamy nazwy oraz parametry na słaba [1.5 0], dobra [1.5 5], wspaniała [1.5 10]. Pierwszy parametr określa nachylenie względem osi OX, drugi wskazuje na środek
Następnie modyfikujemy zbiory dla wyjścia napiwek zmieniając zakres na [0 30]. Dodajemy 3 funkcje trójkątne o następujących nazwach i parametrach: maly [0 5 10], sredni [10 15 20],
duzy [20 25 30]. Podane parametry odpowiadają za położenie wierzchołków trójkąta.
Edycja reguł
Wszystkie reguły podawane w systemie są postaci, „jeśli... to...”. Mogą pochodzić z kilku źródeł: wiedzy eksperckiej, modelowania jakościowego lub algorytmów automatycznego pozyskiwania wiedzy.
Do naszego systemu zostaną użyte wyłącznie 3 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ł
Podgląd powierzchni
Podgląd powierzchni umożliwia zobaczenie wszystkich możliwych wyników. Dla jednego wejścia i jednego wyjścia otrzymaliśmy układ dwóch osi współrzędnych. Można zauważyć, że oś napiwek zaczyna się od wartości „5”. Spowodowane jest to użyciem funkcji gaussowskich, która nigdy nie osiąga wartości „0”. Na wynik słaby nakładają się wartości z dobra i wspaniała.
Poprawa układu wnioskującego
W pierwszym kroku zmieniamy kształt funkcji obsluga na trapezoidalny. Pozwoli to na osiągnięcie minimalnej oraz maksymalnej wartości napiwku [0 25]. Następnie dodajemy nowy zbiór wejściowy zmieniając nazwę na jedzenie oraz zmienną Range na [0 10]. Dodajemy dwie funkcje trapezoidalne zepsute [-2 0 1 3] oraz wyborne [7 9 10 12]. W oknie edycji reguł dodajemy dwie reguły:
- if jedzenie is zepsute then napiwek is maly
- if jedzienie is wyborne then napiwek is duzy
Operacja dodania drugiego wejścia spowodowała zmianę powierzchni. Do układu dwóch osi została dodana trzecia.
Zadanie dodatkowe
Cel zadania
Wykonanie
Otwieramy nowy projekt FIS. Wprowadzamy dwa wejścia A oraz B. Parametr Range zmieniamy w obu przypadkach na [-1 1]. Dodajemy 3 funkcje trójkątne A1, A2, A3 o parametrach [-2 -1 0], [-1 0 1] i [0 1 2]. Identycznie postępujemy z wejściem B nazwy zmieniamy na B1, B2 i B3.
Zmieniamy nazwę wyjścia na C oraz Range na [-2 2]. Wprowadzamy 3 funkcje trójkątne o nazwach i parametrach:
- C1 [-2 -1 0]
- C2 [-1 0 1]
- C3 [ 0 1 2]
Zgodnie z instrukcją wprowadzamy 4 reguły:
- If A1 and B1 then C1
- If A1 and B3 then C3
- If A2 and B2 then C2
- If A2 and B3 then C2
Podsumowanie zadania
Cel ćwiczenia został zrealizowany, czego dowodem jest otrzymany przez nas wynik C=0.581.
Wnioski
Podczas rozwiązywania zadań zapoznaliśmy się z pakietem Fuzzy Logic Toolbox for Matlab. Jest to bardzo przydatne narzędzie do tworzenia graficznego interfejsu systemów rozmytych. Wykonane zadnie na laboratoriach pokazuje jak obliczyć wysokość napiwku w zależności od jakości obsługi i jedzenia. Podgląd i edycja reguł pozwala na graficzne przedstawienie wpływu poszczególnych wartości wejścia na wynik. Dodatkowo poznaliśmy zalety stosowania logiki rozmytej w zadaniach niemożliwych do wykonania na logice boolowskiej.