在编写目标函数和约束函数时要小心。中间迭代可能导致不可行的点(不满足约束)。如果您编写的目标或约束函数假设了可行性,这些函数可能会出错或给出意想不到的结果。
例如,如果你取一个平方根或对数x,x< 0,结果不真实。您可以通过设置来避免此错误0
作为一个下限x.然而,中间迭代可能会违反这个界限。
有些求解算法在每次迭代时都满足边界约束:
fmincon
内点
,sqp
,trust-region-reflective
算法
lsqcurvefit
trust-region-reflective
算法
lsqnonlin
trust-region-reflective
算法
fminbnd
请注意
如果将下界设置为上界,迭代就会违反这些约束。
以下求解器和算法可以在中间迭代时违反边界约束:
fmincon
有效集
算法
fgoalattain
解算器
fminimax
解算器
fseminf
解算器