我使用glpk求解器获取xmin中最小化问题的LP变量值。 xmin是包含0,1和一些小数值的向量。然后我想得到它们之间的小数值。
frac_value = find (xmin > 0 & xmin < 1)
frac_value_xmin = xmin(frac_value)
frac_value
应该给我xmin的小数值位置。 frac_value_xmin
应该给我价值。
对于某些输入xmin
只包含0
和1
,并且它显示没有小数值。比如xmin= 1 0 -0 1 0
但是对于某些输入,xmin
也会显示仅包含0
和1
的值,但如下所示
xmin =
1.00000
1.00000
0.00000
-0.00000
在find
操作后,它会返回frac_value = 3
和frac_value_xmin = 2.4652e-32
,它会返回任何内容。
对于某些输入xmin = 1.0000 0.50000 0.00000 0.50000
,它也会显示正确的输出。适用于frac_value = 2 4
和frac_value_xmin = 0.50000 0.50000
我尝试了frac_value = intersect(find(xmin>0), find(xmin<1))
,这也给了我同样的问题。我不知道为什么会这样。任何有关这方面的帮助将不胜感激。
答案 0 :(得分:1)
没有必要使用find
,你可以直接做一些逻辑索引:
frac_value_xmin = xmin(xmin>0 & xmin<1);
最佳,
答案 1 :(得分:1)
您需要阅读What Every Programmer Should Know About Floating-Point Arithmetic。
如果您执行x > 0 & x < 1
,您当然会获得值0.000000000000000
的值,例如2.4652e-31
。那些大于0且小于1.您需要重新考虑您的计算(您不会向我们提供任何有关它的详细信息)或您的比较。