Skip to content

Repository files navigation

Система нечёткого управления мощностью обогревателя

Экспертная система нечёткого вывода (Fuzzy Inference System, метод Мамдани), рассчитывающая мощность обогревателя на основе трёх показаний датчиков: температуры, влажности и времени суток.

Постановка задачи

Входные лингвистические переменные:

  • Температура, 0–40°C: {холодно, умеренно, жарко}
  • Влажность, 0–100%: {низкая, средняя, высокая}
  • Время суток, 0–23ч: {ночь, утро, день, вечер}

Выходная переменная: мощность обогревателя, 0–100%: {низкая, средняя, высокая}

База правил: полный комбинаторный перебор — 3 × 3 × 4 = 36 правил, охватывающих все сочетания входных термов (например: «холодно + низкая влажность + ночь → высокая мощность»; «жарко + любая влажность + любое время → низкая мощность»).

Реализация

Задача решена тремя способами — от библиотеки к разбору алгоритма вручную:

  1. fuzzy_heating_control_final.ipynb — основная версия на scikit-fuzzy: треугольные функции принадлежности, ctrl.ControlSystem из 36 правил, вывод Мамдани, сравнение 5 методов дефаззификации (centroid, bisector, MOM, SOM, LOM) на конкретном сценарии (T=8°C, влажность=85%, время=22:00).
  2. manual_numpy_implementation.ipynb — та же система (36 правил, те же функции принадлежности), но реализованная вручную на NumPy, без scikit-fuzzy: фаззификация через интерполяцию, агрегирование правил через min/max, 4 метода дефаззификации написаны как отдельные функции. Показывает понимание алгоритма изнутри, а не только использование готового инструмента.
  3. early_draft_humidifier_18rules.ipynb — более ранний черновик той же идеи для другого сценария (управление увлажнителем воздуха), с неполной базой из 18 правил. Оставлен в репозитории, чтобы показать прогресс: от частичного правила к полному комбинаторному покрытию.

Пример работы

При входе «температура 8°C, влажность 85%, время 22:00» система активирует правило для сочетания «холодно + высокая влажность + вечер», агрегирует функции принадлежности и вычисляет мощность обогревателя пятью методами дефаззификации, показывая, как выбор метода влияет на итоговое управляющее решение.

Файлы

  • fuzzy_heating_control_final.ipynb — основная реализация (scikit-fuzzy, 36 правил)
  • manual_numpy_implementation.ipynb — ручная реализация на NumPy (та же система)
  • early_draft_humidifier_18rules.ipynb — ранний черновик (18 правил, другой сценарий)
  • images/ — графики функций принадлежности, агрегирования и сравнения методов дефаззификации

Как запустить

pip install -r requirements.txt
jupyter notebook fuzzy_heating_control_final.ipynb

Стек

Python, scikit-fuzzy, NumPy, Matplotlib, Pandas

About

Система нечёткого управления Мамдани (36 правил): scikit-fuzzy + ручная реализация на NumPy

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages