Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

迭代可能违反约束

中间迭代可能违反约束

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

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

满足边界约束的算法

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

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

  • lsqcurvefit trust-region-reflective 算法

  • lsqnonlin trust-region-reflective 算法

  • fminbnd

注意

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

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

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

  • fmincon active-set 算法

  • fgoalattain 求解器

  • fminimax 求解器

  • fseminf 求解器

相关主题