Julia 什么功能适用于跳线阵列?

Julia 什么功能适用于跳线阵列?,julia,julia-jump,Julia,Julia Jump,是否有办法使某些函数(如isinteger()与JumpArray一起工作? 我使用Julia/JuMP来解决一个优化问题,在得到解决方案后,我想检查解决方案是否为整数。下面是我写的: @defVar(m, 0<= x[1:3] <= 1) ... xstar = getValue(x) if isinteger(xstar) ... end @defVar(m,0,因此通常您可以通过使用[:]从JuMPArray获取底层数组,例如 m = Model() @variable(

是否有办法使某些函数(如
isinteger()
与JumpArray一起工作? 我使用Julia/JuMP来解决一个优化问题,在得到解决方案后,我想检查解决方案是否为整数。下面是我写的:

@defVar(m, 0<= x[1:3] <= 1)
...
xstar = getValue(x)
if isinteger(xstar)
  ...
end

@defVar(m,0,因此通常您可以通过使用
[:]
JuMPArray
获取底层数组,例如

m = Model()
@variable(m, 0 <= x[1:3] <= 1)
@variable(m, 0 <= y[1:10, 1:10] <= 1)
solve(m)
xstar = getvalue(x)[:]
ystar = getvalue(y)[:,:]
为确保不会出现任何误报。如果变量被限制为整数或二进制,请使用
iround
,例如

for i in 1:3
    v = iround(getvalue(x[i]))
    if v == 1
        println("x[$i] is 1!")
    elseif v == 0
        println("x[$i] is 0!")
    end
end

但在本例中,您似乎只是看到解决方案是自然为0还是1。

实际上,我们建议使用
iround(x[i])
没有帮助!我仍然无法将
isinteger
xstar
一起使用。另外,请您参考一份文档,描述跳线阵列和Julia阵列之间的区别。关于
isinteger
函数,设置一个精确阈值,以便它能够将
0.9999
识别为
1
,这是不好的?类似于
isinteger(值、精度)
@mlubin在
iround
中,只有当它实际上是
Bin
时,它才会起作用,在这个例子中,它只是一个连续变量。@Ana
isinteger
可能应该有一个精确的参数-你可以在Julia GitHub页面上提出一个问题,建议这样做。据我所知,还没有一个文档描述这些差异,我们我已经重写了我的答案,希望能让事情变得更清楚。我试图在JuliaBox(julia 0.5)上运行,但是在
上如果iround(x_val[I,j,k])==1
我得到了错误
UndervarError:iround未定义
(删除iround(),至少在GLPK上是有效的)
for i in 1:3
    v = iround(getvalue(x[i]))
    if v == 1
        println("x[$i] is 1!")
    elseif v == 0
        println("x[$i] is 0!")
    end
end