Нечітка логіка

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до: навігація, пошук

Основи нечіткої логіки були закладені наприкінці 60-х років у працях відомого американського математика Латфі Заде. Соціальне замовлення на дослідження подібного роду було викликано зростаючим незадоволенням експертними системами. Хвалений "штучний інтелект", що легко справлявся із задачами керування складними технічними комплексами, був безпорадним при найпростіших висловленнях повсякденного життя, типу "Якщо машиною перед тобою керує недосвідчений водій - тримайся від неї подалі". Для створення дійсно інтелектуальних систем, здатних адекватно взаємодіяти з людиною, необхідний був новий математичний апарат, що переводить невиразні і неоднозначні життєві твердження в мову чітких і формальних математичних формул.

Першим серйозним кроком у цьому напрямку з'явилася теорія нечітких множин, розроблена Заде. Його робота "Fuzzy Sets", що з'явилася в 1965 році в журналі "Information and Control", заклала основи моделювання інтелектуальної діяльності людини і з'явилася початковим поштовхом до розвитку нової математичної теорії. Він же дав і назву для нової області науки -"fuzzy logic"(fuzzy - нечіткий, розмитий, м'який).

У США розвиток нечіткої логіки йде по шляху створення систем, що потрібні великому бізнесу і військовим. Нечітка логіка застосовується при аналізі нових ринків, біржовій грі, оцінці політичних рейтингів, виборі оптимальної цінової стратегії і т.п. З'явилися і комерційні системи масового застосування.

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

  • нові архітектури комп'ютерів для нечітких обчислень;
  • елементна база нечітких комп'ютерів і контролерів;
  • інструментальні засоби розробки;
  • інженерні методи розрахунку і розробки нечітких систем керування, тощо.

На відміну від булевої алгебри, у котрій існує лише дві величини (0 та 1, правда чи неправда) у нечіткій логіці існують також перехідні величини (стани).

Одні з основних понять нечіткої логіки: нечіткі множини, фазіфікація/дефазіфікація, фазі-операція.

В останні роки значення нечіткої логіки стрімко виросло у світі високих технологій.

Нечітка множина[ред.ред. код]

Нечітка множина - це пара (A, m), де A - ім'я нечіткої множини, наприклад: ВЕЛИКИЙ, МОЛОДИЙ, НЕГАТИВНО МАЛИЙ, а m - функція m: X → L, звана функцією приналежності і позначала зазвичай грецькою буквою мю. Часто покладається L = [0,1], а в якості X використовується деякий безліч дійсних чисел. m (x) інтерпретується як ступінь приналежності елемента x з X нечіткій множині A. Функція приналежності може розглядатися як узагальнена характеристична функція множини. Зазвичай на нечітка множина посилаються або за його імені, або по функції приналежності. Нечітке безліч A може розглядатися як значення деякої лінгвістичної змінної. Наприклад, лінгвістична змінна ПОМИЛКА може мати значення НЕГАТИВНО ВЕЛИКА, НЕГАТИВНО МАЛА, НУЛЬ, ПОЗИТИВНО МАЛА, ПОЗИТИВНО ВЕЛИКА, які в нечітких регуляторах позначаються звичайно як ОБ, ОМ, Н, ПМ, ПБ. Оскільки операції над нечіткими множинами визначаються операціями над їх функціями належності, то при дослідженні алгебраїчних властивостей нечітких множин, часто нечітке безліч ототожнюють з його функцією приналежності і визначають як функцію A: X → L.

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

Нечітка підмножина[ред.ред. код]

Нечітка підмножина відрізняється від звичайної тим, що для елементів з немає однозначної відповіді «ні» або «так» щодо властивості G.

Нечітка і лінгвістична змінні[ред.ред. код]

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

Нечітка змінна[ред.ред. код]

Нечітка змінна характеризується трійкою <a, X, A>, де

  • a - найменування змінної,
  • X - універсальна множина (область визначення a),
  • A - нечітка множина на X, що описує обмеження (тобто m A(x)) на значення нечіткої змінної a.

Лінгвістична змінна[ред.ред. код]

