julia> using Manopt, JuMP, OptimizationProblems
julia> model = OptimizationProblems.PureJuMP.bt1()
A JuMP Model
├ solver: none
├ objective_sense: MIN_SENSE
│ └ objective_function_type: QuadExpr
├ num_variables: 2
├ num_constraints: 1
│ └ QuadExpr in MOI.EqualTo{Float64}: 1
└ Names registered in the model
└ :constr1, :x
julia> set_optimizer(model, Manopt.JuMP_Optimizer)
julia> optimize!(model)
ERROR: MathOptInterface.AddVariableNotAllowed:
## Cause
Adding variables cannot be performed
## Fixing this error
An `MOI.NotAllowedError` error occurs when you have tried to do something that
is not implemented by the solver.
The most common way to fix this error is to wrap the optimizer in a
`MOI.Utilities.CachingOptimizer`.
For example, if you are using `JuMP.Model` or `JuMP.set_optimizer`, do:
model = JuMP.Model(optimizer; with_cache_type = Float64)
model = JuMP.GenericModel{T}(optimizer; with_cache_type = T)
JuMP.set_optimizer(model, optimizer; with_cache_type = Float64)
Similarly, if you are using `MOI.instantiate`, do:
model = MOI.instantiate(optimizer; with_cache_type = Float64)
Stacktrace:
[1] add_variable(model::ManoptJuMPExt.ManoptOptimizer)
@ MathOptInterface ~/.julia/packages/MathOptInterface/03Qtw/src/variables.jl:64
[2] add_variables
@ ~/.julia/packages/MathOptInterface/03Qtw/src/variables.jl:44 [inlined]
[3] add_variables
@ ~/.julia/packages/MathOptInterface/03Qtw/src/Bridges/bridge_optimizer.jl:2255 [inlined]
[4] _copy_variables_with_set(dest::MathOptInterface.Bridges.LazyBridgeOptimizer{ManoptJuMPExt.ManoptOptimizer}, src::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}})
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/03Qtw/src/Utilities/copy.jl:553
[5] default_copy_to(dest::MathOptInterface.Bridges.LazyBridgeOptimizer{ManoptJuMPExt.ManoptOptimizer}, src::MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}})
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/03Qtw/src/Utilities/copy.jl:386
[6] copy_to
@ ~/.julia/packages/MathOptInterface/03Qtw/src/Bridges/bridge_optimizer.jl:448 [inlined]
[7] optimize!
@ ~/.julia/packages/MathOptInterface/03Qtw/src/MathOptInterface.jl:121 [inlined]
[8] optimize!(m::MathOptInterface.Utilities.CachingOptimizer{MathOptInterface.Bridges.LazyBridgeOptimizer{ManoptJuMPExt.ManoptOptimizer}, MathOptInterface.Utilities.UniversalFallback{MathOptInterface.Utilities.Model{Float64}}})
@ MathOptInterface.Utilities ~/.julia/packages/MathOptInterface/03Qtw/src/Utilities/cachingoptimizer.jl:370
[9] optimize!(model::Model; ignore_optimize_hook::Bool, _differentiation_backend::MathOptInterface.Nonlinear.SparseReverseMode, kwargs::@Kwargs{})
@ JuMP ~/.julia/packages/JuMP/e83v9/src/optimizer_interface.jl:609
[10] optimize!(model::Model)
@ JuMP ~/.julia/packages/JuMP/e83v9/src/optimizer_interface.jl:560
[11] top-level scope
@ REPL[4]:1
It seems likely that I may have to set some attributes, but the demo does not quite give me enough info to know what the options are and how they apply to different types of problems.
It seems likely that I may have to set some attributes, but the demo does not quite give me enough info to know what the options are and how they apply to different types of problems.