русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Шановні українці! Матеріал був перекладений з російської мови. Тому можуть бути незначні помикли...

Моделювання нечітких систем засобами нечіткої логіки в matlab

У складі Matlab присутні п'ять основних засобів графічного інтерфейсу користувача (ГИП), які забезпечують доступ до ІНЛ: редактори системи нечіткого висновку (СНО), функції належності, правил виводу, а також засобу перегляду правил і поверхні виводу. Ці кошти пов'язані між собою динамічно і вироблені зміни в одному з них спричиняють зміни в інших.

Редактор СНО надає можливість формування проектованої системи на високому рівні абстракції: кількість вхідних і вихідних змінних, найменування змінних.

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

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

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

Засіб перегляду поверхні виведення використовується для відображення залежності виходу системи від одного або двох входів. Іншими словами, воно генерує і виводить карту поверхні виведення розробленої СНО.

Редактор СНО. Побудова нечітких систем за Мамдані.

Для побудови створюваної системи в командному рядку основного вікна Matlab необхідно набрати команду fuzzy. Вікно редактора нової СНО містить вхідні, позначену input1 та вихідну - output1 змінні. За замовчуванням ІНЛ пропонує створювати СНО типу Мамдані.

Для того щоб додати нову змінну, необхідно вибрати в меню Edit відповідний пункт (для вхідної змінної - Addinput, для вихідний - Addoutput). Зміна найменування змінної відбувається за кроками.

 

Крок 1. Відзначається змінна, яку потрібно перейменувати.

Крок 2. У полі редагування змінюється назва змінної за замовчуванням на ім'я, запропоноване користувачем.
Збереження проектованої системи в робочий простір середовища MATLAB (в змінну) здійснюється за допомогою пункту меню File- Savetoworkspaceas... У цьому випадку дані зберігаються до закінчення сеансу Matlab. Для збереження даних на диску після закінчення сеансу роботи застосовується відповідний пункт того ж меню - Savetodiskas...

Редактор ФП. Наступним кроком у побудові нечіткої моделі засобами ІНЛ є асоціювання набору ФП з кожної вхідної і вихідної змінної. Дана операція проводиться в редакторі ФП трьома способами, активізувати який можна:

  • вибором у меню View Edit Membership Functions...;
  • подвійним клацанням миші на зображенні відповідної змінної (вхідний або вихідний);
  • набором в командному рядку оператора mfedit.

