Добавил:
darkwarius13@gmail.com Рад если помог :). Можешь на почту спасибо сказать Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LR_HM14_2018.doc
Скачиваний:
62
Добавлен:
27.06.2021
Размер:
1.97 Mб
Скачать

2. Моделювання нечіткої системи засобами інструментарію нечіткої логіки в середовищі MatLab

Fuzzy Logic Toolbox – це пакет прикладних програм, що входять до складу середовища MatLab. Він дозволяє створювати системи нечіткого логічного виведення і нечіткої класифікації в рамках середовища MatLab, з можливістю їх інтеграції в Simulink.

Побудова нечітких систем в діалоговому режимі за допомогою модуля Fuzzy

Модуль Fuzzy дозволяє будувати нечіткі системи двох типів – Мамдані і Сугено. У системах типу Мамдані база знань складається з правил вигляду “Якщо x1=низкий і x2=средний, то y=высокий”. У системах типу Сугено база знань складається з правил вигляду “Якщо x1=низкий і x2=средний, то y=a0+a1x1+a2x2". Таким чином, основна відмінність між системами Мамдані і Сугено полягає в різних способах завдання значень вихідний змінної в правилах, що складають базу знань. У системах типу Мамдані значення вихідний змінної задаються нечіткими термами, а в системах типу Сугено – як лінійна комбінація вхідних змінних.

Проектування систем типу Мамдані

Розглянемо основні етапи проектування систем типу Мамдані на прикладі створення системи нечіткого логічного виведення, що моделює залежність , , . Проектування системи нечіткого логічного виведення проводитимемо на основі графічного зображення вказаної залежності.

Для побудови тривимірного зображення функції в області , складемо наступну програму:

%Побудова графіка функції y=x1^2*sin(x2-1)

%в області x1є[-7,3] і x2є[-4.4,1.7].

n=15;

x1=-7:10/(n-1):3;

x2=-4.4:6.1/(n-1) :1.7;

y=zeros(n,n);

for j=1:n

у(j:)=x1.^2*sin(x2(j)-1);

end

surf(x1,x2,y);

xlabel('x1');

ylabel('x2');

zlabel('y');

title('Target');

В результаті виконання програми отримаємо графічне зображення, приведене на рис. 9. Проектування системи нечіткого логічного виведення, що відповідає приведеному графіку, полягає у виконанні наступної послідовності кроків.

Рис. 9. Еталонна поверхня.

Крок 1. Для завантаження основного fis-редактора надрукуємо слово fuzzy в командному рядку. Після цього відкриється нове графічне вікно, яке показане на рис. 10.

Рис. 10. Вікно редактора FIS-Editor.

Крок 2. Додамо другу вхідну змінну. Для цього в меню Edit вибираємо команду Add input.

Крок 3. Перейменуємо першу вхідну змінну. Для цього зробимо одне клацання лівою кнопкою миші на блоці input1, введемо нове позначення x1 в полі редагування імені поточної змінної і натиснемо <Enter>.

Крок 4. Перейменуємо другу вхідну змінну. Для цього зробимо одне клацання лівою кнопкою миші на блоці input2, введемо нове позначення x2 в полі редагування імені поточної змінної і натиснемо <Enter>.

Крок 5. Перейменуємо вихідну змінну. Для цього зробимо одне клацання лівою кнопкою миші на блоці output1, введемо нове позначення у в полі редагування імені поточної змінної і натиснемо <Enter>.

Крок 6. Задамо ім'я системи. Для цього в меню File вибираємо в підміню Export команду To disk і вводимо ім'я файлу, наприклад, first.

Крок 7. Перейдемо до редактору функцій приналежності. Для цього зробимо подвійне клацання лівою кнопкою миші на блоці x1.

Крок 8. Задамо діапазон зміни перемінній x1. Для цього надрукуємо -7 3 в полі Range (див. рис. 11) і натиснемо <Enter>.

Крок 9. Задамо функції приналежності змінної x1. Для лінгвістичної оцінки цієї змінної використаємо 3 терми з трикутними функціями приналежності. Для цього в меню Edit виберемо команду Add MFs... В результаті з'явитися діалогове вікно вибору типу і кількості функцій приналежності. За умовчанням це 3 терми з трикутними функціями приналежності. Тому просто натискаємо <Enter>.

