Skip to content

Missing MOI method #100

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
nrontsis opened this issue Nov 3, 2019 · 2 comments
Closed

Missing MOI method #100

nrontsis opened this issue Nov 3, 2019 · 2 comments

Comments

@nrontsis
Copy link
Member

nrontsis commented Nov 3, 2019

The following method appears to be missing from the MOI wrapper of COSMO:

throw_set_error_fallback(::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.VariablePrimalStart, ::MathOptInterface.Bridges.Variable.VectorizeBridge{Float64,MathOptInterface.Nonnegatives}, ::Float64)

Example (Optimal Power Flow)

On a clean environment of Julia 1.2 with COSMO v0.5.0 and PowerModels v0.13.0, download pglib_opf_case3_lmbd.m from pglib-opf and run:

using COSMO, PowerModels
result = run_opf("pglib_opf_case3_lmbd.m", SDPWRMPowerModel, with_optimizer(COSMO.Optimizer))

This gives the following error

[info | PowerModels]: removing 3 cost terms from generator 3: Float64[]
ERROR: MethodError: no method matching throw_set_error_fallback(::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.VariablePrimalStart, ::MathOptInterface.Bridges.Variable.VectorizeBridge{Float64,MathOptInterface.Nonnegatives}, ::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/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/attributes.jl:394
  throw_set_error_fallback(::MathOptInterface.ModelLike, ::Union{MathOptInterface.AbstractModelAttribute, MathOptInterface.AbstractOptimizerAttribute}, ::Any; error_if_supported) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/attributes.jl:383
  throw_set_error_fallback(::MathOptInterface.ModelLike, ::MathOptInterface.ConstraintFunction, ::MathOptInterface.ConstraintIndex{F<:MathOptInterface.AbstractFunction,S}, ::F<:MathOptInterface.AbstractFunction; error_if_supported) where {F<:MathOptInterface.AbstractFunction, S} at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/attributes.jl:1086
  ...
Stacktrace:
 [1] set(::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.VariablePrimalStart, ::MathOptInterface.Bridges.Variable.VectorizeBridge{Float64,MathOptInterface.Nonnegatives}, ::Float64) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/attributes.jl:372
 [2] (::getfield(MathOptInterface.Bridges, Symbol("##42#43")){MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}},MathOptInterface.VariablePrimalStart,MathOptInterface.VariableIndex})(::MathOptInterface.Bridges.Variable.VectorizeBridge{Float64,MathOptInterface.Nonnegatives}) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Bridges/bridge_optimizer.jl:761
 [3] (::getfield(MathOptInterface.Bridges.Variable, Symbol("##23#24")){MathOptInterface.Bridges.Variable.Map,getfield(MathOptInterface.Bridges, Symbol("##42#43")){MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}},MathOptInterface.VariablePrimalStart,MathOptInterface.VariableIndex},Int64})() at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Bridges/Variable/map.jl:425
 [4] call_in_context(::MathOptInterface.Bridges.Variable.Map, ::Int64, ::getfield(MathOptInterface.Bridges.Variable, Symbol("##23#24")){MathOptInterface.Bridges.Variable.Map,getfield(MathOptInterface.Bridges, Symbol("##42#43")){MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}},MathOptInterface.VariablePrimalStart,MathOptInterface.VariableIndex},Int64}) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Bridges/Variable/map.jl:410
 [5] call_in_context(::MathOptInterface.Bridges.Variable.Map, ::MathOptInterface.VariableIndex, ::getfield(MathOptInterface.Bridges, Symbol("##42#43")){MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}},MathOptInterface.VariablePrimalStart,MathOptInterface.VariableIndex}) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Bridges/Variable/map.jl:425
 [6] call_in_context(::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.VariableIndex, ::Function) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Bridges/bridge_optimizer.jl:189
 [7] set(::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.VariablePrimalStart, ::MathOptInterface.VariableIndex, ::Float64) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Bridges/bridge_optimizer.jl:761
 [8] _broadcast_getindex_evalf at ./broadcast.jl:625 [inlined]
 [9] _broadcast_getindex at ./broadcast.jl:598 [inlined]
 [10] getindex at ./broadcast.jl:558 [inlined]
 [11] copy at ./broadcast.jl:832 [inlined]
 [12] materialize at ./broadcast.jl:798 [inlined]
 [13] set(::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.VariablePrimalStart, ::Array{MathOptInterface.VariableIndex,1}, ::Array{Float64,1}) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Bridges/bridge_optimizer.jl:770
 [14] _pass_attributes(::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}, ::Bool, ::MathOptInterface.Utilities.IndexMap, ::Array{MathOptInterface.AbstractVariableAttribute,1}, ::Tuple{DataType}, ::Tuple{Array{MathOptInterface.VariableIndex,1}}, ::Tuple{Array{MathOptInterface.VariableIndex,1}}, ::typeof(MathOptInterface.set)) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Utilities/copy.jl:148
 [15] pass_attributes at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Utilities/copy.jl:118 [inlined]
 [16] pass_attributes at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Utilities/copy.jl:116 [inlined]
 [17] default_copy_to(::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}, ::Bool) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Utilities/copy.jl:334
 [18] #automatic_copy_to#97 at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Utilities/copy.jl:15 [inlined]
 [19] #automatic_copy_to at ./none:0 [inlined]
 [20] #copy_to#3 at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Bridges/bridge_optimizer.jl:254 [inlined]
 [21] (::getfield(MathOptInterface, Symbol("#kw##copy_to")))(::NamedTuple{(:copy_names,),Tuple{Bool}}, ::typeof(MathOptInterface.copy_to), ::MathOptInterface.Bridges.LazyBridgeOptimizer{MathOptInterface.Utilities.CachingOptimizer{Optimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}}, ::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}) at ./none:0
 [22] attach_optimizer(::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.AbstractOptimizer,MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}}) at /Users/nrontsis/.julia/packages/MathOptInterface/A2UPd/src/Utilities/cachingoptimizer.jl:149
 [23] attach_optimizer(::JuMP.Model) at /Users/nrontsis/.julia/packages/JuMP/MsUSY/src/optimizer_interface.jl:32
 [24] #optimize!#78(::Bool, ::Bool, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(JuMP.optimize!), ::JuMP.Model, ::JuMP.OptimizerFactory) at /Users/nrontsis/.julia/packages/JuMP/MsUSY/src/optimizer_interface.jl:125
 [25] optimize! at /Users/nrontsis/.julia/packages/JuMP/MsUSY/src/optimizer_interface.jl:111 [inlined]
 [26] macro expansion at ./util.jl:289 [inlined]
 [27] optimize!(::SDPWRMPowerModel, ::JuMP.OptimizerFactory) at /Users/nrontsis/.julia/packages/PowerModels/slTWD/src/core/base.jl:140
 [28] #optimize_model!#192(::Function, ::typeof(optimize_model!), ::SDPWRMPowerModel, ::JuMP.OptimizerFactory) at /Users/nrontsis/.julia/packages/PowerModels/slTWD/src/core/base.jl:214
 [29] (::getfield(PowerModels, Symbol("#kw##optimize_model!")))(::NamedTuple{(:solution_builder,),Tuple{typeof(solution_opf!)}}, ::typeof(optimize_model!), ::SDPWRMPowerModel, ::JuMP.OptimizerFactory) at ./none:0
 [30] #run_model#189(::Array{Any,1}, ::Function, ::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(run_model), ::Dict{String,Any}, ::Type, ::JuMP.OptimizerFactory, ::Function) at /Users/nrontsis/.julia/packages/PowerModels/slTWD/src/core/base.jl:168
 [31] run_model(::Dict{String,Any}, ::Type, ::JuMP.OptimizerFactory, ::Function) at /Users/nrontsis/.julia/packages/PowerModels/slTWD/src/core/base.jl:164
 [32] #run_model#188(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::typeof(run_model), ::String, ::Type, ::JuMP.OptimizerFactory, ::Function) at /Users/nrontsis/.julia/packages/PowerModels/slTWD/src/core/base.jl:158
 [33] run_model at /Users/nrontsis/.julia/packages/PowerModels/slTWD/src/core/base.jl:157 [inlined]
 [34] #run_opf#708 at /Users/nrontsis/.julia/packages/PowerModels/slTWD/src/prob/opf.jl:13 [inlined]
 [35] run_opf(::String, ::Type, ::JuMP.OptimizerFactory) at /Users/nrontsis/.julia/packages/PowerModels/slTWD/src/prob/opf.jl:13
 [36] top-level scope at REPL[6]:1

Note that the same problem can be solved without issues with [email protected] and the latest version of Mosek

@blegat
Copy link
Contributor

blegat commented Nov 3, 2019

This should be implemented in MOI, not COSMO. Can you open the issue in MOI?

@nrontsis
Copy link
Member Author

nrontsis commented Nov 3, 2019

Sure, many thanks for the input.

@nrontsis nrontsis closed this as completed Nov 3, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants