MC++ 接口

Pyomo-MC++ 接口允许使用由伦敦帝国理工学院 OMEGA 研究小组开发的 MC++ 库来限制可分解函数。MC++ 的文档可以在 MC++ 网站 上找到。

默认安装

Pyomo 现在支持自动下载和编译 MC++。 要安装 MC++ 和其他第三方编译扩展,请运行:

pyomo download-extensions
pyomo build-extensions

要获取并仅安装MC++,请在pyomo/contrib/mcpp目录中运行以下命令:

python getMCPP.py
python build.py

这应该会将MC++安装到pyomo插件目录,默认位于$HOME/.pyomo/

手动安装

对MC++的支持仅由Pyomo开发者在Linux和OSX上进行了验证。 MC++库的安装说明可以在MC++网站上找到。

我们假设您已将MC++安装到您选择的目录中。 我们将用$MCPP_PATH表示这个目录。 例如,您应该看到文件$MCPP_PATH/INSTALL存在。

导航到您的pyomo安装中的pyomo/contrib/mcpp目录。 此目录应包含一个名为mcppInterface.cpp的文件。 您需要使用以下命令编译此文件:

g++ -I $MCPP_PATH/src/3rdparty/fadbad++ -I $MCPP_PATH/src/mc -I /usr/include/python3.7 -fPIC -O2 -c mcppInterface.cpp

这将链接MC++所需的库FADBAD++、MC++本身以及Python,以编译Pyomo-MC++接口。 如果成功,你现在会在工作目录中看到一个名为mcppInterface.o的文件。 如果你没有使用Python 3.7,你需要链接到相应的Python版本。 你现在需要使用以下命令创建一个共享对象文件:

g++ -shared mcppInterface.o -o mcppInterface.so

然后,您可以通过运行测试文件来测试您的安装:

python test_mcpp.py