03 — Основні поняття¶
🇬🇧 English | 🇺🇦 Українська
Система¶
FFuzzySystem містить:
Inputs— вхідні змінні;Outputs— вихідні змінні;Rules— текст правил у порядку авторингу;Settings— математичні параметри логічного висновку.
Система може мати кілька виходів. Одні й ті самі входи та правила можуть одночасно керувати агресією, швидкістю й висотою.
Діапазон¶
FFuzzyRange задає область значень [Min, Max]. Max має бути більшим за Min. Вхід за межами діапазону затискається до найближчої межі перед фазифікацією.
Діапазон має відповідати фізичному змісту величини: Health 0…100, Temperature -40…120, Aggression 0…1. Надто широкий діапазон стискає корисну частину кривих, надто вузький часто насичує значення на краях.
Змінна¶
FFuzzyVariable має ім’я, діапазон, типове значення та набір нечітких множин.
- Ім’я починається з літери й містить лише літери, цифри та
_. - Імена мають бути унікальними серед усіх входів і виходів.
Default Valueвикористовується для входу, якщо код не передав значення.- Для виходу
Default Valueне бере участі у висновку.
Нечітка множина¶
FFuzzySet поєднує ім’я на кшталт Near із функцією належності. Функція повертає число μ(x) у межах [0,1]:
0— значення зовсім не належить множині;1— повністю належить;- проміжне число — часткова належність.
Для одного входу можуть одночасно бути істинними кілька множин. Наприклад, відстань 700 може мати Near = 0.3 і Mid = 0.7.
Правило¶
Правило пов’язує нечіткі твердження про входи з однією вихідною множиною:
IF Distance IS Near AND Health IS Low THEN Aggression IS Cautious WITH 0.8
Результат передумови — сила спрацювання правила. WITH 0.8 додатково обмежує його вплив.
Фазифікація¶
Чіткі входи перетворюються на ступені належності. Результат зберігається у InputMemberships із ключами виду Variable.Set, наприклад Distance.Near.
Агрегована поверхня¶
Кожне правило формує частину вихідної множини. FFuzzyAggregatedSurface — дискретизована крива, отримана після об’єднання всіх таких частин для одного виходу. Саме її більшість стратегій перетворює на число.
Дефазифікація¶
Дефазифікація повертає чіткий результат з агрегованої поверхні. Найпоширеніший метод Centroid обчислює центр ваги області під кривою.
Результат¶
FFuzzyInferenceResult містить не лише Outputs, а й пояснення рішення:
| Поле | Вміст |
|---|---|
bSuccess |
Чи завершився висновок без помилок |
InputMemberships |
Ступені належності входів |
OutputActivations |
Активації вихідних множин |
Outputs |
Чіткі числа за іменами виходів |
RuleActivations |
Сила кожного авторського правила |
Diagnostics |
Помилки, попередження та інформація |
Data Asset та inline-система¶
UFuzzySystemAsset зберігає одну систему як контент Unreal. Це рекомендований варіант, коли поведінку використовують кілька акторів або редагує дизайнер.
UFuzzyLogicComponent також має Inline System. Вона корисна для одноразового прототипу. Якщо призначено System Asset, він має пріоритет над inline-даними.
Детальний вибір форм описано у 04 — Функції належності.