piecewise

This file contains a library of functions needed to construct piecewise constraints for a Pyomo model. All piecewise types except for SOS2, BIGM_SOS1, BIGM_BIN were taken from the paper:

Mixed-Integer Models for Non-separable Piecewise Linear Optimization: Unifying framework and Extensions (Vielma, Nemhauser 2008).

TODO: Add regression tests for the following completed tasks
  • user not providing floats can be an major issue for BIGM’s and MC

  • nonconvex/nonconcave functions - BIGM_SOS1, BIGM_SOS2 * possible edge case bug

Possible Extensions
  • Consider another piecewise rep (“SOS2_MANUAL”?) where we manually implement extra constraints to define an SOS2 set, this would be compatible with GLPK, http://winglpk.sourceforge.net/media/glpk-sos2_02.pdf

  • double check that LOG and DLOG reps really do require (2^n)+1 points, or can we just add integer cuts (or something more intelligent) in order to handle piecewise functions without 2^n polytopes

  • piecewise for functions of the form y = f(x1,x2,…)

Enums

Bound(value)

PWRepn(value)

Classes

IndexedPiecewise(*args, **kwds)

Piecewise(*args, **kwds)

Adds piecewise constraints to a Pyomo model for functions of the form, y = f(x).

PiecewiseData(parent)

This class defines the base class for all linearization and piecewise constraint generators..

SimplePiecewise(*args, **kwds)