DipPy is a Python-based modeling language that provides a simple interface to DIP, a framework for implementing a variety of decomposition-based branch-and-bound algorithms for solving mixed integer linear programs). DipPy is an extension of PuLP (Python library for modeling linear and integer programs) that allows users to specify decompositions and customize the branching, cut generation, and column generation of DIP, from within a PuLP model. This interface greatly simplifies both the problem definition and the customization of the framework using that problem definition.

License: EPL

Authors: Michael O'Sullivan


WARNING Dippy documentation is currently under revision due to Dippy being moved into DIP. These links will most likely provide out-of-date documentation until "sometime soon."

  • An online version of the compiled HTML documentation from the Dippy repository is available here.
  • Dippy -- a simplified interface for advanced mixed-integer programming, Michael O’Sullivan, Qi-Shan Lim, Cameron Walker, Iain Dunning, Stuart Mitchell. Report 685, University of Auckland Faculty of Engineering, Auckland, New Zealand, February 2011. Available on Optimization Online.

Getting DipPy

The source for DipPy comes with DIP itself now and can be found in the Dip/src/dippy directory. DipPy has only been built and tested with Python 2.7. It may be possible to make it work with Python 3, but this would undoubtedly require some work.

On Python 2.7, to obtain/install binaries:

  • Windows: you can do easy_install coinor.dippy and things should work out of the box.
  • OS X and Linux: It is easiest to build DipPy yourself.
    • Download, build, and install DIP, as described on the DIP wiki.
    • Set the environment variable COIN_INSTALL_DIR to point to the installation directory for DIP (in bash export COIN_INSTALL_DIR=/path/to/install).
    • Execute python install in the subdirectory Dip/ of the DIP source tree.
    • You may need to set your library path to point to the installation directory of libDecomp
      • In Linux with bash: export LD_LIBRARY_PATH=/path/to/install/lib.
      • In OS X with bash: export DYLD_LIBRARY_PATH=/path/to/install/lib.
    • This last step can usually be avoided by building DIP statically (configure with --enable-static --disable-shared).
Last modified 13 months ago Last modified on Apr 17, 2016 11:51:37 PM