\chapter{Advanced Pyomo Examples}

\section{XXX Advanced Pyomo Examples}

\subsection{Parallel Benders Decomposition}

TODO: Does the following paragraph go here?  I think that Dave's talking
about the abilities that we're leveraging in PH, but we haven't discussed
that in this paper.  Perhaps this should go back into the introduction,
but if so then the intent needs to be clarified for me (BILL).

An important consequence of the design using Python and integration
with the Coopr environment is that modularity is fully supported over
a range of abstraction.  At one extreme, the model elements can be
manipulated explicitly by specifying their names and the values of
their indexes. This sort of reference can be made more abstract, as
is the case with algebraic modeling languages, by specifying various
types of named sets so that the dimensions and details of the data
can be separated from the specification of the model. Separation of an
abstract declarative model from the data specification is a hallmark of
structure modeling techniques for efficient modeling \citep{Geoffrion}.
At the other extreme, elements of a mathematical program can be treated in
their fully canonical form as is supported by callable solver libraries.
Methods can be written that operate, for example, on objective functions
or constraints in a fully general way. This capability is a fundamental
tool for general algorithm development and extension \citep{Marsten}.
Pyomo provides the full continuum of abstraction between these two
extremes to support modeling and development.  Furthermore, methods are
extensible via overloading of all defined operations. Both modelers and
developers can alter the behavior of the package or add new functionality.