Лінгвістичною змінною називається набір , де

  • b - найменування лінгвістичної змінної;
  • Т - множина її значень (терм-множина), що представляють собою імена нечітких змінних, областю визначення, кожної з яких є множина X. Множина T називається базовою терм-множиною лінгвістичної змінної;
  • G - синтаксична процедура, що дозволяє оперувати елементами терм-множини T, зокрема, генерувати нові терми (значення). Множина TИG(T), де G(T) - множина згенерованих термів, називається розширеною терм-множиною лінгвістичної змінної;
  • М - семантична процедура, що дозволяє перетворити кожне нове значення лінгвістичної змінної, утвореною процедурою G, у нечітку змінну, тобто сформувати відповідну нечітку множину.

Нечіткі множини в системах керування[ред.ред. код]

Найбільш важливим застосуванням теорії нечітких множин є контролери нечіткої логіки. Їх функціонування дещо відрізняється від роботи звичайних контролерів; для опису системи замість диференційних рівнянь використовуються знання експертів. Ці знання можуть бути виражені за допомогою лінгвістичних змінних, які описані нечіткими множинами.

Загальна структура нечіткого мікроконтролера[ред.ред. код]

Загальна структура мікроконтролера, що використовує нечітку логіку. Вона містить у своєму складі наступні складові:

  • блок фазіфікації;
  • базу знань;
  • блок рішень; блок дефазіфікації.

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

Блок рішень використовує нечіткі умовні ( if - then ) правила, закладені в базі знань, для перетворення нечітких вхідних даних у необхідні керуючі впливи, що носять також нечіткий характер.

Блок дефазіфікації перетворює нечіткі дані з виходу блоку рішень у чітку величину, що використовується для керування об'єктом

Як приклад відомих мікроконтролерів, що підтримують нечітку логіку можна назвати 68HC11, 68HC12 фірми Motorola, MCS-96 фірми Intel, а також деякі інші.

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

Розглянемо випадок керування мобільним роботом, задачею якого є об'їзд перешкод. Введемо дві лінгвістичні змінні: ДИСТАНЦІЯ (відстань від робота до перешкоди) і НАПРЯМОК (кут між подовжньою віссю робота та напрямком на перешкоду).

Розглянемо лінгвістичну змінну ДИСТАНЦІЯ. Значеннями її можна визначити терми ДАЛЕКО, СЕРЕДНЕ, БЛИЗЬКО і ДУЖЕ БЛИЗЬКО. Для фізичної реалізації лінгвістичної змінної необхідно визначити точні фізичні значення термів цієї змінної. Нехай змінна ДИСТАНЦІЯ може приймати будь-які значення з діапазону від нуля до нескінченності. Відповідно до теорії нечітких множин, у такому випадку кожному значенню відстані з зазначеного діапазону може бути поставлене у відповідність деяке число від нуля до одиниці, що визначає ступінь приналежності даної фізичної відстані (припустимо 40 см) до того чи іншого терму лінгвістичної змінної ДИСТАНЦІЯ. Ступінь приналежності визначаємо функцією приналежності М(d), де d-відстань до перешкоди. У нашому випадку відстані 40 см. Можна задати ступінь приналежності до терму ДУЖЕ БЛИЗЬКО рівним 0,7 , а до терму БЛИЗЬКО - 0,3 (рис. 2.). Конкретне визначення ступеня приналежності може проходити тільки при роботі з експертами.

Нечітка логіка в Matlab[ред.ред. код]

Fuzzy logic toolbox - вбудована в Matlab сукупність функцій, що містить набір засобів, які дозволяють:

  • створювати і редагувати нечіткі системи всередині середовища Matlab;
  • вбудовувати нечітку підсистему в SimuLink (поставляється з Matlab) при моделюванні загальної системи;
  • побудувати нечітку систему в Matlab у вигляді процедури, що викликається з програми, яка написана на мові Сі.

Даний набір інструментів забезпечує три категорії інструментальних засобів програмування нечітких систем:

  • функції командного рядка (command line functions);
  • графічний інтерактивний інтерфейс;
  • використання вбудованих блоків SimuLink.

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

type ім'я_функції

Крім того, Matlab дозволяє їх модифікувати шляхом копіювання і перейменування відповідного файлу та наступного його редагування. Таким чином, нечіткий набір інструментів є розширеним власними функціями.

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

Третя категорія - моделювання в середовищі SimuLink. Тут підсистеми представляються у виді блоків - можна з'єднати будь-яким чином і відразу отримати результати.

У Matlab є багато вбудованих функцій приналежності, зокрема:

  • сигмоїдальна;
  • двостороння сигмоїдальна;
  • гаусова;
  • дзвоноподібної форми
  • S-функція приналежності;
  • Z-функція приналежності;
  • трапецієподібна;
  • трикутна й ін.

Усі дії над нечіткими числами задаються мінімальним набором функцій і відбуваються всередині програми. Таким чином, користувачу необов'язково вивчати усі тонкощі теорії нечітких множин, достатньо лише визначити усі вхідні і вихідні змінні і задати таблицю правил, а решту роботи робить Matlab. Дефазіфікація виконується в один з п'ятьох методів, зазначених програмістом. Крім того, можна вивести на екран відповідно до введених правил результуючі поверхні керування в залежності від комбінації входів, схему отриманої нечіткої програми, і це лише мала частина всіх можливостей даного набору інструментів

Переваги нечітких систем[ред.ред. код]

Коротко перелічимо відмітні переваги fuzzy-систем у порівнянні з іншими:

  • можливість оперувати вхідними даними, заданими нечітко: наприклад, що безупинно змінюються в часі значення (динамічні задачі), значення, що неможливо задати однозначно (результати статистичних опитувань, рекламні компанії і т.д.);
  • можливість нечіткої формалізації критеріїв оцінки і порівняння: оперування критеріями "більшість", "можливе", переважно" і т.д.;
  • можливість проведення якісних оцінок як вхідних даних, так і виведених результатів: ви оперуєте не тільки власне значеннями даних, але їхнім ступенем вірогідності (не плутати з імовірністю!) і її розподілом;
  • можливість проведення швидкого моделювання складних динамічних систем і їхній порівняльний аналіз із заданим ступенем точності: оперуючи принципами поведінки системи, описаними fuzzy-методами, ви по-перше, не витрачаєте багато часу на з'ясування точних значень змінних і складання рівнянь, що їх описують, по-друге, можете оцінити різні варіанти вихідних значень.

Застосування нечітких систем[ред.ред. код]

Що стосується вітчизняного ринку комерційних систем на основі нечіткої логіки, то його формування почалося в середині 1995 року. Найбільш популярні в замовників наступні пакети:

    • CubiCalc 2.0 RTC - одна з найбільш могутніх комерційних експертних систем на основі нечіткої логіки, що дозволяє створювати власні прикладні експертні системи ;
    • CubiQuick - дешева <університетська> версія пакета CubiCalc ;
    • RuleMaker - програма автоматичного витягу нечітких правил із вхідних даних ;
    • FuziCalc - електронна таблиця з нечіткими полями, що дозволяє робити швидкі оцінки при неточно відомих даних без нагромадження похибки;
    • OWL - пакет, що містить вихідні тексти усіх відомих видів нейронних мереж, нечіткої асоціативної пам'яті і т.д.

Основними споживачами нечіткої логіки на ринку СНД є банкіри і фінансисти, а також фахівці в області політичного й економічного аналізу. Вони використовують CubiCalc для створення моделей різних економічних, політичних, біржових ситуацій. Що ж стосується легкого в освоєнні пакета FuziCalc, то він зайняв своє місце на комп'ютерах великих банкірів і фахівців з надзвичайних ситуацій - тобто тих, для кого найбільше важлива швидкість проведення розрахунків в умовах неповноти і неточності вхідної інформації. Однак можна з упевненістю сказати, що епоха розквіту прикладного використання нечіткої логіки на вітчизняному ринку ще попереду.

Сьогодні елементи нечіткої логіки можна знайти в десятках промислових виробів - від систем керування електропоїздами і бойовими вертольотами до пилососів і пральних машин. Рекламні кампанії багатьох фірм (переважно японських) підносять успіхи у використанні нечіткої логіки як особливу конкурентну перевагу. Без застосування нечіткої логіки немислимі сучасні ситуаційні центри керівників західних країн, у яких приймаються ключові політичні рішення і моделюються всілякі кризові ситуації. Одним із вражаючих прикладів масштабного застосування нечіткої логіки стало комплексне моделювання системи охорони здоров'я і соціального забезпечення Великобританії (National Health Service - NHS), що вперше дозволило точно оцінити й оптимізувати витрати на соціальні нестатки .

Не обійшли засоби нечіткої логіки і програмні системи, що обслуговують великий бізнес. Першими, зрозуміло, були фінансисти, задачі яких вимагають щоденного прийняття правильних рішень у складних умовах непередбаченого ринку. Перший рік використання системи Fuji Bank приносив банку в середньому $770000 на місяць (і це тільки офіційно оголошений прибуток !).

Слідом за фінансистами, стурбовані успіхами японців і втратою стратегічної ініціативи, когнітивними нечіткими схемами зацікавилися промислові гіганти США. Motorola, General Electric, Otis Elevator, Pacific Gas & Electric, Ford і інші на початку 90-х почали інвестувати в розробку виробів, що використовують нечітку логіку. Маючи солідну фінансову "підтримку", фірми, що спеціалізуються на нечіткій логіці, одержали можливість адаптувати свої розробки для широкого кола застосувань. "Зброя еліти" вийшла на масовий ринок.

Серед лідерів нового ринку виділяється американська компанія Hyper Logic, заснована в 1987 році Фредом Уоткинсом (Fred Watkins). Спочатку компанія спеціалізувалася на нейронних мережах, однак незабаром цілком сконцентрувалася на нечіткій логіці. Недавно вийшла на ринок друга версія пакета CubiCalc фірми HyperLogic, яка є однієї з найбільш могутніх експертних систем на основі нечіткої логіки. Пакет містить інтерактивну оболонку для розробки нечітких експертних систем і систем керування, а також run-time модуль, що дозволяє оформляти створені користувачем системи у виді окремих програм.

Крім Hyper Logic серед "патріархів" нечіткої логіки можна також назвати такі фірми як IntelligenceWare, InfraLogic, Aptronix. Усього ж на світовому ринку представлено більш 100 пакетів, які тим чи іншим видом використовують нечітку логіку. У трьох десятках СУБД реалізована функція нечіткого пошуку. Власні програми на основі нечіткої логіки анонсували такі гіганти як IBM, Oracle і інші.

На принципах нечіткої логіки побудований і один з російських програмних продуктів - відомий пакет "Бізнес-прогноз". Призначення цього пакета - оцінка ризиків і потенційної прибутковості різних бізнес-планів, інвестиційних проектів і просто ідей щодо розвитку бізнесу. "Ведучи" користувача по сценарію його задуму, програма задає ряд питань, що допускають як точні кількісні відповіді, так і наближені якісні оцінки - типу "малоймовірно", "ступінь ризику високий" і т.д. Узагальнивши всю отриману інформацію у виді єдиної схеми бізнесу-проекту, програма не тільки виносить остаточний вердикт про ризикованість проекту й очікуваних прибутків, але і вказує критичні точки і слабкі місця в авторському задумі. Від аналогічних іноземних пакетів "Бізнес-прогноз" відрізняється простотою, дешевиною і, зрозуміло, російськомовним інтерфейсом. Утім, цілком очевидно, що програма "Бізнес-прогноз" - лише перша ластівка, за якої неминуче підуть нові розробки вчених СНД.

Математичні основи[ред.ред. код]

Символічна нечітка логіка Символічна нечітка логіка засновується на понятті t-норми. Після вибору деякої t-норми з'являеться можливість визначити основні операції: кон'юнкцію диз'юнкцію, імплікацію, заперечення та ін.

Неважко довести теорему про те, що дистрибутивніть, притамання класичній логіці, виконується тільки у випадку якщо t-норма є t-нормою Гьоделя.

Нечітка логіка та нейронні мережі Оскільки нечіткі множини описуються функціями належності, а t-норми та k-норми звичайними математичними операціями, можна уявити нечіткі логічні міркування у вигляді нейронної мережі. Для цього функції приналежності треба інтерпретувати як функції активації нейронів, передачу сигналів як зв'язку, а логічні t-норми та k-норми, як спеціальні види нейронів, що виконують математичні відповідні операції. Існує велика різноманітність подібних нейро-нечітких мереж. Наприклад, ANFIS (Adaptive Neuro fuzzy Inference System) - адаптивна нейро-нечітка система виводу.

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

 y(x)=\sum^{N}_{i=1} \phi_i(x)*\theta_i ,

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


