Percival.jl icon indicating copy to clipboard operation
Percival.jl copied to clipboard

non-informative error message for invalid constraints

Open tpapp opened this issue 2 years ago • 0 comments

using ADNLPModels, Percival
nlp = ADNLPModel(
  x -> sum(abs2, x),            # objective
  [2.0, 2.0],                   # x0
  x -> [sum(x) - 1],            # constraint
  [-Inf],                       # lvar
  [Inf],                        # uvar
)
output = percival(nlp, verbose = 1)

results in

ERROR: DimensionError: Input lvar should have length 3 not 2
Stacktrace:
 [1] macro expansion
   @ ~/.julia/packages/NLPModels/XBcWL/src/nlp/utils.jl:37 [inlined]
 [2] NLPModels.NLPModelMeta{Float64, Vector{Float64}}(nvar::Int64; x0::Vector{Float64}, lvar::Vector{Float64}, uvar::Vector{Float64}, nlvb::Int64, nlvo::Int64, nlvc::Int64, ncon::Int64, y0::Vector{Float64}, lcon::Vector{Float64}, ucon::Vector{Float64}, nnzo::Int64, nnzj::Int64, lin_nnzj::Int64, nln_nnzj::Int64, nnzh::Int64, lin::Vector{Int64}, minimize::Bool, islp::Bool, name::String)
   @ NLPModels ~/.julia/packages/NLPModels/XBcWL/src/nlp/meta.jl:143
 [3] #NLPModelMeta#63
   @ ~/.julia/packages/NLPModels/XBcWL/src/nlp/meta.jl:216 [inlined]
 [4] slack_meta(meta::NLPModels.NLPModelMeta{Float64, Vector{Float64}}; name::String)
   @ NLPModelsModifiers ~/.julia/packages/NLPModelsModifiers/QR0za/src/slack-model.jl:134
 [5] #SlackModel#27
   @ ~/.julia/packages/NLPModelsModifiers/QR0za/src/slack-model.jl:159 [inlined]
 [6] NLPModelsModifiers.SlackModel(model::ADNLPModel{Float64, Vector{Float64}, Vector{Int64}})
   @ NLPModelsModifiers ~/.julia/packages/NLPModelsModifiers/QR0za/src/slack-model.jl:154
 [7] percival(::Val{:ineq}, nlp::ADNLPModel{Float64, Vector{Float64}, Vector{Int64}}; x::Vector{Float64}, kwargs::Base.Pairs{Symbol, Int64, Tuple{Symbol}, NamedTuple{(:verbose,), Tuple{Int64}}})
   @ Percival ~/.julia/packages/Percival/mlZ4N/src/method.jl:57
 [8] percival(nlp::ADNLPModel{Float64, Vector{Float64}, Vector{Int64}}; kwargs::Base.Pairs{Symbol, Int64, Tuple{Symbol}, NamedTuple{(:verbose,), Tuple{Int64}}})
   @ Percival ~/.julia/packages/Percival/mlZ4N/src/method.jl:14
 [9] top-level scope
   @ REPL[6]:1

This is of course user error (meaningless constraints), lcon = ucon = [0.0] works. But the error message is misleading.

version information

julia> VERSION
v"1.8.5"

(jl_0RwdKo) pkg> st
Status `/tmp/jl_0RwdKo/Project.toml`
  [54578032] ADNLPModels v0.6.1
  [01435c0c] Percival v0.6.5

tpapp avatar Apr 18 '23 12:04 tpapp