主要内容

迭代会违反约束

中间迭代会违反约束

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

例如,如果你取一个平方根或对数x,x< 0,结果不真实。您可以通过设置来避免此错误0作为一个下限x.然而,中间迭代可能会违反这个界限。

满足约束条件的算法

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

  • fmincon内点sqp,trust-region-reflective算法

  • lsqcurvefittrust-region-reflective算法

  • lsqnonlintrust-region-reflective算法

  • fminbnd

请注意

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

可以违反约束的求解器和算法

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

  • fmincon有效集算法

  • fgoalattain解算器

  • fminimax解算器

  • fseminf解算器

相关的话题