在 Python3.5 Numberjack (OSX) 上安装 SCIP 求解器

Install SCIP solver on Python3.5 Numberjack (OSX)

我在Python学习约束编程,为了解决问题,我应该使用SCIP求解器。我已经安装了来自 Github 的 Numberjack 标准包,包括 Mistral、Mistral2、Toulbar2、MipWrapper、SatWrapper、MiniSat 和 Walksat 求解器。

运行 我的代码出现以下错误:

Traceback (most recent call last):
  File "/Users/angelocoelho/anaconda3/lib/python3.5/site-packages/Numberjack/__init__.py", line 910, in load
    lib = __import__(solverstring, fromlist=[solverspkg])
ImportError: No module named 'Numberjack.solvers.SCIP'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "grafosdefluxos.py", line 42, in <module>
    solver = model.load('SCIP')
  File "/Users/angelocoelho/anaconda3/lib/python3.5/site-packages/Numberjack/__init__.py", line 915, in load
    solvername)
ImportError: ERROR: Failed during import, wrong module name? (SCIP)

我已经 运行 make 在 'scipoptsuite-3.1.0' 和 'scip-3.2.1',安装了 Numberjack-master 的 'setup.py' 并尝试了这个:

python setup.py -solver SCIP

返回错误

Error: the solver 'SCIP' is not known, please use one of: Mistral, SatWrapper, Toulbar2, Walksat, MipWrapper, MiniSat, Mistral2

我在 Numberjack 文件夹旁边和里面都有 SCIP 文件夹。 我阅读并 运行 README 和 INSTALL 文件中关于如何配置此求解器的所有命令,但我无法正确配置。 我怎样才能获得 SCIP 来解决 Numberjack 中的问题?

为什么会有 scip-3.2.1 目录? SCIP Opt Suite 3.1.0 包含 SCIP 3.1.0。您需要确保运行所有设置和命令完全Numberjack install page.

中所述

和助教交流后,我得到了这个问题的答案。

安装 Numberjack/SCIP 的文件夹不是它应该的文件夹,因此它没有真正包含在求解器列表中。在完成 python setup.py buildpython setup.py install 安装后,我 运行 python setup.py build -solver SCIP 和终端反馈表明

Successfully built solver interfaces for MipWrapper, SCIP

但是 jupyter notebook 无法识别求解器。

在已安装 Anaconda (python3.5) 的情况下应该使用什么解决方案:

  1. 下载 Numberjack(文件“Numberjack-master.zip”)并解压缩。

  2. 下载 SCIP 并复制下载的文件,scipoptsuite-3.1.0.tgz。粘贴到里面 Numberjack-master 解压目录。它的路径应该是~/Downloads/Numberjack-master/scipoptsuite-3.1.0.tgz.

  3. 在终端 运行 cd ~/Downloads/Numberjack-master(或您的 Numberjack-master 目录路径)。

  4. 然后运行 python3.5 setup.py install --user.

    在我的例子中,Jupyter 正在寻找求解器 ~/anaconda3/lib/python3.5/site-packages/Numberjack/ 他们是 没有安装在那里,所以我没有使用 python,而是使用 python3.5,因为我的 Anaconda 是 Python 3.5 包。