是否存在始终满足线性约束的fmincon算法?

Wil*_*ill 5 matlab mathematical-optimization

我正在尝试使用相当复杂的目标函数在Matlab中执行约束线性优化.这个目标函数会产生不符合我定义的线性不等式约束的输入值的误差.我知道有一些算法在每次迭代时都强制严格遵守边界,但有没有人知道在每次迭代时强制严格遵守线性(不等式)约束的任何算法(或其他机制)?

我可以让我的目标函数在任何这样的点返回零,但我担心引​​入大的不连续性.

Dan*_*Man 0

如果Matlab不适合你,你可以自己实现所谓的内点惩罚法[你需要改变你的目标函数]。请参阅方程 (1) 和 (2) [来自维基百科页面]。请注意,通过使用内部障碍,当 x 接近约束 [c(x) 接近零]时,惩罚会发散。该解决方案处理不等式约束。还可以控制mu超时的值。最好的解决方案是假设 mu 随着时间的推移而减小。这意味着您需要处理一系列优化。如果 mu 不为零,则解总是会受到影响。此外,请注意,使用此方法您的问题不再是线性的。

在等式约束的情况下,唯一简单(且通用)的处理方法是直接使用约束方程。例如,X1+x2+x3=3。将其重写为 x1=3-x2-x3 并用它替换所有其他方程中 x1 的值。由于您的系统是线性的,因此它应该可以工作。