Крок 10. Задамо найменування термів змінної x1. Для цього робимо одне клацання лівою кнопкою миші по графіку першої функції приналежності (див. рис. 11). Потім вводимо найменування терма, наприклад, Низький, в полі Name і натиснемо <Enter>. Потім робимо одне клацання лівою кнопкою миші по графіку другої функції приналежності і вводимо найменування терма, наприклад, Середній, в полі Name і натиснемо <Enter>. Ще раз робимо одне клацання лівою кнопкою миші по графіку третьої функції приналежності і вводимо найменування терму, наприклад, Високий, в полі Name і натиснемо <Enter>. В результаті отримаємо графічне вікно, зображене на рис. 11.

Рис. 11. Функції приналежності змінної x1.

Крок 11. Задамо функції приналежності змінної x2. Для лінгвістичної оцінки цієї змінної використаємо 5 термів з гаусовими функціями приналежності. Для цього активізуємо змінну x2 за допомогою клацання лівої кнопки миші на блоці x2. Задамо діапазон зміни змінній x2. Для цього надрукуємо -4.4 1.7 в полі Range (див. рис. 12) і натиснемо <Enter>. Потім в меню Edit виберемо команду Add MFs.... В діалоговому вікні, що з'явилося вибираємо тип функції приналежності gaussmf в полі MF type і 5 термів в полі Number of MFs. Після цього натискаємо <Enter>.

Рис 12. Функції приналежності змінної x2.

Крок 12. По аналогії з кроком 10 задамо наступні найменування термів змінної x2: Низький, Нижче середнього, Середній, Вище середнього, Високий. В результаті отримаємо графічне вікно, зображене на рис. 12.

Крок 13. Задамо функції приналежності для змінної у. Для лінгвістичної оцінки цієї змінної використовуватимемо 5 термів з трикутними функціями приналежності. Для цього активізуємо змінну у за допомогою клацання лівої кнопки миші на блоці у. Задамо діапазон зміни для перемінної у. Для цього надрукуємо -50 50 в полі Range (див. рис. 13) і натиснемо <Enter>. Потім у меню Edit виберемо команду Add MFs.... У діалоговому вікні, що з'явилося вибираємо 5 термів в полі Number of MFs. Після цього натискаємо <Enter>.

Крок 14. По аналогії з кроком 10 задамо наступні найменування термів змінної у: Низький, Нижче середнього, Середній, Вище середнього, Високий. В результаті отримаємо графічне вікно, зображене на Рис. 13.

Крок 15. Перейдемо в редактор бази знань RuleEditor. Для цього в меню Edit виберемо команду Edit rules....

Рис 13. Функції приналежності змінної у.

Крок 16. На основі візуального спостереження за графіком, зображеним на рис. 9, – сформулюємо наступні дев'ять правил:

  1. ЯКЩО x1=Средний, ТО y=Средний;

  2. ЯКЩО x1=Низкий і x2=Низкий, ТО y=Высокий;

  3. ЯКЩО x1=Низкий і x2=Высокий, ТО y=Высокий;

  4. ЯКЩО x1=Высокий і x2=Высокий, ТО y=Выше Середнього;

  5. ЯКЩО x1=Высокий і x2=Низкий, ТО y=Выше Середнього;

  6. ЯКЩО x1=Высокий і x2=Средний, ТО y=Средний;

  7. ЯКЩО x1=Низкий і x2=Средний, ТО y=Низкий;

  8. ЯКЩО x1=Высокий і x2=Выше  Середнього, ТО y=Средний;

  9. ЯКЩО x1=Высокий і x2=Ниже  Середнього, ТО y=Средний.

Для введення правила необхідно вибрати в меню відповідну комбінацію термів і натиснути кнопку Add rule. На рис. 14 зображено вікно редактора бази знань після введення всіх дев'яти правил. Число, приведене в дужках в кінці кожного правила є ваговим коефіцієнтом відповідного правила.

Рис 14. База знань в RuleEditor.

Крок 17. Збережемо створену систему. Для цього в меню File вибираємо в підміню Export команду To disk.

На рис. 15 приведено вікно візуалізації нечіткого логічного виведення. Це вікно активізується командою View rules... у меню View. В полі Input вказуються значення вхідних змінних, для яких виконується логічне виведення.

Рис 15. Візуалізація нечіткого логічного виведення в RuleViewer.

На рис. 16 наведено поверхню “входи-вихід” у відповідності з синтезованою нечіткою системою. Для виведення цього вікна необхідно використовувати команду View surface... меню View. Порівнюючи поверхні на рис. 9 і рис. 16 можна зробити висновок, що нечіткі правила досить добре описують складну нелінійну залежність.

Рис 16. Поверхня “входи-вихід” у вікні SurfaceViwer.

Соседние файлы в предмете Нечеткие множества