【发布时间】:2013-02-05 04:23:19
【问题描述】:
我正在使用 matlab 解决混合整数规划,在我从 linprog 获得解决方案后,我想评估它们是否都是整数(x 是 n 维),但我想不出办法做到这一点。
mod(x,1) == 0、isequal(x,floor(x))等所有函数都会给出错误的anwser。
更奇怪的是,如果你手动输入一个具有相同参数的向量,结果是正确的。
结果显示:(这里所有的x都是从linprog的结果中得到的)。任何人都可以对此提供帮助或提出一些其他有用的方法来评估它吗?
K>> x
x =
7.0000
1.0000
K>> mod(x,1)
ans =
0.0000
1.0000
K>> x
x =
6.0000
3.0000
K>> isequal(x,floor(x))
ans =
0
【问题讨论】:
-
似乎对我有用。您是否考虑过使用整数类型(int/uint 之一)而不是双精度类型来解决您的问题?
-
我也试过了,得到了我预期的结果。
-
是的,如果你手动输入x值,它可以工作,但如果它带有linprog的解决方案,它就不会工作。@LoremIpsum @robbit
-
那是因为来自 linprog 的数字并不是看起来的那样,请看我的回答。
-
为什么不直接将 linprog 的结果四舍五入。问题是你看到的 7.0000 实际上是 7.00000001 或类似的东西
标签: matlab