А.8 Використання нейро-нечітких мереж



 

Приклад 19. Використання навченої нейро-нечіткої мережі.

Нехай ми маємо ємність, у яку наливається вода визначеної температури. Потрібно визначити температуру води через проміжок часу.

Входи мережі: х1 – температура води; х2 – час остигання води.

Вихід мережі: у – температура води після остигання.

Нехай у нас мається наступна база правил виду:

Якщо вода х1 та остигає х2, то температура води буде у.

Представимо її у вигляді таблиці:

 

НОМЕР ПРАВИЛА

ЯКЩО (входи)

ТО (вихід) ВАГА ПРАВИЛА
x1 x2    
11 холодна недовго

прийнятна

1
12 холодна довго 1
13 тепла довго 0,8
14 гаряча довго   0,6
21 тепла недовго

нормальна

0,5
22 гаряча довго 0,8
31 гаряча недовго висока 0,9

 

Тут холодна, тепла, гаряча, довго, недовго – нечіткі терми (нечіткі множини):

 

          

 

 

 

Рисунок А.1 - Функції приналежності: μхол(х), μтепл(х), μгар(х)

 

 

 

Рисунок.А.2 - Функції приналежності μдол(х) та μнед(х)

 

Розбиття на класи для у виглядає таким чином:

 

прийнятна:         [10; 25]

нормальна:        [25; 45]

висока:                [45; 60]

 

Таким чином:    у = 10, у1 = 25, у2 = 45,  = 60.

 

 

 

Рисунок А.3 - Нечітка нейронна мережа

 

Шар 1. Визначаються функції приналежності вхідних змінних термам. На виході μT(xi), i = 1, 2.

Шар 2. Вибирається мінімальний із входів нейрона. На виході min(μT(xi)), j = 1, 2, 3 – номер класу у.

Шар 3. Вибирається максимальний із входів нейрона (вхід є добутком виходу нейрона попереднього шару і ваги правила). На виході max(wjp·min(μT(xi))), p = 1, .., 7 – номер правила.

Шар 4. Визначаємо вихід:

.

Нехай х1 = 22 і х2 = 12, тоді:

визначення приналежностей термам (фазифікація):

μхол1) = 0,53; μтепл1) = 0,22; μгар1) = 0; μнед2) = 0,8; μдов2) = 0,2.

результати виконання нечітких правил:

 

11: min(0,53, 0,8) = 0,53;

12: min(0,53, 0,2) = 0,2;

13: min(0,22, 0,2) = 0,2;

14: min(0, 0,2) = 0;

21: min(0,22, 0,8) = 0,22;

22: min(0, 0,22) = 0;

31: min(0, 0,8) = 0.

результати об'єднання правил у класи:

 

d1: max(1·0,53, 1·0,2, 0,8·0,2, 0,6·0) = 0,53

d2: max(0,5·0,22, 0,8·0) = 0,11; d3: max(0,9·0) = 0.

Дефазифікація:

 

y = (10·0,53 + 25·0,11)/(0,53 + 0,11) = 12,6.

 

Одержуємо відповідь: вода 22°С після остигання протягом 12 хвилин буде мати температуру 12,6°С.

 

Приклад 20. Нехай ми маємо спостереження за погодою, представлені наборами значень змінних х1 - температура повітря, °С; х2 - вміст вологи у повітрі, %; y - кількість опадів, мм/см2. Ми знаємо, що параметр y залежить від параметрів x1 та x2, але ми не знаємо як. Треба побудувати нейро-нечітку апроксимацію залежності y(x1,x2) за даними спостережень, представленими у вигляді таблиці (навчальна вибірка). Для перевірки апроксимаційних властивостей нейро-нечіткої моделі будемо використовувати тестову вибірку, представлену у таблиці.

навчаюча вибірка

 

тестова вибірка

x1 x2 y x1 x2 y
25 76 2.3 15 0.86 0.9
27 79 2.2 25 0.47 2.5
23.5 91 1.8 26 0.57 2.6
15 89 1.2 15 0.98 0.9
14.5 79 1.0 13.5 0.68 0.9
17 61 1.4 16.5 0.93 1.6
20 96 2.0 19.5 0.67 1.9
23 89 2.0 22 0.58 2.1
26.5 57 2.6 25 0.82 2.0
29 59 2.7 28 0.86 2.8

 

У середовищі MATLAB створимо змінну навчаючої вибірки p та змінну тестової вибірки t:

p=[25 76 2.3; 27 79 2.2; 23.5 91 1.8; 15 89 1.2; 14.5 79 1.0; 17 61 1.4; 20 96 2.0; 23 89 2.0; 26.5 57 2.6; 29 59 2.7];

t=[15 0.86 0.9; 25 0.47 2.5; 26 0.57 2.6; 15 0.98 0.9; 13.5 0.68 0.9; 16.5 0.93 1.6; 19.5 0.67 1.9; 22 0.58 2.1; 25 0.82 2.0; 28 0.86 2.8];

Запустимо редактор ANFIS, для чого введемо: anfisedit

В області Load data задамо змінні тестової вибірки (оберемо в списку Type: Training та в списку from: Worksp., після чого натиснемо кнопку Load data .. та введемо у поле input variable name: p) та навчаючої вибірки (оберемо в списку Type:Testing та в списку from: Worksp., після чого натиснемо кнопку Load data .. та введемо у поле input variable name: t).

В області Generate Fis оберемо: Sub. clustering та натиснемо кнопку Generate Fis. В області Train FIS оберемо метод оптимізації Optim. method: hybrid. Задамо прийнятний рівень помилки Error tolerance: 0.000001. Задамо кількість ітерацій Epochs: 300. Натиснемо кнопку Train now. У графічній області Training Error будемо спостерігати, як змінюється помилка нейро-нечіткої мережі протягом навчання. Натиснувши кнопку Structure отримаємо зображення структури згенерованої нейро-нечіткої мережі.

Після цього отриману FIS структуру можна зберегти на диску або використовувати для прогнозування у, наприклад із використанням тестової вибірки t. Для тестування оберемо, для якої вибірки здійснюється тестування (Training - навчальна, Testing - тестова), та натиснемо кнопку Test now. Внизу форми буде вказано середню помилку тестування (Average Error), а на графіку буде зображено синіми точками - цільові значення виходу, а червоними зірками - розрахункові значення виходу нейро-нечіткої мережі.


Додаток Б


Дата добавления: 2018-04-15; просмотров: 278; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!