Прямий нечіткий логічний висновок
За допомогою нечітких множин можна формально визначити неточні та багатозначні поняття, такі як "висока температура" або "велике місто". Для формулювання визначення нечіткої множини необхідно задати так звану область міркувань. Наприклад, коли оцінюємо швидкість автомобіля, ми обмежимося діапазоном X = [0, Vmax], де Vmax — максимальна швидкість, що може розвинути автомобіль. Необхідно пам'ятати, що X - чітка множина.
Основні поняття
Нечітким безліччюA в деякому непустому просторі X називається безліч пар де — функція приналежності нечіткої множини A. Ця функція приписує кожному елементу x ступінь його приналежності нечіткої множині A.
Продовживши попередній приклад, розглянемо три неточні формулювання: - "Мала швидкість автомобіля"; - "Середня швидкість автомобіля"; - «Велика швидкість автомобіля». На малюнку представлені нечіткі множини, що відповідають наведеним формулюванням, за допомогою функцій приналежності.

Функція 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).

Нехай 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.
Імплікація буде представлена у вигляді декартової матриці, кожен елемент якої розраховується за допомогоювибраного оператора імплікації (у даному прикладі - функції Ґеделя):
- def compute_impl (set1, set2):
- ''' Computing implication '''
- relation = <>
- for i in set1.items():
- relation[i] = <>
- for j in set2.items():
- v1 = set1.value(i)
- v2 = set2.value(j)
- relation[i][j] = impl(v1, v2)
- 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
Далі в результаті виведення виходить нова множина: