Main Content

迭代可能违反约束

中间迭代可能违反约束

编写目标函数和约束函数时一定要小心谨慎。中间迭代可能导致不可行点(不满足约束)。如果您编写假定可行的目标函数或约束函数,这些函数可能会出错或给出意外的结果。

例如,如果取 x 的平方根或对数且 x < 0,则结果不是实数。您可以尝试通过将 0 设置为 x 的下界避免此错误。然而,中间迭代可能违反此边界。

满足边界约束的算法

一些求解器算法在每次迭代时都满足边界约束:

  • fmincon interior-pointsqptrust-region-reflective 算法:

  • lsqnonlinlsqcurvefit

  • fminbnd

注意

如果将下界设置为等于上界,迭代可能会违反这些约束。

可能违反边界约束的求解器和算法

以下求解器和算法可能在中间迭代中违反边界约束:

  • fmincon active-set 算法

  • fgoalattain

  • fminimax

  • fseminf

相关主题