Допуски и критерий остановки

Количество итераций в оптимизации зависит от stopping criteria решателя. Эти критерии включают несколько tolerances, которые можно задать. Обычно допуск является порогом, который, если его пересечь, останавливает итерации решателя.

Установите допуски и другие критерии с помощью optimoptions как описано в разделе «Задать и изменить опции».

Совет

Обычно устанавливайте такие допуски, как OptimalityTolerance и StepTolerance быть намного выше eps, и обычно выше 1e-14. Установка малых допусков не всегда приводит к точным результатам. Вместо этого решатель может не распознать, когда он сходится, и может продолжить бесполезные итерации. Значение допуска, меньшее eps эффективно отключает это условие остановки. Этот совет не применяется к fzero, которое использует значение по умолчанию eps для TolX допуск.

optimoptions отображает допуски. Для примера,

options = optimoptions('fmincon');
[options.OptimalityTolerance,options.FunctionTolerance,options.StepTolerance]
ans =

   1.0e-06 *

    1.0000    1.0000    0.0001

Допуски по умолчанию можно также найти в разделе options страницы с описанием функции решателя.

  • StepTolerance является нижней границей на размер шага, означающим норму (xi - x i + 1). Если решатель пытается сделать шаг, который меньше StepTolerance, итерации заканчиваются. StepTolerance обычно используется в качестве относительной границы, означая завершение итераций когда | (xi  - <reservedrangesplaceholder2> <reservedrangesplaceholder1> +1) | <StepTolerance* (1 + |<reservedrangesplaceholder0>|), или аналогичная относительная мера. См. раздел «Сведения о допуске».

  • Для некоторых алгоритмов FunctionTolerance - нижняя граница изменения значения целевой функции во время шага. Для этих алгоритмов, если |<reservedrangesplaceholder5>   (xi) - f (x i + 1) | < FunctionTolerance, итерации заканчиваются. FunctionTolerance обычно используется в качестве относительной границы, означая завершение итераций когда | f (<reservedrangesplaceholder4>)    - f (x <reservedrangesplaceholder1> +1) | <FunctionTolerance* (1 + |<reservedrangesplaceholder1> (xi) |), или аналогичная относительная мера. См. раздел «Сведения о допуске».

    Примечание

    В отличие от других решателей, fminsearch останавливается, когда удовлетворяет обоим TolFun (отклонение функции) и TolX (допуск шага).

  • OptimalityTolerance является погрешностью меры оптимальности первого порядка. Если мера оптимальности меньше OptimalityTolerance, итерации заканчиваются. OptimalityTolerance может также быть относительная граница в мере оптимальности первого порядка. См. раздел «Сведения о допуске». Мера оптимальности первого порядка определяется в мере оптимальности первого порядка.

  • ConstraintTolerance - верхняя граница величины любых ограничительных функций. Если решатель возвращает x точек с c (x ) > ConstraintTolerance или |<reservedrangesplaceholder2>   (x) | > ConstraintToleranceрешатель сообщает, что ограничения нарушаются на x. ConstraintTolerance может также быть относительной границей. См. раздел «Сведения о допуске».

    Примечание

    ConstraintTolerance работает по-другому по сравнению с другими допусками. Если ConstraintTolerance не удовлетворяется (т.е., если величина ограничительной функции превышает ConstraintTolerance), решатель пытается продолжить, если это не остановлено по другой причине. Решатель не останавливается просто потому, что ConstraintTolerance удовлетворен.

  • MaxIterations является привязкой к количеству итераций решателя. MaxFunctionEvaluations является привязкой к количеству вычислений функции. Итерации и вычисления функции обсуждаются в Итерациях и Подсчетах функций.

Существуют два других допусков, которые применяются к конкретным решателям: TolPCG и MaxPCGIter. Они относятся к предварительно обусловленным стадиям сопряженного градиента. Для получения дополнительной информации см. «Предварительно обусловленный сопряженный метод градиента».

Существует несколько допусков, которые применяются только к fmincon алгоритм внутренней точки. Для получения дополнительной информации см. «Алгоритм внутренней точки» в fmincon options.

Существует несколько допусков, которые применяются только к intlinprog. Смотрите Некоторые «Целочисленные» Решения не являются целыми числами и ветвями и границами.

Похожие темы