转载 https://zhuanlan.zhihu.com/p/101713127
本文要解决的问题(默认你已经对python有一定的使用经验):如何用python调用cplex求解器。
这次不能信官网,害我踩了一下午坑(其实是官网表述文件和实际不符,而且还少了一个重要环节,就是用管理员授权运行)。真是忍不住想吐槽一下,害我走了好多弯路,花了一天时间,差点当场哭死!
下面是两个用python调用cplex的方法:
方法一:从python的角度解决问题,非常简单,pip安装即可。
如果只是用python调用cplex解决一些小问题可以直接使用(但是,它相当于只是安装了一个社区版的cplex求解器,对比较大的模型求解问题是运行不了的,会直接报错)。
方法二:从cplex角度解决问题,要先安装’CPLEX_Studio129(可以在官网申请下载)‘(我安装的是这个版本的教育版[1]),然后按官方网站[2](我的方法)的安装提示进行操作(还是以我为准吧,官网有点坑)。这个安装成功后就没有社区版的限制了。
官网提示和我遇到的实际情况不符,所特意在此作纪录(详情参考下文的方法二)。安装版本python3.7,cplex1290。
方法一:
正确的安装方法,非常简单:
pip install cplex
![](https://i-blog.csdnimg.cn/blog_migrate/17a137c2303d5aa143b09141d335ad73.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/f5a67c915c6808bf5a857929882cc682.jpeg)
pip成功后直接运行,没有问题了。
![](https://i-blog.csdnimg.cn/blog_migrate/3f0102d8c4599d442530985d1aa7652f.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/dcd2d543743e8dacbbea33e0a72ab777.jpeg)
但是出现一个问题:运行比较大的lp模型时,会报错!因为这样安装的只是一个社区版。
报错信息如下:
CplexSolverError: CPLEX Error 1016: Community Edition. Problem size limits exceeded. Purchase at http://ibm.biz/error1016.
![](https://i-blog.csdnimg.cn/blog_migrate/a4fe143c107775467aa277990ab16ba3.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/2c6ce36228df99e496a7abe67fd98e66.jpeg)
为解决方法一的问题可以参考用方法二。
方法二:
官网的设置 CPLEX 的 Python API[3]的网页上是这样写的:
![](https://i-blog.csdnimg.cn/blog_migrate/52ccdadfd81f79d6b5af92ffdad706d3.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/722dd76af429ed7045b353158e956b49.jpeg)
第一步:先安装CPLEX_Studio129,我安装时全部选的默认安装路径,并没有官网网站所提到的文件夹yourCPLEXhome/python/VERSION/PLATFORM。我的安装文件夹如下图所示,但是好在有setup.py文件,打开此文件后浏览代码内容,确认它确实是一个安装文件。
![](https://i-blog.csdnimg.cn/blog_migrate/7a11e0de3b4139d989b72664beafd7b4.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/cca054b9ccf1ea33ac41ee11ad2ea380.jpeg)
第二步,按照官网的使用脚本 setup.py,进行下一步,结果安装都失败:
python setup.py install --home yourPythonPackageshome/cplex
python setup.py install
![](https://i-blog.csdnimg.cn/blog_migrate/0ed961d5d431252de72087b9f6f9b3ca.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/006af05fb7efe56ac604d58310a5b64b.jpeg)
提示错误为:
(base) C:\Program Files\IBM\ILOG\CPLEX_Studio129\python>python setup.py install
['C:\\Program Files\\IBM\\ILOG\\CPLEX_Studio129\\cplex\\python\\3.7\\x64_win64\\cplex']
['C:\\Program Files\\IBM\\ILOG\\CPLEX_Studio129\\cplex\\python\\3.7\\x64_win64\\setup.py']
Invoking ['C:\\Users\\pc\\Anaconda3\\python.exe', 'setup.py', 'install'] in C:\Program Files\IBM\ILOG\CPLEX_Studio129\cplex\python\3.7\x64_win64
running install
running build
running build_py
creating build
error: could not create 'build': 拒绝访问。
Installation of CPLEX failed, code = 1
第三步:由于不存在此文件夹yourCplexhome/python/VERSION/PLATFORM,所以官网提示的设置环境变量 PYTHONPATH 的方法也不能使用了。
第四步:查找第二步中安装失败的原因:需要管理员授权运行[4]。
在下面这个网站找到了一个相关回答,具体答案如下图所示:
CPLEX Optimizers![图标](https://i-blog.csdnimg.cn/blog_migrate/5b80f736a69bc99df2c0eb5171950a7d.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b54fd3810745a0d4c556ed4b3f8ff9d9.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0072c8cc691d6f0ca3dfda7b23d2142d.jpeg)
![](https://i-blog.csdnimg.cn/blog_migrate/0068e98b138a0af66447c58c19b4bc00.jpeg)
最后,在jupyter lab编辑器里用,python调用cplex,求解实际的lp模型成功。
![](https://i-blog.csdnimg.cn/blog_migrate/3852a402281d09995c22f4b69ea45dd5.jpeg)
参考
- ^https://my15.digitalexperience.ibm.com/b73a5759-c6a6-4033-ab6b-d9d4f9a6d65b/dxsites/151914d1-03d2-48fe-97d9-d21166848e65/technology/data-science?cc=cn&mhsrc=ibmsearch_dd
- ^https://www.ibm.com/support/knowledgecenter/zh/SSSA5P_12.9.0/ilog.odms.cplex.help/CPLEX/GettingStarted/topics/set_up/Python_setup.html
- ^https://www.ibm.com/support/knowledgecenter/zh/SSSA5P_12.9.0/ilog.odms.cplex.help/CPLEX/GettingStarted/topics/set_up/Python_setup.html
- ^https://www.ibm.com/developerworks/community/forums/html/topic?id=352e55b1-d168-4c13-9328-abe864658a26