-
Notifications
You must be signed in to change notification settings - Fork 9
Closed
Description
import MathOptInterface
const MOI = MathOptInterface
import JuMP
import CSDP
m = JuMP.Model(CSDP.Optimizer)
JuMP.@variable(m, x[1:2] >= 0)
JuMP.@constraint(m, x[1] + 2*x[2] == 1.0)
JuMP.@objective(m, Min, 3*x[1]^2 + 4*x[2]^2 + 2*x[1]*x[2] + 5*x[1] + x[2])
JuMP.optimize!(m)
julia> print(m.moi_backend)
Minimize ScalarQuadraticFunction{Float64}:
0.0 + 5.0 x[1] + 1.0 x[2] + 3.0 x[1]² + 4.0 x[2]² + 2.0 x[2]*x[1]
Subject to:
ScalarAffineFunction{Float64}-in-EqualTo{Float64}
0.0 + 1.0 x[1] + 2.0 x[2] == 1.0
VariableIndex-in-GreaterThan{Float64}
x[1] >= 0.0
x[2] >= 0.0
m_ = MOI.Utilities.CachingOptimizer(
MOI.Utilities.Model{Float64}(),
CSDP.Optimizer(),
)
MOI.Utilities.reset_optimizer(m_)
MOI.Utilities.attach_optimizer(m_)
x = MOI.add_variables(m_, 2)
MOI.add_constraint(m_, x[1], MOI.GreaterThan(0.0))
MOI.add_constraint(m_, x[2], MOI.GreaterThan(0.0))
MOI.add_constraint(m_,
MOI.ScalarAffineFunction([MOI.ScalarAffineTerm(1.0, x[1]), MOI.ScalarAffineTerm(2.0, x[2])], 0.0),
MOI.EqualTo(1.0)
)
MOI.set(m_, MOI.ObjectiveFunction{MOI.ScalarQuadraticFunction{Float64}}(),
MOI.ScalarQuadraticFunction(
[MOI.ScalarQuadraticTerm(6.0, x[1], x[1]), MOI.ScalarQuadraticTerm(8.0, x[2], x[2]), MOI.ScalarQuadraticTerm(2.0, x[1], x[2])],
[MOI.ScalarAffineTerm(5.0, x[1]), MOI.ScalarAffineTerm(1.0, x[2])],
0.0,
)
)
MOI.set(m_, MOI.ObjectiveSense(), MOI.MIN_SENSE)
MOI.optimize!(m_)
ERROR: KeyError: key MathOptInterface.VariableIndex(1) not found
Stacktrace:
[1] getindex
@ .julia\packages\MathOptInterface\Ohzb2\src\Utilities\CleverDicts.jl:171 [inlined]
[2] getindex
@ .julia\packages\MathOptInterface\Ohzb2\src\Utilities\copy\index_map.jl:64 [inlined]
[3] copy_to(dest::CSDP.Optimizer, src::MathOptInterface.Utilities.Model{Float64})
@ CSDP .julia\packages\CSDP\4LfHL\src\MOI_wrapper.jl:300
[4] optimize!
@ .julia\packages\MathOptInterface\Ohzb2\src\MathOptInterface.jl:86 [inlined]
[5] optimize!(m::MathOptInterface.Utilities.CachingOptimizer{CSDP.Optimizer, MathOptInterface.Utilities.Model{Float64}})
@ MathOptInterface.Utilities .julia\packages\MathOptInterface\Ohzb2\src\Utilities\cachingoptimizer.jl:316
julia> print(m_)
Minimize ScalarQuadraticFunction{Float64}:
0.0 + 5.0 v[1] + 1.0 v[2] + 3.0 v[1]² + 4.0 v[2]² + 2.0 v[1]*v[2]
Subject to:
ScalarAffineFunction{Float64}-in-EqualTo{Float64}
0.0 + 1.0 v[1] + 2.0 v[2] == 1.0
VariableIndex-in-GreaterThan{Float64}
v[1] >= 0.0
v[2] >= 0.0
I don't know what is wrong here, the MOI model seems to be the same.
Metadata
Metadata
Assignees
Labels
No labels