labview interface użytkownika

42
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.22PAKIETU MATLAB R2015

Upload: vuongxuyen

Post on 11-Jan-2017

233 views

Category:

Documents


1 download

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')