The Pyomo-MC++ interface allows for bounding of factorable functions using the MC++ library developed by the OMEGA research group at Imperial College London. Documentation for MC++ may be found on the MC++ website.
Pyomo now supports automated downloading and compilation of MC++. To install MC++ and other third party compiled extensions, run:
pyomo download-extensions pyomo build-extensions
To get and install just MC++, run the following commands in the
python getMCPP.py python build.py
This should install MC++ to the pyomo plugins directory, by default located at
Support for MC++ has only been validated by Pyomo developers using Linux and OSX. Installation instructions for the MC++ library may be found on the MC++ website.
We assume that you have installed MC++ into a directory of your choice.
We will denote this directory by
For example, you should see that the file
Navigate to the
pyomo/contrib/mcpp directory in your pyomo installation.
This directory should contain a file named
You will need to compile this file using the following command:
g++ -I $MCPP_PATH/src/3rdparty/fadbad++ -I $MCPP_PATH/src/mc -I /usr/include/python3.7 -fPIC -O2 -c mcppInterface.cpp
This links the MC++ required library FADBAD++, MC++ itself, and Python to compile the Pyomo-MC++ interface.
If successful, you will now have a file named
mcppInterface.o in your working directory.
If you are not using Python 3.7, you will need to link to the appropriate Python version.
You now need to create a shared object file with the following command:
g++ -shared mcppInterface.o -o mcppInterface.so
You may then test your installation by running the test file: