2017-06-16 9 views
1

私はJulia-JuMPを使ってモデルを解こうとしています。以下は私が作成したモデルの概要です。ここで、z[i,j]はバイナリ変数であり、d[i,j]z[i,j]=1のコストです。 私の制約は無限の数の制約を作成するので、それを解決するために分離アルゴリズムを使用する必要があります。 まず、制約なしでモデルを解くので、すべての変数z[i,j]d[i,j]に対する答えはゼロです。 次に、私は分離アルゴリズムを含んでいます(これはif条件の内側にあります)。 if z_value == 0を含めても、z_valuesは渡されません。 このモデルの形式で何か不足していますか?Juliaで分離アルゴリズムを呼び出す

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)) ]") 

答えて

2

あなたは両方の変数であるdでZを乗算している、したがって、あなたのモデルは

はコストdは、非線形である[I、J]問題の変数は本当に定数または? もしそうなら、非線形ソルバを使う必要があります。

+0

d [i、j] sは定数です。したがって、モデルは線形です。 – ccc

+0

なぜ 'd'は変数であると宣言されていますか?あなたはあなたの質問の変数としてdの役割を記述しました。「すべての変数z [i、j]とd [i、j]に対する答えはゼロです。 – pkofod

関連する問題