-
Notifications
You must be signed in to change notification settings - Fork 94
Description
Hello,
I am trying to warm start a non-linear model that I am solving using Ipopt. I can warm start the primal variables just fine and the dual variables for all constraints except the ones made using the non-linear interface. Here is a simple example:
using JuMP
import Ipopt
using MathOptInterface
const MOI = MathOptInterface
model = JuMP.Model(Ipopt.Optimizer)
@variable(model, x)
@constraint(model, con, x >= 0)
@NLconstraint(model, nl_con, cos(x) >= 1.0 )
@objective(model, Min, x)
JuMP.optimize!(model)
con_dual_val = JuMP.dual(con)
nl_dual_val = JuMP.dual(nl_con)
MOI.set(model, MOI.ConstraintDualStart(), con, con_dual_val) # works just fine
MOI.set(model, MOI.ConstraintDualStart(), nl_con, nl_dual_val) # causes the error below
ERROR: LoadError: MethodError: no method matching throw_set_error_fallback(::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.Bridges.LazyBridgeOptimizer{Ipopt.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.ConstraintDualStart, ::NonlinearConstraintIndex, ::Float64)
Closest candidates are:
throw_set_error_fallback(::MathOptInterface.ModelLike, ::Union{MathOptInterface.AbstractConstraintAttribute, MathOptInterface.AbstractVariableAttribute}, ::Union{MathOptInterface.VariableIndex, MathOptInterface.ConstraintIndex}, ::Any; error_if_supported) at /Users/dsigler/.julia/packages/MathOptInterface/IIN1o/src/attributes.jl:499
throw_set_error_fallback(::MathOptInterface.ModelLike, ::Union{MathOptInterface.AbstractModelAttribute, MathOptInterface.AbstractOptimizerAttribute}, ::Any; error_if_supported) at /Users/dsigler/.julia/packages/MathOptInterface/IIN1o/src/attributes.jl:487
throw_set_error_fallback(::MathOptInterface.ModelLike, ::MathOptInterface.ConstraintFunction, ::MathOptInterface.ConstraintIndex{F, S}, ::F; error_if_supported) where {F<:MathOptInterface.AbstractFunction, S} at /Users/dsigler/.julia/packages/MathOptInterface/IIN1o/src/attributes.jl:1571
...
Stacktrace:
[1] set(::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.Bridges.LazyBridgeOptimizer{Ipopt.Optimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}, ::MathOptInterface.ConstraintDualStart, ::NonlinearConstraintIndex, ::Float64)
@ MathOptInterface ~/.julia/packages/MathOptInterface/IIN1o/src/attributes.jl:481
[2] set(model::Model, attr::MathOptInterface.ConstraintDualStart, cr::NonlinearConstraintRef{ScalarShape}, value::Float64)
@ JuMP ~/.julia/packages/JuMP/lnUbA/src/JuMP.jl:1321
[3] top-level scope
@ ~/PowerModelsDistribution.jl/examples/issue.jl:18
[4] include(fname::String)
@ Base.MainInclude ./client.jl:444
[5] top-level scope
@ REPL[7]:1
in expression starting at /Users/dsigler/PowerModelsDistribution.jl/examples/issue.jl:18
I was wondering if there is a way to do this or if this is not supported?
Best,
Devon