1. 安装SCIP
- 官网下载SCIP,记住版本和下载路径
这里下载的时候可以直接选择add to 环境变量,后面不用手动添加
- 下载visual studio,需要Microsoft C++ 生成工具
还以为只是需要一个类似于环境或者能力的东西,没想到是要下载vs=:=
- 下载pycharm
因为要用pyscipopt,我用的是pycharm,其他的应该也可以
2. 下载pyscipopt
- win+R+cmd
- 然后输入,等号后面的是我的安装路径,需要对应的进行替换
set SCIPOPTDIR=C:\Program Files\SCIPOptSuite 8.0.3
这一步真的很重要,不然会报错如下:
ERROR: Command errored out with exit status 1:
command: 'c:\users\admin\appdata\local\programs\python\python37\python.exe' 'c:\users\admin\appdata\local\programs\python\python37\lib\site-packages\pip\_vendor\pep517\_in_process.py' build_wheel 'C:\Users\admin\AppData\Local\Temp\tmpvmux4l2d'
cwd: C:\Users\admin\AppData\Local\Temp\pip-install-u8a0lbvw\pyscipopt
Complete output (47 lines):
Assuming that SCIP is installed globally, because SCIPOPTDIR is undefined.
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-37
creating build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\Multidict.py -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\__init__.py -> build\lib.win-amd64-cpython-37\pyscipopt
running egg_info
writing PySCIPOpt.egg-info\PKG-INFO
writing dependency_links to PySCIPOpt.egg-info\dependency_links.txt
writing top-level names to PySCIPOpt.egg-info\top_level.txt
reading manifest file 'PySCIPOpt.egg-info\SOURCES.txt'
adding license file 'LICENSE'
writing manifest file 'PySCIPOpt.egg-info\SOURCES.txt'
copying src\pyscipopt\benders.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\benderscut.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\branchrule.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\conshdlr.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\cutsel.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\event.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\expr.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\heuristic.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\lp.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\nodesel.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\presol.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\pricer.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\propagator.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\reader.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\relax.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\scip.c -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\scip.pxd -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\scip.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\scip.pyx -> build\lib.win-amd64-cpython-37\pyscipopt
copying src\pyscipopt\sepa.pxi -> build\lib.win-amd64-cpython-37\pyscipopt
running build_ext
building 'pyscipopt.scip' extension
creating build\temp.win-amd64-cpython-37
creating build\temp.win-amd64-cpython-37\Release
creating build\temp.win-amd64-cpython-37\Release\src
creating build\temp.win-amd64-cpython-37\Release\src\pyscipopt
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\bin\HostX86\x64\cl.exe" /c /nologo /O2 /W3 /GL /DNDEBUG /MD -I. -Ic:\users\admin\appdata\local\programs\python\python37\include -Ic:\users\admin\appdata\local\programs\python\python37\Include "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.38.33130\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\VS\include" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.22621.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\um" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\shared" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\winrt" "-IC:\Program Files (x86)\Windows Kits\10\\include\10.0.22621.0\\cppwinrt" /Tcsrc\pyscipopt\scip.c /Fobuild\temp.win-amd64-cpython-37\Release\src\pyscipopt\scip.obj
scip.c
src\pyscipopt\scip.c(772): fatal error C1083: 无法打开包括文件: “scip/type_retcode.h”: No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2022\\BuildTools\\VC\\Tools\\MSVC\\14.38.33130\\bin\\HostX86\\x64\\cl.exe' failed with exit code 2
----------------------------------------
ERROR: Failed building wheel for pyscipopt
Failed to build pyscipopt
ERROR: Could not build wheels for pyscipopt which use PEP 517 and cannot be installed directly
- 再
pip install pyscipopt==4.4.0
再安装python包,这里指定版本,与前面下载的scip版本对应
3. 测试调用
调用代码
from pyscipopt import Model
model = Model("Example")
x = model.addVar("x")
y = model.addVar("y", vtype="INTEGER")
model.setObjective(x + y)
model.addCons(2*x - y*y >= 0)
model.optimize()
sol = model.getBestSol()
print("x: {}".format(sol[x]))
print("y: {}".format(sol[y]))
结果
在这里需要注意,需要在`External Libraries`--`site-packages`中添加`pyscipopy`,才可以运行成功。虽然`External Libraries`--`Python37`里面有,但是调用会不成功(和gurobipy一样=..=)