За допомогою редактора ФП можна відображати і редагувати будь-які ФП, асоційовані (пов'язані) з усіма вхідними та вихідними змінними розробляється СНО.
пСвязывание ФП з ім'ям змінної відбувається наступним чином:

  • вибирається мінлива по імені з набору графічних об'єктів вікна редактора ФП;
  • вкажіть діапазон зміни значень для базової і видимий діапазон для поточної змінних;
  • у меню Edit вибирається пункт AddMFs... У вікні вибирають вид ФП і їх кількість.

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

Таким чином, при побудові СНО необхідно за допомогою редактора ФП визначити відповідні функції для кожної з вхідних і вихідних змінних.

 

Редактор правил виводу

Після того, як вказано кількість вхідних і вихідних змінних, визначені їх найменування і побудовані відповідні ФП, в СНО необхідно включити правила висновку. Для цього в меню View вибирається пункт EditRules... або в командному рядку Matlabнабирається команда ruleedit.

Ґрунтуючись на описах вхідних і вихідних змінних, визначених у редакторі ФП, редактор правил виводу формує структуру правила автоматично. Від користувача потрібно лише зв'язати значення вхідних і вихідних змінних, вибираючи зі списку заданих раніше ФП і визначити логічні зв'язки між ними. Також допускається використання логічного заперечення (НЕ) і зміна ваг правил в діапазоні від 0 до 1.

Правила висновку можуть відображатися у вікні в різних форматах, які визначаються шляхом вибору відповідного пункту меню Format меню Options. За умовчанням використовується розширений формат відображення правил виводу (verbose form):

If (input_1 is[not] mf_1j1) <and, or>...(input_i is[not] mf_iji)...<and,or>
(input_n is not[] mf__njn) then
(output_1 is[not] mf_n + 1jn+1)<and, or>...
(output_k is[not] mf_k + njk+n) <and, or>...(output_m is[not] mf_m + njm+n) (w),

де - номер вхідної змінної;
ji - номер ФП -й змінної;
k - номер вихідної змінної;
n - кількість вхідних змінних;
т -кількість вихідних змінних;
w - вага правила.

(Круглі дужки укладають у собі обов'язкові параметри, квадратні - необов'язкові, а кутові - альтернативні параметри (один на вибір)).

Крім формат за замовчуванням, існують ще два види форматів відображення правил: символьний (symbolic form) і індексний (indexed form). Символьний формат має наступний вигляд:

(input_1<~=,==>mf_1j1)<&, | >...
(input_i<~=,==>mf_iji)...<&, | >
(input_n<~=,==>mf_njn)=>
(output_1<~=,==>mf_n + 1jn+1)...<&, <| em>>

(output_k<~=,==>mf_k + njk+n) <&, <| em>>...

(output_m<~=,==>mf_m + njm не дорівнює n) (W)

Відміну символьного формату від розширеного полягає в тому, що замість словесної інтерпретації зв'язок використовується символьне (символи «&» і «|» - відповідно визначають логічне І і логічне АБО, символ «~»- логічне заперечення, а символ «=>» є роздільником умовної і заключної частин правила (антецендента і консеквента).

Загальний опис правила висновку в індексному форматі може бути представлене в наступному вигляді:

[-]1j1...[-]iji...[-]njn[-]n+1jn+1...[-]k+ njk+1...[-]m+njm+n(w):<1,2>.

Тут послідовність чисел відповідає черговості вхідних змінних, причому символ «,» розділяє правило на умовну і завершальної частини. До двокрапки записується порядковий номер відповідної ФП, після двокрапки - вид логічної зв'язки («1» - логічне І, «2» - логічне АБО). Логічне заперечення задається символ «-».

Після визначення правил виводу в однойменному редакторі можна стверджувати, що СНО повністю створена.

 

Приклад П10. Створення СНО

Розглянемо таку ситуацію. Необхідно оцінити ступінь інвестиційної привабливості конкретного бізнес-проекту на підставі даних про ставці дисконтування та період окупності.

Крок 1. Викликаємо редактор для створення СНО, набираючи в командному рядку fuzzy. Додаємо вхідні змінну за допомогою вибору в меню Edit Addinput. У результаті отримуємо таку структуру СНО: два входи, механізм нечіткого висновку по Мамдані, один вихід. Оголошуємо першу змінну як discont, а другу - period, які відповідно представлятимуть ставку дисконтування і період окупності бізнес-проекту. Найменування вихідної змінної, на підставі якої приймається рішення про ступеня інвестиційної привабливості бізнес-проекту, задається як rate. Збережемо створювану модель під назвою Invest. На рис. П9 представлено поточний стан вікна редактора СНО.

Крок 2. Кожній вхідної і вихідної змінної поставимо у відповідність набір ФП. Дана процедура реалізується в редакторі ФП. Для discont визначаємо діапазон базової змінної (Range) від 5 до 50 (одиниця виміру - відсотки). Такий же діапазон вибираємо для її відображення (Display Range). Додамо три ФП, тип яких - trimf. Послідовно виділяючи мишею окремі ФП, присвоїмо найменування - small, middle, big відповідно невеликий, середньої та великої ставки дисконтування. Вікно редактора ФП у поточному стані показано на рис. П10. Змінної period діапазон базової змінної визначений рівним [3, 36] (одиниця виміру - місяці), поставлено у відповідність три ФП типу gaussmfc найменуваннями - short, normal, long. Таким чином, мінлива терміну окупності бізнес-проекту буде приймати наступні значення: короткий, звичайний і тривалий термін окупності.

Вікно редактора системи нечіткого висновку.
Рис. П9. Вікно редактора системи нечіткого висновку.

Вікно редактора ФП
Рис. П10. Вікно редактора ФП

Нарешті, для змінної rateвизначаємо: базова мінлива змінює значення в діапазоні [0, 1], семантика описується трьома ФП типу trimf" з найменуваннями: bad, normal, good.

Крок 3. Заключним етапом побудови СНО є визначення набору правил, які задають зв'язок вхідних змінних з вихідними. Для цього в редакторі правил виводу визначимо:

discont = small І period = short TO rate = good
ЯКЩО discont = HE small І period = long TO rate = bad
ЯКЩО discont = middle І period = normal TO rate = normal
ЯКЩО discont = big І period = short TO rate = normal

Поточний стан вікна редактора правил виводу показано на рис. П11. В розширеному форматі відображення зазначені правила висновку представляються наступним чином:

Вікно редактора правил виводу
пРис. П11. Вікно редактора правил виводу

if(discont is small) and (period is short) then (rate is goad) (1)
if(discont is not small) and (period is long) then (rate is bad) (1)
if(discont is and middle) (period is normal) then (rate is normal) (1)
if(discont is big) and (period is short) then (rate is normal) (1)

При зміні формату на символьний правила виводу будуть мати вигляд:

(discont == small) & (period == short) => (rate == good) (1)
(discont ~= small) & (period == long) => (rate == bad) (1)
(discont == middle) & (period== normal) => (rate== normal) (1)
(discont == big) & (period == short) => (rate == normal) (1)

Нарешті, те ж саме, але в індексному форматі:

11,3(1) : 1
-13,1(1) : 1
22,2(1) : 1
31,2(1) : 1

 

Засіб перегляду правил виводу

Даний засіб перегляду правил виводу дозволяє відобразити процес нечіткого висновку і отримати результат. Головне вікно засобу перегляду складається з декількох графічних вікон, розташовуваних по рядки і стовпці. Кількість рядків відповідає числу правил нечіткого висновку, а кількість стовпчиків - числа вхідних і вихідних змінних, заданих в розробляється СНО. Додаткове графічне вікно служить для відображення результату нечіткого висновку і операції дефазифікації. В кожному вікні відображається відповідна ФП, рівень її зрізу (для вхідних змінних) і внесок окремої ФП у загальний результат (для вихідних змінних).
пВ нижній частині головного вікна можна відобразити номери правил виводу в різних форматах висновку, відзначаючи їх мишею. Для зміни формату в меню вибирається пункт Ruledisplayformat.

Зміна значень вхідних змінних можна двома способами:

1) шляхом введення в поле Input запису вхідного вектора, розмірність якого дорівнює кількості вхідних змінних;
2) клацанням миші в будь-якому графічному вікні, яке відноситься до вхідної змінної.
Вхідний вектор у кожному з цих варіантів визначення вихідних даних буде задавати набір червоних вертикальних прямих.
Для СНО, розглянутої в прикладі П10, при вхідному векторі [15 10] (ставка дисконтування - 15 %, період окупності бізнес-проекту - 10 місяців) результат (ступінь інвестиційної привабливості) буде становити 0,585 (мал. П12).

