Открытый код · 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 позволяет явно задавать области определения и неизменяемые параметры вычислений, а также проверять результаты. Для существующих приложений сохранены совместимые исторические импорты.

Численные объекты библиотеки намеренно остаются читаемыми: функции показывают свои параметры, нечёткие множества — интервалы носителя, а шкалы — лингвистические уровни. Это полезно в задачах, где результат требуется проверить, а не получить из непрозрачной модели.

Ссылки проекта