如何在MATLAB优化工具箱中定义不等约束?

时间:2016-05-21 07:54:32

标签: matlab optimization mathematical-optimization genetic-algorithm

正如MATLAB R2016中所提到的,我们在优化工具箱约束中有这样的形式:A*x ≤ b。如何在约束中定义一些内容:A*x < b

2 个答案:

答案 0 :(得分:2)

多面体{x: A*x < b}不再是闭集,所以如果你需要找到一个函数的最大值/最小值,它可能不属于这个集合,但是suprimum / infimum总是存在,例如对于线性(实际上,任何凸的)目标函数与{x:A*x ≤ b}上的最大值/分钟相同,请检查Weierstrass extreme value theorem。一种选择是设置一些容差t并优化A*x ≤ b-t并使用sensitivity analysis查看解决方案的位置为t -> 0

答案 1 :(得分:1)

正如@serge_k所说,如果您有严格的不等式约束,您希望将其表示为A*x <= b - t以强制至少t分离。在某些情况下,合理地出现这种情况(例如,支持向量机解决a'x+b >= 1a'x +b <= -1' instead of a'x + b> 0 and a'x + b <0'< / p>

那就是说,绝大多数时候,严格与非严格的不平等实际上并不重要。如果您的约束是A*x<bA*x <= b不会做,那么您可能处于纯数学而非数值计算领域:浮点运算不是这么精确!

A*x - b = 10^-99999很精彩,但A*x - b = 0 100%错误,并没有太多合理的现实世界情况?