Friday, April 16, 2010

PyUtilib Component Architecture

I earlier mentioned that I developed a plugin framework within my PyUtilib software.  This is now called the PyUtilib Component Architecture (PCA).  The PCA is derived from the Trac component architecture, and it supports advanced features like nonsingleton components, namespaces and caching of component interactions. The PCA includes an independent, self-contained framework core that can be easily integrated into other applications, as well as a variety of extension packages with commonly used components.

See The PyUtilib Component Architecture for further details.

Recent Coopr Developments

Coopr is a collection of Python optimization-related packages that supports a diverse set of optimization capabilities for formulating and analyzing optimization models. The following are key Coopr capabilities that are driving Coopr development:

  • Pyomo: Formulate algebraic models within Python's modern programming language
  • PySP: Generic solvers for stochastic programming problems
  • COLIN: Scripts that simplify IO between optimizers and black-box applications
  • SUCASA: Customize MIP solvers to expose model structure to the MIP solver engine

See for instructions for getting started with Coopr. An installation script, coopr_install, is provided to simplify the installation of Coopr packages along with the third-party Python packages that they depend on. This installer can also automatically install extension packages from Coin Bazaar. See for online discussions of Coopr.

Two recent Coopr developments are noteworthy:

I. Coopr development is now co-hosted by Sandia National Laboratories and COIN-OR:

Coopr includes wrappers for COIN-OR solvers, and Coopr directly leverages the COIN-OR Coin
Bazaar project to host plug-in packages for Coopr (e.g., see the coopr.neos package in Coin Bazaar).

II. We have recently released Coopr 2.3. This release includes
  • A preliminary Gurobi solver interface
  • Extended syntax for data command files:
    o 'include' command to load other data command files
    o 'import' command to load data from other sources
    o namespaces to next data declarations
  • The coopr_install script can install packages from Coin Bazaar
  • New conversion scripts to generate LP or NL files from Pyomo models
  • Solvers now extract standard suffix information
  • Various fixes to PySP solvers
  • Full support for PyPI. You can install from PyPI using the 'Coopr' package name.