If strcmp(operator, 'sum')

% 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. Визначити місце і роль нечіткої логіки в загальному контексті штучного інтелекту та інтелектуальних систем.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: