Прямий нечіткий логічний висновок

За допомогою нечітких множин можна формально визначити неточні та багатозначні поняття, такі як "висока температура" або "велике місто". Для формулювання визначення нечіткої множини необхідно задати так звану область міркувань. Наприклад, коли оцінюємо швидкість автомобіля, ми обмежимося діапазоном X = [0, Vmax], де Vmax — максимальна швидкість, що може розвинути автомобіль. Необхідно пам'ятати, що X - чітка множина.

Основні поняття

Нечітким безліччюA в деякому непустому просторі X називається безліч пар де — функція приналежності нечіткої множини A. Ця функція приписує кожному елементу x ступінь його приналежності нечіткої множині A.

Продовживши попередній приклад, розглянемо три неточні формулювання: - "Мала швидкість автомобіля"; - "Середня швидкість автомобіля"; - «Велика швидкість автомобіля». На малюнку представлені нечіткі множини, що відповідають наведеним формулюванням, за допомогою функцій приналежності.

множини
У фіксованій точці X=40км/год. функція приналежності нечіткої множини «мала швидкість автомобіля» набуває значення 0,5. Таке ж значення набуває функція приналежності нечіткої множини «середня швидкість автомобіля», тоді як для множини «велика швидкість автомобіля» значення функції в цій точці дорівнює 0.

Функція T двох змінних T: [0, 1] x [0, 1] -> [0, 1] називаєтьсяT-нормою, якщо: — не зростає щодо обох аргументів: T(a, c) B. Наприклад, якщо A — вислів «Степан — космонавт», B — висловлювання «Степан літає в космос», то якщо істинні висловлювання «Степан — космонавт» і «Якщо Степан — космнавт, то він літає в космос», то істинно і вислів «Степан літає у космос».

Однак, на відміну від традиційної логіки, головним інструментом нечіткої логіки буде не правило modus ponens, а так зване композиційне правило виведення, дуже окремим випадком якого є правило modus ponens.

Припустимо, що є крива y=f(x) і встановлено значення x=a. Тоді з того, що y=f(x) та x=a, ми можемо зробити висновок, що y=b=f(a).

прямий
Узагальним тепер цей процес, припустивши, що a — інтервал, а f(x) — функція, значення якої є інтервали. У цьому випадку, щоб знайти інтервал y=b, що відповідає інтервалу a, ми спочатку побудуємо безліч a' з основою a і знайдемо його перетин I з кривою, значення якої суть інтервали. Потім спроектуємо це перетин на вісь OY і отримаємо бажане значення у вигляді інтервалу b. Таким чином, з того, що y = f (x) і x = A - нечітке підмножина осі OX, ми отримуємо значення y у вигляді нечіткого підмножини осі B OY.

Нехай U і V - дві універсальні множини з базовими змінними u і v, відповідно. Нехай A і F — нечіткі підмножини множин U і U x V. Тоді композиційне правило висновку стверджує, що з нечітких множин A і F випливає нечітка множина B = A * F.

Нехай A і B — нечіткі висловлювання і m(A), m(B) — відповідні функції приналежності. Тоді імплікації A -> B відповідатиме деяка функція приналежності m(A -> B). За аналогією з традиційною логікою, можна припустити, що Тоді Однак це не єдине узагальнення оператора імплікації, існують і інші.

Реалізація

Вхідні дані будуть містити знання (нечіткі множини) та правила (імплікації), наприклад: A = . B = . A => B.

Імплікація буде представлена ​​у вигляді декартової матриці, кожен елемент якої розраховується за допомогоювибраного оператора імплікації (у даному прикладі - функції Ґеделя):

  1. def compute_impl (set1, set2):
  2. ''' Computing implication '''
  3. relation = <>
  4. for i in set1.items():
  5. relation[i] = <>
  6. for j in set2.items():
  7. v1 = set1.value(i)
  8. v2 = set2.value(j)
  9. relation[i][j] = impl(v1, v2)
  10. return relation

Для даних вище це буде: Conclusion: A => B. x1 x2 x3 x4 x1 1.0 1.0 1.0 1.0 x2 1.0 1.0 1.0 0.1 x3 1.0 0.4 1.0 0.1 x4 0.7 0.4 1.0 0.1

Далі в результаті виведення виходить нова множина: