10:30 AM - 10:55 AM
Optimization Services: Communicating Solver Options and Solver Results
Optimization Services (OS) is a framework that links algebraic modelling languages (AMLs) and solvers, developed as an open source project under the umbrella of COIN-OR. OS supports a variety of linear and nonlinear solvers, both open source and commercial. OS is web-aware, allowing for seemless integration of distributed computing environments and even cloud computing. Communication between algebraic modelling languages and solvers takes place through strings and files in standardized XML formats. I will give a brief overview of the system design and will then concentrate on describing the option and result formats in more detail. Unlike the instance description, there are challenges here to allow for both flexibility to cater to the varying design choices of solver developers, and rigidity to allow one AML to talk to multiple solvers without changing the interface.
10:55 AM - 11:20 AM
Implementing Customized Pivot Rules in COIN-OR's CLP with Cython
Commercial linear programming packages, such as CPLEX and Gurobi, offer convenient
APIs for most common programming languages to implement extensions or prototype new ideas but remain limiting in how deep in the details one can go. For example implementing a new pivot rule to be used in the Simplex method is not possible using those APIs. Open-Source software, on the other hand, give all freedom to modifiy and extend, but have few APIs. This is the case with CLP, COIN-OR's C++ implementation of the Simplex method. We present how new pivot rules may be implemented in CLP and show how the Cython extension of the Python language allows us to build a convenient interface by way of which users can prototype new pivot rules directly in Cython. We illustrate our procedure using Wolfe's pivot rule and present numerical results.
11:20 AM - 11:45 AM
NLPy: A Python Toolkit for Large-Scale Optimization
NLPy is a programming environment allowing users to model optimization problems and to design novel numerical solution methods in the high-level and powerful Python language. With large-scale problems in mind, an extensive set of building blocks commonly used to solve the linear algebra and optimization subproblems typically encountered in this discipline is provided. The package features ready-to-roll algorithms for linear and convex quadratic programming, and nonconvex unconstrained, bound-constrained, and nonlinearly-constrained problems along with tools to assess performance, benchmark and compare numerical methods. Though currently focusing on problems of continuous variables, direct extensions could target combinatorial and mixed-variable problems. The expandable nature of NLPy combined with the might and ubiquity of Python makes it a powerful development and analysis environment for optimization researchers and practitioners.