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.
How to Cite
If you use CUTEst.jl in your work, please cite using the format given in CITATION.bib.
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.
After installing, you can create instances of
NLPModels models, with
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)
Run multiple models in parallel
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
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 CUTEstModel derives.
- AmplNLReader.jl provides an interface to AMPL models based on NLPModels.jl.
- NLPModelsJuMP.jl provides conversion from JuMP.jl / MathOptInterface.jl models to NLPModels.
- OptimizationProblems.jl provides a collection of optimization problems in JuMP.jl syntax.