【问题标题】:Getting incorrect values in JuMP在 JuMP 中获取不正确的值
【发布时间】:2018-06-11 01:42:30
【问题描述】:

以下代码运行正常。但是,当我调用结果时,其中一个变量(utilizado)返回了不正确的值,只有零。我知道我做错了什么,但我不知道在哪里。

using JuMP, Clp
m = Model(solver = ClpSolver())
@variable(m, utilizado[i=1:3] >= 0)
@variable(m, resultado[j=1:2] >= 0)
custo = [90, 120]
disponivel = [8, 6, 5]
matriz= [0.20 0.30;
     0.20 0.25;
     0.15 0.10]
@objective(m, Min, dot(custo, resultado))
@constraint(m,  [i=1:3], sum(matriz[i,j] * resultado[j] for j=1:2) >= 
disponivel[i])
print(m)

status = solve(m)
println("Objective value: ", getobjectivevalue(m))
println("Resultado: ", getvalue(resultado))
println("Resultado: ", getvalue(utilizado))   

【问题讨论】:

  • utilizado 既没有出现在目标中,也没有出现在约束中。这是正确的吗?
  • @matb 你是对的。我没有将utilizado 分配给约束,我分配它并添加一个disponivel 作为变量的下限,它可以工作。最后的约束是:@constraint(m, [i=1:3], sum(matriz[i,j] * resultado[j] for j=1:2) == utilizado[i]) 和变量:@variable(m, utilizado[i=1:3] >= disponivel[i])

标签: julia getvalue julia-jump


【解决方案1】:

最后的代码是:

using JuMP, Clp
m = Model(solver = ClpSolver())

custo = [90, 120]
disponivel = [8, 6, 5]
matriz= [0.20 0.30;
     0.20 0.25;
     0.15 0.10]

@variable(m, utilizado[i=1:3] >= disponivel[i])
@variable(m, resultado[j=1:2] >= 0)

@objective(m, Min, dot(custo, resultado))
@constraint(m,  [i=1:3], sum(matriz[i,j] * resultado[j] for j=1:2) == utilizado[i])
print(m)
status = solve(m)
println("Objective value: ", getobjectivevalue(m))
println("Resultado: ", getvalue(resultado))
println("Utilizado: ", getvalue(utilizado))

【讨论】:

    猜你喜欢
    • 2015-04-23
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    相关资源
    最近更新 更多