Экспертная система нечёткого вывода (Fuzzy Inference System, метод Мамдани), рассчитывающая мощность обогревателя на основе трёх показаний датчиков: температуры, влажности и времени суток.
Входные лингвистические переменные:
- Температура, 0–40°C: {холодно, умеренно, жарко}
- Влажность, 0–100%: {низкая, средняя, высокая}
- Время суток, 0–23ч: {ночь, утро, день, вечер}
Выходная переменная: мощность обогревателя, 0–100%: {низкая, средняя, высокая}
База правил: полный комбинаторный перебор — 3 × 3 × 4 = 36 правил, охватывающих все сочетания входных термов (например: «холодно + низкая влажность + ночь → высокая мощность»; «жарко + любая влажность + любое время → низкая мощность»).
Задача решена тремя способами — от библиотеки к разбору алгоритма вручную:
fuzzy_heating_control_final.ipynb— основная версия наscikit-fuzzy: треугольные функции принадлежности,ctrl.ControlSystemиз 36 правил, вывод Мамдани, сравнение 5 методов дефаззификации (centroid, bisector, MOM, SOM, LOM) на конкретном сценарии (T=8°C, влажность=85%, время=22:00).manual_numpy_implementation.ipynb— та же система (36 правил, те же функции принадлежности), но реализованная вручную на NumPy, безscikit-fuzzy: фаззификация через интерполяцию, агрегирование правил черезmin/max, 4 метода дефаззификации написаны как отдельные функции. Показывает понимание алгоритма изнутри, а не только использование готового инструмента.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.ipynbPython, scikit-fuzzy, NumPy, Matplotlib, Pandas