Open
Description
The following throws an error, reproduced below, due to lb = fill(-10, length(params))
being a vector of Ints instead of floats. Could automatic conversion be applied, alternatively, a better error message be thrown? The only clue as to what is wrong is in MathOptInterface.GreaterThan{Int64}
, but this is still far from obvious
using Ipopt, OptimizationMOI, Optimization
params = randn(2)
fopt = OptimizationFunction((x, _)->x'x)
prob = OptimizationProblem(fopt, params;
lb = fill(-10, length(params)),
ub = fill(10, length(params)),
)
solver = Ipopt.Optimizer()
res = solve(prob, solver)
julia> res = solve(prob, solver)
ERROR: MathOptInterface.UnsupportedConstraint{MathOptInterface.VariableIndex, MathOptInterface.GreaterThan{Int64}}: `MathOptInterface.VariableIndex`-in-`MathOptInterface.GreaterThan{Int64}` constraint is not supported by the model.
Stacktrace:
[1] correct_throw_add_constraint_error_fallback(model::Ipopt.Optimizer, func::MathOptInterface.VariableIndex, set::MathOptInterface.GreaterThan{Int64}; error_if_supported::MathOptInterface.AddConstraintNotAllowed{MathOptInterface.VariableIndex, MathOptInterface.GreaterThan{Int64}})
@ MathOptInterface ~/.julia/packages/MathOptInterface/8f6oN/src/constraints.jl:211
[2] correct_throw_add_constraint_error_fallback(model::Ipopt.Optimizer, func::MathOptInterface.VariableIndex, set::MathOptInterface.GreaterThan{Int64})
@ MathOptInterface ~/.julia/packages/MathOptInterface/8f6oN/src/constraints.jl:202
[3] throw_add_constraint_error_fallback(model::Ipopt.Optimizer, func::MathOptInterface.VariableIndex, set::MathOptInterface.GreaterThan{Int64}; kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ MathOptInterface ~/.julia/packages/MathOptInterface/8f6oN/src/constraints.jl:160
[4] throw_add_constraint_error_fallback(model::Ipopt.Optimizer, func::MathOptInterface.VariableIndex, set::MathOptInterface.GreaterThan{Int64})
@ MathOptInterface ~/.julia/packages/MathOptInterface/8f6oN/src/constraints.jl:154
[5] add_constraint(model::Ipopt.Optimizer, func::MathOptInterface.VariableIndex, set::MathOptInterface.GreaterThan{Int64})
@ MathOptInterface ~/.julia/packages/MathOptInterface/8f6oN/src/constraints.jl:148
[6] __solve(prob::OptimizationProblem{true, OptimizationFunction{true, SciMLBase.NoAD, var"#25#26", Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, typeof(SciMLBase.DEFAULT_OBSERVED_NO_TIME), Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing}, Vector{Float64}, SciMLBase.NullParameters, Vector{Int64}, Vector{Int64}, Nothing, Nothing, Nothing, Nothing, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}}, opt::Ipopt.Optimizer; maxiters::Nothing, maxtime::Nothing, abstol::Nothing, reltol::Nothing, kwargs::Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
@ OptimizationMOI ~/.julia/packages/OptimizationMOI/08JM7/src/OptimizationMOI.jl:358
[7] __solve