🧮 FuzzyRoutines
Открытый код · Python · Нечёткая математика
FuzzyRoutines — компактная Python-библиотека для явных и проверяемых нечётких вычислений.
Она предоставляет математические компоненты для функций принадлежности, нечётких множеств, лингвистических шкал, дефаззификации и основных операторов нечёткой логики. Проект рассчитан на исследования, обучение, экспертные системы и инженерные прототипы, в которых ход вычислений должен оставаться понятным.
Основные возможности
Функции принадлежности
Гиперболическая, колоколообразная, параболическая, треугольная, экспоненциальная, сигмоидальная, функция желательности и трапециевидная функция с явными параметрами.
Нечёткие множества и дефаззификация
Нечёткое множество объединяет функцию принадлежности с интервалом носителя и позволяет получить численный результат дефаззификации.
Лингвистические шкалы
Можно создавать упорядоченные нечёткие шкалы или использовать готовую универсальную шкалу Min–Low–Med–High–Max для интерпретации нормированных значений.
Операторы нечёткой логики
Нечёткие NOT, AND/OR, T-нормы, S-конормы и функции композиции для наборов из нескольких нечётких значений.
Установка и первый пример
Установка опубликованного пакета из PyPI:
python -m pip install fuzzyroutines==2.0.0
Создайте небольшую лингвистическую шкалу и классифицируйте температуру:
from fuzzyroutines import (
ContinuousUniverse, LinguisticScale, LinguisticTerm, ScalarFuzzySet, Triangle,
)
universe = ContinuousUniverse(0, 40, True, True)
scale = LinguisticScale((
LinguisticTerm("Comfort", ScalarFuzzySet(universe, Triangle(16, 22, 28))),
))
result = scale.Fuzzify(24)
print(result.selectedTerms[0].name) # Comfort
Для работы с текущей версией репозитория:
git clone https://github.com/Fuzzy-Technologies/FuzzyRoutines.git
cd FuzzyRoutines
python -m pip install .
Состояние проекта
FuzzyRoutines распространяется под лицензией Apache-2.0. Стабильная версия в PyPI — 2.0.0; поддерживаются CPython 3.13 и 3.14, обязательных зависимостей нет. Современный скалярный API позволяет явно задавать области определения и неизменяемые параметры вычислений, а также проверять результаты. Для существующих приложений сохранены совместимые исторические импорты.
Численные объекты библиотеки намеренно остаются читаемыми: функции показывают свои параметры, нечёткие множества — интервалы носителя, а шкалы — лингвистические уровни. Это полезно в задачах, где результат требуется проверить, а не получить из непрозрачной модели.