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 will install CUTEst binaries for your platform automatically. The gfortran compiler is still required to compile decoded SIF problems. No other Fortran compiler is supported.
The following command installs the CUTEst binaries and Julia interface:
pkg> add CUTEst
If you already have a collection of SIF problems that you wish to use, you can simply set the MASTSIF
environment variable to point to their location.
If not, the command
julia> fetch_sif_problems()
will download the most recent version of the standard SIF collection and set MASTSIF
appropriately.
Subsequent calls to the same function will pull any updates to the SIF problems.
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.