Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

нечітка_логіка-лаб

.pdf
Скачиваний:
46
Добавлен:
11.02.2016
Размер:
1.78 Mб
Скачать

Якщо функція fuzzy викликається без аргументів, то редактор FIS викликається для новостворюваної системи нечіткого виводу з ім'ям Untitled за замовчуванням (рис. 16).

Рис.16 - Графічний інтерфейс редактора FIS, що викликається функцією fuzzy

При цьому за замовчуванням також задається цілий ряд параметрів, таких як тип системи нечіткого виводу (Мамдані), нечіткі логічні операції, методи імплікації, агрегування та дефазифікації та деякі інші. Користувач може погодитися з цими значеннями або змінити їх.

Якщо функція fuzzy викликається з аргументом у формі fuzzy ('а'), де а - ім'я зовнішнього файлу з розширенням fis з уже розробленою системою нечіткого виводу, то редактор викликається з уже завантаженої системою FIS з ім'ям а.

Редактор FIS має головне меню, яке дозволяє користувачеві викликати інші графічні засоби роботи з системою нечіткого виводу FIS, завантажувати і зберігати структуру FIS у зовнішніх файлах і т.д.

Головне меню редактора містить позиції:

File - робота з файлами моделей (їх створення, збереження, зчитування і печатка);

Edit - операції редагування (додавання і виключення вхідних і вихідних змінних);

View - перехід до додаткового інструментарію.

Пункт меню File (Файл) редактора FIS містить наступні операції:

New FIS ... - дозволяє вибрати тип задається нової системи нечіткого виводу: Mamdani - типу Мамдані або Sugeno - типу Сугено. При цьому задається система нечіткого виводу не має ні вхідних, ні вихідних змінних, а її ім'я задається за замовчуванням як Untitled;

Import - дозволяє завантажити в редактор FIS існуючу систему нечіткого виводу одним із таких способів: From Workspace ... - з робочого простору програми MATLAB або From Disk ... - із зовнішнього файлу;

Export - дозволяє зберегти редактируемую систему нечіткого виводу одним із таких способів: Те Workspace ... - в робочому просторі програми MATLAB або Те Disk ... - в зовнішньому файлі;

Print - дозволяє роздрукувати на принтері редактируемую систему нечіткого виводу;

Close - закриває редактор FIS.

Пункт меню Edit (Редагування) містить наступні операції: Undo - скасовує виконання останньої дії;

Add Variable ... - дозволяє додати в редактируемую систему нечіткого виводу змінну одного з наступних типів: Input - вхідну змінну або Output - вихідну змінну;

Remove Selected Variable - видаляє обрану змінну з редагованої системи нечіткого виводу;

Membership Functions ... - викликає редактор функцій належності; Rules - викликає редактор правил нечіткого виводу.

Пункт меню View (Вид) містить наступні операції:

Rules - викликає програму перегляду правил нечіткого виводу; Surface - викликає програму перегляду поверхні нечіткого виводу.

У лівій нижній частині робочого інтерфейсу редактора FIS є 5 спливаючих меню:

