主要内容

迭代可能会违反约束

中间迭代可能违反约束

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

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

满足约束条件的算法

有些求解器算法在每次迭代时都满足约束条件:

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

  • lsqnonlin而且lsqcurvefit

  • fminbnd

请注意

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

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

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

  • fmincon有效集算法

  • fgoalattain

  • fminimax

  • fseminf

相关的话题

Baidu
map