% interval mathematics for summation A+B
intervalC = [leftA+leftB rightA+rightB];
х1 = [intervalC(:, 1); flipud(intervalC(:, 2))];
C = [height; flipud(height)];
Elseif strcmp(operator, 'sub'),
% interval mathematics for subtraction A-B
intervalC = [leftA-rightB rightA-leftB];
х1 = [intervalC(:, 1); flipud(intervalC(:, 2))];
C = [height; flipud(height)];
Elseif strcmp(operator, 'prod'),
% interval mathematics for product A*B
tmp = [leftA.*leftB leftA.*rightB rightA.*leftB rightA.*rightB];
intervalC = [min(tmp')' max(tmp')'];
х1 = [intervalC(:, 1); flipud(intervalC(:, 2))];
C = [height; flipud(height)];
Elseif strcmp(operator, 'div'),
% interval mathematics for division A/B
index = (prod(intervalB')>0)'; % contains 0 or not
tmp1 = leftB.*index;
tmp = [leftA./leftB leftA./tmp1 leftA./rightB...
rightA./leftB rightA./tmp1 rightA./rightB];
intervalC = [min(tmp')' max(tmp')'];
х1 = [intervalC(:, 1); flipud(intervalC(:, 2))];
C = [height; flipud(height)];
% get rid of inf or -inf due to division
index = find(~finite(х1));
х1 (index) = [];
C(index) = [];
Else
error('Unknown fuzzy arithmetic operator!');
End
% Make sure that х1 is monotonically increasing
index = find(diff(х1) == 0);
х1 (index) = [];
C(index) = [];
% Take care of "out-of-bound interpolation"
index1 = find(orig_x < min(х1));
index2 = find(orig_x > max(х1));
% tmp_x is legal input for interp1
tmp_x = orig_x;
tmp_x([index1; index2]) = [];
% Do interpolation
out = interp1(х1, C, tmp_x, 'linear');
% Final output
out = [zeros(size(index1)); out; zeros(size(index2))];
Рис. Результат роботи функції Fuzarith.m: виконання всіх
|
|
арифметичних операцій над НЧ (НЗ)
Fuzzy Logic Toolbox включає 11 убудованих функцій належностей, що використовують наступні основні функції:
· кусочно-лінійну;
· гаусовський розподіл;
· сигмоїдну криву;
· квадратичну і кубічні криві.
Для зручності імена всіх убудованих функцій належності закінчуються на mf. Вик-лик функції належності здійснюється в такий спосіб:
Namemf(x, params),
де namemf – найменування функції належності; x – вектор, для координат якого необхідно розрахувати значення функції належності; params – вектор параметрів функції належності.
Найпростіші функції належності трикутна (trimf) і трапецієподібна (trapmf) форму-ється з використанням кусочно-лінійної апроксимації. Трапецієподібна функція належності є узагальнення трикутної, вона дозволяє задавати ядро нечіткої множини у вигляді інтерва-лу. У випадку трапецієподібної функції належності можлива наступна зручна інтерпрета-ція: ядро нечіткої множини – оптимістична оцінка; носій нечіткої множини – песимістична оцінка.
Дві функції належності – симетрична гаусівська (gaussmf) і двостороння гаусівська (gaussmf) формується з використанням гаусівського розподілу. Функція gaussmf дозволяє задавати асиметричні функція належності. Узагальнена дзвоноподібна функція належності (gbellmf) за своєю формою схожа на гаусівські. Ці функції належності часто використовую-ться в нечітких системах, тому що на всій області визначення вони є гладкими і приймають ненульові значення.
Функції належності sigmf, dsigmf, psigmf засновані на використанні сигмоидної кри-вої. Ці функції дозволяють формувати функції належності, значення яких починаючи з дея-кого значення аргументу і до + (-) рівні 1. Такі функції зручні для завдання лінгвістичних термов типу “високий” чи “низький”.
|
|
Поліноміальна апроксимація застосовується при формуванні функцій zmf, pimf і smf, графічні зображення яких схожі на функції sigmf, dsigmf, psigmf, відповідно.
Основна інформація про убудовані функції належності зведена в табл. 6.1. На рис. 6.1 приведені графічні зображення функцій належності, отримані за допомогою демон-страційною сценарію mfdemo. Як видно з малюнка, убудовані функції належності дозво-ляють задавати різноманітні нечіткімножини.
У Fuzzy Logic Toolbox передбачена можливість для користувача створення власної функції належності. Для цього необхідно створити m-функцію, що містить два вхідних аргументи – вектор, для координат якого необхідно розрахувати значення функції належності і вектор параметрів функції належності. Вихідним аргументом функції повинний бути вектор ступенів належності. Нижче приведена m-функція, що реалізує дзвоноподібну функцію належності :
function mu=bellmf(x, params)
%bellmf – bell membership function;
%x – input vector;
%params(1) – concentration coefficient (>0);
%params(2) – coordinate of maximuma.
a=params(1);
b=params(2);
mu=1./(1+ ((x-b)/a).^2);
Рис. 6.1. Убудовані функції належності
Таблиця 6.1. Функції належності
Назва функції | Опис | Аналітична формула |
dsigmf | функція належности у вигляді різниці між двома сигмоїд-ними функціями | |
gauss2mf | двостороння гаусівська функція належності | якщо c1<c2, то ; якщо c1>c2, то . |
gaussmf | симетрична гаусівська функція належності | |
gbellmf | узагальнена дзвоноподібна функція принадлежности | |
pimf | пі-подібна функці належності | добуток smf та zmf функцій |
psigmf | добуток двох сигмоїдних функцій належності | |
sigmf | сигмоїдна функція належносіи | |
smf | s-подібна функція належності | |
trapmf | трапецієвидна функція належності | |
trimf | трикутна функцфія належності | |
zmf | z-подібна функція належності |
Порядок параметров | № функції належності |
[a1 c1 a2 c2] | |
[c b] | |
[a b c] | |
[a b c d] [a d] – носій нечіткої множини; [b c] – ядро нечіткої множини; | |
[a1 c1 a2 c2] | |
[a c] | |
[a, b] | |
[a, b, c, d] | |
[a, b, c] | |
[a, b] |
Варіанти завдань
Використовуючи стандартні засоби Fuzzy Logic Toolbox MatLab, скласти программу для обчислення алгебраїчного виразу, який складається з нечітких змінних: ;
№ варіанту | Значення змінних і тип ФН | Метод дефадзифікації результaту | ||
Приблизно 10- gaussmf | Приблизно 7- trapmf | Приблизно 4- trimf | centroid | |
Приблизно 11- trimf | Приблизно 10- gaussmf | Приблизно 7- trapmf | bisector | |
Приблизно 10- трик | Приблизно 10- gaussmf | Приблизно 10- trapmf | centroid | |
Приблизно 10- gaussmf | Приблизно 10- gaussmf | Приблизно 10- gaussmf | bisector | |
Приблизно 10- trapmf | Приблизно 10- trapmf | Приблизно 10- trapmf | centroid | |
Приблизно 10- грикут | Приблизно 15- gaussmf | Приблизно 11- trimf | bisector | |
Приблизно 10- trapmf | Приблизно 10- trimf | Приблизно 10- trimf | centroid | |
Приблизно 10- трик | Приблизно 10- gaussmf | Приблизно 10- trapmf | centroid | |
Приблизно 10- gaussmf | Приблизно 10- gaussmf | Приблизно 10- gaussmf | bisector |
Нечіткі висновки
Проектування систем типу Мамдані
Мета роботи
1. Опанувати техніку виконання операцій нечітких висновків в середовищі Матлаб.
2. Визначити місце і роль нечіткої логіки в загальному контексті штучного інтелекту та інтелектуальних систем.