Yalmip+Cplex 版本不匹配问题(以Cplex 12.9为例)
**
Yalmip+Cplex 版本不匹配问题(以Cplex 12.9为例)
**
近日,需要求解一个线性规划问题,想到了我很久不用的Matlab + Yalmip + Cplex 一般规划求解神器。当我愉快的敲完我需要求解的问题,然后,调用Cplex时,提示我找不到cplex。这时,我感到一头雾水,再次检查了Yalmip以及cplex确实添加到了matlab的路径中。经过搜索,我发现了一个可以查找Yalmip可以调用求解器的函数。在matlab命令窗口输入"yalmiptest",将会提示,你现在所能添加的求解器,如下图所示:
所能调用的求解器
上图是yalmip所能调用的求解器,我们可以看到对于cplex都是 no found,并且只能搜索到12.8.0版本。这就是我调用cplex发生错误的问题所在,我的Cplex是12.9.0版本。如果重新下载12.8.0会比较麻烦,下面是问题(yalmip无法调用cplex12.9.0)的解决方法。
方法:打开yalmip 安装目录下的 “solvers”文件夹,然后找到 “definesolvers.m”文件,打开它,复制以下内容:
粘贴在这段代码的前面,并且将“12.8.0”改成“12.9.0”,当然下面的“cplex1280”也改成“cplex1290”,如下:
然后运行一下,当你再次在命令窗口上输入“yalmiptest”你会发现,可以找到cplex12.9.0.
问题解决,亲测有效,我也求解出了我的模型。
转载自:http://blog.sina.com.cn/s/blog_50c154510102wusb.html
如何下载yalmip,cplex以及配置路径:https://blog.****.net/robert_chen1988/article/details/44464369
yalmip求解的例子:https://blog.****.net/qq_35109096/article/details/81128163
更多的yalmip使用,见官网,对了多说一句:yalmip中没有if-else if 或者 if-else这种逻辑语句,如果想实现这种语句可以用 implies以及iff,在官方网站的 command中搜logic 就会出现,看英文的例子,有利于我们的理解。
打完收工