正如MATLAB R2016中所提到的,我们在优化工具箱约束中有这样的形式:A*x ≤ b
。如何在约束中定义一些内容:A*x < b
?
答案 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 >= 1
和a'x +b <= -1' instead of
a'x + b> 0 and
a'x + b <0'< / p>
那就是说,绝大多数时候,严格与非严格的不平等实际上并不重要。如果您的约束是A*x<b
而A*x <= b
不会做,那么您可能处于纯数学而非数值计算领域:浮点运算不是这么精确!
A*x - b = 10^-99999
很精彩,但A*x - b = 0
100%错误,并没有太多合理的现实世界情况?