Центроидная дефаззификация¶
Контракт¶
Для непрерывного скалярного нечёткого множества \(A\) и явной конечной области интегрирования \(D=[l,r]\) FuzzyRoutines определяет центроид как
Область интегрирования — рабочий вход операции, а не математическое множество поддержки.
Она должна находиться внутри объявленного ContinuousUniverse.
При нулевом или неконечном знаменателе центроид не определён и возникает ValueError.
Пути вычисления¶
Centroid выбирает метод по аналитическим сведениям, связанным с вычислителем принадлежности:
| Источник принадлежности | Метод |
|---|---|
| Triangle, trapezium, parabolic, bell | Аналитические площадь и первый момент кусочно-полиномиальной функции |
| Экспоненциальная функция гауссовой формы | Аналитическая площадь через erf/erfc и устойчивая разность экспонент на границах |
| Другие аналитические семейства или произвольный вычислитель | Детерминированное адаптивное интегрирование Симпсона для площади и первого момента |
Гауссов путь использует дополнительные функции ошибок для хвостов по одну сторону от центра. При \(u=(l-c)/s\) и \(v=(r-c)/s\), где \(c\) — центр, а \(s\) — положительный масштаб, стандартизованная площадь равна
Площадь составляет \(sI\), а центроид — \(c+s(e^{-u^2/2}-e^{-v^2/2})/I\).
Разность на границах использует expm1, чтобы сохранять точность при близких экспонентах.
Это позволяет избежать вычитания двух значений erf, уже округлённых почти к единице.
Перед использованием аналитического результата оценка первого порядка погрешностей
нормирования и округления специальных функций должна укладываться в relativeTolerance
вызывающего. Это проверка выбора метода, а не точный сертификат погрешности.
Неположительная или неконечная площадь, неконечные моменты, численно неразрешимое вычитание
или аналитический центроид вне области передают вычисление адаптивному интегрированию
с той же политикой. Результаты не обрезаются до границы, и ни один путь не переходит
неявно к фиксированной сетке выборки.
Точность и ошибки¶
CentroidPolicy задаёт адаптивную конфигурацию одной операции. По умолчанию абсолютный
допуск площади равен 1e-12, относительный — 1e-10, а предел рекурсивных делений
каждого интервала пополам равен 20. Абсолютная целевая погрешность первого момента
масштабируется наибольшим модулем координаты области. Это цели для погрешностей моментов,
а не прямая граница погрешности центроида. Если малые веса принадлежности вызывают
переход с гауссова аналитического пути, вызывающий может явно уменьшить абсолютный допуск,
чтобы он не преобладал над требуемой относительной точностью.
Адаптивное интегрирование выбрасывает CentroidConvergenceError, если заданная глубина
не позволяет выполнить обе цели для моментов. Увеличение предела — явное решение вызывающего;
при неудаче наилучшая промежуточная оценка не возвращается как сошедшаяся.
Произвольные вычислители предполагаются достаточно регулярными для адаптивной квадратуры. Никакая конечная выборка «чёрного ящика» не обнаружит особенность, расположенную между всеми координатами вычисления. Для такой функции принадлежности необходимо аналитическое семейство либо будущий контракт с явным разбиением области.
Фасад совместимости¶
FuzzySet.Defuz() и defuzValue делегируют одной стратегии при каждом доступе.
Поэтому они учитывают текущие параметры функции принадлежности и текущие границы
интегрирования supportSet, не сохраняя кэш центроида.
MFunction.accuracy остаётся доступным для записи ради совместимости исходного кода,
но больше не управляет корректностью или объёмом работы. Результаты удалённого метода
правых прямоугольников на 1000 точках сохраняются как происхождение тестовых данных:
для контрольных случаев задачи #78 объявлена абсолютная граница совместимости 5e-4.
Проверяемые свидетельства¶
tests/test_defuzzification.pyпокрывает независимые аналитические эталоны, адаптивную сходимость, явную несходимость, проверку области, изменения параметров, узкие аналитические множества и множества с малыми степенями принадлежности;tests/test_legacy_centroid_reference.pyсохраняет наблюдения удалённого алгоритма независимо от рабочего кода;tests/test_numerical_edge_policy.pyпроверяет явную ошибку при нулевой площади.
Определяющие решения: ADR-0002 и ADR-0005.
Источники¶
- W. Van Leekwijck and E. E. Kerre, “Defuzzification: Criteria and Classification,” Fuzzy Sets and Systems, 108(2), 159–178, 1999. https://doi.org/10.1016/S0165-0114(97)00337-0