Выбор правил объединения степеней¶
Вопрос: как объединить степени выполнения двух критериев — взять минимум или произведение? Ответ определяет правило объединения в вашей модели. Сначала оцените каждую физическую величину собственной функцией принадлежности, затем объедините безразмерные степени. При операциях над нечёткими множествами оба множества должны быть заданы на одном универсальном множестве.
Для двух степеней \(a,b\in[0,1]\) изображены следующие политики:
По горизонтали первая степень меняется от нуля до единицы, вторая фиксирована на 0.6. Слева минимум перестаёт расти при достижении 0.6, а произведение равно первой степени, умноженной на 0.6. Справа максимум не опускается ниже 0.6, а алгебраическая дизъюнкция непрерывно растёт до единицы. Эти правила задают нечёткие операции и не предполагают статистической независимости измерений.
from math import isclose
from fuzzyroutines import NegationPolicy, SNormPolicy, TNormPolicy
first, second = 0.4, 0.6
assert TNormPolicy("logic").Evaluate(first, second) == 0.4
assert isclose(TNormPolicy("algebraic").Evaluate(first, second), 0.24)
assert SNormPolicy("logic").Evaluate(first, second) == 0.6
assert isclose(SNormPolicy("algebraic").Evaluate(first, second), 0.76)
assert NegationPolicy("standard").Evaluate(first) == 0.6
print(0.4, 0.24, 0.6, 0.76)
Стандартное отрицание: \(N(a)=1-a\). Направленная разность использует конъюнкцию с отрицанием второй степени: для минимума \(\mu_{A\setminus B}(x)=\min(\mu_A(x),1-\mu_B(x))\). Это не обычное вычитание. Сценарий предупреждения показывает итоговую кривую. Исполняемые примеры граничной и радикальной альтернатив, параметрического и параболического отрицаний приведены в рецептах API.
Применение в проекте: сохраняйте выбранную политику с моделью и сравнивайте промежуточные степени до её смены. Произведение может существенно уменьшить результат AND; это не означает меньшую скорость или точность реализации. Выбор оператора определяет, как объединяются степени выполнения критериев.