Search code examples
pythonpython-3.xjupyter-notebooksolverscip

Install SCIP solver on Python3.5 Numberjack (OSX)


I am learning Constraint Programming in Python and, for the solving of the problems, I am supposed to use the SCIP solver. I have installed the Numberjack standard package from Github witch includes Mistral, Mistral2, Toulbar2, MipWrapper, SatWrapper, MiniSat and Walksat solvers.

Running my code I got the following error:

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)

I already ran make in 'scipoptsuite-3.1.0' and in 'scip-3.2.1', installed Numberjack-master's 'setup.py' and tried this:

python setup.py -solver SCIP

witch returned the error

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

I have the SCIP folders alongside and inside the Numberjack folders. I read and ran all the commands in the README and INSTALL files on how I could get this solver configured but I couldn't get it right. How can I get SCIP available to solve the problems in Numberjack?


Solution

  • After talking to the assistant teacher I got the answer for this problem.

    The folder where Numberjack/SCIP was being installed was not the one it was supposed to be, therefore it was not really included in the solver list. After completing the python setup.py build and python setup.py install installation I ran python setup.py build -solver SCIP and the terminal feedback stated

    Successfully built solver interfaces for MipWrapper, SCIP

    But the jupyter notebook didn't recognize the solver.

    What solution should work having Anaconda (python3.5) already installed:

    1. Download Numberjack (file "Numberjack-master.zip") and unpack it.

    2. Download SCIP and copy the downloaded file, scipoptsuite-3.1.0.tgz. Paste it inside Numberjack-master unpacked directory. The path of it should be ~/Downloads/Numberjack-master/scipoptsuite-3.1.0.tgz.

    3. In terminal run cd ~/Downloads/Numberjack-master (or your Numberjack-master directory path).

    4. Then run python3.5 setup.py install --user.

      In my case Jupyter was looking for the solvers in ~/anaconda3/lib/python3.5/site-packages/Numberjack/ and they were not being installed there so, instead of using python, I used python3.5 since my Anaconda was the Python 3.5 package.