我正在使用R并使用模型$ vtype< - " B"运行Gurobi优化其中结果$ x的所有元素都是数字和二进制
由于某种原因,我的一个结果变量应该等于1,当我测试它时,它不等于1。请参阅控制台中的以下内容:
Browse[2]> result$x
[1] 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
[90] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[179] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
Browse[2]> result$x[15]
[1] 1
Browse[2]> result$x[15]==1
[1] FALSE
当我测试它们是否等于1时,结果$ x的所有8个等于1的所有其他元素成功等于TRUE,它只是引起问题的第15个元素。
为什么会出现这种情况?我使用二进制变量类型,所以我不知道如何1!= 1
其他可能相关的信息:
Browse[2]> is.numeric(result$x[15])
[1] TRUE
Browse[2]> typeof(result$x[15])
[1] "double"
Browse[2]> which(result$x==1)
[1] 10 33 48 81 127 133 151 198
要求提供更多信息:
Browse[2]> typeof(result$x)
[1] "double"
当我将它转换为整数时,由于某种原因,第15个元素变为0
而不是1 ..任何人都可以解释为什么会发生这种情况以及我应该如何正确调整它?见下文:
as.integer(result$x)
[1] 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
[90] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
[179] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
由于