Skip to main content
Log in

CUTEst: a Constrained and Unconstrained Testing Environment with safe threads for mathematical optimization

  • Published:
Computational Optimization and Applications Aims and scope Submit manuscript

Abstract

We describe the most recent evolution of our constrained and unconstrained testing environment and its accompanying SIF decoder. Code-named SIFDecode and CUTEst, these updated versions feature dynamic memory allocation, a modern thread-safe Fortran modular design, a new Matlab interface and a revised installation procedure integrated with GALAHAD.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1

Similar content being viewed by others

References

  1. Birgin, E.G., Martinez, J.M., Raydan, M.: Algorithm 813: SPG–software for convex-constrained optimization. ACM Trans. Math. Softw. 27, 340–349 (2001)

    Article  MATH  Google Scholar 

  2. Birgin, E.G., Castillo, R., Martinez, J.M.: Numerical comparison of augmented Lagrangian algorithms for nonconvex problems. Comput. Optim. Appl. 31(1), 31–56 (2005)

    Article  MATH  MathSciNet  Google Scholar 

  3. Bongartz, I., Conn, A.R., Gould, N.I.M., Toint, Ph.L.: \({\sf CUTE}\): constrained and unconstrained testing environment. ACM Trans. Math. Softw. 21(1), 123–160 (1995)

  4. Conn, A.R., Gould, N.I.M., Toint, Ph.L.: An introduction to the structure of large scale nonlinear optimization problems and the \({\sf LANCELOT}\) project. In: Glowinski, R., Lichnewsky, A. (eds.) Computing Methods in Applied Sciences and Engineering, pp. 42–51. SIAM, Philadelphia (1990)

  5. Conn, A.R., Gould, N.I.M., Toint, Ph.L.: \({\sf LANCELOT}\): A Fortran Package for Large-Scale Nonlinear Optimization (Release A). Springer Series in Computational Mathematics. Springer, Heidelberg, Berlin, New York (1992)

  6. Le Digabel, S.: Algorithm 909: NOMAD: nonlinear optimization with the MADS algorithm. ACM Trans. Math. Softw. 37(4), 1–15 (2011)

    Article  Google Scholar 

  7. Dolan, E.D., Gurson, A.P., Shepherd, P.L., Siefert, C.M., Torczon, V.J., Yates, A.: C++ direct searches. http://www.cs.wm.edu/va/software/DirectSearch/direct_code/ (2001)

  8. Fletcher, R.: A sequential linear constraint programming algorithm for NLP. SIAM J. Optim. 22(3), 772–794 (2012)

    Article  MATH  MathSciNet  Google Scholar 

  9. Gay, D.M.: Electronic mail distribution of linear programming test problems. Mathematical Programming Society COAL Newsletter, December (1985). http://www.netlib.org/lp/data/

  10. Gill, P.E., Wong, E.: Methods for convex and general quadratic programming. Technical Report NA 10–1, Department of Mathematics, University of California, San Diego, 2013. To appear Mathematical Programming Computation (2014)

  11. Gould, N.I.M., Orban, D., Toint, Ph.L.: \({\sf CUTEr}\) (and \({\sf SifDec}\)), a constrained and unconstrained testing environment, revisited. ACM Trans. Math. Softw. 29(4), 373–394 (2003)

  12. Gould, N.I.M., Orban, D., Toint, Ph.L.: \({\sf GALAHAD}\)—a library of thread-safe fortran 90 packages for large-scale nonlinear optimization. ACM Trans. Math. Softw. 29(4), 353–372 (2003)

  13. IBM Optimization Solutions and Library: QP Solutions User Guide. IBM Corportation (1998)

  14. International Business Machine Corporation: Mathematical programming system/360 version 2, linear and separable programming-user’s manual. Technical Report H20–0476-2, IBM Corporation, 1969. MPS Standard

  15. Kocvara, M., Stingl, M.: PENNON: a code for convex nonlinear and semidefinite programming. Optim. Methods Softw. 18(3), 317–333 (2003)

    Article  MATH  MathSciNet  Google Scholar 

  16. Maros, I., Meszaros, C.: A repository of convex quadratic programming problems. Optim. Methods Softw. 11–12, 671–681 (1999)

    Article  MathSciNet  Google Scholar 

  17. Ponceleón, D.B.: Barrier methods for large-scale quadratic programming. Ph.D. Thesis, Department of Computer Science, Stanford University, Stanford, CA, USA (1990)

  18. Powell, M.J.D.: The BOBYQA algorithm for bound constrained optimization without derivatives. Technical Report DAMTP NA2009/06, Department of Applied Mathematics and Theoretical Physics, Cambridge University, Cambridge, UK (2009)

  19. Powell, M.J.D.: The LINUOA software for linearly unconstrained optimization without derivatives. http://www.netlib.org/na-digest-html/13/v13n42.html (2013)

  20. Powell, M.J.D.: The NEWUOA software for unconstrained optimization without derivatives. In: Di Pillo, G., Roma, M. (eds.) Large-Scale Nonlinear Optimization. Nonconvex Optimization and Its Applications, vol. 83, pp. 255–297. Springer, Heidelberg, Berlin, New York (2006)

    Chapter  Google Scholar 

  21. QPLIB2014: a Quadratic Programming Library. http://www.lamsade.dauphine.fr/QPlib2014/doku.php (2014)

  22. Schittkowski, K.: NLPQLP: a Fortran implementation of a sequential quadratic programming algorithm with distributed and non-monotone line search. University of Bayreuth, Department of Computer Science, Technical report (2010)

  23. Schittkowski, K.: QL: a Fortran code for convex quadratic programming–User’s guide, Version 2.11. Technical report, University of Bayreuth, Department of Computer Science (2005)

