Skip to content

01 — Вступ

🇬🇧 English | 🇺🇦 Українська

Що таке нечітка логіка

Звичайна булева умова має лише два стани: істина або хиба. Наприклад, Distance < 500 миттєво перемикається з false на true на межі 500 одиниць. Для ігрової поведінки це часто надто різко: агент може смикатися між двома станами, коли значення коливається біля порога.

Нечітка логіка описує не лише факт «близько», а ступінь належності до поняття «близько». На відстані 350 він може дорівнювати 0.9, на 600 — 0.45, а на 1000 — 0. Одне значення водночас може частково належати множинам Near і Mid. Саме перекриття множин утворює плавний перехід.

Жорсткий поріг:   Distance < 500  →  Attack = true або false
Нечітке рішення:  Distance IS Near → Aggression = 0.73

Плагін Fuzzy Logic реалізує систему логічного висновку Мамдані. Ви описуєте вхідні дані, виходи, мовні поняття та правила, а система перетворює поточні числові значення на плавні числові рішення.

Простий приклад

Нехай дрон знає відстань до реактора та власну цілісність:

IF Distance IS Near AND Integrity IS High THEN Aggression IS Aggressive
IF Distance IS Near AND Integrity IS Low  THEN Aggression IS Cautious
IF Distance IS Far                        THEN Aggression IS Watchful

Слова Near, High, Low, Aggressive мають математичний зміст: кожне з них є нечіткою множиною з функцією належності. Під час виконання система:

  1. обчислює, наскільки поточні входи належать кожній множині;
  2. визначає силу спрацювання кожного правила;
  3. поєднує наслідки правил в одну вихідну криву;
  4. перетворює криву на чітке число, наприклад Aggression = 0.73.

Цей процес називається фазифікація → правила → агрегація → дефазифікація.

Де це корисно

Нечітка логіка добре підходить для задач, де кілька неточних ознак мають утворити плавне рішення:

  • бойова поведінка AI: агресія, обережність, вибір дистанції;
  • керування транспортом: гальмування, тяга, зчеплення;
  • процедурні ефекти: інтенсивність погоди, освітлення, звуку;
  • оцінка ризику, пріоритету або якості;
  • поведінка натовпу й автономних агентів;
  • змішування анімацій або параметрів без різких переходів.

Нечітка система не замінює Behavior Tree, State Tree чи планувальник. Вона добре відповідає на запитання «наскільки?» і повертає керувальний параметр. Інша система вже вирішує, як використати це число.

Коли краще звичайна умова

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

Що дає плагін

  • повторно використовуваний UFuzzySystemAsset та inline-система в компоненті;
  • кілька входів і кілька виходів в одній системі;
  • дев’ять функцій належності та підтримка власних форм;
  • текстові правила IF / THEN, AND, OR, NOT, WITH;
  • налаштовувані норми, імплікація, агрегація й шість стратегій дефазифікації;
  • редактор із живими входами, силами правил, вихідними числами та графіками;
  • двонапрямний обмін між Data Asset і JSON;
  • повні діагностичні повідомлення;
  • Blueprint, C++ та UMG API.

Далі пройдіть 02 — Перші кроки, щоб зібрати першу систему без занурення в усю математику.