COIN Fest 2015: Workshop on Modeling and the COIN-OR Optimization Suite
This is a short course that introduces the COIN-OR Optimization Suite and some basic concepts in algebraic modeling. It was first presented as a tutorial at the 43rd Meeting of the Operations Research Society of South Africa in Parys, South Africa. An expanded version was presented at the INFORMS Computing Society Conference in Richmond, Virginia in January, 2015. The course is now in five parts.
- The first part introduces COIN-OR and includes an overview of all the COIN-OR projects. It also contains an introduction to building and installing the projects in the Optimization Suite.
- The second part introduces the COIN-OR Optimization Suite
and provides a basic introduction to doing development with those projects integrated into the Optimization Suite.
- The third part introduces Python and gives an overview of the Python-based tools available in COIN-OR.
- The fourth part is an introduction to some of the modeling tools that can be used to interface with the COIN-OR tools. The applications are primarily from financial optimization, but they are chosen to introduce a number of fundamental concepts that arise in algebraic modeling. The models are developed in several different modeling languages in order to compare and contrast the features of each. Some of the material on algebraic modeling is distilled from a course I taught in financial optimization.
- Finally, the fifth part contains further examples of more advanced techniques, such as non-linear, discrete, and stochastic models.
- Part 1: Introduction to COIN-OR
- Part 2: Developing with the COIN-OR Optimization Suite
- Part 3: Python and COIN-OR
- Part 4: Algebraic Modeling and COIN-OR
- Part 5: Advanced Algebraic Modeling
To follow along at home, you can install the following tools, which are almost all open source and freely available.
- COIN-OR Solvers
- Windows: Download Installer for 32-bit binaries built with MSVC9 for compatibility with Python.
- Linux/OS X: Either Download Source (build instructions in Part 1) or install packages in Debian or Fedora (subject to availability).
- For Linux, there are completely static binaries available which should work on most Linux distributions.
- Python is the base for several of the modeling languages used.
- There are many ways to get Python.
- You will almost surely want some of the standard scientific packages such as NumPy.
- Modeling Languages
- PuLP can be obtained with
- DipPy can be obtained with
easy_install coinor.dippyon Windows (for building in Linux/OS X, see slides).
- Pyomo can be installed with
- AMPL offers a free size-limited version here.
- Other Python Packages
- CyLP can be installed with
easy_install cylpon WIndows (for building on Linux/OS X, see slides).
- yaposib can be built and installed with instruction in slides (you need to install boost Python first, though, which is a pain).
- GiMPy can be installed with
- To allow GiMPy to display graphs, you should also get GraphViz.
- For live display, you should have either PyGame or xdot (for xdot, you need PyGTK, which can be a bit of a pain).
- GrUMPy can be installed with
Polyhedron2Dyou need to build and install pypolyhedron).
- CuPPy can be installed with
easy_install coinor.cuppy(you also need to install CyLP).
- Other Recommended Software
- The excellent and open source Solver Studio Plug-in for Excel is used in a number of the examples.
- The Eclipse Development Environment is a general-purpose open source IDE with a very nice open source plug-in for Python development.
- The PyDev Eclipse Plug-in is for editing and debugging of Python scripts.
- For building on Windows, it is recommended to install MSys
- Get the MinGW installer from here.
mingw-get install msys.
- If you are planning to build with Visual Studio compilers, make sure those are installed.
- If you are planning to build with gcc, then additionally do
mingw-get install gcc g++ gfortranand add
The file containing Solver Studio Examples shows how to model most of the below problems in Excel.
Bond Selection Problem
- AMPL Files
- PuLP Scripts
- MPS Files
Capacitated Facility Location
Portfolio Dedication Problem
- AMPL Files
- PuLP Scripts
- Pyomo Scripts
- ZMPL Files
- LP Files