1. And method (Метод логічної кон'юнкції) - дозволяє задати один з наступних методів для виконання логічної кон'юнкції в умовах нечітких правил:

min - метод мінімального значення;

prod - метод алгебраїчного твору;

Custom - метод, визначений користувачем.

2. Or method (Метод логічної диз'юнкції) - дозволяє задати один з наступних методів для виконання логічної диз'юнкції в умовах нечітких правил:

max - метод максимального значення (нечіткий логічний оператор диз'юнкції);

probor - метод алгебраїчної суми;

Custom - метод, визначений користувачем.

3. Implication method (Метод виведення висновку) - дозволяє задати один з наступних методів для виконання (активізації) логічного висновку в кожному з нечітких правил (не для систем типу Сугено):

min - метод мінімального значення (нечіткий логічний оператор кон'юнкції);

prod - метод алгебраїчного твору;

Custom - метод, визначений користувачем.

4. Aggregation method (Метод агрегування) - дозволяє задати один з наступних методів для агрегування значень функції приналежності кожної з вихідних змінних у висновках нечітких правил:

max - метод максимального значення;

sum - метод граничної суми;

probor - метод алгебраїчної суми;

Custom - метод, визначений користувачем.

5. Defuzzification method (Метод дефазифікації) - дозволяє задати один з наступних методів для виконання дефазифікації вихідних змінних в системі нечіткого виводу типу Мамдані:

centroid - метод центру тяжіння для дискретного безлічі значень функції приналежності; bisector - метод центру площі;

mom (middle of maximum) - метод середнього максимуму, який визначається як середнє арифметичне лівого і правого модальних значень;

som (smallest of maximum) - метод найменшого (лівого) модального значення;

lom (largest of maximum) - метод найбільшого (правого) модального значення;

Custom - метод, визначений самим користувачем.

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

wtaver (weighted average) - метод зваженого середнього;

wtsum (weighted sum) - метод зваженої суми.

Розглянемо побудову експертної системи на прикладі задачі про чайові. Завдання може бути описана наступними виразами:

1.Якщо обслуговування погане або їжа підгоріла, то чайові - малі.

2.Якщо обслуговування хороше, то чайові - середні.

3.Якщо обслуговування відмінне чи їжа чудова, то чайові - щедрі.

Якість обслуговування та їжі будемо оцінювати за 10-бальною шкалою (0- найгірша оцінка, 10 - найкраща).Припустимо, що малі чайові складають 5% вартості обіду, середні - 15%, щедрі - близько 25%.

Даної інформації досить для проектування нечіткої експертної системи. Ця система буде мати 2 входи - «сервіс» і «їжа», один вихід - «чайові», три правила типу «якщо ..., то ...» (відповідно до наведених вище) і по 3 значення (відповідно 0 балів, 5 і 10 балів, 5%, 15%, 25%) для центрів функцій приналежності входів і виходу. Побудуємо систему, використовуючи алгоритм виведення Мамдані.

Командою fuzzy запускається FIS-редактор. За замовчуванням, іс¬ходний алгоритм виведення - типу Mamdani (про що говорить напис у центральному білому блоці) і тут ніяких змін не потрібно. Так як в системі має бути два входи, через пункт меню Edit / Add input потрібно додати в систему другий вхід (у вікні редактора з'являється другий жовтий блок з ім'ям input). Роблячи далі одноразовий клацання лівою кнопкою миші по блоку input 1, в полі імені його ім'я потрібно змінити на «сервіс». Завершується введення нового імені натисканням клавіші Enter. Аналогічним чином встановлюється ім'я «їжа» блоку input2 і «чайові» - вихідного блоку (справа вгорі) output 1. Ім'я всій системі, наприклад, «tip» (по-англійськи - чайові), присвоюється через пункт меню File / Save to workspace as ... (Зберегти в робочому просторі як ...).

3. Завдання функцій приналежності змінних

Редактор функцій приналежності призначений для завдання і редагування функцій приналежності окремих термів системи нечіткого виводу в графічному режимі. Програму-редактор функцій приналежності можна відкрити трьома способами:

через пункт меню View / Edit membership functions ...;

подвійним клацанням лівої кнопки миші по іконці, отобража¬ющей відповідну змінну;

натисканням клавіш Ctrl + 2.

Редактор функцій приналежності також може бути відкритий за допомогою введення функції mfedit, а також mfedit ('а') або mfedit (а) у вікні команд.Функція у форматі mfedit ('а') викликає редактор функцій приналежності, який дозволяє користувачеві в графічному режимі аналізувати і модифікувати всі функції приналежності деякої структури FIS, збереженої в зовнішньому файлі з ім'ям a.fis.

Функція у форматі mfedit (а) працює зі змінною робочого простору MATLAB, відповідній структурі F1S з ім'ям а. Для кожної функції приналежності можна змінити її ім'я, тип і параметри. Редактор надає користувачеві не тільки можливість вибрати будь-яку з 11 вбудованих функцій приналежності, а й задати власну функцію приналежності.

Для відображення графіків функцій приналежності слід вибрати необхідну змінну в лівій частині графічного нтерфейси редактора під заголовком FIS Variables (Змінні FIS). об вибрати потрібну функцію приналежності, слід клацнути на ній або її мітці в основному вікні з графіками функцій приналежності.

Редактор функцій приналежності має головне меню програми, яке дозволяє користувачеві викликати інші графічні засоби роботи з системою нечіткого виводу FIS, завантажувати і зберігати структуру FIS у зовнішніх файлах і т. Д.

Пункт меню File (Файл) редактора функцій належності містить такі ж операції, що і відповідний пункт меню редактора FIS.

Пункт меню Edit (Редагування) містить наступні операції: Undo - скасовує виконання останньої дії;

Add MF ... - дозволяє додати вбудовану функцію приналежності термів для виділеної змінної;

Add Custom MF ... - дозволяє додати функцію приналежності для окремої змінної;

Remove Current MF - дозволяє видалити окрему функцію належності; Remove All MFs - дозволяє видалити всі функції приналежності для окремої

змінної;

FIS Properties ... - викликає редактор FIS;

Rules ... - викликає редактор правил нечіткого виводу. Пункт меню View (Вид) містить наступні операції;

Rules - викликає програму перегляду правил нечіткого виводу; Surface - викликає програму перегляду поверхні нечіткого виводу.

Завдання та редагування функцій приналежності починається зі змінною «сервіс». Спочатку в полях Range і Display Range встановлюється діапазон зміни і відображення цієї змінної - від 0 до 10 (балів), підтверджується введення натисненням клавіші Enter. Потім через пункт меню Edit / Add MF можна перейти до діалогового вікна і задати в ньому функції приналежності гауссова типу (gaussmf) із загальним числом 3. Після натискання кнопки ОК відбудеться повернення в окноредактора функцій приналежності. У цьому вікні можна змінити розмах і положення заданих функцій, а також їхні імена (наприклад, на «поганий», «хороший» і «відмінний»). На рис.17 представлений вигляд вікна редактора функцій належності з заданими ФП для змінної «сервіс».

Рис. 17 - Редактор функцій приналежності

Клацанням лівої кнопки миші по іконці «їжа» можна увійти у вікно редагування функцій приналежності для цієї змінної. Здається спочатку діапазон її зміни від 0 до 10, а потім, надходячи як раніше, задаються дві функції приналежності трапецеїдальної форми з параметрами, відповідно, [0 0 1 березня] і [7 9 10 10] та іменами «підгоріла» і «чудова» .

Для вихідної змінної «чайові» потрібно вказати спочатку діапазон зміни - від 0 до 30, потім задати три функції пріналежності трикутної форми з іменами «малі», «середні», «щедрі».

4. Конструювання правил

Редактор правил системи нечіткого виведення, як випливає з його назви, призначений для завдання і редагування окремих правил системи нечіткого виводу в графічному режимі. Редактор правил може бути відкритий за допомогою введення функції ruleedit ('а') або ruleedit (а) у вікні команд або за допомогою

головного меню редактора FIS (командою меню Edit> Rules ... або натисканням клавіш <Ctrl> + <3>) .

Ця функція, записана в форматі ruleedit ('а'), викликає редактор правил, який дозволяє користувачеві в графічному режимі аналізувати і модифікувати правила продукцій системи нечіткого виводу FIS, збереженої в зовнішньому файлі з ім'ям a.fis. Функція дозволяє також виконувати граматичний аналіз правил, які використовуються в деякій системі нечіткого виводу FIS.

Щоб використовувати даний редактор для створення правил, необхідно попередньо визначити всі вхідні і вихідні змінні, для чого можна скористатися редактором системи нечіткого виводу FIS і редактором функцій приналежності.

При цьому задати правила можна за допомогою вибору відповідних значень термів вхідних і вихідних змінних.

Пункт меню File (Файл) редактора правил містить такі ж операції, що і відповідний пункт меню редактора FIS.

Пункт меню Edit (Редагування) містить наступні операції: Undo - скасовує виконання останньої дії;

FIS Properties ... - викликає редактор FIS;

Membership Functions ... - викликає редактор функцій приналежності. Пункт меню View (Вид) містить наступні операції:

Rules - викликає програму перегляду правил;

Surface - викликає програму перегляду поверхні виводу. Пункт меню Options (Сервіс) містить наступні операції:

Language - дозволяє вибрати мову для запису правил у формі тексту: English (англійська), Deutsch (німецька) або Francais (французька);

Format - формат запису правил системи нечіткого виводу: Verbose (у формі тексту), Symbolic (в символічній формі) або Indexed (у цифровій формі).

Поля введення в середній частині графічного інтерфейсу редактора правил дозволяють задати нове правило в системі нечіткого виводу. Для цього необхідно виділити ім'я терма відповідної змінної, яка повинна бути попередньо визначена за допомогою редактора функцій належності. Якщо деякий терм не входить в правило, то для нього слід вибрати значення "none". Якщо в умові правила використовується логічне заперечення деякого терма, то для цього терма слід зазначити відповідний прапорець з міткою "not".

Редактор правил дозволяє також задати логічні зв'язки для підумови правила (перемикач Connection) і вага правила (поле введення Weight). Кнопки в нижній частині графічного інтерфейсу редактора правил, як випливає з їхніх назв, служать для видалення виділеного у вікні правила (Delete rule), додавання створеного правила в систему (Add rule) та внесення змін до виділене у вікні правило (Change rule). У правому нижньому кутку знаходяться кнопки виклику вбудованої довідкової системи MATLAB (Help) і кнопка закриття редактора правил (Close).

Підсумковий набір правил для даної системи виглядає наступним чином:

1.If (сервіс is поганий) or (їжа is підгоріла) then (чайові is малі) (1)

2.If (сервіс is хороший) then (чайові is середні) (1)

3.If (сервіс is відмінний) or (їжа is чудова) then (чае¬вие is щедрі) (1)

Така (детальна, verbose) запис представляється досить зрозумілою; одиниця в дужках після кожного правила вказує його вага (Weight), тобто значимість правила. Даний вагу можна змінювати, використовуючи відповідне поле в лівій нижній частині вікна редактора правил, Правила представимо і в інших формах: символічної (symbolic) і індексного (indexed), при цьому перехід від однієї форми до іншої відбувається через опції пункту меню редактора правил Options / Format.

Ось як виглядають розглянуті правила в символічній формі:

1.(сервіс == поганий) | (їжа == підгоріла) => (чайові = малі) (1)

2.(сервіс == хороший) => (чайові = середні) (1)

3.(сервіс == відмінний) | (їжа == чудова) => (чайові = щедрі) (1)

Нарешті, самий стислий формат представлення правил - ін¬дексний - є тим форматом, який насправді використовується програмою. У цьому форматі наведені правила виглядають так:

1 1, 1 (1): 2

2 0, 2 (1): 2

3 2, 3 (1): 2

Тут перша колонка відноситься до першої вхідної змінної (відповідно, перше, друге або третє можливе значення), друга - до другої, третя (після за п'яте) - до вихідної змінної, цифра в дужках показує вагу правила і остання цифра (після двокрапки) - на тип «зв'язки» (1 для «І», 2 для «Або»).

На цьому конструювання експертної системи закінчено. Її можна зберегти на диску під обраному ім'ям (tip).

5. Робота системи нечіткого виводу

Програма перегляду поверхні системи нечіткого виводу дозволяє переглядати поверхню системи нечіткого виводу і візуалізувати графіки залежності вихідних змінних від окремих вхідних змінних. Графічний інтерфейс програми перегляду правил може бути відкритий за допомогою введення функції surfview ('a') або surfview (a) у вікні команд або за допомогою головного меню редактора FIS, редактора функцій належності або редактора правил (командою меню View> Surface або натисканням клавіш <Ctrl> + <6>).

Функція, записана в форматі surf view ('а'), викликає програму перегляду поверхні, яка зображує поверхню нечіткого виводу для структури FIS, збереженої в зовнішньому файлі з ім'ям a.fis, для будь-якої однієї або двох з її вхідних змінних. Функція у форматі surfview (a) викликає програму перегляду поверхні для змінної робочого простору MATLAB, відповідній структурі FIS з ім'ям а.

Програма перегляду поверхні виведення має головне меню, яке дозволяє користувачеві викликати інші графічні засоби роботи з системою нечіткого виводу FIS, завантажувати і зберігати структуру FIS у зовнішніх файлах і т. Д.

Пункт меню File (Файл) редактора правил містить такі ж операції, що і відповідний пункт меню редактора FIS.

Пункт меню Edit (Редагування) містить наступні операції: Undo - скасовує виконання останньої дії;

FIS Properties ... - викликає редактор FIS;

Membership Functions ... - викликає редактор функцій належності; Rules ... - викликає програму редагування правил.

Пункт меню View (Вид) містить наступні операції: Rules - викликає програму перегляду правил.

Пункт меню Options (Сервіс) містить наступні операції:

Plot - дозволяє вибрати один з 8 стилів зображення графіка поверхні виводу; Color Mapдозволяє вибрати одну з 4 колірних схем зображення графіка

поверхні виводу;

Always evaluate - позначка галочкою цього пункту вкладеного меню призводить до автоматичного формування нової поверхні виведення всякий раз, коли вносяться зміни в систему нечіткого виводу, що впливають на форму графіка поверхні виводу (такі як зміна кількості точок сітки графіка). Це значення прийнято за замовчуванням. Для його скасування необхідно зняти галочку у цього пункту вкладеного меню, клацнувши на цій позиції меню.

Програма перегляду поверхні висновку не дозволяє вносити зміни в систему нечіткого виводу і відповідну їй структуру FIS. Використовуючи головне меню програми, користувач може вибрати вхідні змінні і відповідні їм горизонтальні осі системи координат (X і Y), а також вихідну змінну, якій відповідає вертикальна вісь системи координат (Z).

Клацнувши і утримуючи ліву кнопку миші на осях графіка поверхні, за допомогою подальшого переміщення курсору миші в тому чи іншому напрямку можна змінити кут перегляду поверхні виводу. Якщо розглядається система нечіткого виводу з більш ніж двома вхідними змінними, то для невізуалізіруемих вхідних змінних слід задати деякі постійні значення (константи).

Для перевірки роботи створеної системи потрібно відкрити (через пункт меню View / View rules ...) вікно перегляду правил і встановити значення змінних: сервнс = 0 (тобто нікуди не придатний), їжа = 10 (тобто чудова) . Отримана відповідь: чайові = 15 (тобто середні). Можна перевірити й інші варіанти.

Підтвердженням зазначеної залежності вихідної змінної від вхідних може служити вид поверхні відгуку, який представляється при виборі пункту меню View / View surface; за допомогою мишки графік можна повертати зі усі сторони.

У вікні, міняючи імена змінних в полях введення (X (input) і Y (input)), можна задати і перегляд одновимірних за¬вісімостей, наприклад, «чайових» від

«їжі».

При збереженні створеної нечіткої системи з використанням пунктів меню

File / Save to disk або File / Save to disk as ..., на диску створюється текстовий

(ASCII) файл достатньо простого формату з розширенням .fis, який можна переглядати, при необхідності - редагувати поза системи MATLAB, а також використовувати повторно при наступних сеансах роботи з системою.

6. Створення користувальницьких функцій приналежності

Якщо з яких-небудь причин користувача не влаштовує жодна з вбудованих функцій приналежності, можна створити і використовувати власну відповідну функцію. Така функція повинна бути створена як М-файл зі значеннями від 0 до 1

і з числом аргументів не більше 16. Етапи створення даної функції під ім'ям custmf:

1.Створюється відповідний М-файл з ім'ям custmf.m.

2.Вибирається пункт Edit / Add custom MF (Редагування / Додати користувача функцію приналежності) в меню редактора функцій приналежності.

3.У полі M-File function namе що з'являється діалогове вікно Add customized membership function вводиться ім'я створеного М-файлу (custmf).

4.У полі Parameter List даного вікна вводяться необхідні числові параметри.

5.Нарешті, в поле MF name (Ім'я функції приналежності) вводиться якенебудь (унікальне) ім'я задається функції (наприклад, custmf).

6.Зазначений введення підтверджується натисканням кнопки ОК.

7.Порядок виконання роботи

1.Ознайомитися з основними визначеннями нечіткої логіки.

2.Ознайомитися з можливостями і принципом роботи програм, що входять

впакет Fuzzy Logic Toolbox.

3.Вивчити принципи роботи систем нечіткого виводу по етапах.

4.Розробити задану нечітку модель (згідно таблиці 3).

5.Варіюючи видами функцій належності вхідних і вихідних лінгвістичних змінних, способами дефаззіфікації, простежити зміни точних значень вихідної змінної при фіксованих значеннях вхідних змінних.

6.Оформити звіт про виконану роботу.

7.Відповісти на контрольні питання.

8.Вихідні дані

Таблиця 3

№ Варіанта

ФП

Назва завдання

 

 

Комфортна температура у

1,3,9

Трикутна

приміщенні

2,4,8

Трапецієвидна

Вік людини

 

 

Оцінка ризика виходу з ладу

3,5,7

Гауса

компьютера

9. Контрольні питання

1.Назвіть функціональний склад редактора систем нечіткого виводу в

Matlab.

2.Перелічіть і охарактеризуйте методи, реалізовані в редакторі систем нечіткого виводу.

3.Яким чином проводитися завдання функцій приналежності входять

змінних?

4.Призначення редактора правил системи нечіткого виводу.

5.З яких етапів складається створення користувацьких функцій належності?

ЛАБОРАТОРНА РОБОТА №5 НЕЙРО-НЕЧІТКЕ МОДЕЛЮВАННЯ В СЕРЕДОВИЩІ MATLAB

Мета роботи: вивчення і засвоєння методів моделювання та принципів функціонування нейро-нечітких мереж, в тому числі при вирішенні завдань економічного прогнозування, а також придбання навичок з конструювання нейронечітких мереж у середовищі MATLAB.

1. Нечітка мережа TSK

Для прогнозування використовуємо нечітку мережу TSK. Узагальнену схему виведення моделі TSK при використанні M правил і N змінних x можна представити у вигляді:

IF(x .IS.A

(1) ).AND.(x .IS.A (1) ).AND.....AND.(x

n

.IS.A (1) ),

1

1

2

2

 

 

 

 

 

 

 

 

 

n

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

THEN y1

p10 p1j x j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

IF(x .IS.A

(M) ).AND.(x .IS.A (M) ).AND.....AND.(x

n

.IS.A (M) ),

1

1

2

2

 

 

 

 

 

 

 

 

 

n

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

THEN y M p M0 p Mj x j

 

 

 

 

 

 

 

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

Умова IF(x i .IS.A i )

реалізується функцією фуззіфікаціі,

яка представляється

узагальненою функцією Гауса окремо для кожної змінної x i :

 

 

 

μ A (x i )

 

 

 

1

 

 

 

 

 

 

 

, (22)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

c

 

 

2bi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

i

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

σi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

де μA (xi ) представляє оператор Ai .

У нечітких мережах доцільно задавати ця умова у формі алгебраїчного твору, з якого випливає, що для k-го правила виведення:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

μ (Ak ) (x)

 

 

 

 

1

 

 

 

 

(23)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(k)

 

j 1

 

x

 

c(k)

2b j

 

 

 

 

1

 

i

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(k)

 

 

 

 

 

 

 

 

 

 

σ j

 

 

 

 

 

 

 

 

 

 

 

 

При M правилах виведення агрегування вихідного результату мережі проводиться за формулою: