Явные операции над нечёткими множествами¶
- Статус: исполняемый контракт задач #71, #72 и #74
- Связанные ADR: ADR-0004 и ADR-0008
- Публичный модуль:
fuzzyroutines.fuzzysets
Представление множества¶
ScalarFuzzySet — упорядоченная пара
A = (X, mu_A)
mu_A: X -> [0, 1]
где X — явное ContinuousUniverse или DiscreteUniverse. Вычисление принадлежности
отклоняет координаты вне X, а также логические, неконечные и выходящие за диапазон
степени принадлежности, не преобразуя их.
Поля объекта-значения неизменяемы. Операция строит новый вычислитель принадлежности на том же универсальном множестве и не меняет ни один операнд. При пользовательском вычислителе вызывающий отвечает за возможность повторного входа и отсутствие внешне изменяемой семантики.
Совместимость универсальных множеств¶
Бинарные операции требуют точного равенства универсальных множеств: значений непрерывных границ, их включения, вида представления и дискретных точек. Начальный API не выводит объединение, пересечение, сетку пересэмплирования или преобразование координат разных областей. Такое согласование было бы отдельной математической операцией со своей политикой.
Дополнение¶
При явно заданном отрицании N дополнение вычисляется поточечно:
mu_complement(A)(x) = N(mu_A(x))
NegationPolicy поддерживает только семейства, принятые в ADR-0004:
standard:N(x) = 1 - x, без параметра;parametric: историческое кусочно-линейное сильное отрицание с явнымalphaиз(0, 1);parabolic: принятая аналитическая ветвь с явнымalphaиз[1/4, 3/4].
Нет значения по умолчанию или общей для процесса настройки отрицания.
Даже стандартное дополнение требуется запросить через NegationPolicy("standard").
Пересечение и объединение¶
При явно заданных t-норме T и s-норме S:
mu_intersection(A, B)(x) = T(mu_A(x), mu_B(x))
mu_union(A, B)(x) = S(mu_A(x), mu_B(x))
TNormPolicy и SNormPolicy принимают logic, algebraic, boundary и drastic.
Формулы точно соответствуют ADR-0004. Ни Intersection, ни Union не имеют скрытого семейства по умолчанию.
Направленная разность¶
Разность — пересечение с явно выбранным дополнением правого операнда:
mu_Difference(A, B)(x) = T(mu_A(x), N(mu_B(x)))
Поэтому Difference требует и TNormPolicy, и NegationPolicy.
Универсальные множества операндов должны точно совпадать; результат сохраняет эту область.
Операция направленна и не меняет ни один операнд.
Стандартное отрицание и логическая t-норма воспроизводят классическую разность для чётких
степеней принадлежности. Произвольные нечёткие степени сохраняют семантику выбранных операторов;
в частности, пустота Difference(A, A) не гарантируется. ADR-0008 не определяет симметрическую
разность: композиция двух направленных разностей требует ещё и s-нормы и не сохраняет
все классические законы при произвольных политиках операторов.
Пример¶
from fuzzyroutines import (
Complement,
ContinuousUniverse,
Difference,
Intersection,
NegationPolicy,
ScalarFuzzySet,
SNormPolicy,
TNormPolicy,
Union,
)
universe = ContinuousUniverse(0.0, 1.0, leftClosed=True, rightClosed=True)
increasingSet = ScalarFuzzySet(universe, lambda coordinate: coordinate)
decreasingSet = Complement(increasingSet, NegationPolicy("standard"))
overlap = Intersection(increasingSet, decreasingSet, TNormPolicy("logic"))
envelope = Union(increasingSet, decreasingSet, SNormPolicy("logic"))
directedDifference = Difference(
increasingSet,
decreasingSet,
TNormPolicy("logic"),
NegationPolicy("standard"),
)
Проверенные законы¶
Исполняемые тесты свойств охватывают все четыре принятые пары двойственных семейств:
- замкнутость в
[0, 1]; - коммутативность;
- ассоциативность;
- нейтральный элемент t-нормы
T(x, 1) = x; - нейтральный элемент s-нормы
S(x, 0) = x; - оба закона де Моргана при стандартном отрицании;
- эквивалентность направленной разности
T(mu_A(x), N(mu_B(x))); - совместимость с чёткими множествами, направленность и явное отклонение несовместимых универсальных множеств или отсутствующих политик.
Современные скалярные политики также сравниваются с защищёнными историческими скалярными функциями на детерминированной контрольной сетке. Равенство и включение используют отдельный контракт с явной ошибкой при неподдерживаемом запросе, описанный в главе «Равенство и включение нечётких множеств». Контрольные сетки операторов не переиспользуются неявно как области сравнения.
Источники¶
- L. A. Zadeh, “Fuzzy Sets,” Information and Control, 8(3), 338–353,
- https://doi.org/10.1016/S0019-9958(65)90241-X
- E. P. Klement, R. Mesiar, and E. Pap, Triangular Norms, Springer, 2000. https://doi.org/10.1007/978-94-015-9540-7