МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
Кафедра ЕОМ
/
Звіт
лабораторної роботи №3
«Проектування пристрою керування на базі нечіткої логіки»
з дисципліни:
«Комп'ютерні системи штучного інтелекту»
ТЕОРЕТИЧНІ ВІДОМОСТІ
Поняття теорії нечітких множин (fuzzy sets) та нечіткої логіки (fuzzy logic) впершез’явились у 1965р і були запропоновані Лотфі Заде (Lotfi Zadeh). Причиною появи новоїтеорії слугувала наявність нечітких та наближених міркувань при описанні людиноюпроцесів, систем та об’єктів. Теорія знайшла своє застосування у таких галузях якавтомобільна, аерокосмічна, транспортна, у сфері побутової техніки, фінансів, аналізу
Для опису нечітких множин вводиться поняття нечіткої та лінгвістичної змінної.Лінгвістична змінна описується набором (N,X,A), де N – назва змінної, X – універсальнамножина, A – нечітка множина на Х. Це змінна значенням якої можуть виступати словаабо твердження природної мови. Як приклад можна назвати такі твердження як “молодалюдина”, “помірна ціна”, “висока швидкість”. Характеристикою нечіткої множини є функція приналежності (Membership Function).Позначимо через MFc(x) – степінь приналежності до нечіткої множини C, що представляєсобою узагальнене поняття характеристичної функції звичайної множини. Тоді нечіткоюмножиною С називається множина впорядкованих пар виду C={MFc(x)/x}, MFc(x)Î[0,1].Значення MFc(x)=0 означає відсутність приналежності до множини, MFc(x)=1 – повнуприналежність.Приведемо простий приклад. Формалізуємо неточне визначення “гарячий чай”. В якості xбуде виступати шкала температури. Очевидно, що вона буде змінюватись від 0 до 100градусів. Нечітка множина для поняття 'гарячий чай' може виглядати наступним чином:C={0/0; 0/10; 0/20; 0,15/30; 0,30/40; 0,60/50; 0,80/60; 0,90/70; 1/80; 1/90; 1/100}.Так, чай з температурою 60°С належить до множини 'Гарячий' зі степенню приналежності 0,80. Для однієї людини чай при температурі 60°С може бути гарячим, для іншого – недуже. Саме в цьому і проявляється нечіткість визначення відповідної множини.Для задання функції приналежності зазвичай використовують трикутну, трапецієподібну,гаусову форми. Трикутна функція приналежності визначається набором чисел (a,b,c) і її значення в точці хвираховуються відповідно до виразу
/
Для визначення трапецієподібної функції використовується четвірка чисел (a,b,c,d) /
Гаусова функція приналежності описується формулою /
Графічне зображення функцій приналежності зображені на рисунках 1,2,3/
Для нечітких множин визначені основні логічні операції . Найважливішими з них єперетин (нечітке І): A Ç B : MFAB (x) = min( MFA (x), MFB (x)) та об’єднання (нечітке АБО) :A È B : MFAB (x) = max(MFA (x), MFB (x)) . Графічно операції представлені на рис. 4,5,6,7,8./
Основою для проведення операції нечіткого логічного виводу є база правил, щопредставляються у формі “Якщо-то” . Основним правилом виведення у звичайній логіці єправило modus ponens: / У цьому правилі припущеннями є умова A таімплікація/, а висновком – B. Сформулюємо відповідне правило виведення modus ponens для розмитої логіки.Розмите узагальнення правила modus ponens задається наступною схемою логічноговиведеня.У випадку чіткого та розмитого правил виведення імплікація мають однаковийвигляд A ® B , де A та B є твердженнями або розмитими множинами. Однак вираз A вімплікації чіткого правила той самий, що і в умові. У випадку розмитого правила змінна уумові не стосується розмитої множини A, а має відношення до певної розмитої множиниA¢, яка у певному сенсі є близькою до A, або, що не обов’язково, A A = ¢.
Завдання:
/Розв’язок:
Задана схема розмитого логічного виведенняТут умова, імплікація та висновок є неточними твердженнями. Введемо лінгвістичнузмінну x – „швидкість автомобіля” з множиною її значень T1 = {„мала”, „середня”, „велика”, „дуже велика”} та лінгвістичну змінну y – „рівень шуму” з множиною значеньT2 = {„малий”, „середній”, „не дуже високий”, „високий”}. Кожному елементу множин T1та T2 можна поставити у відповідність певну розмиту множину. Аналізуючи наведенусхему виведення, отримаємо такі розмиті множини: A = „дуже велика швидкістьавтомобіля”, A' = „велика швидкість автомобіля”, B = „високий рівень шуму”, B' = „недуже високий рівень шуму”. Тут розмита множина A = „дуже велика швидкістьавтомобіля” відрізняється від розмитої множини A¢ = „велика швидкість автомобіля”.Алгоритми нечіткого виводу розрізняються між собою видом використовуваних правил,логічних операцій і різновидністю методу дефузифікації. Були розроблені моделінечіткого виводу Мамдані, Сугено, Ларсена, Цукамото. Система нечіткого логічноговиводу зображена на рис.9. /
Для прикладу розглянемо нечіткий вивід на базі механізму Мамдані (Mamdani). Алгоритмроботи може бути таким
Фузифікація. Визначається степінь істинності, тобто значення функційприналежності для лівих частин кожного правила. Для бази правил з m правилами позначимо степені істинності як /.
Нечіткий вивід. Спочатку визначаються рівні відсікання для лівої частини кожного з правил ai = min( Aik (xk )) . Далі знаходимо відсічені функції приналежності Bi * (y) = min(ai , Bi (y)) .
3. Обчислюємо об’єднання отриманих відсічених функцій MF(y) = max(Bi* (y)) , де MF(y) – функція приналежності результуючої нечіткої множини
4. Дефузифікація. За допомогою методу середнього центру MF(y) = max(Bi* (y))Змоделювати залежність y = x1 2 sin( x2 -1) в області x1 Î[-7,3], x2 Î[-4.4,1.7] створившисистему нечіткого виводу типу Мамдані. Для початку створимо базу правил, що складатиметься із семи нечітких правил:
1) ЯКЩО x1 =”низьке” І x2 =”низьке” ,ТО у=”високе”;
2) ЯКЩО x1=”низьке” І x2 = “середнє”, ТО у=”низьке”;
3) ЯКЩО x1=”низьке” І x2 =”високе”, ТО у=”високе”;
4) ЯКЩО x1=”середнє”, ТО у=”середнє”;
5) ЯКЩО x1=”високе” І x2 =”низьке”, ТО у=”вище середнього”;
6) ЯКЩО x1=”високе” І x2 =”середнє”, ТО у=”нижче середнього”;
7)ЯКЩО x1=”високе” І x2 =”високе”, ТО у=”вище середнього”.Для розв’язку задачі доцільно скористатись MATLAB та вбудованим пакетом для роботиіз нечіткою логікою -- Fuzzy Logic Toolbox Крок 1. Для запуску FIS-редактора необхідно набрати слово fuzzy у командній стрічці MATLAB. У вікні, що з’явилось додамо другу вхідну змінну. Для цього в меню Editвибираємо команду Add input .Крок 2. Перейменуємо першу вхідну змінну. Для цього у блоці, де написано input1вводимо нове ім’я -- х1 і натискаємо <Enter>. Аналогічну операцію проводимо і з другоювхідною змінною. Для перейменування вихідної змінної в блоці, де написано output1вказуємо – у і натискаємо <Enter>. Крок 3. Для переходу в редактор функцій приналежності необхідно двічі клацнути лівоюкнопкою миші на блоці х1. Задамо діапазон зміни x1, увівши в полі Range значення [–7 3]. Далі потрібно задати функції приналежності змінній x1. Для лінгвістичної оцінкицієї змінної будемо використовувати три терми із трикутними функціями приналежності.Вони встановлені по замовчуванню, тому переходимо до наступного кроку.Крок 4. Далі потрібно задати назви термів змінної x1. Для цього потрібно клацнутимишею по графіку першої функції приналежності. Графік активної функції приналежностівиділиться червоною жирною лінією. Далі вводимо назву терму “низьке” в полі Name інатискаємоо <Enter>. Ті самі операції проводимо із другою та третьою функціямиприналежності вписавши у поле Name відповідно значення – середнє, високе.Крок 5. Задамо функції приналежності змінній x2 . Для цього активуємо змінну x2 ,клацанням мишею по блоку x2 . Проведемо для цієї змінної кроки 3 та 4 з тоювідмінністю, що в полі Range вкажемо значення значення [–4.4 ; 1.7].Крок 6. Задамо функції приналежності змінній у. Для лінгвістичної оцінки цієї змінноїбудемо використовувати п’ять термів з гаусовими функціями приналежності. Для цього клацанням миші по блоку у активуємо змінну у . Задамо діапазон зміни змінної у . В поліRange введемо діапазон [–50 50] і натискаємо <Enter>. В меню Edit вибираємо командуRemove All MFs для видалення встановлених по замовчуванню функції приналежності.Далі в меню Edit вибираємо команду Add MFs… У вікні, що з’явилось вибираємо типфункцій приналежності gaussmf в полі MF type і п’ять термів в полі Number of MFs .
Висновок:
Після вводу функцій приналежності редактор активує першу вхідну змінну, тому дляпродовження потрібно клацнути мишею по піктограмі у. По аналогії із вхідними зміннимипотрібно назвати терми змінної у: низьке, нижче середнього,