Group for Research in Decision Analysis

G-2016-42

NLP.py: An object-oriented environment for large-scale optimization

, , and

NLP.py is a programming environment to model continuous optimization problems and to design computational methods in the high-level and powerful Python language with performance-critical parts implemented in Cython, a low-level superset of Python that compiles to machine code. With the aim of designing numerical methods, NLP.py is accompanied by an extensive set of building blocks to solve the linear algebra and subproblems typically encountered in the solution of large-scale convex and nonconvex problems, including direct and iterative method for linear systems, linesearch strategies, trust-region subproblems, and bound-constrained subproblems. NLP.py supports several sparse matrix packages, including our own novel CySparse library. NLP.py features turnkey algorithms for problems with specific structure along with tools to assess performance. The extensible nature of NLP.py combines with the might and ubiquity of Python to make it a powerful development and analysis environment for optimization researchers and practitioners.

, 19 pages