Приклад визначення лінгвістичної змінної[ред.ред. код]

У визначеннях, принятих для лінгвістичної змінної:

  • X = «Температура в кімнаті»
  • U = [5, 35]
  • T = {«холодно», «комфортно», «жарко»}
Fuzzy logic temperature en.svg

Характеристичні функції:

  • \mu_{cold} \left( u \right) = \frac{1}{1+\left( \frac{u-10}{7} \right) ^{12} }
  • \mu_{ok} \left( u \right) = \frac{1}{1+\left( \frac{u-20}{3} \right)^{6} }
  • \mu_{hot} \left( u \right) = \frac{1}{1+\left( \frac{u-30}{6} \right)^{10} }

Правило G породує нові терми з використанням звязок «і», «або», «не», «дуже», «більш менш».

  • не A: 1 - \mu_A \left( u \right)
  • дуже A: \left( \mu_A \left( u \right) \right) ^ 2
  • більш меньш A: \sqrt { \mu_A \left( u \right)}
  • A або B: \max \left( \mu_A \left( x \right), \mu_B \left( x \right) \right)

Операції над нечіткими множинами[ред.ред. код]

Вміщення[ред.ред. код]

Нехай A і B - нечіткі множини на універсальній множині E.

Говорять, що A міститься в B, якщо ∀ x ОE mA(x) <mB(x).

Позначення: A М B.

Іноді використовують термін "домінування", тобто у випадку коли A М B, говорять, що B домінує A.

Рівність[ред.ред. код]

A і B рівні, якщо ∀ xОE mA(x) = mB (x).

Позначення: A = B.

Доповнення[ред.ред. код]

Нехай M = [0,1], A і B - нечіткі множини, задані на E. A і B доповнюють один одного, якщо

∀ xОE mA(x) = 1 - m B(x).

Позначення: B =  чи A =

Очевидно, що = A. (Доповнення визначене для M = [0,1], але очевидно, що його можна визначити для будь-якого впорядкованого M).

Перетинання[ред.ред. код]

AЗB - найбільша нечітка підмножина, що міститься одночасно в A і B.

mAЗB(x) = min( mA(x), mB(x)).

Об'єднання[ред.ред. код]

А И В - найменша нечітка підмножина, що включає як А, так і В, з функцією приналежності:

mAИ B(x) = max(mA(x), m B(x)).

Різниця[ред.ред. код]

А - B = АЗ  з функцією приналежності:

mA-B(x) = mA З (x) = min( mA(x), 1 - m B(x)).

Диз'юнктивна сума[ред.ред. код]

АЕB = (А - B)И(B - А) = (А З ) И( З B) з функцією приналежності:

mA-B(x) = max{[min{m A(x), 1 - mB(x)}];[min{1 - mA(x), mB(x)}] }

Приклади[ред.ред. код]

Нехай:

A = 0,4/ x1 + 0,2/ x2+0/ x3+1/ x4;

B = 0,7/ x1+0,9/ x2+0,1/ x3+1/ x4;

C = 0,1/ x1+1/ x2+0,2/ x3+0,9/ x4.

Тут:

1. AМB, тобто A міститься в B чи B домінує A, С незрівнянно ні з A, ні з B, тобто парі {A, С} і {A, С} - парі недомінуємих нечітких множин.

2. A № B №C.

3. = 0,6/ x1 + 0,8/x2 + 1/x3 + 0/x4;

= 0,3/x1 + 0,1/x2 + 0,9/x3 + 0/x4.

4. AЗB = 0,4/x1 + 0,2/x2 + 0/x3 + 1/x4.

5. АИС = 0,7/x1 + 0,9/x2 + 0,1/x3 + 1/x4.

6. А - С = АЗ = 0,3/x1 + 0,1/x2 + 0/x3 + 0/x4;

В - А = З С = 0,6/x1 + 0,8/x2 + 0,1/x3 + 0/x4.

7. А Е В = 0,6/x1 + 0,8/x2 + 0,1/x3 + 0/x4.

Дивіться також[ред.ред. код]

Посилання[ред.ред. код]