Skip to content

Instantly share code, notes, and snippets.

@dpo
Created March 28, 2020 23:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dpo/4c1c74974a59d58ce91c8a513ebdbc54 to your computer and use it in GitHub Desktop.
Save dpo/4c1c74974a59d58ce91c8a513ebdbc54 to your computer and use it in GitHub Desktop.
enable_autocomplete_brackets(false) # do this if using OhMyRepl and Tmux
using Pkg
Pkg.activate("dev-jso-solvers")
Pkg.develop(PackageSpec(url="../LinearOperators.jl"))
Pkg.develop(PackageSpec(url="../NLPModels.jl"))
Pkg.develop(PackageSpec(url="../NLPModelsJuMP.jl"))
Pkg.develop(PackageSpec(url="../SolverTools.jl"))
# Pkg.develop(PackageSpec(url="../OptimizationProblems.jl"))
Pkg.develop(PackageSpec(url="."))
Pkg.add("OptimizationProblems")
Pkg.add("SolverBenchmark")
Pkg.add("DataFrames")
using NLPModels, JSOSolvers, NLPModelsJuMP, OptimizationProblems
using SolverTools, SolverBenchmark, DataFrames
probs = (MathOptNLPModel(eval(prob)(), name=string(prob)) for prob names(OptimizationProblems) if prob != :OptimizationProblems)
solvers = Dict{Symbol,Function}(
:trunk => p -> trunk(p, max_eval=1000),
:trunklsr1 => p -> trunk(LSR1Model(p, scaling=true), max_eval=3000),
:trunklbfgs => p -> trunk(LBFGSModel(p, scaling=true), max_eval=3000),
)
stats = bmark_solvers(solvers, probs, skipif=p -> (p.meta.nvar < 100 || p.meta.ncon > 0))
Pkg.add("Plots")
using Plots
solved(df) = df.status .== :first_order
costnames = ["elapsed time",
"objective evals",
"gradient evals",
"hessian-vector products",
"obj + grad + hprod"]
costs = [df -> .!solved(df) .* Inf .+ df.elapsed_time,
df -> .!solved(df) .* Inf .+ df.neval_obj,
df -> .!solved(df) .* Inf .+ df.neval_grad,
df -> .!solved(df) .* Inf .+ df.neval_hprod,
df -> .!solved(df) .* Inf .+ df.neval_obj .+ df.neval_grad .+ df.neval_hprod]
profile_solvers(stats, costs, costnames)
savefig("trunkqn.png")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment