This package provides an interface to CUTEst, a repository of constrained and unconstrained nonlinear programming problems for testing and comparing optimization algorithms, derived from the abstract model on NLPModels.
This package should detect your existing CUTEst installation, and will install its private version of CUTEst otherwise. The gfortran compiler is required. We currently do not support other Fortran compilers.
On OSX, Homebrew.jl will install gfortran if gfortran is not detected on your system.
You may either use standard Homebrew to install gfortran yourself from precompiled bottled using brew install gcc
or let Homebrew.jl install its private version.
In the latter scenario, gcc and gfortran need to be compiled from source.
On Linux, you'll need to install wget
and gfortran
, and also make libgfortran.so
visible by julia
. See this
page for how to
install the requirements on some linux distributions.
The following commands download CUTEst, change to the specific branch, and build CUTEst.
julia> Pkg.add("CUTEst")
After installing, you can create instances of
NLPModels models, with
the name CUTEstModel
:
using CUTEst
nlp = CUTEstModel("BYRDSPHR");
print(nlp);
This model accepts the same functions as the other NLPModels, for instance
fx = obj(nlp, nlp.meta.x0)
gx = grad(nlp, nlp.meta.x0)
Hx = hess(nlp, nlp.meta.x0)
First, decode each of the problems in serial.
function decodemodel(name)
finalize(CUTEstModel(name))
end
probs = ["AKIVA", "ALLINITU", "ARGLINA", "ARGLINB", "ARGLINC","ARGTRIGLS", "ARWHEAD"]
broadcast(decodemodel, probs)
Then, call functions handling models in parallel. It is important to pass decode=false
to CUTEstModel
.
addprocs(2)
@everywhere using CUTEst
@everywhere function evalmodel(name)
nlp = CUTEstModel(name; decode=false)
retval = obj(nlp, nlp.meta.x0)
finalize(nlp)
retval
end
fvals = pmap(evalmodel, probs)
- NLPModels.jl provides an AbstractModel from which CUTEst.jl derives, and other models deriving from it, such as MathProgNLPModel, which uses MathProgBase.jl, SimpleNLPModel, for user created functions, ADNLPModel with automatic differentiation, and SlackModel, which creates an equality constrained model with bounds on the variables from a given AbstractModel.
- AmplNLReader.jl provides an interface to AMPL models based on NLPModels.jl.
- OptimizationProblems.jl provides a collection of optimization problems in JuMP.jl syntax.