🧮 FuzzyRoutines
Открытый код · Python · Нечёткая математика
FuzzyRoutines — компактная Python-библиотека для явных и проверяемых нечётких вычислений.
Она предоставляет математические компоненты для функций принадлежности, нечётких множеств, лингвистических шкал, дефаззификации и основных операторов нечёткой логики. Проект рассчитан на исследования, обучение, экспертные системы и инженерные прототипы, в которых ход вычислений должен оставаться понятным.
Основные возможности
Функции принадлежности
Гиперболическая, колоколообразная, параболическая, треугольная, экспоненциальная, сигмоидальная, функция желательности и трапециевидная функция с явными параметрами.
Нечёткие множества и дефаззификация
Нечёткое множество объединяет функцию принадлежности с интервалом носителя и позволяет получить численный результат дефаззификации.
Лингвистические шкалы
Можно создавать упорядоченные нечёткие шкалы или использовать готовую универсальную шкалу Min–Low–Med–High–Max для интерпретации нормированных значений.
Операторы нечёткой логики
Нечёткие NOT, AND/OR, T-нормы, S-конормы и функции композиции для наборов из нескольких нечётких значений.
Установка и первый пример
Установка опубликованного пакета из PyPI:
pip install fuzzyroutines
Создание универсальной нечёткой шкалы и классификация нормированного значения:
from fuzzyroutines.FuzzyRoutines import UniversalFuzzyScale
scale = UniversalFuzzyScale()
result = scale.Fuzzy(0.7)
print(result["name"])
Для работы с текущей версией репозитория:
git clone https://github.com/Fuzzy-Technologies/FuzzyRoutines.git
cd FuzzyRoutines
python -m pip install .
Состояние проекта
FuzzyRoutines — открытый проект со статусом Beta под лицензией MIT. В репозитории сейчас объявлена линия разработки 2.0.0.dev0, для которой модернизируется сборка и публикация пакета. Первый этап этой работы сохраняет существующую структуру исполняемого кода, математическое поведение и публичный API. Последний опубликованный тег — 1.0.3.
Численные объекты библиотеки намеренно остаются читаемыми: функции показывают свои параметры, нечёткие множества — интервалы носителя, а шкалы — лингвистические уровни. Это полезно в задачах, где результат требуется проверить, а не получить из непрозрачной модели.