Testing environment for optimization and linear algebra solvers.
CUTEr is a versatile testing environment for optimization and linear algebra solvers. This toolbox includes function to decode and build SIF problems. It provides CUTEr functions which compute the objective, gradients of the objective, contraints, jacobian of the constraints and hessians for constrained and unconstrained problems. It also provides interfaces with the optimization solvers available in Scilab and its toolboxes and finnaly a set of tools for benchmarking and computing performance profiles.
A Fortran compiler is mandatory to build problems.
This toolbox contains many parts:
A set of testing problems coded in "Standard Input Format" (SIF) is included in the sif/ sub-directory. This set comes from www.numerical.rl.ac.uk/cute/mastsif.html.
The Scilab function sifselect can be used to select some of this problems according to objective function properties, contraints properties and regularity properties
The Scilab function sifdecode can be used to generate the Fortran codes associated to a given problem, while The Scilab function buildprob compiles and dynamically links these fortran code with Scilab
The execution of the function buildprob adds a set of functions to Scilab. The first one is usetup for unconstrained or bounded problems or csetup for problems with general contraints. These functions are to be called before any of the following to initialize the problem relative data (only one problem can be run at a time).
The functions udimen, cdimen, udimsh, cdimsh, unames, cnames, uvarty, cvarty, ureprt, creprt and cdimsj, get_classification, get_problem_sizes, can be used to query problem properties.
The other functions allow to compute the objective, the gradient, the hessian values, ... of the problem at a given point: ufn, cfn, uofg, cofg ugr, cgr, ugrdh, cgrdh, ugrsh, cgrdh, udh, cdh, cidh, csgr, ccfg, ccfsg, ccifg, ccifsg.
The Scilab function optim
can be used together with
CUTEr using either the external function optim_obj or the driver
function sifoptim
which try to minimize a problem given by its SIF file
using optim
The Scilab function qld
can be used together with
CUTEr using either the function cute2qp or the driver
function sifqld which
try to minimize a problem given by its SIF file using
qld
.
The Scilab function qpsolve
can be used together with
CUTEr using either the function cute2qp or the driver
function sifqpsolve which
try to minimize a problem given by its SIF file using
qpsolve
.
The Scilab function quapro
(Scilab toolbox) can be used together with CUTEr using
either the function cute2qp or the driver
function sifquapro,
which try to minimize a problem given by its SIF file
using quapro
.
The Scilab function fsqp
(Scilab toolbox) can be used together with CUTEr using
either the external functions
fsqp_obj,
fsqp_grobj,
fsqp_cntr,
fsqp_cntr,
fsqp_grcntr,
or the driver
function siffsqp,
which try to minimize a problem given by its SIF file
using fsqp
.
The Scilab function ipopt
(Scilab toolbox) can be used together with CUTEr using
either the external functions ipopt_obj, ipopt_grobj, ipopt_cntr, ipopt_cntr, ipopt_grcntr, or the
driver function sifipopt, which try to
minimize a problem given by its SIF file using
ipopt
.
The Scilab function conmin
(Scilab toolbox) can be used together with CUTEr
using either the external functions conmin_obj, conmin_constr or the
driver function sifconmin, which try to
minimize a problem given by its SIF file using
conmin
.
This toolbox also provides the cuter_bench function
which allow to automatically run the Scilab solvers
(optim, fsqp, ipopt, qld, quapro, qpsolve) on all
SIF problems provided in this toolbox and to
validate the results and to produce an result
tables. This function uses the subsidiary functions
test_<solver_name>
to apply a solver to a problem and the
bench<solver_name>
to manage the result tables.
The results tables are Scilab
mlist
whose names are
Res_<solver_name>. Each row contains the data
for a SIF problem. The data fields depends on the
solver but there is at least : the optimal objective
found (Cost
,the feasibility norm
(feas
), the lagrangian norm
(glagn
), the dual feasibility
norm (comp_val
), the cpu time
(Time
) and a failure indicator
(Fail
). If relevant, the number
of objective function calls (Nf
)
and the number of gradient of objective function
calls (Ng
) are also reported.
The main properties of SIF problems used are also
reported in the Res_general
data
structure.
The result tables can then be used to derive performance profiles using the perf_profile function.
Based on CUTEr authored by
Nicholas I.M. Gould - n.gould@rl.ac.uk - RAL
Dominique Orban - orban@ece.northwestern.edu - Northwestern
Philippe L. Toint - Philippe.Toint@fundp.ac.be - FUNDP
see http://hsl.rl.ac.uk/cuter-www