- •Лабораторна робота №1 Нечіткі множини і операції над ними
- •Типи функцій приналежності, що використовуються в системі SciLab
- •Операції над нечіткими множинами в модулі SciFlt
- •Лабораторна робота №2 Нечіткі числа і інтервали у формі (l-r)-функцій та операції над ними
- •Лабораторна робота № 3 Моделювання нечіткої системи засобами інструментарію нечіткої логіки
- •1. Моделювання нечіткої системи засобами інструментарію нечіткої логіки в середовищі SciAb.
- •Редактор снв для побудови нечітких систем
- •2. Моделювання нечіткої системи засобами інструментарію нечіткої логіки в середовищі MatLab
- •Побудова нечітких систем в діалоговому режимі за допомогою модуля Fuzzy
- •Проектування систем типу Мамдані
- •Проектування систем типу Сугено
- •Лабораторна робота №4 Дослідження алгоритму нечіткої кластеризації
- •1. Fcm алгоритм нечіткої кластеризації
- •2. Розв’язання задачі нечіткої кластеризації з використанням MatLab методом fcm
- •3. Розв’язання задачі нечіткої кластеризації з використанням MatLab методом субтрактивної кластеризації (subtractive clustering)
- •Рекомендована література
- •Електронний документ
- •Авторська редакція
Типи функцій приналежності, що використовуються в системі SciLab
Для роботи з fuzzy logic потрібно завантажити модуль SciFLT в систему SciLAB. Зробити це можна відкривши файл loader.sce з цього пакету і виконавши команду execute-> load into SciLAB.
Інструментарій нечіткої логіки (ІНЛ) у складі пакету SciFLT містить 11 вбудованих типів функцій приналежності (ФП), що формуються на основі кусково-лінійних функцій, розподілу Гауса, сигмоїдної кривої, квадратичних і кубічних поліноміальних кривих.
До найбільш простих ФП (і в цьому їх головне достоїнство) можна віднести трикутну і трапецієвидну. Найменування трикутної ФП – trimf (triangle membership function). У параметричному вигляді вона є ні що інше, як набір трьох крапок, що створюють трикутник.
Опис функції: у = trimf(x [а b с]), де вектор x позначає базову множину, на якій визначається ФП, величини а і с задають основу трикутника, b – його вершину.
У аналітичному вигляді трикутна ФП може бути задана таким чином:
Далі розглянемо приклади використання різних ФП в системі SciFLT. Прикладами є фрагменти програм і коментарів на мові пакету SciLAB.
Приклад 1. Програма використання ФП trimf (результат на рис.1).
x=linspace(0,1,100)'; //задаємо множину х
y1=trimf(x[0 0.2 0.4]); //і три трикутні функції на ньому
y2=trimf(x[0.2 0.5 0.9]);
y3=trimf(x[0.5 0.6 0.9 ]);
xbasc();
//будуємо функції приналежності
plot2d(x,[y1 y2 y3],leg="y1@y2@y3");
//підписуємо рисунок
xtitle("Triangular Member Function Example","x","mu(x)");
Символ “ ' ” у рядку визначення базової множини x показує транспонованість базової множини.
Рис. 1. Трикутні функції приналежності
Трапецієвидна ФП, trapmf (trapezoid membership function), відрізняється від попередньої функції лише тим, що має верхню основу.
Опис функції: у = trаpmf(x [а b с d]), де параметри а і d задають нижню основу, b і с – верхню основу трапеції.
Аналітичний запис трапецієвидної функції має вигляд:
Рис. 2. Трапецієвидні функції приналежності
Приклад 2. Програма використання ФП trapmf (результат на Рис. 2).
x=linspace(0,1,100)';
y1=trapmf(x[0 0.2 0.4 0.6]);
y2=trapmf(x[0.2 0.5 0.6 0.9]);
y3=trapmf(x[0.5 0.6 0.8 0.9 ]);
xbasc(); plot2d(x,[y1 y2 y3],leg="y1@y2@y3");
xtitle("Trapezoidal Member Function Example","x","mu(x)");
Символ “ ' ” у рядку визначення базової множини x показує транспонованість базової множини.
На основі функції розподілу Гауса в SciFLT можна побудувати ФП двох видів: просту ФП Гауса і двосторонню ФП, утворену за допомогою різних функцій розподілу Гауса. Перша з них позначається – gaussmf, а друга – gauss2mf.
Опис функції: у = gaussmf(x [σ с]).
Симетрична функція Гауса залежить від двох параметрів σ і с:
Опис двосторонньої функції приналежності: y = gauss2mf(x, [σ1 c1 σ2 c2]).
Останній вираз є комбінацією двох різних функцій розподілу Гауса. Перша визначається параметрами σ1 і c1 і задає форму лівої сторони, а друга (параметри σ2 і c2) – правої сторони ФП.
Якщо c1 < c2, то в цьому випадку функція gauss2mf досягає свого максимального значення на рівні 1. Інакше – максимальне значення функції менше 1.
На рис. 3. представлені графіки кривих gaussmf і gauss2mf, заданих в програмі з прикладу 3.
Рис. 3. Гаусові криві
Приклад 3. Програма використання ФП gaussmf.
x=linspace(0,1,100)';
y1=gaussmf(x[0.3 0.1]);
y2=gauss2mf(x[0.2 0.1 0.5 0.2]); xbasc();
plot2d(x,[y1 y2],leg="y1@y2");
xtitle("Gaussian Member Function Example","x","mu(x)");
Символ “ ' ” у рядку визначення базової множини x показує транспонованість базової множини.
Наступною функцією, яка дозволяє представляти нечіткі суб'єктивні переваги, є ФП «узагальнений дзвін». Вона позначається gbellmf (bell shape membership function). Її відмінність від розглянутих раніше ФП полягає в додаванні третього параметру, що дозволяє здійснювати плавний перехід від нечіткої множини до чіткої.
Опис функції: y = gbellmf(x, [a b c]).
Функція «узагальнений дзвін» має наступний аналітичний вигляд:
,
де с визначає розташування центру ФП, а і b впливають на форму кривої (рис. 4).
Рис. 4. Дзвіноподібні функції приналежності
Приклад 4. Програма використання gbellmf (результат на рис. 4).
x=linspace(0,1,100)';
y1=gbellmf(x[0.5 10 0.5]);
y2=gbellmf(x[0.2 10 0.2]);
y3=gbellmf(x[0.7 10 0.8]);
xbasc();
plot2d(x,[y1 y2 y3],leg="y1@y2@y3");
xtitle("Generalized Bell Member Function Example","x","mu(x)");
Символ “ ' ” у рядку визначення базової множини x показує транспонованість базової множини.
ФП на основі функції розподілу Гауса і ФП «узагальнений дзвін» відрізняються гладкістю і простотою запису і є найбільш використовуваними при описі нечітких множин.
Але не дивлячись на те, що гаусові і дзвіноподібні ФП мають властивість гладкості, вони не дозволяють формувати асиметричні ФП. Для цих цілей в SciFLT існує набір сигмоїдних функцій, які можуть бути відкриті або зліва, або справа в залежності від типу функції. Симетричні і закриті функції синтезують з використанням двох додаткових сигмоїдів. Основна сигмоїдна ФП позначається sigmf, а додаткові – dsigmf і psigmf.
Опис основної сигмоидной функції: y = sigmf(x, [a c]).
У аналітичній формі сигмоїдна функція sigmf записується таким чином:
.
Залежно від знаку параметра а дана ФП буде відкрита справа або зліва (рис. 5), що дозволяє застосовувати її при описі таких нечітких понять, як «дуже великий», «вкрай негативно» і тому подібні.
Опис додаткової сигмоїдної функції: y= dsigmf(x, [a1 c1 a2 c2]).
ФП dsigmf залежить від чотирьох параметрів a1, c1, a2, c2 і визначається як різниця двох сигмоїдних функцій: f1(x,a1,c1) – f2(x,a2,c2).
Опис додаткової сигмоїдної функції: y = psigmf(x,[a1 c1 a2 c2]).
ФП psigmf також як і попередня функція залежить від чотирьох параметрів a1, c1, a2, c2 і визначається як твір два сигмоїдних функцій: f1(x,a1,c1)*f2(x,a2,c2).
Рис. 5. Сигмоїдні функції приналежності
Приклад 5. Програма використання сигмоїдних функцій (результат на рис. 5).
x=linspace(0,1,100)';
sig1=sigmf(x[12 0.3]);
sig2=sigmf(x[ -12 0.7]);
psig=psigmf(x[15 0.5 -15 0.7]);
dsig=dsigmf(x[15 0.1 15 0.3]); xbasc();
plot2d(x,[sig1 sig2 psig dsig],leg="sig1@sig2@psig@dsig");
xtitle("Sigmoidals Member Functions Examples","x","mu(x)");
Символ “ ' ” у рядку визначення базової множини x показує транспонованість базової множини.
Інструментарій нечіткої логіки SciFLT дає можливість формування ФП на основі поліноміальних кривих. Відповідні функції називаються Z-функції (zmf), PI-функції (pimf) і S-функції (smf). Функція zmf є асиметричною поліноміальною кривою, відкритою зліва, функція smf – дзеркальне відображення функції zmf. Функція pimf дорівнює нулю в правій і лівій межах і приймає значення, що дорівнює одиниці в середині деякого відрізку (рис. 6).
Опис функції: у = zmf(x [а b]).
Параметри а і b визначають екстремальні значення кривої.
Опис функції: у = pimf(x [а b с d]).
Параметри а і d задають перехід функції в нульове значення, параметри b і с – в одиничне.
Опис функції: у = smf(x [а b]).
Параметри а і b визначають екстремальні значення кривої.
Рис. 6.Поліноміальні криві
Приклад 6. Програма використання поліноміальних кривих (результат на рис. 6).
x=linspace(0,1,100)';
pi=pimf(x[0.1 0.5 0.7 1.0]);
z=zmf(x[0.2 0.4]);
s=smf(x[0.6 0.8]);
xbasc();
plot2d(x,[pi z s],leg="pi@z@s");
xtitle("Shaped Member Functions Examples","x","mu(x)");
Символ “ ' ” у рядку визначення базової множини x показує транспонованість базової множини.
Крім розглянутих вище функцій, що дозволяють представляти нечіткі множини, в SciFLT можна формувати власні ФП або модифікувати вбудовані.