Download references

Acknowledgments

We are extremely grateful to Roger Fletcher, Philip Gill, Bill Hager, Michal Kočvara, Michael Powell, Klaus Schittkowski and Elizabeth Wong for making their latest codes available to us so that we could build and test interfaces, and to two anonymous referees whose enthusiastic comments lead to a better paper. The work of the first author was supported by the EPSRC Grant EP/I013067/1. The work of the second author was supported by an NSERC Discovery Grant.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Nicholas I. M. Gould.

Appendices

Appendix 1: available tools

Separate evaluation tools are provided for unconstrained and constrained problems. Both unthreaded and threaded versions are available when this is relevant. See the appropriate man page for full details.

Unconstrained problems:

cutest_udimen (both threaded and unthreaded)

determine the number of variables.

cutest_usetup (unthreaded) and cutest_usetup_threaded (threaded)

setup internal data structures and determine variable bounds.

cutest_unames (both threaded and unthreaded)

determine the names of the problem and the variables.

cutest_uvartype (both threaded and unthreaded)

determine whether the variables are continuous or discrete.

cutest_udimsh (both threaded and unthreaded)

determine the number of nonzeros in the sparse Hessian.

cutest_udimse (both threaded and unthreaded)

determine the number of nonzeros in the finite-element Hessian.

cutest_ufn (unthreaded) and cutest_ufn_threaded (threaded)

evaluate the objective function value.

cutest_ugr (unthreaded) and cutest_ugr_threaded (threaded)

evaluate the gradient of the objective function.

cutest_uofg (unthreaded) and cutest_uofg_threaded (threaded)

evaluate both the values and gradients of the objective function.

cutest_udh (unthreaded) and cutest_udh_threaded (threaded)

evaluate the Hessian of the objective function as a dense matrix.

cutest_ugrdh (unthreaded) and cutest_ugrdh_threaded (threaded)

evaluate the objective gradient and dense Hessian.

cutest_ushp (both threaded and unthreaded)

evaluate the sparsity pattern of the Hessian of the objective function.

cutest_ush (unthreaded) and cutest_ush_threaded (threaded)

evaluate the Hessian of the objective function as a sparse matrix.

cutest_ugrsh (unthreaded) and cutest_ugrsh_threaded (threaded)

evaluate the objective gradient and sparse Hessian.

cutest_ueh (unthreaded) and cutest_ueh_threaded (threaded)

evaluate the Hessian of the objective function as a finite-element matrix.

cutest_ugreh (unthreaded) and cutest_ugreh_threaded (threaded)

evaluate the objective gradient and finite-element Hessian.

cutest_uhprod (unthreaded) and cutest_uhprod_threaded (threaded)

evaluate the product of the Hessian of the objective function with a vector.

cutest_ubandh (unthreaded) and cutest_ubandh_threaded (threaded)

obtain the part of the Hessian of the objective that lies within a specified

band.

cutest_ureport (unthreaded) and cutest_ureport_threaded (threaded)

discover how many evaluations have occured and how long this has taken.

cutest_uterminate (both unthreaded and threaded)

remove internal data structures when they are no longer needed.

Constrained problems:

cutest_cdimen (both threaded and unthreaded)

determine the number of variables and constraints.

cutest_csetup (unthreaded) and cutest_csetup_threaded (threaded)

setup internal data structures and determine variable and constraint bounds.

cutest_cnames (both threaded and unthreaded)

determine the names of the problem, the variables and the constraints.

cutest_connames (both threaded and unthreaded)

determine the names of the constraints.

cutest_cvartype (both threaded and unthreaded)

determine whether the variables are continuous or discrete.

cutest_cdimsj (both threaded and unthreaded)

determine the number of nonzeros in sparse constraint Jacobian.

