labview interface użytkownika
TRANSCRIPT
Politechnika Białostocka
Wydział Elektryczny
Katedra Automatyki i Elektroniki
Pracownia specjalistyczna z przedmiotu:
Podstawy Sztucznej Inteligencji
Wydział Mechaniczny
kierunek Inżynieria Biomedyczna
studia stacjonarne II stopnia, semestr I
Opracował
dr hab. inż. Mirosław Świercz, prof. nzw. PB
Białystok, kwiecień 2016 r.
MATERIAŁY POMOCNICZE
OPIS BIBLIOTEKI NARZĘDZIOWEJ
IMPLEMENTACJI SYSTEMÓW ROZMYTYCH
„FUZZY LOGIC TOOLBOX. VERSION 2.2.22”
PAKIETU MATLAB R2015
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
2
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
1. OGÓLNA CHARAKTERYSTYKA BIBLIOTEKI NARZĘDZIOWEJ „FUZZY LOGIC
TOOLBOX”
Biblioteka zawiera kompletne środowisko do tworzenia modeli systemów statycznych
i dynamicznych z wykorzystaniem zbiorów rozmytych i rozmytych reguł wnioskowania, jak
również narzędzia do projektowania inteligentnych systemów sterowania, których działanie
opiera się na elementach logiki rozmytej.
Biblioteka zawiera zbiór plików w języku pakietu MATLAB, zgrupowanych w dwóch
podkatalogach katalogu biblioteki „Fuzzy Logic Toolbox” – ‘…\toolbox\fuzzy\’:
podkatalog FUZZY – zawiera funkcje i skrypty, umożliwiające projektowanie, analizę
i symulację działania systemów rozmytych;
podkatalog FUZDEMOS – zawiera zestaw przykładów praktycznego wykorzystania
zbiorów rozmytych do modelowania procesów i układów, klasyfikacji danych oraz
sterowania systemów dynamicznych.
Biblioteka „Fuzzy Logic Toolbox” umożliwia projektowanie, analizę i testowanie
systemów rozmytych za pośrednictwem graficznego interfejsu użytkownika (ang. Graphical
User Interface, GUI).
Biblioteka dostarcza użytkownikowi wymienione niżej narzędzia, za pomocą których
może on konstruować systemy rozmyte realizujące różnorodne zadania klasyfikacji danych,
modelowania i sterowania:
edytor graficzny (GUI) umożliwiający łatwą edycję i analizę systemu rozmytego;
w skład edytora wchodzą:
podstawowy edytor systemu rozmytego (ang. Fuzzy Logic Designer),
edytor funkcji przynależności (ang. Membership Function Editor),
edytor reguł decyzyjnych (ang. Rule Editor),
monitor działania reguł w systemie rozmytym (ang. Rule Viewer),
moduł wykreślania powierzchni funkcyjnej (ang. Surface Viewer), tj. powierzchni
odwzorowania „ostrych” (nierozmytych) wartości wejściowych systemu rozmytego
w „ostre” wartości zmiennych wyjściowych systemu;
zbiór poleceń umożliwiających tworzenie i analizę systemu rozmytego, dostępnych
z okna komend pakietu MATLAB (tzw. MATLAB Command Window) – za pomocą
tych komend użytkownik może wykonać te same czynności, które są dostępne poprzez
interfejs graficzny;
zbiór poleceń edytora funkcji przynależności, dostępnych z okna komend pakietu
MATLAB;
zbiór poleceń, dostępnych z okna komend pakietu MATLAB, które służą do
konstrukcji i analizy zaawansowanych systemów neuro-rozmytych.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
3
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Architekturę edytora graficznego biblioteki narzędziowej „Fuzzy Logic Toolbox”
przedstawiono na rys. 1 (rysunki zamieszczone w niniejszym opracowaniu zostały zaczerpnięte
z podręcznika użytkownika biblioteki: „Fuzzy Logic Toolbox. For use with MATLAB. User’s
Guide” lub wygenerowane za pomocą odpowiednich komend biblioteki narzędziowej).
Rys. 1. Architektura biblioteki narzędziowej „Fuzzy Logic Toolbox v. 2.2.22”
2. EDYTOR GRAFICZNY BIBLIOTEKI „FUZZY LOGIC TOOLBOX”
Składnikami edytora graficznego biblioteki „Fuzzy Logic Toolbox” są:
podstawowy edytor systemu rozmytego (Fuzzy Logic Designer), wywoływany z okna
komend pakietu MATLAB za pomocą polecenia: fuzzy;
graficzny edytor funkcji przynależności (Membership Function Editor), wywoływany
z okna komend pakietu MATLAB za pomocą polecenia: mfedit lub z menu głównego
okna interfejsu graficznego podstawowego edytora systemu rozmytego;
tekstowy edytor reguł wnioskowania (Rule Editor), wywoływany z okna komend
pakietu MATLAB za pomocą polecenia: ruleedit lub z menu głównego okna
interfejsu graficznego podstawowego edytora systemu rozmytego;
graficzny monitor działania reguł wnioskowania (Rule Viewer), wywoływany z okna
komend pakietu MATLAB za pomocą polecenia: ruleview lub z menu okien interfejsu
graficznego modułów edytora systemu rozmytego;
wykres powierzchni funkcyjnej (powierzchni odwzorowania) systemu rozmytego
(Surface Viewer), wywoływany z okna komend pakietu MATLAB za pomocą
polecenia: surfview lub z menu okien interfejsu graficznego modułów edytora systemu
rozmytego.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
4
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Pracę w graficznym interfejsie użytkownika biblioteki narzędziowej „Fuzzy Logic
Toolbox v. 2.2.22” rozpoczyna się w oknie komend pakietu MATLAB za pomocą jednego
z w/w pięciu poleceń: fuzzy, mfedit, ruleedit, ruleview lub surfview, co powoduje
uruchomienie narzędzia graficznego, skojarzonego z daną komendą.
2.1. PODSTAWOWY EDYTOR SYSTEMU ROZMYTEGO (FUZZY LOGIC DESIGNER)
Uruchomienie podstawowego edytora systemu rozmytego następuje po wprowadzeniu
przez użytkownika polecenia:
>> fuzzy
w oknie komend pakietu MATLAB (wielkość liter, jakimi wpisuje się tekst komendy nie ma
tutaj znaczenia). Na ekranie pojawia się główne okno edytora, przedstawione na rys. 2.
Rys. 2. Okno podstawowego edytora systemu rozmytego
Menu główne okna graficznego edytora systemu rozmytego zawiera następujące opcje:
FILE
New FIS Mamdani ... – utworzenie nowego systemu rozmytego typu
Mamdani’ego o tymczasowej nazwie ‘Untitled’, nie zawierającego bezpośrednio po
utworzeniu żadnych zmiennych ani reguł wnioskowania,
New FIS Sugeno ... – utworzenie nowego systemu rozmytego typu Takagi-
Sugeno o tymczasowej nazwie ‘Untitled’, nie zawierającego bezpośrednio po
utworzeniu żadnych zmiennych ani reguł wnioskowania,
Import From Workspace ... – załadowanie systemu rozmytego ze struktury
danych typu FIS, znajdującej się aktualnie w przestrzeni roboczej pakietu
MATLAB,
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
5
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Import From File ... – załadowanie systemu rozmytego z pliku dyskowego
o domyślnym rozszerzeniu ‘fis’,
Export To Workspace ... – zapis systemu rozmytego (który jest aktualnie
definiowany w oknie edytora) do struktury danych typu FIS w przestrzeni roboczej
pakietu MATLAB,
Export To File ... – zapis aktualnego systemu rozmytego (znajdującego się
w przestrzeni roboczej pakietu MATLAB) do pliku dyskowego o nazwie
i lokalizacji wybranych przez użytkownika oraz domyślnym rozszerzeniu ‘fis’,
Print – wydrukowanie zawartości okna definicji systemu rozmytego,
Close – zamknięcie głównego okna edytora systemu rozmytego (przed
zamknięciem istnieje możliwość zapisu zmian dokonanych w systemie rozmytym);
EDIT
Undo – cofnięcie (anulowanie) ostatniej operacji edycji systemu rozmytego,
Add Variable Input – dodanie nowej zmiennej wejściowej do aktualnego
systemu rozmytego,
Add Variable Output – dodanie nowej zmiennej wyjściowej do aktualnego
systemu rozmytego,
Remove Selected Variable – usunięcie wskazanej zmiennej z aktualnego systemu
rozmytego,
Membership Functions ... – otwarcie okna edytora funkcji przynależności
(Membership Function Editor),
Rules ... – otwarcie okna edytora reguł wnioskowania (Rule Editor);
VIEW
Rules ... – wywołanie (otwarcie okna) monitora reguł wnioskowania (Rule Viewer),
Surface ... – wywołanie (otwarcie okna) wykreślania powierzchni odwzorowania
systemu rozmytego (Surface Viewer).
Aby rozpocząć pracę z nowo utworzonym systemem rozmytym należy nadać mu
unikalną nazwę i zachować go w przestrzeni roboczej (jako strukturę danych) lub w pliku
dyskowym (z domyślnym rozszerzeniem ‘fis’). Aby dokonać edycji zmiennej wejściowej lub
wyjściowej systemu rozmytego należy podświetlić bloczek odpowiadający danej grupie
zmiennych (poprzez pojedynczy „klik” myszką), a następnie w okienku ‘Name’ wpisać
nazwę zmiennej.
W oknie edycyjnym graficznego edytora systemu rozmytego należy również określić typ
operacji arytmetyczno-logicznych, realizowanych w systemie. Wyboru typu operacji
dokonuje się za pomocą pięciu rozwijanych menu’s (ang. pop-up menu)
And method – definiowanie metody realizacji operacji logicznej AND –
użytkownik ma do wyboru: ‘min’ (minimalny z argumentów), ‘prod’ (iloczyn
argumentów) oraz własną definicję operacji iloczynu logicznego (‘Custom’),
Or method – definiowanie metody realizacji operacji logicznej OR – użytkownik
ma do wyboru: ‘max’ (maksymalny z argumentów), ‘probor’ (probabilistyczna
operacja OR) oraz własną definicję operacji sumowania logicznego (‘Custom’),
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
6
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Implication – definiowanie metody realizacji logicznej implikacji – użytkownik
ma do wyboru: ‘min’ (minimalny z argumentów), ‘prod’ (iloczyn argumentów)
oraz własną definicję operacji implikacji (‘Custom’); opcja ta nie jest aktywna
w systemie rozmytym typu Takagi-Sugeno,
Aggregation – definiowanie metody realizacji logicznej agregacji reguł –
użytkownik ma do wyboru: ‘max’ (maksymalny z argumentów operacji), ‘sum’
(suma argumentów), ‘probor’ (probabilistyczna operacja OR) oraz własną definicję
operacji agregacji (‘Custom’); opcja ta nie jest aktywna w systemie rozmytym typu
Takagi-Sugeno,
Defuzzification – definiowanie metody wyostrzania (defuzyfikacji) – użytkownik
ma do wyboru dla systemu Mamdani’ego: ‘centroid’, ‘bisector’, ‘mom’ (środek
maksimum), ‘som’ (najmniejsze maksimum), ‘lom’ (największe maksimum) oraz
własną definicję operacji (‘Custom’); dla systemu typu Takagi-Sugeno: ‘wtaver’
(średnia ważona) albo ‘wtsum’ (suma ważona).
2.2. EDYTOR FUNKCJI PRZYNALEŻNOŚCI (MEMBERSHIP FUNCTION EDITOR)
Uruchomienie edytora funkcji przynależności systemu rozmytego następuje po
wprowadzeniu przez użytkownika polecenia:
>> mfedit(‘nazwa_systemu’)
w oknie komend pakietu MATLAB (wielkość liter, jakimi wpisuje się tekst komendy nie ma
tutaj znaczenia). Ponadto edytor można wywołać z okna podstawowego edytora systemu
rozmytego poprzez wybór w menu opcji: EDIT Membership functions .... Na ekranie
pojawia się okno edytora funkcji przynależności, przedstawione na rys. 3.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
7
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Rys. 3. Okno edytora funkcji przynależności systemu rozmytego
Menu główne okna edytora funkcji przynależności systemu rozmytego zawiera
następujące opcje:
FILE (opis opcji jak w punkcie 2.1.);
EDIT
Undo – cofnięcie (anulowanie) ostatniej operacji edycji funkcji przynależności,
Add MFs ... – dodanie nowej funkcji przynależności (wybranej ze zbioru funkcji
bibliotecznych) dla aktualnej zmiennej wejściowej lub wyjściowej,
Add Custom MF ... – dodanie nowej, definiowanej przez użytkownika, funkcji
przynależności dla aktualnej zmiennej wejściowej lub wyjściowej,
Remove Selected MF – usunięcie aktualnie wybranej funkcji przynależności dla
zmiennej wejściowej lub wyjściowej,
Remove All MFs – usunięcie wszystkich funkcji przynależności dla aktualnie
wybranej zmiennej wejściowej lub wyjściowej,
FIS Properties ... – wywołanie głównego okna edytora systemu rozmytego,
Rules ... – wywołanie edytora reguł wnioskowania (Rule Editor);
VIEW
Rules – wywołanie monitora reguł wnioskowania (Rule Viewer),
Surface – wywołanie wykreślania powierzchni odwzorowania systemu rozmytego
(Surface Viewer).
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
8
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Po otwarciu okna edytora funkcji przynależności, należy określić zmienną (z grupy
zmiennych wejściowych lub wyjściowych systemu rozmytego), dla której będziemy
definiować funkcje przynależności. Selekcji dokonuje się przez podświetlenie bloczka,
odpowiadającego nazwie danej zmiennej (poprzez pojedynczy „klik” myszką). Następnie
należy określić zakres zmienności wybranej zmiennej, wpisując odpowiednie wartości
w okienku ‘Range’ oraz zakres osi jej wykresu, wpisując odpowiednie wartości w okienku
‘Display Range’.
Dodanie funkcji przynależności realizuje się poprzez wybór myszką opcji menu EDIT
Add MFs ...., co powoduje ukazanie się okienka przedstawionego na rys. 4.
Rys. 4. Okno pomocnicze – definiowanie typu i liczby funkcji przynależności zmiennej systemu rozmytego
Za pomocą rozwijanych menu’s użytkownik może wybrać dla danej zmiennej typ funkcji
przynależności (‘MF type’), jak i liczbę funkcji wybranego typu (‘Number of MFs’). Edytor
funkcji przynależności określa początkowe wartości parametrów funkcji w taki sposób, aby
pokrywały równomiernie cały zakres zmienności argumentu, określony w okienku ‘Range’.
W oknie edycji można również wybrać polecenie EDIT Add custom MF …, które
umożliwia edycję pojedynczych funkcji przynależności. Po wybraniu tego polecenia na
ekranie pojawia się pomocnicze okienko edycyjne, przedstawione na rys. 5.
Rys. 5. Okno pomocnicze – definiowanie indywidualnej funkcji przynależności zmiennej systemu rozmytego
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
9
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Okienko umożliwia nadanie etykiety funkcji przynależności (‘MF name’), wybranie
rodzaju funkcji (‘M-File function name’) oraz określenie wartości liczbowych jej
parametrów (‘Parameter list’). Po zdefiniowaniu typów i początkowych wartości
parametrów funkcji przynależności, użytkownik może korygować kształt indywidualnych
funkcji poprzez zmianę wartości parametrów w okienku ‘Params’ lub poprzez przeciąganie
za pomocą myszki charakterystycznych punktów na wykresach funkcji w okienku
‘Membership function plots’ (rys. 3). Możliwa jest również modyfikacja nazwy (pole
‘Name’) i zmiana typu (rozwijane menu ‘Type’) indywidualnych funkcji przynależności
w oknie edytora. W podobny sposób należy dokonać edycji funkcji przynależności dla
wszystkich zmiennych systemu rozmytego.
Biblioteka ‘Fuzzy Logic Toolbox v.2.2.22’ oferuje 11 typów funkcji przynależności.
Mogą one przyjmować różne kształty: od trójkąta do kształtu określonego złożoną
zależnością funkcyjną. Poniżej zestawiono typy funkcji przynależności i ich parametry.
2.3. FUNKCJE PRZYNALEŻNOŚCI I ICH PARAMETRY
dsigmf - Funkcja przynależności, która jest różnicą dwóch funkcji sigmoidalnych
Składnia:
y = dsigmf(x, [a1 c1 a2 c2])
Opis. Funkcje sigmoidalne użyte do
konstrukcji funkcji ‘dsigmf’ są zależne od
dwóch parametrów, zgodnie z zależnością:
)(1
1),;(
cxaecaxf
Funkcja przynależności ‘dsigmf’ jest różnicą
dwóch funkcji sigmoidalnych i zależy od
czteroelementowego wektora parametrów
wejściowych [a1, c1, a2, c2] jak poniżej:
dsigmf = f1(x; a1, c1) - f2(x; a2, c2)
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
10
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
gauss2mf - Funkcja przynależności, która jest kombinacją dwóch funkcji
gaussowskich
Składnia:
y = gauss2mf(x, [sig1 c1 sig2 c2])
Opis. Funkcja gaussowska jest zależna od
dwóch parametrów: sig i c, zgodnie ze
wzorem:
2
2
2
)(
),;(
cx
ecxf
Funkcja przynależności ‘gauss2mf’ jest
kombinacją dwóch funkcji gaussowskich.
Pierwsza z nich (określona poprzez
parametry sig1 i c1) wyznacza kształt lewego
zbocza wykresu funkcji przynależności.
Druga funkcja (określona poprzez parametry
sig2 i c2) wyznacza kształt prawego zbocza
wykresu funkcji przynależności.
Maksimum funkcji ‘gauss2mf’ jest równe
1 jeśli c1 < c2, w przeciwnym przypadku
maksimum jest mniejsze od jedności.
gaussmf - Symetryczna gaussowska funkcja przynależności
Składnia:
y = gaussmf(x, [sig c])
Opis. Funkcja gaussowska jest zależna od
dwóch parametrów: sig i c, zgodnie ze
wzorem:
2
2
2
)(
),;(
cx
ecxf
Funkcja przynależności ‘gaussmf’ jest
określona poprzez dwuelementowy wektor
parametrów [sig c]. Maksimum funkcji jest
równe jedności, funkcja jest położona
symetrycznie względem centrum c.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
11
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
gbellmf - Symetryczna „dzwonowa” funkcja przynależności
Składnia:
y = gbellmf(x, [a b c]) lub y = gbellmf(x, [params])
Opis. Funkcja „dzwonowa” jest zależna od
trzech parametrów: a, b i c, zgodnie ze
wzorem:
b
a
cxcbaxf
2
1
1),,;(
Parametr b przyjmuje zwykle wartość
dodatnią. Maksimum funkcji jest równe
jedności, funkcja jest położona symetrycznie
względem centrum c.
pimf - Pi-kształtna funkcja przynależności
Składnia:
y = pimf(x, [a b c d])
Opis. Funkcja Pi-kształtna należy do grupy
funkcji „sklejanych” (ang. splines) i jest
zależna od czterech parametrów: a, b, c i d.
Parametry a i d określają położenie
„podstawy” funkcji, zaś parametry b i c –
kształt ramion funkcji. Kształt funkcji nie
musi być symetryczny.
Funkcja ‘pimf’ jest iloczynem dwóch innych
funkcji przynależności: ‘smf’ i ‘zmf’:
PIMF(X, PARAMS) = SMF(X, PARAMS(1:2)).*
ZMF(X, PARAMS(3:4))
psigmf - Funkcja przynależności, która jest iloczynem dwóch funkcji
sigmoidalnych
Składnia:
y = psigmf(x, [a1 c1 a2 c2])
Opis. Funkcja sigmoidalna jest zależna od
parametrów a i c, zgodnie ze wzorem:
)(1
1),;(
cxaecaxf
Funkcja ‘psigmf’ jest iloczynem dwóch
takich funkcji, jak poniżej:
psigmf = f1(x; a1, c1) * f2(x; a2, c2)
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
12
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
smf - S-kształtna funkcja przynależności
Składnia:
y = smf(x, [a b])
Opis. Funkcja S-kształtna należy do grupy
funkcji „sklejanych” (ang. splines). Funkcja
jest zależna od dwóch parametrów: a i b,
które określają jej punkty charakterystyczne
(np. punkty przegięcia). Jeśli a < b, to ‘smf’
jest funkcją gładką o wartości 0 w punkcie a
i 1 w punkcie b. Jeśli a > b, wówczas ‘smf’
jest funkcją skokową, zmieniającą wartość
z 0 na 1 w punkcie (a + b)/2.
sigmf - Sigmoidalna funkcja przynależności
Składnia:
y = sigmf(x, [a c])
Opis. Funkcja sigmoidalna jest zależna od
parametrów a i c, zgodnie ze wzorem:
)(1
1),;(
cxaecaxf
Zależnie od znaku parametru a, funkcja
‘sigmf’ jest rosnąca lub malejąca; może
zatem reprezentować zmienne lingwistyczne
np. „bardzo mały” lub „bardzo duży”.
trapmf - Trapezoidalna funkcja przynależności
Składnia:
y = trapmf(x, [a b c d])
Opis. Funkcja trapezoidalna zależy od
parametrów według poniższego wzoru:
dx
dxccd
xd
cxb
bxaab
ax
ax
dcbaxf
,0
,
,1
,
,0
),,,;(
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
13
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
trimf - Trójkątna funkcja przynależności
Składnia:
y = trimf(x, [a b c])
Opis. Funkcja trójkątna zależy od
parametrów według poniższego wzoru:
cx
cxbbc
xc
bxaab
ax
ax
cbaxf
,0
,
,
,0
),,;(
zmf - Z-kształtna funkcja przynależności
Składnia:
y = zmf(x, [a b])
Opis. Funkcja Z-kształtna należy do grupy
funkcji „sklejanych” (ang. splines). Funkcja
jest zależna od dwóch parametrów: a i b,
które określają jej punkty charakterystyczne
(np. punkty przegięcia). Jeśli b < a, to ‘zmf’
jest funkcją gładką o wartości 1 w punkcie b
i 0 w punkcie a. Jeśli b > a, wówczas ‘zmf’
jest funkcją skokową, zmieniającą wartość
z 1 na 0 w punkcie (a + b)/2.
2.4. EDYTOR REGUŁ (RULE EDITOR)
Uruchomienie edytora reguł systemu rozmytego następuje po wprowadzeniu przez
użytkownika polecenia:
>> ruleedit(‘nazwa_systemu’)
w oknie komend pakietu MATLAB (wielkość liter, jakimi wpisuje się tekst komendy nie ma
tutaj znaczenia). Ponadto edytor można wywołać z okna podstawowego edytora systemu
poprzez wybór w menu opcji: EDIT Rules .... Na ekranie pojawia się okno edytora funkcji
przynależności, przedstawione na rys. 6.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
14
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Rys. 6. Okno edytora reguł systemu rozmytego
Przedstawione na rysunku okno przedstawia reguły zdefiniowane w przykładowym
systemie rozmytym o nazwie ‘mam21’, który znajduje się w katalogu demonstracyjnym
‘Fuzdemos’.
Menu główne okna edytora reguł wnioskowania w systemie rozmytym zawiera
następujące opcje:
FILE (opis opcji jak w punkcie 2.1.);
EDIT
Undo – cofnięcie (anulowanie) ostatniej operacji edycji reguł wnioskowania,
FIS Properties ... – wywołanie głównego okna edytora systemu rozmytego,
Membership Functions ... – wywołanie edytora funkcji przynależności
(Membership Functions Editor);
VIEW
Rules ... – wywołanie monitora reguł wnioskowania (Rule Viewer),
Surface ... – wywołanie narzędzia do wykreślania powierzchni odwzorowania
systemu rozmytego (Surface Viewer);
OPTIONS
Language ► – wybór języka
English – język angielski,
Deutsch – język niemiecki,
Francais – język francuski;
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
15
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Format ► – wybór formatu prezentacji reguł
Verbose – pełny format opisu słownego,
Symbolic – format opisu formalnego, z użyciem operatorów i słów
kluczowych,
Indexed – format uproszczony, zapis za pomocą indeksów zmiennych i ich
wartości
Użytkownik może więc wybrać dowolny spośród trzech formatów prezentacji reguł:
verbose, symbolic lub indexed. Oto przykład przedstawienia tej samej reguły w trzech
formatach:
verbose: If (angle is small) and (velocity is small) then (force is negBig)
symbolic: If (angle == small) & (velocity == small) => (force = negBig)
indexed: 1 1, 1 (1): 1
Zaleca się wprowadzanie reguł w dwóch pierwszych, najbardziej czytelnych formatach
(tj. verbose i symbolic), gdyż najbardziej zwarty format (indexed) jest dość trudny dla
początkującego użytkownika. Składnia formatu symbolic jest nieco uproszczona w stosunku
do składni najbardziej opisowego formatu verbose; różnica polega na zastąpieniu słów
kluczowych przez operatory, tj.:
zamiast słowa kluczowego if nie używa się żadnego operatora,
zamiast słowa kluczowego and wstawia się symbol &,
zamiast słowa kluczowego or wstawia się symbol |,
zamiast słowa kluczowego then wstawia się symbol =>,
zamiast słowa kluczowego equal wstawia się symbol == (dwukrotny znak równości),
zamiast słowa kluczowego is wstawia się symbol =,
zamiast słowa kluczowego not equal wstawia się symbol ~=.
Słowa kluczowe w formacie verbose można podawać w języku innym niż angielski,
stosownie do wyboru dokonanego za pomocą opcji OPTIONS Language.
Duże okienko w górnej części okna edytora reguł, przedstawionego na rys. 6, zawiera
listę zdefiniowanych reguł wnioskowania systemu rozmytego. Kolejność reguł jest zgodna
z kolejnością ich definiowania. W nawiasie po prawej stronie każdej z reguł jest wyświetlany
współczynnik wagowy, reprezentujący względną miarę znaczenia danej reguły.
Współczynnik ten wpisuje się w okienku tekstowym (‘Weight’) w lewej dolnej części okna
edytora reguł. W dolnej części okna edytora reguł znajdują się także przyciski umożliwiające
dodanie reguły (‘Add rule’), usunięcie wybranej reguły (‘Delete rule’) oraz edycję
pojedynczej, wybranej reguły (‘Change rule’). Wyboru reguły dokonuje się poprzez
pojedyncze naciśnięcie („kliknęcie”) myszką na jej tekst; który zostaje wówczas
podświetlony na niebiesko.
Okienka wyboru w środkowej części edytora reguł reprezentują zmienne wejściowe
(w tym przypadku ‘angle’ i ‘velocity’) i wyjściowe (‘force’) systemu rozmytego. Teksty
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
16
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
wyświetlane w tych okienkach (‘small’, ‘big’, ‘none’, ‘negBig’, ‘negSmall’, ‘posSmall’,
‘posBig’, ‘none’) są nazwami symbolicznymi funkcji przynależności, które zostały
zdefiniowane dla zmiennych wejściowych i wyjściowych. Dodatkowo poniżej tych okienek
wyboru znajdują się małe okienka (‘not’) umożliwiające uzyskanie negacji przynależności
zmiennej do danej kategorii lingwistycznej (np. ‘angle is not small’) oraz okienko wyboru
operatora logicznego (‘Connection’).
2.5. MONITOR DZIAŁANIA REGUŁ W SYSTEMIE ROZMYTYM (RULE VIEWER)
Uruchomienie monitora działania reguł systemu rozmytego następuje po wprowadzeniu
przez użytkownika polecenia:
>> ruleview(‘nazwa_systemu’)
w oknie komend pakietu MATLAB (wielkość liter, jakimi wpisuje się tekst komendy nie ma
tutaj znaczenia). Ponadto monitor można wywołać z okna podstawowego edytora systemu
rozmytego poprzez wybór w menu opcji: VIEW Rules. Na ekranie pojawia się okno
monitora działania reguł systemu rozmytego, przedstawione na rys. 7.
Rys. 7. Okno monitora działania reguł systemu rozmytego
Okno monitora z rys. 7 przedstawia działanie reguł zdefiniowanych w przykładowym
systemie rozmytym o nazwie ‘mam21’, który znajduje się w katalogu demonstracyjnym
‘Fuzdemos’. Reguły tego systemu zostały pokazane na rys. 6 w rozdziale 2.4, przy
omawianiu edytora reguł systemu rozmytego.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
17
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Okno monitora pozwala prześledzić działanie mechanizmu rozmywania zmiennych
wejściowych, rodzaj zastosowanej implikacji, działanie operacji agregacji rozmytych wyjść
oraz działanie wybranej metody wyostrzania (defuzyfikacji) zmiennych wyjściowych.
Użytkownik może za pomocą myszy zmieniać położenie (tj. przesuwać w poziomie)
czerwone linie, reprezentujące „ostre” wartości zmiennych wejściowych i obserwować
zarówno wartości funkcji przynależności zdefiniowanych dla danej zmiennej wejściowej, jak
i wpływ takiej zmiany na rozmyte wartości wyjścia (wynikające z funkcji przynależności,
zdefiniowanych dla zmiennych wyjściowych) oraz na „ostrą” wartość wyjść systemu. „Ostre”
wartości zmiennych wejściowych można również wprowadzać z klawiatury w okienku
edycyjnym ‘Input’ w notacji wektorowej stosowanej w pakiecie MATLAB. Przyciski
zdefiniowane w obszarze oznaczonym symbolem ‘Move’ służą do przesuwania wykresów
funkcji przynależności w kierunku poziomym i pionowym, co może być przydatne przy
większej liczbie wejść i wyjść systemu i/lub większej liczbie funkcji przynależności,
zdefiniowanych dla tych zmiennych.
Menu główne okna monitora działania reguł wnioskowania w systemie rozmytym
zawiera następujące opcje:
FILE (opis opcji jak w punkcie 2.4.);
EDIT (opis opcji jak w punkcie 2.4.);
VIEW (opis opcji jak w punkcie 2.4.);
OPTIONS
Verbose – pełny format opisu słownego,
Symbolic – format opisu formalnego, z użyciem operatorów i słów kluczowych,
Indexed – format uproszczony, zapis za pomocą indeksów zmiennych i ich
wartości.
2.6. MONITOR POWIERZCHNI ODWZOROWANIA, REALIZOWANEGO PRZEZ SYSTEM
ROZMYTY (SURFACE VIEWER)
Uruchomienie wykresu powierzchni odwzorowania, realizowanego przez system
rozmyty, następuje po wprowadzeniu przez użytkownika polecenia:
>> surfview(‘nazwa_systemu’)
w oknie komend pakietu MATLAB (wielkość liter, jakimi wpisuje się tekst komendy nie ma
tutaj znaczenia). Ponadto monitor można wywołać z okna podstawowego edytora systemu
poprzez wybór w menu opcji: VIEW Surface. Na ekranie pojawia się okno monitora
powierzchni odwzorowania, przedstawione na rys. 8.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
18
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Rys. 8. Okno monitora powierzchni odwzorowania, realizowanej przez system rozmyty
Okno monitora z rys. 8 przedstawia działanie reguł zdefiniowanych w przykładowym
systemie rozmytym o nazwie ‘mam21’, który znajduje się w katalogu demonstracyjnym
‘Fuzdemos’. System zawiera dwie zmienne wejściowe (‘angle’ i ‘velocity’) i jedną zmienną
wyjściową (‘force’). W okienku ‘X (input)’ i ‘Y (input)’ można wybrać za pomocą myszy
zmienną wejściową i przyporządkować jej odpowiednią oś układu współrzędnych: X lub Y.
Możliwość takiego wyboru jest istotna wówczas, gdy system rozmyty zawiera więcej niż
dwie zmienne wejściowe. W okienku ‘Z (output)’ można wybrać za pomocą myszy zmienną
wyjściową, przyporządkowaną do osi Z, co jest istotne wówczas, gdy system rozmyty zawiera
więcej niż jedną zmienną wyjściową. W okienkach ‘X grids’ i ‘Y grids’ ustala się gęstość
siatki, odpowiednio dla osi X i Y.
Menu główne okna monitora powierzchni odwzorowania, realizowanego przez system
rozmyty, zawiera następujące opcje:
FILE (opis opcji jak w punkcie 2.5.);
EDIT (opis opcji jak w punkcie 2.5.);
VIEW (opis opcji jak w punkcie 2.5.);
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
19
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
OPTIONS
Plot ► – wybór sposobu wykreślania powierzchni odwzorowania (definicje tych
sposobów są standardowymi opcjami wykreślania powierzchni 3D przez pakiet
MATLAB)
Surface,
Lit Surface,
Mesh,
X Mesh,
Y Mesh,
Contour,
Pseudo-Color,
Quiver;
Color Map ► – wybór sposobu kolorowania powierzchni na wykresie
Default,
Blue,
Hot,
HSV;
Always evaluate – wybór tej opcji powoduje wykonanie obliczeń i wykreślenie
powierzchni odwzorowania każdorazowo po dokonaniu przez użytkownika
zmiany, która wpływa na to odwzorowanie (np. edycji funkcji przynależności lub
reguły wnioskowania).
3. FUNKCJE ZARZĄDZANIA STRUKTURAMI DANYCH BIBLIOTEKI
NARZĘDZIOWEJ „FUZZY LOGIC TOOLBOX”
Opisane poniżej funkcje umożliwiają zarządzanie strukturami danych, tworzącymi opis
systemu rozmytego w bibliotece „Fuzzy Logic Toolbox”. Funkcje te są wykorzystywane przez
skrypty i inne funkcje biblioteczne, które tworzą opisane wyżej narzędzia graficzne: edytor
systemu rozmytego, edytor funkcji przynależności, itp. Jednakże opisane poniżej funkcje
można wywołać bezpośrednio z okna komend pakietu MATLAB R2015 lub z wnętrza funkcji
i skryptów użytkownika.
addmf - Dodawanie funkcji przynależności do systemu rozmytego.
ADDMF Funkcja dodaje nową funkcję przynależności do istniejącego (zdefiniowanego)
systemu rozmytego. Indeksy funkcji przynależności są przypisywane zgodnie
z kolejnością definiowania tych funkcji dla danej zmiennej, stąd też nowo
dodawana funkcja otrzyma kolejny indeks (numer). Zmienna, dla której dodaje
się funkcję przynależności, musi zostać wcześniej zdefiniowana. Tak więc nie
można dodać funkcji dla wejścia numer dwa, jeśli system posiada tylko jedną
dotychczas zdefiniowaną zmienną wejściową.
Wywołanie funkcji: A = ADDMF(A, ‘VARTYPE’, VARINDEX, ‘MFNAME’,
‘MFTYPE’, MFPARAMS)
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
20
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
WEJŚCIE:
A - struktura (obiekt) zawierająca opis systemu rozmytego
VARTYPE - zmienna tekstowa, określająca zmienną systemu, dla której należy
dodać funkcję przynależności; dopuszczalne wartości zmiennej
‘VARTYPE’ to: ‘input’ i ‘output’
VARINDEX - indeks (numer) zmiennej, dla której dodaje się funkcję
przynależności
MFNAME - zmienna tekstowa, określająca nazwę symboliczną (kategorię
lingwistyczną), którą reprezentuje dodawana funkcja
przynależności
MFTYPE - zmienna tekstowa, określająca typ funkcji przynależności (patrz:
rozdział 2.3 niniejszego opracowania)
MFPARAMS - wektor parametrów nowej funkcji przynależności (zgodnie
z opisem w rozdziale 2.3 niniejszego opracowania)
WYJŚCIE:
A - struktura systemu rozmytego z nowo dodaną funkcją przynależności
Przykład:
Poniższe instrukcje odpowiednio inicjują system rozmyty o nazwie ‘tipper’ oraz
definiują zmienną wejściową tego systemu, o nazwie ‘service’ i zakresie zmienności
[0 ... 10]:
a = newfis('tipper');
a = addvar(a, 'input', 'service', [0 10]);
Za pomocą trzech kolejnych instrukcji, dla zmiennej wejściowej ‘tipper’ definiujemy
gaussowskie funkcje przynależności, odpowiadające kategoriom lingwistycznym:
‘poor’, ‘good’, ‘excellent’:
a = addmf(a, 'input', 1, 'poor', 'gaussmf', [1.5 0]);
a = addmf(a, 'input', 1, 'excellent', 'gaussmf', [1.5 10]);
a = addmf(a, 'input', 1, 'excellent', 'gaussmf', [1.5 10]);
Kolejna instrukcja wyświetla wykres nowo zdefiniowanej funkcji przynależności dla
pierwszej zmiennej wejściowej:
plotmf(a, 'input', 1)
----- *** -----
addrule - Dodawanie reguły wnioskowania do systemu rozmytego.
ADDRULE Funkcja dodaje nową regułę decyzyjną do istniejącego (zdefiniowanego)
systemu rozmytego.
Wywołanie funkcji: A = ADDRULE(A, RULELIST)
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
21
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
WEJŚCIE:
A - struktura (obiekt) zawierająca opis systemu rozmytego
RULELIST - lista reguł – macierz złożona z jednego lub kilku wierszy; każdy
z nich reprezentuje daną regułę.
Wiersze macierzy mają szczególną budowę. Jeśli system posiada
m wejść i n wyjść, macierz ‘RULELIST’ musi zawierać dokładnie
m+n+2 kolumny. Pierwsze m kolumn macierzy odnosi się do
wejść systemu. Elementem każdej kolumny z tej grupy jest numer
funkcji przynależności (związanej z m-tą zmienną wejściową),
tworzącej poprzednik danej reguły decyzyjnej. Następne n
kolumn macierzy odnosi się do wyjść systemu. Elementem każdej
kolumny z tej grupy jest numer funkcji przynależności (związanej
z n-tą zmienną wyjściową), tworzącej następnik (konkluzję) danej
reguły decyzyjnej.
Kolumna o numerze m+n+1 zawiera wartość współczynnika
wagowego, przez który jest mnożona dana reguła decyzyjna.
Wartość ta musi zawierać się w przedziale [0.0; 1.0] i domyślnie
jest równa 1.0.
Wartość w kolumnie o numerze m+n+2 jest równa 1, jeśli
operatorem logicznym w regule decyzyjnej jest „rozmyty” AND,
zaś równa 2, jeśli operatorem logicznym reguły decyzyjnej jest
„rozmyty” OR.
WYJŚCIE:
A - struktura systemu rozmytego z nowo dodaną regułą decyzyjną
Przykład:
Poniższe instrukcje odpowiednio dodają reguły decyzyjne do rozmytego systemu ‘a’:
ruleList = [
1 1 1 1 1
1 2 2 1 1];
a = addrule(a, ruleList);
Jeśli system rozmyty ‘a’ posiada dwa wejścia i jedno wyjście, pierwsza reguła
zdefiniowana za pomocą zmiennej ‘ruleList’ ma postać: ‘IF wejście nr 1 należy do
kategorii lingwistycznej opisanej swą funkcją przynależności nr 1 AND wejście nr 2
należy do kategorii lingwistycznej opisanej swą funkcją przynależności nr 1 THEN
wyjście nr 1 należy do kategorii lingwistycznej opisanej swą funkcją przynależności
nr 1’.
----- *** -----
addvar - Dodawanie zmiennej do systemu rozmytego.
ADDVAR Funkcja dodaje nową zmienną do istniejącego (zdefiniowanego) systemu
rozmytego. Indeksy (numery) są przypisywane do zmiennych zgodnie
z kolejnością definiowania tych zmiennych, stąd też nowa zmienna otrzyma
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
22
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
kolejny indeks (numer). Numery są nadawane zmiennym wejściowym
niezależnie od numerów zmiennych wyjściowych systemu rozmytego.
Wywołanie funkcji: A = ADDVAR(A, ‘VARTYPE’, ‘VARNAME’, VARBOUNDS)
WEJŚCIE:
A - struktura (obiekt) zawierająca opis systemu rozmytego
VARTYPE - zmienna tekstowa, określająca typ nowo dodawanej zmiennej
systemu; dopuszczalne wartości zmiennej ‘VARTYPE’ to: ‘input’
i ‘output’
VARNAME - zmienna tekstowa, określająca nazwę dodawanej zmiennej
VARBOUNDS - wektor dwuelementowy, którego elementy określają przedział
zmienności dodawanej zmiennej
WYJŚCIE:
A - struktura systemu rozmytego z nowo dodaną zmienną
Przykład:
Poniższe instrukcje odpowiednio inicjują system rozmyty o nazwie ‘tipper’ oraz
dodają zmienną wejściową tego systemu, o nazwie ‘service’ i zakresie zmienności
[0 ... 10]:
a = newfis('tipper');
a = addvar(a, 'input', 'service', [0 10]);
Kolejna instrukcja wyświetla informacje o nowo zdefiniowanej zmiennej wejściowej
(tj. odpowiednie pola struktury danych ‘tipper’):
getfis(a, 'input', 1)
W oknie komend MATLABa otrzymujemy:
Name = service
NumMFs = 0
MFLabels =
Range = [0 10]
----- *** -----
defuzz - Wyostrzanie („defuzyfikacja”) funkcji przynależności.
DEFUZZ Funkcja zwraca „ostrą” wartość funkcji przynależności dla zadanej wartości
zmiennej niezależnej, wykorzystując wybrany algorytm defuzyfikacji. Indeksy
(numery) są przypisywane do zmiennych zgodnie z kolejnością definiowania
tych zmiennych, stąd też nowa zmienna otrzyma kolejny indeks (numer).
Numery są nadawane zmiennym wejściowym niezależnie od numerów
zmiennych wyjściowych systemu rozmytego.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
23
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Wywołanie funkcji: OUT = DEFUZZ(X, MF, TYPE)
WEJŚCIE:
X - wartość (ostra) zmiennej niezależnej – argumentu funkcji przynależności
systemu rozmytego
MF - funkcja przynależności (struktura danych)
TYPE - zmienna tekstowa, określająca algorytm wyostrzania; dopuszczalne
wartości zmiennej ‘TYPE’ to: ‘centroid’ – centroid pola pod funkcją
przynależności, ‘bisector’ – bisektor pola pod funkcją przynależności,
‘mom’ – środek maksimum, ‘som’ – najmniejsze maksimum, ‘lom’ –
największe maksimum
WYJŚCIE:
OUT - ostra wartość funkcji przynależności
Przykład:
Poniższe instrukcje odpowiednio definiują wektor wartości zmiennej systemu
rozmytego, dla której należy obliczyć ostre wartości funkcji, trapezoidalną funkcję
przynależności oraz wyznaczają ostrą wartość tej funkcji za pomocą algorytmu
centroidu:
x = -10:0.1:10;
mf = trapmf(x, [-10 -8 -4 7]);
xx = defuzz(x, mf, 'centroid');
----- *** -----
evalfis - Wyznaczanie wyjścia systemu rozmytego dla zadanego wejścia.
EVALFIS Funkcja symuluje działanie systemu rozmytego i zwraca „ostrą” wartość
wyjścia systemu dla zadanej („ostrej”) wartości wejścia tego systemu.
Wywołanie funkcji: OUTPUT = EVALFIS(INPUT, FISMAT)
lub: OUTPUT = EVALFIS(INPUT, FISMAT, NUMPTS)
lub: [OUTPUT, IRR, ORR, ARR] = EVALFIS(INPUT, FISMAT)
WEJŚCIE:
INPUT - macierz MxN zawierająca wartości N wejść systemu rozmytego,
określone w M punktach; każdy wiersz macierzy jest wektorem
wejściowym systemu
FISMAT - struktura, zawierająca definicję systemu rozmytego o N wejściach i L
wyjściach
NUMPTS - liczba punktów, w których symulator systemu oblicza wartości funkcji
przynależności; jeśli użytkownik nie zdefiniuje tego argumentu
funkcji, przyjmuje on wartość domyślną równą 101
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
24
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
WYJŚCIE:
OUTPUT - macierz MxL zawierająca wartości L wyjść systemu rozmytego
obliczone w M punktach; każdy wiersz macierzy jest wektorem
wyjściowym systemu
IRR - macierz NrxN zawierająca wartości rzutowania zmiennych
wejściowych poprzez ich funkcje przynależności; Nr jest liczbą reguł
decyzyjnych, N – liczbą wejść systemu
ORR - macierz NumPtsx(Nr*L) zawierająca wartości rzutowania zmiennych
wyjściowych poprzez ich funkcje przynależności; pierwsze Nr
kolumn macierzy odpowiada pierwszemu wyjściu, następne Nr
kolumn – drugiemu wyjściu systemu, itd.
ARR - macierz NumPtsxL zawierająca wartości funkcji przynależności
zmiennych wyjściowych w punktach próbkowania NPts dla każdego
z L wyjść systemu
Przykład:
Pierwsza z poniższych instrukcji wczytuje system rozmyty o nazwie ‘tipper’
(o dwóch wejściach i jednym wyjściu), druga oblicza wartości wyjścia systemu dla
dwóch wektorów wejściowych [2, 1] i [4, 9]:
fis = readfis('tipper');
out = evalfis([2 1; 4 9], fis)
W oknie komend MATLABa otrzymujemy:
out =
7.0169
19.6810
----- *** -----
evalmf - Wyznaczanie wartości funkcji przynależności.
EVALMF Funkcja oblicza wartości dowolnej funkcji przynależności dla zadanej (za
pomocą wektora swych wartości) zmiennej niezależnej.
Wywołanie funkcji: Y = EVALMF(X, MFPARAMS, MFTYPE)
WEJŚCIE:
X - wektor wartości zmiennej niezależnej, dla których należy
obliczyć wartości funkcji przynależności
MFPARAMS - wektor parametrów, zgodny z definicją typu funkcji
przynależności
MFTYPE - zmienna tekstowa, zawierająca nazwę funkcji przynależności
z biblioteki narzędziowej ‘Fuzzy Logic Toolbox’
WYJŚCIE:
Y - wektor wartości funkcji przynależności dla zadanego wektora wartości
zmiennej niezależnej
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
25
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Przykład:
Poniższe instrukcje określają typ i parametry funkcji przynależności, a następnie
obliczają wartości tej funkcji dla zadanego wektora x:
x = 0:0.1:10;
mfparams = [2 4 6];
mftype = 'gbellmf';
y = evalmf(x, mfparams, mftype);
Instrukcja poniżej rysuje wykres funkcji przynależności w oknie graficznym
plot(x,y)
xlabel('gbellmf, P=[2 4 6]')
----- *** -----
gensurf - generacja powierzchni odwzorowania, realizowanego przez system
rozmyty.
GENSURF Funkcja wyznacza powierzchnię odwzorowania wejścia w wyjście systemu
rozmytego. Do generacji powierzchni są używane dwa pierwsze wejścia (ze
wszystkich zdefiniowanych wejść systemu) oraz pierwsze wyjście, albo też
wejścia i wyjście o numerach wskazanych przez użytkownika. Funkcja rysuje
wykres powierzchni odwzorowania, jeśli jest wywoływana bez argumentów
wyjściowych. Wywołanie funkcji z lewostronnymi argumentami zapobiega
automatycznemu wykreślaniu powierzchni odwzorowania.
Wywołanie funkcji: GENSURF(FIS)
lub: GENSURF(FIS, INPUTS, OUTPUT)
lub: GENSURF(FIS, INPUTS, OUTPUT, GRIDS)
lub: GENSURF(FIS, INPUTS, OUTPUT, GRIDS, REFINPUT)
lub: GENSURF(FIS, INPUTS, OUTPUT, GRIDS, REFINPUT,
POINTS)
lub: [X, Y, Z] = GENSURF(...)
WEJŚCIE:
FIS - struktura, zawierająca definicję systemu rozmytego
INPUTS - wektor dwuelementowy, zawierający numery wejść systemu, dla
których ma być wyznaczona powierzchnia odwzorowania
OUTPUT - numer wyjścia systemu (zmienna skalarna), dla którego ma być
wyznaczona powierzchnia odwzorowania
GRIDS - skalar lub wektor dwuelementowy, który definiuje gęstość siatki
punktów (podział w kierunku osi x i w kierunku osi y) wektorów
wejściowych systemu, dla których ma być wyznaczona
powierzchnia odwzorowania; jeśli argumentem ‘GRIDS’ jest skalar,
podział wzdłuż obydwu osi jest taki sam
REFINPUT - wektor o liczbie elementów równej liczbie wejść, używany
w przypadku, gdy liczba wejść jest większa od dwóch; dwa elementy
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
26
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
tego wektora, odpowiadające numerom wejść (określonych przez
zmienną ‘INPUTS’), dla których wyznacza się powierzchnię,
powinny zostać ustawione na wartość NaN, wartości pozostałych
elementów określają ustalone wartości pozostałych wejść systemu
rozmytego
POINTS - liczba punktów, położonych w równej odległości w przedziale
zmienności każdej ze zmiennych wejściowych, dla których ma być
wyznaczona powierzchnia odwzorowania; jeśli wartość tego
argumentu nie zostanie podana, przyjmuje się domyślną wartość 101
WYJŚCIE:
X, Y, Z - wektory o elementach określających kolejne punkty powierzchni
w kartezjańskim układzie współrzędnych 3D
Przykład:
Pierwsza z poniższych instrukcji wczytuje z pliku dyskowego system rozmyty
o nazwie ‘tipper’ (o dwóch wejściach i jednym wyjściu), druga oblicza i wykreśla
w oknie graficznym powierzchnię odwzorowania systemu
a = readfis('tipper');
gensurf(a)
----- *** -----
getfis - uzyskiwanie informacji o właściwościach systemu rozmytego.
GETFIS Funkcja odczytuje wartości wybranych pól struktury, opisującej system
rozmyty.
Wywołanie funkcji: OUT = GETFIS(FIS)
lub: OUT = GETFIS(FIS, ‘FISPROP’)
lub: OUT = GETFIS(FIS, ‘VARTYPE’, VARINDEX)
lub: OUT = GETFIS(FIS, ‘VARTYPE’, VARINDEX, ‘VARPROP’)
lub: OUT = GETFIS(FIS, ‘VARTYPE’, VARINDEX, ‘MF’,
MFINDEX)
lub: OUT = GETFIS(FIS, VARTYPE, VARINDEX, ‘MF’,
MFINDEX, ‘MFPROP’)
WEJŚCIE:
FIS - struktura, zawierająca definicję systemu rozmytego
FISPROP - zmienna tekstowa, określająca pole struktury ‘FIS’, np. ‘Name’ lub
‘NumInputs’
VARTYPE - zmienna tekstowa, określająca typ zmiennej systemu, o której
należy zwrócić informację; wartości dopuszczalne to: ‘input’
i ‘output’
VARINDEX - liczba naturalna, określająca numer (indeks) zmiennej, zadanej
przez ‘VARTYPE’
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
27
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
VARPROP - zmienna tekstowa, określająca właściwość zmiennej, o której
należy zwrócić informacje, np. nazwę, zakres, liczbę jej funkcji
przynależności, itp.
MF - stała tekstowa (którą należy umieścić w wywołaniu funkcji)
wskazująca, że użytkownik wymaga zwrócenia informacji
o funkcji przynależności
MFINDEX - liczba naturalna, określająca numer (indeks) funkcji
przynależności, o której użytkownik chce uzyskać informację
MFPROP - zmienna tekstowa, określająca właściwość funkcji przynależności,
o której należy zwrócić informacje, np. nazwa, typ, parametry tej
funkcji, itp.
WYJŚCIE:
OUT - żądana informacja o elementach struktury, opisującej system rozmyty
Przykład:
Pierwsza z poniższych instrukcji wczytuje system rozmyty o nazwie ‘tipper’
(o dwóch wejściach i jednym wyjściu), druga jest przykładem wywołania funkcji
‘getfis’ z jednym argumentem (w celu uzyskania ogólnej informacji o elementach
struktury danych ‘tipper’):
a = readfis('tipper');
getfis(a)
W oknie komend MATLABa otrzymujemy:
Name = tipper
NumInputs = 2
InLabels =
service
food
NumOutputs = 1
OutLabels =
Tip
NumRules = 3
AndMethod = min
OrMethod = max
ImpMethod = min
AggMethod = max
DefuzzMethod = centroid
Przykład wywołania funkcji ‘getfis’ z trzema argumentami, w celu uzyskania
informacji o pierwszej zmiennej wejściowej systemu rozmytego:
getfis(a, 'input', 1)
W oknie komend MATLABa otrzymujemy:
Name = service
NumMFs = 3
MFLabels =
poor
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
28
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
good
excellent
Range = [0 10]
Wywołanie funkcji ‘getfis’ z czterema argumentami, w celu uzyskania informacji
o nazwie pierwszej zmiennej wejściowej systemu rozmytego:
getfis(a, 'input', 1, ‘name’)
W oknie komend MATLABa otrzymujemy:
ans =
service
Wywołanie funkcji ‘getfis’ z pięcioma argumentami, w celu uzyskania informacji
o parametrach drugiej funkcji przynależności, określonej dla pierwszej zmiennej
wejściowej systemu rozmytego:
getfis(a, 'input', 1, ‘mf’, 2)
W oknie komend MATLABa otrzymujemy:
Name = good
Type = gaussmf
Params =
1.5000 5.0000
----- *** -----
mf2mf - „tłumaczenie” parametrów funkcji przynależności jednego typu na
parametry funkcji przynależności innego typu.
MF2MF Funkcja dokonuje translacji parametrów funkcji przynależności danego typu na
parametry funkcji przynależności innego typu, żądanego przez użytkownika.
Algorytm translacji dąży do zachowania właściwości kształtu wejściowej
funkcji przynależności, np. jej symetrii. Jednakże możliwa jest utrata pewnych
parametrów wejściowej funkcji przynależności. Dlatego też po dokonaniu
translacji odwrotnej użytkownik może nie „odzyskać” postaci wejściowej
funkcji przynależności.
Wywołanie funkcji: OUTPARAMS = MF2MF(INPARAMS, INTYPE,
OUTTYPE)
WEJŚCIE:
INPARAMS - wektor parametrów wejściowej funkcji przynależności, tj. tej, którą
należy transformować
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
29
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
INTYPE - zmienna tekstowa, określająca typ wejściowej funkcji
przynależności, tj. tej, którą należy transformować
OUTTYPE - zmienna tekstowa, określająca typ wynikowej funkcji
przynależności, tj. tej, do której należy transformować funkcję
wejściową
WYJŚCIE:
OUTPARAMS - wektor parametrów wynikowej funkcji przynależności
Przykład:
Pierwsza z poniższych instrukcji definiuje parametry symetrycznej funkcji
przynależności typu dzwonowego; druga instrukcja dokonuje translacji tych
parametrów na parametry funkcji trójkątnej:
mfp1 = [1 2 3];
mfp2 = mf2mf(mfp1, 'gbellmf', 'trimf');
Kolejna instrukcja definiuje wektor zmiennej niezależnej x, dla której należy
wyznaczyć wartości obu funkcji przynależności. Ostatnia instrukcja wykreśla obie
funkcje na wspólnym wykresie:
x = 0:0.1:5;
plot(x, gbellmf(x, mfp1), x, trimf(x, mfp2))
co pokazano na poniższym rysunku.
----- *** -----
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
30
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
newfis - tworzenie nowego systemu rozmytego.
NEWFIS Funkcja tworzy strukturę danych, która jest definicją nowego systemu
rozmytego o zadanych przez użytkownika własnościach. Funkcja może być
wywoływana z co najmniej jednym, a co najwyżej siedmioma argumentami
wejściowymi. W przypadku, gdy użytkownik nie poda któregoś z argumentów,
przyjmuje on wartość domyślną, jak w przykładzie poniżej.
Wywołanie funkcji: A = NEWFIS(FISNAME, FISTYPE, ANDMETHOD,
ORMETHOD, IMPMETHOD, AGGMETHOD,
DEFUZZMETHOD)
WEJŚCIE:
FISNAME - zmienna tekstowa, określająca nazwę nowo tworzonego
systemu rozmytego
FISTYPE - zmienna tekstowa, określająca typ systemu (Mamdaniego
lub Takagi-Sugeno)
ANDMETHOD - zmienna tekstowa, określająca sposób realizacji rozmytej
funkcji ‘AND’
ORMETHOD - zmienna tekstowa, określająca sposób realizacji rozmytej
funkcji ‘OR’
IMPMETHOD - zmienna tekstowa, określająca sposób realizacji rozmytej
implikacji
AGGMETHOD - zmienna tekstowa, określająca sposób realizacji rozmytej
agregacji
DEFUZZMETHOD - zmienna tekstowa, określająca sposób realizacji operacji
wyostrzania zmiennej wyjściowej (defuzyfikacji)
WYJŚCIE:
A - struktura, opisująca nowo utworzony system rozmyty
Przykład:
Pierwsza z poniższych instrukcji tworzy nowy system rozmyty o nazwie ‘newsys’
(z domyślnymi parametrami wewnętrznymi), druga instrukcja – zwraca informację
o elementach struktury danych opisujących system ‘newsys’:
a = newfis('newsys');
getfis(a)
W oknie komend MATLABa otrzymujemy:
Name = newsys
Type = mamdani
NumInputs = 0
InLabels =
NumOutputs = 0
OutLabels =
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
31
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
NumRules 0
AndMethod min
OrMethod max
ImpMethod min
AggMethod max
DefuzzMethod centroid
----- *** -----
plotfis - wyświetlanie schematu blokowego systemu rozmytego.
PLOTFIS Funkcja wyświetla schemat blokowy systemu rozmytego. Wejścia systemu
i funkcje przynależności zmiennych wejściowych ukazane są z lewej strony
schematu, zaś wyjścia i funkcje przynależności zmiennych wyjściowych –
z prawej strony.
Wywołanie funkcji: PLOTFIS(FISMAT)
WEJŚCIE:
FISMAT - struktura, opisująca system rozmyty, wczytany uprzednio do przestrzeni
roboczej pakietu MATLAB
WYJŚCIE:
Przykład:
Pierwsza z poniższych instrukcji wczytuje strukturę danych, opisującą system
rozmyty o nazwie ‘tipper’, druga instrukcja – wyświetla schemat blokowy tego
systemu:
a = readfis('tipper');
plotfis(a)
W oknie graficznym MATLABa uzyskujemy przedstawiony poniżej schemat
blokowy systemu rozmytego.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
32
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
----- *** -----
plotmf - wykreślanie wykresów funkcji przynależności dla zadanej zmiennej
(wejściowej lub wyjściowej).
PLOTMF Funkcja wykreśla wszystkie funkcje przynależności dla zmiennej danego typu
(wejściowej lub wyjściowej) i zadanym przez użytkownika numerze.
Wywołanie funkcji: PLOTMF(FISMAT, VARTYPE, VARINDEX)
WEJŚCIE:
FISMAT - struktura, zawierająca definicję systemu rozmytego
VARTYPE - zmienna tekstowa, określająca typ zmiennej systemu, o której
należy zwrócić informację; wartości dopuszczalne to: ‘input’
i ‘output’
VARINDEX - liczba naturalna, określająca numer (indeks) zmiennej, zadanej
przez ‘VARTYPE’
WYJŚCIE:
Przykład:
Pierwsza z poniższych instrukcji wczytuje strukturę danych, opisującą system
rozmyty o nazwie ‘tipper’, druga instrukcja – wykreśla wszystkie funkcje
przynależności dla pierwszej zmiennej wejściowej tego systemu:
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
33
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
a = readfis('tipper');
plotmf(a, 'input', 1)
W oknie graficznym MATLABa uzyskujemy przedstawione poniżej wykresy:
----- *** -----
readfis - wczytywanie definicji systemu rozmytego z pliku dyskowego.
READFIS Funkcja wczytuje z pliku dyskowego o zadanej nazwie strukturę danych,
zawierającą definicję systemu rozmytego. Jeśli użytkownik wywoła funkcję
bez argumentu (nazwy pliku), otwierane jest okno dialogowe, w którym
użytkownik może dokonać wyboru katalogu i pliku do otwarcia.
Wywołanie funkcji: FISMAT = READFIS(‘FILENAME’)
lub: FISMAT = READFIS
WEJŚCIE:
FILENAME - zmienna tekstowa, zawierająca nazwę pliku z definicją systemu
rozmytego; plik ten musi znajdować się w katalogu, zawartym
w zmiennej systemowej ‘MATLABPATH’ (tzw. ścieżce
MATLABa)
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
34
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
WYJŚCIE:
FISMAT - struktura, zawierająca definicję systemu rozmytego
Przykład:
Pierwsza z poniższych instrukcji wczytuje strukturę danych (opisującą system
rozmyty) z pliku dyskowego o nazwie ‘tipper’, druga instrukcja – zwraca informacje
o elementach struktury danych, opisującej system:
fismat = readfis('tipper');
getfis(fismat)
W oknie komend MATLABa otrzymujemy:
Name = tipper
NumInputs = 2
InLabels =
service
food
NumOutputs = 1
OutLabels =
tip
NumRules = 3
AndMethod = min
OrMethod = max
ImpMethod = min
AggMethod = max
DefuzzMethod = centroid
----- *** -----
rmmf - usunięcie funkcji przynależności, określonej dla wybranej zmiennej
systemu rozmytego.
RMMF Funkcja usuwa funkcję przynależności, zdefiniowaną dla zadanej zmiennej
(wejściowej lub wyjściowej) systemu rozmytego.
Wywołanie funkcji: FIS = RMMF(FIS, ‘VARTYPE’, VARINDEX, ‘MF’,
MFINDEX)
WEJŚCIE:
FIS - struktura, zawierająca definicję systemu rozmytego (znajdująca
się w przestrzeni roboczej pakietu MATLAB)
VARTYPE - zmienna tekstowa, określająca typ zmiennej systemu, dla której
należy usunąć funkcję przynależności; dopuszczalne wartości
zmiennej ‘VARTYPE’ to: ‘input’ i ‘output’
VARINDEX - indeks (numer) zmiennej typu ‘VARTYPE’, dla której usuwa się
funkcję przynależności
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
35
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
MF - stała tekstowa (którą należy umieścić w wywołaniu funkcji)
wskazująca, że dokonywana będzie operacja na funkcji
przynależności
MFINDEX - liczba naturalna, określająca numer (indeks) funkcji
przynależności, którą użytkownik chce usunąć
WYJŚCIE:
FIS - struktura, opisująca system rozmyty po usunięciu funkcji
przynależności
Przykład:
Trzy pierwsze instrukcje odpowiednio: tworzą nowy system rozmyty o nazwie
‘mysys’, dodają do systemu zmienną wejściową o nazwie ‘temperature’ i definiują
dla niej trójkątną funkcję przynależności związaną z kategorią lingwistyczną ‘cold’.
Kolejna instrukcja wyświetla informację o tej zmiennej systemu:
a = newfis('mysys');
a = addvar(a, 'input', 'temperature', [0 100]);
a = addmf(a, 'input', 1, 'cold', 'trimf', [0 30 60]);
getfis(a, 'input', 1)
W oknie komend MATLABa otrzymujemy:
Name = temperature
NumMFs = 1
MFLabels =
cold
Range = [0 100]
Kolejna instrukcja usuwa pierwszą funkcję przynależności, zdefiniowaną dla
pierwszej zmiennej wejściowej. Ostatnia instrukcja ponownie wyświetla informację
o tej zmiennej systemu rozmytego:
b = rmmf(a, 'input', 1, 'mf', 1);
getfis(b, 'input', 1)
W oknie komend MATLABa otrzymujemy:
Name = temperature
NumMFs = 0
MFLabels =
Range = [0 100]
----- *** -----
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
36
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
rmvar - usunięcie zmiennej z systemu rozmytego.
RMVAR Funkcja usuwa wskazaną przez użytkownika zmienną (wejściową lub
wyjściową) z systemu rozmytego znajdującego się w przestrzeni roboczej.
Wywołanie funkcji: [FIS, ERRORSTR] = RMVAR(FIS, ‘VARTYPE’,
VARINDEX)
lub: FIS = RMVAR(FIS, ‘VARTYPE’, VARINDEX)
WEJŚCIE:
FIS - struktura, zawierająca definicję systemu rozmytego (znajdująca
się w przestrzeni roboczej pakietu MATLAB)
VARTYPE - zmienna tekstowa, określająca typ zmiennej systemu, którą
należy usunąć ze struktury danych ‘FIS’; dopuszczalne wartości
zmiennej ‘VARTYPE’ to: ‘input’ i ‘output’
VARINDEX - indeks (numer) zmiennej, którą usuwa się z systemu rozmytego
WYJŚCIE:
FIS - struktura, opisująca system rozmyty po usunięciu wskazanej
zmiennej
ERRORSTR - zmienna tekstowa, zawierająca komunikat błędu (np. w przypadku
wywołania funkcji z niepoprawnymi argumentami)
Przykład:
Dwie pierwsze instrukcje odpowiednio: tworzą nowy system rozmyty o nazwie
‘mysys’ oraz dodają do systemu zmienną wejściową o nazwie ‘temperature’. Trzecia
instrukcja wyświetla informację o tym systemie rozmytym:
a = newfis('mysys');
a = addvar(a, 'input', 'temperature', [0 100]);
getfis(a, 'input', 1)
W oknie komend MATLABa otrzymujemy:
Name = mysys
Type = mamdani
NumInputs = 1
InLabels =
temperature
NumOutputs = 0
OutLabels =
NumRules = 0
AndMethod = min
OrMethod = max
ImpMethod = min
AggMethod = max
DefuzzMethod = centroid
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
37
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Kolejna instrukcja usuwa pierwszą zmienną wejściową systemu. Ostatnia instrukcja
ponownie wyświetla informację o tym systemie rozmytym:
b = rmvar(a, 'input', 1);
getfis(b)
W oknie komend MATLABa otrzymujemy:
Name = mysys
Type = mamdani
NumInputs = 0
InLabels =
NumOutputs = 0
OutLabels =
NumRules = 0
AndMethod = min
OrMethod = max
ImpMethod = min
AggMethod = max
DefuzzMethod = centroid
----- *** -----
setfis - ustawianie wartości zmiennych i funkcji przynależności systemu
rozmytego.
SETFIS Funkcja ustawia wartości wskazanego przez użytkownika pola struktury,
opisującej system rozmyty znajdujący się w przestrzeni roboczej (tj.
właściwości zmiennej systemu lub funkcji przynależności). Funkcja może być
wywoływana z trzema, pięcioma lub siedmioma argumentami, zależnie od
tego, czy użytkownik chce zmienić właściwość całego systemu, zmiennej
wejściowej lub wyjściowej, czy też funkcji przynależności.
Wywołanie funkcji: A = SETFIS(A, ‘FISPROPNAME’, ‘NEWFISPROP’)
lub: A = SETFIS(A, ‘VARTYPE’, VARINDEX,
‘VARPROPNAME’, NEWVARPROP)
lub: A = SETFIS(A, ‘VARTYPE’, VARINDEX, ‘MF’,
MFINDEX, ‘MFPROPNAME’, NEWMFPROP)
WEJŚCIE:
A - struktura, zawierająca definicję systemu rozmytego
(znajdująca się w przestrzeni roboczej MATLABa)
FISPROPNAME - zmienna tekstowa, określająca pole struktury (właściwość
systemu), które należy zmienić; dopuszczalne wartości
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
38
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
zmiennej ‘FISPROPNAME’ to: ‘name’, ‘type’, ‘andmethod’,
‘ormethod’, ‘impmethod’, ‘aggmethod’, ‘defuzzmethod’
NEWFISPROP - zmienna tekstowa, określająca nową wartość pola struktury
o nazwie ‘FISPROPNAME’
VARTYPE - zmienna tekstowa, określająca zmienną systemu, której
właściwości należy zmienić; dopuszczalne wartości zmiennej
‘VARTYPE’ to: ‘input’ i ‘output’
VARINDEX - indeks (numer) zmiennej, której właściwości są zmieniane
w wyniku wywołania funkcji ‘SETFIS’
VARPROPNAME - zmienna tekstowa, określająca pole w definicji zmiennej
systemu (właściwość zmiennej wejściowej lub wyjściowej),
które należy zmienić; dopuszczalne wartości zmiennej
‘VARPROPNAME’ to: ‘name’, ‘range’
NEWVARPROP - zmienna tekstowa, określająca nową wartość pola struktury
o nazwie ‘VARPROPNAME’
MF - stała tekstowa (którą należy umieścić w wywołaniu funkcji)
wskazująca, że dokonywana będzie operacja na funkcji
przynależności
MFINDEX - liczba naturalna, określająca numer (indeks) funkcji
przynależności, której właściwość użytkownik chce zmienić
MFPROPNAME - zmienna tekstowa, określająca pole w definicji funkcji
przynależności zmiennej systemu (właściwość funkcji
przynależności), które należy zmienić; dopuszczalne wartości
zmiennej ‘MFPROPNAME’ to: ‘name’, ‘type’ lub ‘params’
NEWMFPROP - zmienna tekstowa, określająca nową wartość pola struktury
o nazwie ‘MFPROPNAME’
WYJŚCIE:
A - struktura, opisująca system rozmyty po zmianie wartości wybranego pola
struktury
Przykład:
Wywołanie funkcji ‘setfis’ z trzema argumentami. Pierwsza instrukcja wczytuje
strukturę systemu rozmytego z pliku dyskowego o nazwie ‘tipper’. Druga instrukcja
zmienia nazwę systemu na ‘eating’. Trzecia instrukcja wyświetla informację
o nazwie systemu rozmytego:
a = readfis('tipper');
a2 = setfis(a, 'name', 'eating');
getfis(a2, 'name’)
W oknie komend MATLABa otrzymujemy:
out =
eating
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
39
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Wywołanie funkcji ‘setfis’ z pięcioma argumentami. Pierwsza instrukcja ustawia
nazwę pierwszej zmiennej wejściowej systemu na ‘help’. Druga instrukcja wyświetla
informację o nazwie tej zmiennej systemu rozmytego:
a2 = setfis(a, 'input', 1, 'name', 'help');
getfis(a2, ‘input’, 1, 'name’)
W oknie komend MATLABa otrzymujemy:
ans =
help
Wywołanie funkcji ‘setfis’ z siedmioma argumentami. Pierwsza instrukcja ustawia
nazwę drugiej funkcji przynależności, zdefiniowanej dla pierwszej zmiennej
wejściowej systemu na ‘wretched’. Druga instrukcja wyświetla informację o nazwie
tej funkcji przynależności systemu rozmytego:
a2 = setfis(a, 'input', 1, ‘mf’, 2, 'name', ' wretched ');
getfis(a2, ‘input’, 1, ‘mf’, 2, 'name’)
W oknie komend MATLABa otrzymujemy:
ans =
wretched
----- *** -----
showfis - wyświetlanie informacji o systemie rozmytym.
SHOWFIS Funkcja wyświetla informacje o wszystkich polach struktury, opisującej
system rozmyty znajdujący się w przestrzeni roboczej (tj. o zmiennych
systemu, funkcjach przynależności, ich parametrach, itp.).
Wywołanie funkcji: SHOWFIS(FISMAT)
WEJŚCIE:
FISMAT - struktura, zawierająca definicję systemu rozmytego
(znajdująca się w przestrzeni roboczej MATLABa)
WYJŚCIE:
Przykład:
Pierwsza z poniższych instrukcji wczytuje strukturę systemu rozmytego z pliku
dyskowego o nazwie ‘tipper’. Druga instrukcja wyświetla pełną informację
o wszystkich elementach struktury, opisującej system. Ze względu na dużą ilość
wyświetlanych informacji, rezultat działania funkcji ‘showfis’ nie zostanie tutaj
przedstawiony.
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
40
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
a = readfis('tipper');
showfis(a);
----- *** -----
showrule - wyświetlanie informacji o regułach decyzyjnych systemu rozmytego.
SHOWRULE Funkcja wyświetla informacje o regułach decyzyjnych, opisujących działanie
systemu rozmytego. Funkcja może być wywoływana z różną liczbą
argumentów, od jednego do czterech.
Wywołanie funkcji: SHOWRULE(FIS)
lub: SHOWRULE(FIS, INDEXLIST)
lub: SHOWRULE(FIS, INDEXLIST, FORMAT)
lub: SHOWRULE(FIS, INDEXLIST, ‘VERBOSE’, LANG)
WEJŚCIE:
FIS - struktura, zawierająca definicję systemu rozmytego (znajdująca się
w przestrzeni roboczej MATLABa)
INDEXLIST - wektor, zawierający numery reguł decyzyjnych, o których
informacje powinna zwrócić funkcja ‘showrule’
FORMAT - zmienna tekstowa, określająca format, w którym należy wyświetlić
informacje; domyślną wartością zmiennej jest ‘verbose’
(informacja w języku angielskim), inne wartości zmiennej to:
‘symbolic’ i ‘indexed’
LANG - zmienna tekstowa, określająca język, w którym ma być
wyświetlona informacja; dopuszczalne wartości zmiennej to:
‘english’, ‘francais’ i ‘deutsch’; jednakże aby wywołać funkcję z
czterema argumentami, trzeci argument funkcji musi mieć wartość
‘verbose’
WYJŚCIE:
Przykład:
Poniżej zostaną podane przykłady działania funkcji, wywoływanej z różną liczbą
argumentów. Pierwsza instrukcja wczytuje strukturę systemu rozmytego z pliku
dyskowego o nazwie ‘tipper’:
a = readfis('tipper');
showrule(a, 1)
W oknie komend MATLABa otrzymujemy:
ans =
1. If (service is poor) or (food is rancid) then (tip is cheap) (1)
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
41
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
Wywołanie:
showrule(a, 2)
W oknie komend MATLABa otrzymujemy:
ans =
2. If (service is good) then (tip is average) (1)
Wywołanie:
showrule(a, [3 1], 'symbolic')
W oknie komend MATLABa otrzymujemy:
ans =
3. (service==excellent) | (food==delicious) => (tip=generous) (1)
1. (service==poor) | (food==rancid) => (tip=cheap) (1)
Wywołanie:
showrule(a, 1:3, 'indexed')
W oknie komend MATLABa otrzymujemy:
ans =
1 1, 1 (1) : 2
2 0, 2 (1) : 1
3 2, 3 (1) : 2
----- *** -----
writefis - zapisywanie definicji systemu rozmytego do pliku dyskowego.
WRITEFIS Funkcja zapisuje strukturę danych, zawierającą opis systemu rozmytego do
pliku dyskowego o zadanej przez użytkownika nazwie. Funkcja może być
wywoływana z różną liczbą argumentów, od jednego do trzech.
Wywołanie funkcji: WRITEFIS(FIS)
lub: WRITEFIS (FIS, ‘FILENAME’)
lub: WRITEFIS (FIS, ‘FILENAME’, ‘DIALOG’)
WEJŚCIE:
FIS - struktura, zawierająca definicję systemu rozmytego
(znajdująca się w przestrzeni roboczej MATLABa)
FILENAME - zmienna tekstowa, określająca nazwę pliku dyskowego,
w którym zostanie zapisana struktura danych systemu
rozmytego; plik otrzyma nazwę ‘filename.fis’ i zostanie
zapisany w bieżącym katalogu, jeśli użytkownik nie poda
pełnej nazwy ścieżkowej pliku; domyślne rozszerzenie ‘fis’
Pracownia specjalistyczna z przedmiotu: Podstawy Sztucznej Inteligencji (WM, Inżynieria Biomedyczna)
42
Opis biblioteki narzędziowej „Fuzzy Logic Toolbox, ver. 2.2.22”
jest dodawane wtedy, kiedy użytkownik poda nazwę pliku
bez rozszerzenia
‘DIALOG’ - stała tekstowa; jeśli funkcja zostanie wywołana z tym
argumentem, zostanie otwarte okno dialogowe, w którym
użytkownik może określić katalog i nazwę pliku, do którego
zostanie zapisany system
WYJŚCIE:
Przykład:
Poniższy przykład definiuje system rozmyty o nazwie ‘tipper’ i zapisuje definicję
tego systemu w pliku dyskowym ‘my_file.fis’ w bieżącym katalogu:
a = newfis('tipper');
a = addvar(a, 'input', 'service', [0 10]);
a = addmf(a, 'input', 1, 'poor', 'gaussmf', [1.5 0]);
a = addmf(a, 'input', 1, 'good', 'gaussmf', [1.5 5]);
a = addmf(a, 'input', 1, 'excellent', 'gaussmf', [1.5 10]);
writefis(a, 'my_file')