Run a benchmark with OptimizationProblems.jl
In this more advanced tutorial, we use the problems from OptimizationProblems to run a benchmark for unconstrained problems. The tutorial will use:
- JSOSolvers: This package provides optimization solvers in pure Julia for unconstrained and bound-constrained optimization.
- NLPModelsJuMP: This package convert JuMP model in
NLPModelformat. - SolverBenchmark: This package provides general tools for benchmarking solvers.
using JSOSolvers, NLPModels, NLPModelsJuMP, OptimizationProblems, SolverBenchmark
using OptimizationProblems.PureJuMPWe select the problems from PureJuMP submodule of OptimizationProblems converted in NLPModels using NLPModelsJuMP.
problems = (MathOptNLPModel(OptimizationProblems.PureJuMP.eval(Meta.parse(problem))(), name=problem) for problem ∈ OptimizationProblems.meta[!, :name])Base.Generator{Vector{String}, Main.var"#2#3"}(Main.var"#2#3"(), ["AMPGO02", "AMPGO03", "AMPGO04", "AMPGO05", "AMPGO06", "AMPGO07", "AMPGO08", "AMPGO09", "AMPGO10", "AMPGO11" … "triangle", "triangle_deer", "triangle_pacman", "triangle_turtle", "tridia", "vardim", "vibrbeam", "watson", "woods", "zangwil3"])The same can be achieved using OptimizationProblems.ADNLPProblems instead of OptimizationProblems.PureJuMP as follows:
using ADNLPModels
using OptimizationProblems.ADNLPProblems
ad_problems = (OptimizationProblems.ADNLPProblems.eval(Meta.parse(problem))() for problem ∈ OptimizationProblems.meta[!, :name])Base.Generator{Vector{String}, Main.var"#5#6"}(Main.var"#5#6"(), ["AMPGO02", "AMPGO03", "AMPGO04", "AMPGO05", "AMPGO06", "AMPGO07", "AMPGO08", "AMPGO09", "AMPGO10", "AMPGO11" … "triangle", "triangle_deer", "triangle_pacman", "triangle_turtle", "tridia", "vardim", "vibrbeam", "watson", "woods", "zangwil3"])We also define a dictionary of solvers that will be used for our benchmark. We consider here JSOSolvers.lbfgs and JSOSolvers.trunk.
solvers = Dict(
:lbfgs => model -> lbfgs(model, mem=5, atol=1e-5, rtol=0.0),
:trunk => model -> trunk(model, atol=1e-5, rtol=0.0),
)Dict{Symbol, Function} with 2 entries:
:trunk => #11
:lbfgs => #9The function SolverBenchmark.bmak_solvers will run all the problems on the specified solvers and store the results in a DataFrame. At this stage, we discard the problems that have constraints or bounds using !unconstrained(prob), and those that are too large or too small with get_nvar(prob) > 100 || get_nvar(prob) < 5.
stats = bmark_solvers(
solvers, problems,
skipif=prob -> (!unconstrained(prob) || get_nvar(prob) > 100 || get_nvar(prob) < 5),
)Dict{Symbol, DataFrames.DataFrame} with 2 entries:
:trunk => 112×40 DataFrame…
:lbfgs => 112×40 DataFrame…We can explore the results solver by solver in stats[:lbfgs] and stats[:trunk], or get a profile wall using SolverBenchmark.profile_solvers.
cols = [:id, :name, :nvar, :objective, :dual_feas, :neval_obj, :neval_grad, :neval_hess, :iter, :elapsed_time, :status]
header = Dict(
:nvar => "n",
:objective => "f(x)",
:dual_feas => "‖∇f(x)‖",
:neval_obj => "# f",
:neval_grad => "# ∇f",
:neval_hess => "# ∇²f",
:elapsed_time => "t",
)
for solver ∈ keys(solvers)
pretty_stats(stats[solver][!, cols], hdr_override=header)
end┌────────┬───────────────┬────────┬───────────┬───────────┬────────┬────────┬────────┬────────┬───────────┬─────────────┐
│ id │ name │ n │ f(x) │ ‖∇f(x)‖ │ # f │ # ∇f │ # ∇²f │ iter │ t │ status │
├────────┼───────────────┼────────┼───────────┼───────────┼────────┼────────┼────────┼────────┼───────────┼─────────────┤
│ 25 │ NZF1 │ 91 │ 2.09e+04 │ 4.14e-07 │ 9 │ 9 │ 0 │ 8 │ 2.05e+00 │ first_order │
│ 38 │ arglina │ 100 │ 5.00e+01 │ 7.40e-15 │ 6 │ 6 │ 0 │ 5 │ 1.05e-01 │ first_order │
│ 39 │ arglinb │ 100 │ 2.49e+01 │ 3.20e-03 │ 465715 │ 465541 │ 0 │ 465532 │ 3.00e+01 │ max_time │
│ 40 │ arglinc │ 100 │ 5.12e+01 │ 3.85e-03 │ 264556 │ 264489 │ 0 │ 264167 │ 2.02e+01 │ not_desc │
│ 41 │ argtrig │ 100 │ -9.90e+03 │ 7.50e-06 │ 38 │ 26 │ 0 │ 25 │ 2.24e-03 │ first_order │
│ 42 │ arwhead │ 100 │ 0.00e+00 │ 1.04e-06 │ 6 │ 6 │ 0 │ 5 │ 2.74e-04 │ first_order │
│ 43 │ auglag │ 100 │ 1.08e+00 │ 6.84e-06 │ 100 │ 46 │ 0 │ 49 │ 4.96e-03 │ first_order │
│ 46 │ bdqrtic │ 100 │ 1.89e+02 │ 4.98e-06 │ 13 │ 13 │ 0 │ 12 │ 3.97e-03 │ first_order │
│ 51 │ biggs6 │ 6 │ -3.91e+19 │ 5.08e+19 │ 8 │ 8 │ 0 │ 7 │ 1.09e-04 │ unbounded │
│ 56 │ brownal │ 100 │ -5.16e-08 │ 9.17e-07 │ 3 │ 3 │ 0 │ 2 │ 1.38e-03 │ first_order │
│ 59 │ browngen1 │ 100 │ 8.23e+01 │ 7.60e-06 │ 38 │ 32 │ 0 │ 31 │ 1.33e-02 │ first_order │
│ 60 │ browngen2 │ 100 │ 8.74e-18 │ 8.20e-09 │ 7 │ 7 │ 0 │ 6 │ 9.38e-04 │ first_order │
│ 61 │ broyden3d │ 100 │ 2.13e-13 │ 3.57e-06 │ 7 │ 7 │ 0 │ 6 │ 7.29e-04 │ first_order │
│ 62 │ broyden7d │ 100 │ 3.34e+01 │ 6.71e-06 │ 10 │ 10 │ 0 │ 9 │ 2.03e-03 │ first_order │
│ 63 │ broydn7d │ 100 │ 3.95e+01 │ 7.44e-06 │ 63 │ 22 │ 0 │ 21 │ 2.94e-02 │ first_order │
│ 64 │ brybnd │ 100 │ 3.08e-13 │ 4.90e-06 │ 9 │ 9 │ 0 │ 8 │ 1.15e-03 │ first_order │
│ 70 │ chainwoo │ 100 │ 1.00e+00 │ 8.97e-06 │ 288 │ 104 │ 0 │ 107 │ 1.83e-01 │ first_order │
│ 72 │ chnrosnb_mod │ 100 │ 1.81e-13 │ 8.26e-06 │ 181 │ 97 │ 0 │ 98 │ 3.82e-02 │ first_order │
│ 77 │ clplatea │ 100 │ -9.15e-03 │ 7.56e-06 │ 6 │ 6 │ 0 │ 5 │ 3.14e-03 │ first_order │
│ 78 │ clplateb │ 100 │ -6.20e-03 │ 9.70e-06 │ 4 │ 4 │ 0 │ 3 │ 2.78e-03 │ first_order │
│ 79 │ clplatec │ 100 │ -5.11e-03 │ 8.28e-06 │ 5 │ 5 │ 0 │ 4 │ 8.46e-03 │ first_order │
│ 81 │ cosine │ 100 │ -9.90e+01 │ 9.12e-06 │ 10 │ 10 │ 0 │ 9 │ 3.53e-04 │ first_order │
│ 82 │ cragglvy │ 100 │ 3.23e+01 │ 7.75e-06 │ 16 │ 16 │ 0 │ 15 │ 5.45e-03 │ first_order │
│ 83 │ cragglvy2 │ 100 │ 2.52e+01 │ 6.43e-06 │ 18 │ 18 │ 0 │ 17 │ 6.66e-03 │ first_order │
│ 84 │ curly │ 100 │ -1.00e+04 │ 9.46e-06 │ 18 │ 15 │ 0 │ 14 │ 1.66e-01 │ first_order │
│ 85 │ curly10 │ 100 │ -1.00e+04 │ 9.46e-06 │ 18 │ 15 │ 0 │ 14 │ 1.63e-01 │ first_order │
│ 86 │ curly20 │ 100 │ -1.00e+04 │ 9.70e-06 │ 18 │ 14 │ 0 │ 13 │ 3.83e-01 │ first_order │
│ 87 │ curly30 │ 100 │ -1.00e+04 │ 9.12e-06 │ 29 │ 15 │ 0 │ 14 │ 7.06e-01 │ first_order │
│ 89 │ dixmaane │ 99 │ 1.00e+00 │ 8.12e-06 │ 39 │ 16 │ 0 │ 15 │ 3.60e-03 │ first_order │
│ 90 │ dixmaanf │ 99 │ 1.00e+00 │ 9.59e-06 │ 11 │ 11 │ 0 │ 10 │ 2.43e-03 │ first_order │
│ 91 │ dixmaang │ 99 │ 1.00e+00 │ 9.88e-06 │ 43 │ 15 │ 0 │ 16 │ 4.05e-03 │ first_order │
│ 92 │ dixmaanh │ 99 │ 1.00e+00 │ 7.74e-06 │ 37 │ 15 │ 0 │ 16 │ 3.52e-03 │ first_order │
│ 93 │ dixmaani │ 99 │ 1.00e+00 │ 8.10e-06 │ 15 │ 13 │ 0 │ 12 │ 9.09e-03 │ first_order │
│ 94 │ dixmaanj │ 99 │ 1.00e+00 │ 8.98e-06 │ 40 │ 18 │ 0 │ 19 │ 1.14e-02 │ first_order │
│ 95 │ dixmaank │ 99 │ 1.00e+00 │ 9.23e-06 │ 37 │ 15 │ 0 │ 16 │ 9.70e-03 │ first_order │
│ 96 │ dixmaanl │ 99 │ 1.00e+00 │ 9.80e-06 │ 56 │ 18 │ 0 │ 19 │ 1.07e-02 │ first_order │
│ 97 │ dixmaanm │ 99 │ 1.00e+00 │ 6.95e-06 │ 10 │ 10 │ 0 │ 9 │ 6.64e-03 │ first_order │
│ 98 │ dixmaann │ 99 │ 1.00e+00 │ 9.68e-06 │ 43 │ 20 │ 0 │ 21 │ 1.64e-02 │ first_order │
│ 99 │ dixmaano │ 99 │ 1.00e+00 │ 9.66e-06 │ 39 │ 17 │ 0 │ 18 │ 1.22e-02 │ first_order │
│ 100 │ dixmaanp │ 99 │ 1.00e+00 │ 9.07e-06 │ 39 │ 17 │ 0 │ 18 │ 1.19e-02 │ first_order │
│ 101 │ dixon3dq │ 100 │ 3.83e-10 │ 9.84e-06 │ 10 │ 10 │ 0 │ 9 │ 1.72e-04 │ first_order │
│ 102 │ dqdrtic │ 100 │ 1.37e-14 │ 9.42e-07 │ 6 │ 6 │ 0 │ 5 │ 4.10e-05 │ first_order │
│ 103 │ dqrtic │ 100 │ 8.30e-08 │ 6.24e-06 │ 25 │ 25 │ 0 │ 24 │ 6.60e-04 │ first_order │
│ 105 │ edensch │ 100 │ 6.03e+02 │ 4.70e-06 │ 9 │ 9 │ 0 │ 8 │ 8.64e-04 │ first_order │
│ 106 │ eg2 │ 100 │ -9.89e+01 │ 1.42e-09 │ 4 │ 4 │ 0 │ 3 │ 1.04e-04 │ first_order │
│ 108 │ engval1 │ 100 │ 1.09e+02 │ 4.98e-06 │ 10 │ 10 │ 0 │ 9 │ 6.49e-04 │ first_order │
│ 109 │ enso │ 9 │ 3.94e+02 │ 9.19e-06 │ 39 │ 17 │ 0 │ 18 │ 9.44e-03 │ first_order │
│ 110 │ errinros_mod │ 100 │ 3.88e+01 │ 4.75e-06 │ 119 │ 77 │ 0 │ 78 │ 2.14e-02 │ first_order │
│ 111 │ extrosnb │ 100 │ 1.99e-06 │ 9.98e-06 │ 928 │ 251 │ 0 │ 250 │ 4.94e-02 │ first_order │
│ 112 │ fletcbv2 │ 100 │ -5.14e-01 │ 8.49e-06 │ 5 │ 5 │ 0 │ 4 │ 2.13e-03 │ first_order │
│ 113 │ fletcbv3_mod │ 100 │ -2.04e+00 │ 2.85e-07 │ 160 │ 61 │ 0 │ 62 │ 7.07e-03 │ first_order │
│ 114 │ fletchcr │ 100 │ 6.61e-12 │ 8.38e-06 │ 99 │ 77 │ 0 │ 78 │ 1.09e-02 │ first_order │
│ 115 │ fminsrf2 │ 100 │ 1.00e+02 │ 7.59e-06 │ 190 │ 45 │ 0 │ 46 │ 1.56e-02 │ first_order │
│ 116 │ freuroth │ 100 │ 5.94e+03 │ 2.30e-06 │ 48 │ 16 │ 0 │ 17 │ 3.21e-03 │ first_order │
│ 118 │ gauss1 │ 8 │ 6.58e+02 │ 9.67e-06 │ 12 │ 12 │ 0 │ 11 │ 1.01e-02 │ first_order │
│ 119 │ gauss2 │ 8 │ 6.24e+02 │ 7.74e-06 │ 14 │ 14 │ 0 │ 13 │ 1.19e-02 │ first_order │
│ 120 │ gauss3 │ 8 │ 6.22e+02 │ 3.26e-05 │ 339 │ 611 │ 0 │ 312 │ 1.54e-02 │ not_desc │
│ 122 │ genbroydenb │ 100 │ 1.03e-10 │ 8.57e-06 │ 13 │ 13 │ 0 │ 12 │ 4.72e-03 │ first_order │
│ 123 │ genbroydentri │ 100 │ 8.46e-12 │ 2.50e-06 │ 12 │ 12 │ 0 │ 11 │ 1.68e-03 │ first_order │
│ 124 │ genhumps │ 100 │ 2.05e-12 │ 9.07e-07 │ 9483 │ 3106 │ 0 │ 3117 │ 6.66e-01 │ first_order │
│ 125 │ genrose │ 100 │ 1.00e+00 │ 6.62e-06 │ 159 │ 60 │ 0 │ 61 │ 1.19e-02 │ first_order │
│ 126 │ genrose_nash │ 100 │ 1.00e+00 │ 4.93e-06 │ 195 │ 66 │ 0 │ 67 │ 1.34e-02 │ first_order │
│ 129 │ hahn1 │ 7 │ 7.66e-01 │ 3.65e-06 │ 234 │ 118 │ 0 │ 127 │ 6.83e-02 │ first_order │
│ 296 │ indef_mod │ 100 │ -9.97e+03 │ 4.39e-07 │ 460 │ 142 │ 0 │ 143 │ 1.70e-02 │ first_order │
│ 297 │ integreq │ 100 │ 4.47e-13 │ 9.84e-07 │ 4 │ 4 │ 0 │ 3 │ 1.29e-02 │ first_order │
│ 299 │ kirby2 │ 5 │ 1.95e+00 │ 1.16e-05 │ 344 │ 622 │ 0 │ 324 │ 4.22e-03 │ not_desc │
│ 301 │ lanczos1 │ 6 │ 1.05e-06 │ 6.96e-06 │ 118 │ 37 │ 0 │ 38 │ 2.13e-03 │ first_order │
│ 302 │ lanczos2 │ 6 │ 9.83e-07 │ 9.41e-06 │ 121 │ 35 │ 0 │ 36 │ 2.07e-03 │ first_order │
│ 303 │ lanczos3 │ 6 │ 1.16e-06 │ 7.97e-06 │ 120 │ 38 │ 0 │ 39 │ 2.18e-03 │ first_order │
│ 304 │ liarwhd │ 100 │ 1.41e-13 │ 7.82e-06 │ 11 │ 11 │ 0 │ 10 │ 8.46e-04 │ first_order │
│ 313 │ mgh17 │ 5 │ 5.52e-02 │ 1.56e-06 │ 31 │ 8 │ 0 │ 9 │ 2.29e-04 │ first_order │
│ 319 │ morebv │ 100 │ 1.85e-06 │ 8.80e-06 │ 14 │ 14 │ 0 │ 13 │ 3.90e-02 │ first_order │
│ 321 │ nazareth │ 100 │ 1.04e+03 │ 8.10e-06 │ 12 │ 12 │ 0 │ 11 │ 8.82e-03 │ first_order │
│ 322 │ ncb20 │ 100 │ 1.63e+02 │ 9.51e-06 │ 110 │ 25 │ 0 │ 24 │ 5.93e-02 │ first_order │
│ 323 │ ncb20b │ 100 │ 1.97e+02 │ 8.39e-06 │ 38 │ 15 │ 0 │ 16 │ 1.39e-01 │ first_order │
│ 325 │ noncvxu2 │ 100 │ 2.34e+02 │ 6.20e-06 │ 138 │ 36 │ 0 │ 37 │ 2.03e-02 │ first_order │
│ 326 │ noncvxun │ 100 │ 2.34e+02 │ 6.16e-06 │ 158 │ 40 │ 0 │ 41 │ 1.42e-02 │ first_order │
│ 327 │ nondia │ 100 │ 1.05e-13 │ 1.28e-07 │ 12 │ 9 │ 0 │ 8 │ 3.08e-04 │ first_order │
│ 328 │ nondquar │ 100 │ 1.85e-06 │ 8.92e-06 │ 83 │ 32 │ 0 │ 31 │ 6.10e-03 │ first_order │
│ 329 │ osborne1 │ 5 │ 2.82e-05 │ 9.44e-06 │ 171 │ 53 │ 0 │ 55 │ 3.19e-03 │ first_order │
│ 330 │ osborne2 │ 11 │ 2.01e-02 │ 5.32e-06 │ 26 │ 19 │ 0 │ 18 │ 8.92e-03 │ first_order │
│ 331 │ palmer1c │ 8 │ 4.88e-02 │ 3.36e-06 │ 8 │ 8 │ 0 │ 7 │ 6.89e-05 │ first_order │
│ 332 │ palmer1d │ 7 │ 3.26e-01 │ 8.54e-09 │ 7 │ 7 │ 0 │ 6 │ 4.41e-05 │ first_order │
│ 333 │ palmer2c │ 8 │ 7.21e-03 │ 5.98e-07 │ 7 │ 7 │ 0 │ 6 │ 4.70e-05 │ first_order │
│ 334 │ palmer3c │ 8 │ 9.77e-03 │ 4.36e-06 │ 8 │ 8 │ 0 │ 7 │ 5.01e-05 │ first_order │
│ 335 │ palmer4c │ 8 │ 2.85e-02 │ 2.86e-06 │ 9 │ 9 │ 0 │ 8 │ 7.39e-05 │ first_order │
│ 336 │ palmer5c │ 6 │ 1.06e+00 │ 9.22e-07 │ 7 │ 7 │ 0 │ 6 │ 4.29e-05 │ first_order │
│ 338 │ palmer6c │ 8 │ 8.19e-03 │ 5.94e-07 │ 8 │ 8 │ 0 │ 7 │ 5.51e-05 │ first_order │
│ 339 │ palmer7c │ 8 │ 3.01e-01 │ 4.25e-06 │ 13 │ 13 │ 0 │ 12 │ 7.58e-05 │ first_order │
│ 340 │ palmer8c │ 8 │ 7.99e-02 │ 7.94e-06 │ 12 │ 12 │ 0 │ 11 │ 6.79e-05 │ first_order │
│ 341 │ penalty1 │ 100 │ 4.51e-04 │ 9.69e-06 │ 54 │ 32 │ 0 │ 31 │ 1.61e-03 │ first_order │
│ 342 │ penalty2 │ 100 │ 9.71e+04 │ 8.67e-06 │ 19 │ 19 │ 0 │ 18 │ 4.90e-03 │ first_order │
│ 343 │ penalty3 │ 100 │ 4.65e+07 │ 9.12e+12 │ 668238 │ 60785 │ 0 │ 60792 │ 3.00e+01 │ max_time │
│ 350 │ powellsg │ 100 │ 6.13e-08 │ 8.57e-06 │ 18 │ 18 │ 0 │ 17 │ 1.23e-03 │ first_order │
│ 351 │ power │ 100 │ 1.50e-08 │ 7.99e-06 │ 24 │ 24 │ 0 │ 23 │ 1.63e-03 │ first_order │
│ 352 │ quartc │ 100 │ 8.30e-08 │ 6.24e-06 │ 25 │ 25 │ 0 │ 24 │ 6.63e-04 │ first_order │
│ 359 │ sbrybnd │ 100 │ 1.34e+00 │ 8.66e-06 │ 1997 │ 1953 │ 0 │ 1956 │ 2.98e+01 │ first_order │
│ 360 │ schmvett │ 100 │ -2.94e+02 │ 8.24e-06 │ 14 │ 12 │ 0 │ 11 │ 2.75e-03 │ first_order │
│ 361 │ scosine │ 100 │ -9.90e+01 │ 9.77e-06 │ 457 │ 309 │ 0 │ 320 │ 6.05e-01 │ first_order │
│ 362 │ sinquad │ 100 │ 6.16e-07 │ 8.07e-06 │ 65 │ 33 │ 0 │ 34 │ 2.98e-03 │ first_order │
│ 363 │ sparsine │ 100 │ 2.11e-12 │ 8.42e-06 │ 81 │ 33 │ 0 │ 34 │ 2.82e-02 │ first_order │
│ 364 │ sparsqur │ 100 │ 1.77e-08 │ 6.42e-06 │ 17 │ 17 │ 0 │ 16 │ 2.26e-03 │ first_order │
│ 365 │ spmsrtls │ 100 │ 8.17e-11 │ 9.01e-06 │ 13 │ 13 │ 0 │ 12 │ 2.57e-03 │ first_order │
│ 366 │ srosenbr │ 100 │ 3.06e-15 │ 2.47e-06 │ 60 │ 26 │ 0 │ 27 │ 1.25e-03 │ first_order │
│ 377 │ thurber │ 7 │ 2.82e+03 │ 6.94e-06 │ 59 │ 42 │ 0 │ 41 │ 3.06e-03 │ first_order │
│ 378 │ tointgss │ 100 │ 9.71e+00 │ 8.20e-06 │ 35 │ 13 │ 0 │ 14 │ 2.41e-03 │ first_order │
│ 380 │ tquartic │ 100 │ 4.90e-12 │ 3.14e-07 │ 15 │ 13 │ 0 │ 12 │ 6.36e-04 │ first_order │
│ 385 │ tridia │ 100 │ 1.36e-13 │ 8.96e-06 │ 8 │ 8 │ 0 │ 7 │ 1.45e-04 │ first_order │
│ 386 │ vardim │ 100 │ 3.73e-09 │ 0.00e+00 │ 26 │ 26 │ 0 │ 25 │ 1.49e-02 │ first_order │
│ 387 │ vibrbeam │ 8 │ 7.82e-02 │ 3.74e-06 │ 33 │ 32 │ 0 │ 31 │ 2.01e-03 │ first_order │
│ 388 │ watson │ 31 │ 3.59e-08 │ 3.98e-06 │ 51 │ 23 │ 0 │ 24 │ 1.26e-01 │ first_order │
│ 389 │ woods │ 100 │ -6.80e-15 │ 2.45e-09 │ 82 │ 41 │ 0 │ 42 │ 6.71e-03 │ first_order │
└────────┴───────────────┴────────┴───────────┴───────────┴────────┴────────┴────────┴────────┴───────────┴─────────────┘
┌────────┬───────────────┬────────┬───────────┬───────────┬───────────┬─────────┬────────┬─────────┬───────────┬─────────────┐
│ id │ name │ n │ f(x) │ ‖∇f(x)‖ │ # f │ # ∇f │ # ∇²f │ iter │ t │ status │
├────────┼───────────────┼────────┼───────────┼───────────┼───────────┼─────────┼────────┼─────────┼───────────┼─────────────┤
│ 25 │ NZF1 │ 91 │ 2.09e+04 │ 9.31e-06 │ 278 │ 272 │ 0 │ 256 │ 2.75e-03 │ first_order │
│ 38 │ arglina │ 100 │ 5.00e+01 │ 2.92e-14 │ 2 │ 2 │ 0 │ 1 │ 9.08e-05 │ first_order │
│ 39 │ arglinb │ 100 │ 2.48e+01 │ 3.99e-04 │ 2384992 │ 318855 │ 0 │ 159431 │ 3.00e+01 │ max_time │
│ 40 │ arglinc │ 100 │ 5.11e+01 │ 6.35e-04 │ 1914141 │ 638069 │ 0 │ 319035 │ 3.00e+01 │ max_time │
│ 41 │ argtrig │ 100 │ -9.90e+03 │ 7.54e-06 │ 116 │ 114 │ 0 │ 103 │ 2.15e-03 │ first_order │
│ 42 │ arwhead │ 100 │ 0.00e+00 │ 4.34e-06 │ 20 │ 14 │ 0 │ 12 │ 2.57e-04 │ first_order │
│ 43 │ auglag │ 100 │ 1.08e+00 │ 5.26e-06 │ 206 │ 198 │ 0 │ 170 │ 2.81e-03 │ first_order │
│ 46 │ bdqrtic │ 100 │ 1.89e+02 │ 9.47e-06 │ 114 │ 102 │ 0 │ 89 │ 4.04e-03 │ first_order │
│ 51 │ biggs6 │ 6 │ -Inf │ Inf │ 8 │ 8 │ 0 │ 2 │ 3.91e-05 │ unbounded │
│ 56 │ brownal │ 100 │ -1.96e-08 │ 1.58e-06 │ 17 │ 8 │ 0 │ 6 │ 2.34e-03 │ first_order │
│ 59 │ browngen1 │ 100 │ 8.23e+01 │ 7.48e-06 │ 317 │ 291 │ 0 │ 281 │ 8.02e-03 │ first_order │
│ 60 │ browngen2 │ 100 │ 1.28e-17 │ 9.60e-09 │ 12 │ 11 │ 0 │ 9 │ 4.94e-04 │ first_order │
│ 61 │ broyden3d │ 100 │ 3.56e-01 │ 8.29e-06 │ 53 │ 51 │ 0 │ 44 │ 9.89e-04 │ first_order │
│ 62 │ broyden7d │ 100 │ 3.17e+01 │ 5.66e-06 │ 45 │ 42 │ 0 │ 38 │ 1.96e-03 │ first_order │
│ 63 │ broydn7d │ 100 │ 3.60e+01 │ 9.86e-06 │ 371 │ 369 │ 0 │ 352 │ 1.66e-02 │ first_order │
│ 64 │ brybnd │ 100 │ 1.54e+00 │ 5.36e-06 │ 25 │ 21 │ 0 │ 19 │ 9.13e-04 │ first_order │
│ 70 │ chainwoo │ 100 │ 4.79e+01 │ 9.00e-06 │ 991 │ 978 │ 0 │ 910 │ 3.48e-02 │ first_order │
│ 72 │ chnrosnb_mod │ 100 │ 2.20e-13 │ 6.27e-06 │ 687 │ 680 │ 0 │ 645 │ 1.30e-02 │ first_order │
│ 77 │ clplatea │ 100 │ -9.15e-03 │ 9.75e-06 │ 74 │ 74 │ 0 │ 70 │ 2.74e-03 │ first_order │
│ 78 │ clplateb │ 100 │ -6.20e-03 │ 5.93e-06 │ 58 │ 58 │ 0 │ 57 │ 2.18e-03 │ first_order │
│ 79 │ clplatec │ 100 │ -5.11e-03 │ 8.19e-06 │ 486 │ 481 │ 0 │ 464 │ 1.66e-02 │ first_order │
│ 81 │ cosine │ 100 │ -9.90e+01 │ 1.00e-06 │ 15 │ 15 │ 0 │ 11 │ 2.05e-04 │ first_order │
│ 82 │ cragglvy │ 100 │ 3.23e+01 │ 9.36e-06 │ 93 │ 84 │ 0 │ 81 │ 3.20e-03 │ first_order │
│ 83 │ cragglvy2 │ 100 │ 2.52e+01 │ 8.92e-06 │ 121 │ 112 │ 0 │ 105 │ 4.01e-03 │ first_order │
│ 84 │ curly │ 100 │ -1.00e+04 │ 9.15e-06 │ 1109 │ 1100 │ 0 │ 1063 │ 2.42e-01 │ first_order │
│ 85 │ curly10 │ 100 │ -1.00e+04 │ 9.15e-06 │ 1109 │ 1100 │ 0 │ 1063 │ 2.41e-01 │ first_order │
│ 86 │ curly20 │ 100 │ -1.00e+04 │ 8.20e-06 │ 1287 │ 1284 │ 0 │ 1225 │ 8.49e-01 │ first_order │
│ 87 │ curly30 │ 100 │ -1.00e+04 │ 8.68e-06 │ 1565 │ 1562 │ 0 │ 1458 │ 2.78e+00 │ first_order │
│ 89 │ dixmaane │ 99 │ 1.00e+00 │ 7.83e-06 │ 62 │ 61 │ 0 │ 58 │ 1.37e-03 │ first_order │
│ 90 │ dixmaanf │ 99 │ 1.00e+00 │ 6.94e-06 │ 57 │ 55 │ 0 │ 49 │ 1.49e-03 │ first_order │
│ 91 │ dixmaang │ 99 │ 1.00e+00 │ 9.82e-06 │ 59 │ 56 │ 0 │ 53 │ 1.49e-03 │ first_order │
│ 92 │ dixmaanh │ 99 │ 1.00e+00 │ 7.37e-06 │ 66 │ 63 │ 0 │ 59 │ 1.66e-03 │ first_order │
│ 93 │ dixmaani │ 99 │ 1.00e+00 │ 8.27e-06 │ 242 │ 241 │ 0 │ 233 │ 5.53e-03 │ first_order │
│ 94 │ dixmaanj │ 99 │ 1.00e+00 │ 8.71e-06 │ 259 │ 257 │ 0 │ 246 │ 6.81e-03 │ first_order │
│ 95 │ dixmaank │ 99 │ 1.00e+00 │ 9.34e-06 │ 215 │ 213 │ 0 │ 203 │ 5.65e-03 │ first_order │
│ 96 │ dixmaanl │ 99 │ 1.00e+00 │ 9.90e-06 │ 179 │ 176 │ 0 │ 170 │ 4.59e-03 │ first_order │
│ 97 │ dixmaanm │ 99 │ 1.00e+00 │ 8.90e-06 │ 340 │ 339 │ 0 │ 331 │ 7.72e-03 │ first_order │
│ 98 │ dixmaann │ 99 │ 1.00e+00 │ 8.05e-06 │ 305 │ 304 │ 0 │ 295 │ 8.10e-03 │ first_order │
│ 99 │ dixmaano │ 99 │ 1.00e+00 │ 9.91e-06 │ 249 │ 247 │ 0 │ 240 │ 6.50e-03 │ first_order │
│ 100 │ dixmaanp │ 99 │ 1.00e+00 │ 8.45e-06 │ 309 │ 306 │ 0 │ 295 │ 8.09e-03 │ first_order │
│ 101 │ dixon3dq │ 100 │ 1.79e-08 │ 8.88e-06 │ 468 │ 468 │ 0 │ 457 │ 2.08e-03 │ first_order │
│ 102 │ dqdrtic │ 100 │ 6.55e-16 │ 5.54e-07 │ 22 │ 16 │ 0 │ 13 │ 5.91e-05 │ first_order │
│ 103 │ dqrtic │ 100 │ 8.25e-08 │ 6.42e-06 │ 44 │ 34 │ 0 │ 32 │ 3.26e-04 │ first_order │
│ 105 │ edensch │ 100 │ 6.03e+02 │ 1.39e-06 │ 27 │ 25 │ 0 │ 21 │ 5.57e-04 │ first_order │
│ 106 │ eg2 │ 100 │ -9.89e+01 │ 1.01e-10 │ 10 │ 6 │ 0 │ 4 │ 9.11e-05 │ first_order │
│ 108 │ engval1 │ 100 │ 1.09e+02 │ 4.65e-06 │ 30 │ 26 │ 0 │ 21 │ 4.53e-04 │ first_order │
│ 109 │ enso │ 9 │ 3.94e+02 │ 5.33e-06 │ 43 │ 39 │ 0 │ 35 │ 3.28e-03 │ first_order │
│ 110 │ errinros_mod │ 100 │ 3.88e+01 │ 5.96e-06 │ 574 │ 536 │ 0 │ 428 │ 1.01e-02 │ first_order │
│ 111 │ extrosnb │ 100 │ 1.03e-13 │ 8.20e-06 │ 42 │ 36 │ 0 │ 33 │ 4.88e-04 │ first_order │
│ 112 │ fletcbv2 │ 100 │ -5.14e-01 │ 9.87e-06 │ 195 │ 195 │ 0 │ 186 │ 3.12e-03 │ first_order │
│ 113 │ fletcbv3_mod │ 100 │ -2.03e+00 │ 5.27e-06 │ 38 │ 34 │ 0 │ 28 │ 9.58e-04 │ first_order │
│ 114 │ fletchcr │ 100 │ 7.01e-12 │ 9.62e-06 │ 536 │ 531 │ 0 │ 508 │ 7.59e-03 │ first_order │
│ 115 │ fminsrf2 │ 100 │ 1.00e+02 │ 5.83e-06 │ 156 │ 155 │ 0 │ 149 │ 4.57e-03 │ first_order │
│ 116 │ freuroth │ 100 │ 5.98e+03 │ 6.06e-06 │ 36 │ 30 │ 0 │ 27 │ 1.15e-03 │ first_order │
│ 118 │ gauss1 │ 8 │ 6.58e+02 │ 2.63e-04 │ 236876 │ 236281 │ 0 │ 141864 │ 3.00e+01 │ max_time │
│ 119 │ gauss2 │ 8 │ 6.24e+02 │ 1.07e-04 │ 238704 │ 238241 │ 0 │ 129807 │ 3.00e+01 │ max_time │
│ 120 │ gauss3 │ 8 │ 6.22e+02 │ 5.37e-05 │ 238019 │ 236896 │ 0 │ 120354 │ 3.00e+01 │ max_time │
│ 122 │ genbroydenb │ 100 │ 1.75e-10 │ 8.51e-06 │ 48 │ 43 │ 0 │ 41 │ 2.33e-03 │ first_order │
│ 123 │ genbroydentri │ 100 │ 4.32e-05 │ 9.90e-06 │ 137 │ 135 │ 0 │ 130 │ 4.71e-03 │ first_order │
│ 124 │ genhumps │ 100 │ 1.10e-10 │ 6.28e-06 │ 1248 │ 1140 │ 0 │ 968 │ 3.96e-02 │ first_order │
│ 125 │ genrose │ 100 │ 1.00e+00 │ 5.73e-06 │ 287 │ 280 │ 0 │ 258 │ 4.92e-03 │ first_order │
│ 126 │ genrose_nash │ 100 │ 1.00e+00 │ 9.88e-06 │ 322 │ 308 │ 0 │ 278 │ 5.55e-03 │ first_order │
│ 129 │ hahn1 │ 7 │ 2.78e+04 │ 2.07e-10 │ 2 │ 2 │ 0 │ 1 │ 1.38e-04 │ first_order │
│ 296 │ indef_mod │ 100 │ -9.80e+03 │ 6.65e-06 │ 131 │ 127 │ 0 │ 107 │ 2.73e-03 │ first_order │
│ 297 │ integreq │ 100 │ 3.70e-11 │ 8.83e-06 │ 6 │ 6 │ 0 │ 5 │ 4.85e-03 │ first_order │
│ 299 │ kirby2 │ 5 │ 1.95e+00 │ 1.18e-03 │ 1133106 │ 1132534 │ 0 │ 576328 │ 3.00e+01 │ max_time │
│ 301 │ lanczos1 │ 6 │ 2.15e-06 │ 8.10e-06 │ 110 │ 105 │ 0 │ 86 │ 9.23e-04 │ first_order │
│ 302 │ lanczos2 │ 6 │ 2.16e-06 │ 9.31e-06 │ 98 │ 88 │ 0 │ 71 │ 8.09e-04 │ first_order │
│ 303 │ lanczos3 │ 6 │ 2.17e-06 │ 1.61e-06 │ 144 │ 126 │ 0 │ 110 │ 1.17e-03 │ first_order │
│ 304 │ liarwhd │ 100 │ 4.65e-16 │ 8.77e-07 │ 33 │ 23 │ 0 │ 19 │ 5.66e-04 │ first_order │
│ 313 │ mgh17 │ 5 │ 5.52e-02 │ 7.40e-07 │ 38 │ 30 │ 0 │ 22 │ 1.71e-04 │ first_order │
│ 319 │ morebv │ 100 │ 6.02e-07 │ 9.27e-06 │ 6321 │ 6320 │ 0 │ 6151 │ 1.36e-01 │ first_order │
│ 321 │ nazareth │ 100 │ 1.06e+03 │ 4.73e-06 │ 92 │ 83 │ 0 │ 75 │ 7.47e-03 │ first_order │
│ 322 │ ncb20 │ 100 │ 1.67e+02 │ 9.17e-06 │ 779 │ 766 │ 0 │ 708 │ 1.03e-01 │ first_order │
│ 323 │ ncb20b │ 100 │ 1.97e+02 │ 9.42e-06 │ 2952 │ 2945 │ 0 │ 2714 │ 4.71e-01 │ first_order │
│ 325 │ noncvxu2 │ 100 │ 2.32e+02 │ 9.71e-06 │ 669 │ 667 │ 0 │ 649 │ 1.94e-02 │ first_order │
│ 326 │ noncvxun │ 100 │ 2.32e+02 │ 8.57e-06 │ 347 │ 345 │ 0 │ 332 │ 9.90e-03 │ first_order │
│ 327 │ nondia │ 100 │ 1.04e-14 │ 1.90e-06 │ 35 │ 25 │ 0 │ 20 │ 3.68e-04 │ first_order │
│ 328 │ nondquar │ 100 │ 1.93e-06 │ 8.13e-06 │ 2334 │ 2235 │ 0 │ 2041 │ 1.91e-02 │ first_order │
│ 329 │ osborne1 │ 5 │ 2.34e-02 │ 1.02e-01 │ 3698531 │ 3693289 │ 0 │ 3322334 │ 3.00e+01 │ max_time │
│ 330 │ osborne2 │ 11 │ 2.01e-02 │ 8.77e-06 │ 219 │ 217 │ 0 │ 196 │ 8.88e-03 │ first_order │
│ 331 │ palmer1c │ 8 │ 2.62e+00 │ 3.86e-01 │ 99489991 │ 7666605 │ 0 │ 3838637 │ 3.00e+01 │ max_time │
│ 332 │ palmer1d │ 7 │ 3.35e-01 │ 1.05e-01 │ 106632184 │ 8207536 │ 0 │ 4105778 │ 3.00e+01 │ max_time │
│ 333 │ palmer2c │ 8 │ 7.02e-02 │ 1.67e-02 │ 99732774 │ 7678224 │ 0 │ 3841599 │ 3.00e+01 │ max_time │
│ 334 │ palmer3c │ 8 │ 7.86e-02 │ 1.18e-02 │ 98232748 │ 7864827 │ 0 │ 3934864 │ 3.00e+01 │ max_time │
│ 335 │ palmer4c │ 8 │ 1.77e-01 │ 6.11e-03 │ 99784787 │ 7679386 │ 0 │ 3841119 │ 3.00e+01 │ max_time │
│ 336 │ palmer5c │ 6 │ 1.06e+00 │ 4.58e-06 │ 17 │ 16 │ 0 │ 14 │ 4.89e-05 │ first_order │
│ 338 │ palmer6c │ 8 │ 4.76e-02 │ 9.85e-04 │ 99802906 │ 7680555 │ 0 │ 3841522 │ 3.00e+01 │ max_time │
│ 339 │ palmer7c │ 8 │ 1.27e+00 │ 2.96e-02 │ 99334722 │ 7661769 │ 0 │ 3838360 │ 3.00e+01 │ max_time │
│ 340 │ palmer8c │ 8 │ 8.00e-02 │ 2.13e-03 │ 99536425 │ 7667021 │ 0 │ 3837502 │ 3.00e+01 │ max_time │
│ 341 │ penalty1 │ 100 │ 4.51e-04 │ 6.11e-06 │ 162 │ 141 │ 0 │ 114 │ 2.00e-03 │ first_order │
│ 342 │ penalty2 │ 100 │ 9.71e+04 │ 6.47e-06 │ 86 │ 73 │ 0 │ 68 │ 2.75e-03 │ first_order │
│ 343 │ penalty3 │ 100 │ 1.00e+00 │ 2.10e+00 │ 696010 │ 55752 │ 0 │ 27899 │ 3.00e+01 │ max_time │
│ 350 │ powellsg │ 100 │ 9.99e-09 │ 7.59e-06 │ 71 │ 60 │ 0 │ 52 │ 8.69e-04 │ first_order │
│ 351 │ power │ 100 │ 1.59e-08 │ 8.09e-06 │ 61 │ 47 │ 0 │ 45 │ 3.96e-04 │ first_order │
│ 352 │ quartc │ 100 │ 8.25e-08 │ 6.42e-06 │ 44 │ 34 │ 0 │ 32 │ 3.13e-04 │ first_order │
│ 359 │ sbrybnd │ 100 │ 1.38e+01 │ 9.92e-06 │ 18239 │ 18219 │ 0 │ 17508 │ 1.10e+00 │ first_order │
│ 360 │ schmvett │ 100 │ -2.94e+02 │ 4.59e-06 │ 23 │ 23 │ 0 │ 20 │ 8.59e-04 │ first_order │
│ 361 │ scosine │ 100 │ -2.34e+01 │ 5.17e+20 │ 2162199 │ 864844 │ 0 │ 432419 │ 3.00e+01 │ max_time │
│ 362 │ sinquad │ 100 │ 1.14e-11 │ 7.01e-06 │ 91 │ 85 │ 0 │ 74 │ 1.62e-03 │ first_order │
│ 363 │ sparsine │ 100 │ 3.84e-12 │ 9.54e-06 │ 463 │ 449 │ 0 │ 424 │ 1.70e-02 │ first_order │
│ 364 │ sparsqur │ 100 │ 2.35e-08 │ 8.11e-06 │ 30 │ 25 │ 0 │ 23 │ 7.05e-04 │ first_order │
│ 365 │ spmsrtls │ 100 │ 5.65e-11 │ 7.86e-06 │ 71 │ 71 │ 0 │ 66 │ 1.51e-03 │ first_order │
│ 366 │ srosenbr │ 100 │ 9.09e-15 │ 4.32e-06 │ 56 │ 47 │ 0 │ 40 │ 6.12e-04 │ first_order │
│ 377 │ thurber │ 7 │ 2.82e+03 │ 7.98e-05 │ 2807546 │ 2807184 │ 0 │ 2509858 │ 3.00e+01 │ max_time │
│ 378 │ tointgss │ 100 │ 9.71e+00 │ 9.77e-06 │ 18 │ 18 │ 0 │ 14 │ 5.97e-04 │ first_order │
│ 380 │ tquartic │ 100 │ 3.71e-20 │ 7.91e-09 │ 26 │ 24 │ 0 │ 18 │ 3.45e-04 │ first_order │
│ 385 │ tridia │ 100 │ 1.56e-12 │ 9.72e-06 │ 201 │ 197 │ 0 │ 188 │ 8.88e-04 │ first_order │
│ 386 │ vardim │ 100 │ -5.22e-08 │ 1.42e-09 │ 68 │ 44 │ 0 │ 39 │ 9.62e-03 │ first_order │
│ 387 │ vibrbeam │ 8 │ 5.28e+00 │ 1.29e-03 │ 3303232 │ 3300523 │ 0 │ 1767092 │ 3.00e+01 │ max_time │
│ 388 │ watson │ 31 │ 1.15e-09 │ 6.03e-06 │ 1732 │ 1552 │ 0 │ 1349 │ 8.29e-01 │ first_order │
│ 389 │ woods │ 100 │ 4.89e-13 │ 7.22e-06 │ 87 │ 78 │ 0 │ 62 │ 1.64e-03 │ first_order │
└────────┴───────────────┴────────┴───────────┴───────────┴───────────┴─────────┴────────┴─────────┴───────────┴─────────────┘first_order(df) = df.status .== :first_order
unbounded(df) = df.status .== :unbounded
solved(df) = first_order(df) .| unbounded(df)
costnames = ["time", "obj + grad + hess"]
costs = [
df -> .!solved(df) .* Inf .+ df.elapsed_time,
df -> .!solved(df) .* Inf .+ df.neval_obj .+ df.neval_grad .+ df.neval_hess,
]
using Plots
gr()
profile_solvers(stats, costs, costnames)It is also possible to select problems when initializing the problem list by filtering OptimizationProblems.meta:
meta = OptimizationProblems.meta
problem_list = meta[(meta.ncon .== 0) .& .!meta.has_bounds .& (5 .<= meta.nvar .<= 100), :name]
problems = (MathOptNLPModel(eval(Meta.parse(problem))(), name=problem) for problem ∈ problem_list)