cutest_cdimsh (both threaded and unthreaded)

determine the number of nonzeros in the sparse Hessian.

cutest_cdimse (both threaded and unthreaded)

determine the number of nonzeros in the finite-element Hessian.

cutest_cfn (unthreaded) and cutest_cfn_threaded (threaded)

evaluate the objective function and constraint values.

cutest_cgr (unthreaded) and cutest_cgr_threaded (threaded)

evaluate the gradients of the objective function and constraints.

cutest_cofg (unthreaded) and cutest_cofg_threaded (threaded)

evaluate both the value and gradient of the objective function.

cutest_cofsg (unthreaded) and cutest_cofsg_threaded (threaded)

evaluate both the value and sparse gradient of the objective function.

cutest_csgr (unthreaded) and cutest_csgr_threaded (threaded)

evaluate the sparse gradients of the objective function and constraints.

cutest_ccfg (unthreaded) and cutest_ccfg_threaded (threaded)

evaluate the values and gradients of the constraints.

cutest_ccfsg (unthreaded) and cutest_ccfsg_threaded (threaded)

evaluate the values and sparse gradients of the constraints.

cutest_ccifg (unthreaded) and cutest_ccifg_threaded (threaded)

evaluate the value and gradient of an individual constraint.

cutest_clfg (unthreaded) and cutest_clfg_threaded (threaded)

evaluate both the value and gradient of the Lagrangian function.

cutest_ccifsg (unthreaded) and cutest_ccifsg_threaded (threaded)

evaluate the value and sparse gradient of an individual constraint.

cutest_cdh (unthreaded) and cutest_cdh_threaded (threaded)

evaluate the Hessian of the Lagrangian function as a dense matrix.

cutest_cidh (unthreaded) and cutest_cidh_threaded (threaded)

evaluate the Hessian of the objective function or an individual constraint

as a dense matrix.

cutest_cgrdh (unthreaded) and cutest_cgrdh_threaded (threaded)

evaluate the constraint Jacobian and Hessian of the Lagrangian function

as dense matrices.

cutest_cshp (both threaded and unthreaded)

evaluate the sparsity pattern of the Hessian of the Lagrangian function.

cutest_csh (unthreaded) and cutest_csh_threaded (threaded)

evaluate the Hessian of the Lagrangian function as a sparse matrix.

cutest_cshc (unthreaded) and cutest_cshc_threaded (threaded)

evaluate the Hessian of the Lagrangian function not including the

objective as a sparse matrix.

cutest_cish (unthreaded) and cutest_cish_threaded (threaded)

evaluate the Hessian of the objective function or an individual constraint

as a sparse matrix.

cutest_csgrsh (unthreaded) and cutest_csgrsh_threaded (threaded)

evaluate the constraint Jacobian and Hessian of the Lagrangian function

as sparse matrices.

cutest_ceh (unthreaded) and cutest_ceh_threaded (threaded)

evaluate the Hessian of the Lagrangian function as a finite-element

matrix.

cutest_csgreh (unthreaded) and cutest_csgreh_threaded (threaded)

evaluate the constraint Jacobian as a sparse matrix and the Hessian of

the Lagrangian function as a finite-element matrix.

cutest_chprod (unthreaded) and cutest_chprod_threaded (threaded)

evaluate the product of the Hessian of the Lagrangian function with a

vector.

cutest_chcprod (unthreaded) and cutest_chcprod_threaded (threaded)

evaluate the product of the Hessian of the Lagrangian function not

including the objective with a vector.

cutest_cjprod (unthreaded) and cutest_cjprod_threaded (threaded)

evaluate the product of the constraint Jacobian or its transpose with a

vector.

cutest_creport (unthreaded) and cutest_creport_threaded (threaded)

discover how many evaluations have occured and how long this has taken.

cutest_cterminate (both unthreaded and threaded)

remove internal data structures when they are no longer needed.

Both unconstrained problems and constrained problems:

cutest_probname (both threaded and unthreaded)

determine the name of the problem.

cutest_varnames (both threaded and unthreaded)

determine the names of the variables.

A call to cutest_u/csetup[_threaded] must precede calls to any other evaluation tool with the exception of cutest_u/cdimen. Once cutest_u/cterminate[_threaded] has been called, no further calls should be made without first recalling cutest_u/csetup[_threaded].

Appendix 2: Matlab interfaces

The updated Matlab tools are described in Table 1.

Table 1 Available Matlab tools

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Gould, N.I.M., Orban, D. & Toint, P.L. CUTEst: a Constrained and Unconstrained Testing Environment with safe threads for mathematical optimization. Comput Optim Appl 60, 545–557 (2015). https://doi.org/10.1007/s10589-014-9687-3

Download citation

  • Received:

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10589-014-9687-3

Keywords

Navigation