Будьте осторожны при написании ваших объективных и ограничительных функций. Промежуточные итерации могут привести к точкам, которые недопустимы (не удовлетворяют ограничениям). Если вы записываете целевые или ограничительные функции, которые предполагают допустимость, эти функции могут ошибиться или дать неожиданные результаты.
Например, если взять квадратный корень или логарифм x, и x < 0, результат не является реальным. Можно попытаться избежать этой ошибки, задав 0
как нижняя граница для x. Тем не менее, промежуточная итерация может нарушить эту границу.
Некоторые алгоритмы решателя удовлетворяют связанным ограничениям при каждой итерации:
fmincon
interior-point
, sqp
, и trust-region-reflective
алгоритмы
lsqcurvefit
trust-region-reflective
алгоритм
lsqnonlin
trust-region-reflective
алгоритм
fminbnd
Примечание
Если вы задаете нижнюю границу, равную верхней, итерации могут нарушить эти ограничения.
Следующие решатели и алгоритмы могут нарушать ограничения в промежуточных итерациях:
fmincon
active-set
алгоритм
fgoalattain
решатель
fminimax
решатель
fseminf
решатель