Вікно засобу перегляду правил виводу (Ctrl+5)
Рис. П12. Вікно засобу перегляду правил виводу (Ctrl+5)

 

Засіб перегляду поверхні виведення

Засіб перегляду поверхні виведення дозволяє будувати тривимірну поверхню як залежність однією з вихідних змінних від двох вхідних. Вибір вхідних і вихідних змінних здійснюється за допомогою спадаючих меню головного вікна даного програмного засобу. Кількість нових ліній по осях X і Y визначається в полях вводу Xgrids, Ygrids. Поверхню висновку, відповідна правил виводу прикладу П10 показана на мал. П13.

Вікно перегляду поверхні рішень (Ctrl+6)
Рис. П13. Вікно перегляду поверхні рішень (Ctrl+6)

 

Побудова нечітких систем типу Суджено

Розглянемо побудову СНО двома редакторами - СНО і ФП. Для побудови СНО типу Суджено необхідно в меню File вибрати пункт NewFIS -> Sugeno. Кількість вхідних і вихідних змінних визначається так само, як і при побудові СНО типу Мамдані.
Редактор ФП. Для СНО типу Суджено зміни стосуються тільки визначення схеми ФП для вихідних змінних. ІНЛ в середовищі Matlabдозволяє розробляти два види нечітких моделей. Перша модель - це нечітка модель Суджено нульового порядку. Нечітке правило висновку має наступний вигляд:

if x is A and у is then z=,

де і - нечіткі безлічі антецедента; -чітко задана константа консеквента.

Для побудови такої моделі при додаванні ФП необхідно вибрати тип - константа (constant) і задати в якості параметра ФП чисельне значення відповідної константи. Друга модель - нечітка модель Суджено першого порядку. Для неї нечітке правило виведення записується наступним чином:

if x as A and у is then z = p·x+q·y+r,
де р, q і r - константи.

У даному випадку тип ФС - лінійна залежність (linear). Для визначення параметрів ФП необхідно ввести вектор, елементи якого відповідають чисельних значень констант консеквента.

Робота з редактором правил виводу, а також із засобами перегляду правил і поверхні виведення виконується аналогічно нагоди побудови СНО за Мамдані.

Приклад нечіткого висновку по Суджено з використанням нечіткої моделі нульового порядку і правил виводу, визначених вище, представлений на рис. П14 (вихідна змінна має три значення: bad, normal, good, які задаються відповідно трьома константами - 0, 0.5, 1).

Вікно перегляду правил виводу (висновок за Суджено)

Рис. П14. Вікно перегляду правил виводу (висновок за Суджено)

Переглядів: 4519

Повернутися взміст


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн