【发布时间】:2016-09-18 12:36:12
【问题描述】:
正如 MATLAB R2016 中提到的,我们在优化工具箱约束中有这种形式:A*x ≤ b。我如何在约束中定义一些东西:A*x < b?
【问题讨论】:
标签: matlab optimization mathematical-optimization genetic-algorithm
正如 MATLAB R2016 中提到的,我们在优化工具箱约束中有这种形式:A*x ≤ b。我如何在约束中定义一些东西:A*x < b?
【问题讨论】:
标签: matlab optimization mathematical-optimization genetic-algorithm
Polyhedron {x: A*x < b} 不再是一个封闭集,所以如果你需要在这个集合上找到一个函数的最大/最小值,它可能不属于这个集合,但是上定点/下定点总是存在的,例如对于线性(在事实上,任何凸)目标函数都与 {x:A*x ≤ b} 上的 max/min 相同,请检查 Weierstrass extreme value theorem。一种选择是设置一些容差 t 并优化 A*x ≤ b-t 并使用 sensitivity analysis 来查看解决方案的位置为 t -> 0。
【讨论】:
正如@serge_k 所说,如果您有严格的不等式约束,您希望将其表示为A*x <= b - t 以强制至少t 分离。在某些情况下会出现这种情况(例如,支持向量机解决 a'x+b >= 1 和 a'x +b <= -1' instead ofa'x+b > 0anda'x +b
也就是说,绝大多数情况下,严格与非严格的不等式确实无关紧要。如果你的约束是A*x<b 而A*x <= b 不行,你可能处于纯数学而不是数值计算的领域:浮点运算没有这么精确!
A*x - b = 10^-99999 很棒,但 A*x - b = 0 100% 错误的真实世界情况并不多?
【讨论】: