Optimization 在Julia中调用分离算法

Optimization 在Julia中调用分离算法,optimization,julia,julia-jump,Optimization,Julia,Julia Jump,我试图用Julia JuMP解一个模型。下面是我创建的模型的概要。这里,z[i,j]是一个二进制变量,d[i,j]是z[i,j]=1的成本。 我的约束创建了无限多个约束,因此我需要使用分离算法来解决它。 首先,我在没有任何约束的情况下求解模型,因此所有变量z[I,j]和d[I,j]的答案都是零。 然后,我将包括分离算法(在if条件中给出)。即使我在z_值==0时包含,z_值也不会传递给它。 这个模型的格式有什么遗漏吗 m = Model(solver=GurobiSolver()) @vari

我试图用Julia JuMP解一个模型。下面是我创建的模型的概要。这里,
z[i,j]
是一个二进制变量,
d[i,j]
z[i,j]=1的成本。
我的约束创建了无限多个约束,因此我需要使用分离算法来解决它。
首先,我在没有任何约束的情况下求解模型,因此所有变量
z[I,j]
d[I,j]
的答案都是零。 然后,我将包括分离算法(在if条件中给出)。即使我在z_值==0时包含
,z_值也不会传递给它。
这个模型的格式有什么遗漏吗

m = Model(solver=GurobiSolver())

@variable(m, z[N,N], Bin)
@variable(m, d[N,N]>=0)

@objective(m, Min, sum{ d[i,j]*z[i,j], i in N, j in N} )

z_value = getvalue(z)
d_value = getvalue(d)

if z_value == 0
    statement
elseif z_value == 1 
  statement
end

@constraint(m, sum{z[i,j], i in N, j in N}>=2)

solve(m)

println("Final solution: [ $(getvalue(z)), $(getvalue(d)) ]")

你将z乘以d,两者都是变量,因此你的模型是非线性的

成本d[i,j]是常数还是问题的变量?
如果是这样,您需要使用非线性解算器

d[i,j]s是常数。所以这个模型是线性的。那么为什么
d
被声明为一个变量呢?你甚至在你的问题中将
d
描述为一个变量:“所以所有变量z[i,j]和d[i,j]的答案都是零。”