Материал: Лабораторна робота №13

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Лабораторна робота №13

Тема: Приклад розробки системи нечіткого виводу в інтерактивному режимі.

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

П р и к л а д . "Чайові в ресторані". Розглянемо ситуацію в ресторані, при якій, згідно прийнятим і США традиціям, після закінчення обслуговування відвідувача прийнято залишати офіціантові чайові. Грунтуючись на сталих в цій країні звичаях і інтуїтивних представленнях відвідувачів ресторанів величина суми чайових не є постійною і залежить, наприклад, від якості обслуговування і якості приготування замовлених блюд.

Завдання полягає в тому, щоб розробити деяку експертну систему, яка була б реалізована у вигляді системи нечіткого виводу і дозволяла б визначати величину чайових на основі суб'єктивних оцінок відвідувачів якості обслуговування і якості приготування замовлених блюд.

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

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

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

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

Як вхідні параметри системи нечіткого виводу розглядатимемо2 нечіткі лінгвістичні змінні

"якість обслуговування” і "якість приготування замовлених страв” (або скорочено - "якість вечері”),

як вихідні параметри — нечітку лінгвістичну змінну "величина чайових".

"якістьзмінною обслуговування”

В

якості

терм-множини

першою

лінгвістичною

використовуватимемо

множину Т1={погане”, “добре”, “відмінне”}, а в

якості терм-множини другої

лінгвістичної змінної “якість вечері” використовуватимемо множину Т2={“підгорілий”, “чудовий”}. В якості терм-множини вихідної лінгвістичної змінної "величина чайових" використовуватимемо множину Т3={малі”, “середні”, “щедрі”}. При цьому кожен з термів першої і другої вхідної змінної(якість обслуговування і приготування замовлених страв) оцінюватимемо за 10-бальною порядковою шкалою, при якій цифрі 0 відповідає якнайгірша оцінка, а цифрі 10 — якнайкраща оцінка. Що стосується термів вихідний змінної, то припускатимемо, що малі чайові складають близько5% від вартості замовлених страв, середні чайові — близько 15%, а щедрі чайові - близько 25%.

З урахуванням зроблених уточнень, розглянута суб'єктивна інформація про величину чайових може бути представлена у формі 3-х правил нечітких продукцій наступного вигляду (Система нечіткого виведення типу Мамдані):

Правило_1: ЯКЩО "якість обслуговування погана” АБО "вечеря підгоріла" ТО "величина чайових мала"

Правило_2: ЯКЩО "якість обслуговування хороша" ТО "величина чайових середня"

Правило_3: ЯКЩО "якість обслуговування відмінна" АБО "вечеря смачна" ТО "величина чайових щедра"

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

1.Викликати редактор систем нечіткого виведенняFIS, для чого у вікні команд набрати ім'я відповідної функції fuzzy. Після виконання цієї команди на екрані з'явиться графічний інтерфейс редактора FIS з ім'ям системи нечіткого виведенняUntitled і типом системи нечіткого виведення

1

(Мамдані) запропонованими за умовчанням .

2.Оскільки в прикладі розглядається система нечіткого виведення з двома входами, необхідно додати в системуFIS, що розробляється, ще одну вхідну змінну. Для цього слід виконати команду меню Edit>Add Variable.>Input. В результаті виконання цієї команди на діаграмі системи нечіткого виведення з'явиться новий жовтий прямокутник з ім'ям другої вхідної змінної: inрut2 (мал. 1).

Мал. 1. Вид редактора FIS після додавання другої змінної

3.Змінимо імена вхідних і вихідних змінних, запропонованих системою MATLAB за умовчанням. Для цього необхідно виділити прямокутник з ім'ям відповідної змінної, виконавши клацання на його зображенні на діаграмі(сторони виділеного прямокутника мають червоний колір). Після чого слід набрати нове ім'я змінної в полі введенняName в правій частині редактораFIS. Результат зміни імен змінних системи нечіткого виведення зображений на мал. 2.

Мал. 2. Вид редактора FIS після зміни імен змінних, запропонованих системою MATLAB за умовчанням

Примітка

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

2

4. Змінимо ім'я системи нечіткого виведення(Untitled), запропоноване за умовчанням. Для цього збережемо створювану структуру FIS в зовнішньому файлі з ім'ямmytip.fis, виконавши команду меню File>Export>To Disk.... При цьому буде викликано стандартне діалогове вікно збереження файлу, в якому користувачеві пропонується ввести ім'я відповідного файлу(розширення файлу приписується автоматично). Залишимо без зміни запропоновані системою MATLAB за умовчанням: метод нечіткого логічного І (And method) — значення "min", метод нечіткого логічного АБО (Or method) значення "max", метод імплікації (Implication)— значення "min", метод агрегації (Aggregation) значення "max" і метод дефазифікації (Defuzzification) значення "centroid". Очевидно, ці значення можуть бути змінені користувачем.

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

подвійним клацанням на значку прямокутника з ім'ям відповідної змінної;

командою меню Edit>Membership Functions... (заздалегідь повинен бути виділений прямокутник

зім'ям відповідної змінної):

натисненням клавіш <Ctrl>+<2> (заздалегідь також повинен бути виділений прямокутник з ім'ям відповідної змінної).

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

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

Спочатку змінимо діапазон визначення значень вхідних змінних, для чого в полях введення Range і Display Range змінимо верхнє значення з 1 на 10 (балів). Аналогічно виконуються зміни відповідних діапазонів для вихідної змінної"чайові", при цьому верхнє значення1 слід замінити на 30(%). Зміни підтверджуються натисненням на клавішу <Enter> на клавіатурі.

Далі змінимо назви термів першої вхідної змінної "обслуговування'', запропоновані системою MATLAB за умовчанням (mf1, mf2, mf3) на "погане", "добре", "відмінне" відповідно. Після чого змінимо тип функцій приналежності першої змінної, запропонований за умовчанням. на функції типу Гауса (gaussmr), вибравши відповідний пункт в поліТуре. Параметри знов заданих функцій приналежності залишимо без зміни. Вид редактора функцій приналежності після внесених змін для першої з вхідних змінних зображений на мал. 4. Аналогічним чином змінимо назви термів другої вхідної змінної "вечеря" і видалимо один з термів з відповідною функцією приналежності. Для видалення терма слід виділити функцію приналежності, що видаляється, і натиснути клавішу<Delete> на клавіатурі. Перехід до редагування змінної здійснюється клацанням на зображенні прямокутника з ім'ям необхідної змінної. Для змінній "вечерю" змінимо тип функцій приналежності її термів на трапецієвидні функції (trapmf) і їх

3

параметри таким чином: для терма "підгоріла" задамо параметри [0 0 1 3], а для терма "смачна" — [7 9 10 10].

Рис. 4. Вид редактора функцій приналежності після зміни назви термів і типу їх функцій приналежності для першої вхідної змінної «обслуговування»

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

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

Нарешті, змінимо назви термів і параметри функцій приналежності для вихідної змінної "чайові", залишивши без зміни трикутний тип функцій приналежності, запропонований системою MATLAB. Для терма "малі" задамо параметри [0 5 10], а для терма "середні"— [10 15 20], для терма "щедрі" — [20 25 30]. Вид редактора функцій приналежності після зроблених змін для вихідний "чайовізмінної" зображений на мал. 6.

4

Рис. 6. Вид редактора функцій приналежності після зміни назви термів і типу їх функцій приналежності для вхідної змінної «обслуговування»

6.Тепер настала черга визначити

правила

нечіткого виведення для створюваної експерт

системи. Для цього слід скористатися

редактором

правил, який

може

бути викликаний одним з

наступних способів:

 

 

 

 

 

• подвійним клацанням на значку

квадрата

в

центрі з

ім'ям

створюваної системи нечітк

виведення (myfis);

 

 

 

 

 

• командою меню Edit>Rules...;

• натисненням клавіш <Clrl>+<3>.

Оскільки спочатку база правил нечіткого виведення порожня, то після виклику редактора правил центральне багаторядкове поле введення не містить ніяких . правилДля їх визначення слід використовувати поля меню і перемикачі в нижній частині графічного інтерфейсу редактора правил. Для задання першого правила слід залишити виділені за умовчанням поле з ім'ям терма"погане" для першої вхідної змінної, поле з ім'ям терма"підгоріла" для другої вхідної змінної і поле з ім'ям терма "малі" для вихідний змінної. Далі слідує перемикачConnection поставити в положенняоr (логічне АБО) і натиснути на кнопку Add rule. Після цього перше правило з символами кирилиці відобразиться

у верхньому вікні.

Аналогічним чином задається друге правило, для якого слід виділити імена термів "добре" "попе" і "середні", і третє правило з іменами термів "відмінне", "чудовий" і "щедрі" для відповідних змінних. Вид редактора правил після їх визначення для створюваної експертної системи зображений на мал. 7.

Відмітимо, що в полі введення Weight відображається вага кожного правила, яку можна змінювати в межах інтервалу [0, 1] (залишимо без зміни його значення за умовчанням, рівне 1 для всіх правил). Ця ж вага правил записується в круглих дужках у вікні правил після кожного з правил нечіткого виведення.

5