Количество итераций в оптимизации зависит от 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
. Смотрите Некоторые «Целочисленные» Решения не являются целыми числами и ветвями и границами.