迭代可能违反约束
中间迭代可能违反约束
编写目标函数和约束函数时一定要小心谨慎。中间迭代可能导致不可行点(不满足约束)。如果您编写假定可行的目标函数或约束函数,这些函数可能会出错或给出意外的结果。
例如,如果取 x 的平方根或对数且 x < 0,则结果不是实数。您可以尝试通过将 0 设置为 x 的下界避免此错误。然而,中间迭代可能违反此边界。
满足边界约束的算法
一些求解器算法在每次迭代时都满足边界约束:
fminconinterior-point、sqp和trust-region-reflective算法:lsqnonlin和lsqcurvefitfminbnd
注意
如果将下界设置为等于上界,迭代可能会违反这些约束。
可能违反边界约束的求解器和算法
以下求解器和算法可能在中间迭代中违反边界约束:
fminconactive-set算法fgoalattainfminimaxfseminf