Открытый код · 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.

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

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