我正在尝试开始使用
YALMIP,这是一个优化求解器的Matlab接口,例如
CPLEX.我有一个目标函数obj和约束缺点,我已将它们插入Yalmip …
options=sdpsettings('solver','Cplex'); %windows needs uppercase 'Cplex' and unix is ok with 'cplex' or 'Cplex'
solvesdp(cons,obj,options); %prints 'Warning: Solver not found'
在上面的代码中,solvesdp打印警告:未找到解算器. .m包含对象,缺点和对Yalmip的调用在我朋友的计算机上运行,我们很难理解为什么它不能在我的计算机上运行.
以下是我在使用Matlab R2012b的Ubuntu 12.04机器上执行的CPLEX和Yalmip的设置步骤:
>在此处安装IBM CPLEX:/ home / user / ibm / ILOG / CPLEX_Studio125 / cplex
>在这里安装Yalmip:home / user / yalmip
>将CPLEX和Yalmip添加到我的Matlab路径(并确认所有目录都存在):
addpath(genpath('/home/user/yalmip'))
addpath(genpath('/home/user/ibm/ILOG/CPLEX_Studio125/cplex/matlab'))
addpath(genpath('/home/user/ibm/ILOG/CPLEX_Studio125/cplex/examples/src/matlab'))
下面,我解释我是如何尝试诊断问题的.很明显,Matlab可以看到CPLEX,Matlab可以看到Yalmip,但是Yalmip看不到CPLEX.
确认Yalmip和CPLEX在我的matlab路径中:
MATLAB> path
/home/user/ibm/ILOG/CPLEX_Studio125/cplex/examples/src/matlab
/home/user/ibm/ILOG/CPLEX_Studio125/cplex/matlab
/home/forrest/ibm/ILOG/CPLEX_Studio125/cplex/matlab/help
/home/forrest/ibm/ILOG/CPLEX_Studio125/cplex/matlab/help/helpsearch
/home/forrest/ibm/ILOG/CPLEX_Studio125/cplex/matlab/help/topics
/home/user/yalmip
/home/user/yalmip/demos
/home/user/yalmip/extras
/home/user/yalmip/modules
/home/user/yalmip/modules/bilevel
/home/user/yalmip/modules/global
/home/user/yalmip/modules/moment
/home/user/yalmip/modules/parametric
/home/user/yalmip/modules/robust
/home/user/yalmip/modules/sos
/home/user/yalmip/operators
/home/user/yalmip/solvers
...
为了验证Matlab确实可以找到CPLEX,我运行了帮助cplexlp.它给出了有效的输出:
MATLAB> help cplexlp
cplexlp
Solve linear programming problems.
x = cplexlp(f,Aineq,bineq) solves the linear programming problem min f*x such that Aineq*x <= bineq.
...
此外,哪个cplex提供此输出:/home/user/ibm/ILOG/CPLEX_Studio125/cplex/matlab/@Cplex/Cplex.p
yalmip给出了这个输出:/home/user/yalmip/extras/yalmip.m
我在Matlab命令提示符下运行了yalmiptest.输出验证Matlab可以找到Yalmip,但Yalmip找不到CPLEX:
MATLAB> yalmiptest
+++++++++++++++++++++++++++++++++++++++++++++++
| Searching for installed solvers |
+++++++++++++++++++++++++++++++++++++++++++++++
| Solver| Version/module| Status|
+++++++++++++++++++++++++++++++++++++++++++++++
| LINPROG| | found|
| QUADPROG| | found|
| LMILAB| | found|
| FMINCON| geometric| found|
| FMINCON| standard| found|
| FMINSEARCH| | found|
| BNB| | found|
| BINTPROG| | found|
| CUTSDP| | found|
| BMIBNB| | found|
| KKTQP| | found|
| NONE| | found|
| LSQNONNEG| | found|
| LSQLIN| | found|
| GUROBI| GUROBI| not found|
| GUROBI| MEX| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| IBM| not found|
| CPLEX| CPLEXINT| not found|
| CBC| | not found|
| GLPK| GLPKMEX-CC| not found|
我还在IBM论坛周围寻找答案.一位朋友向我指出了this post in the IBM forums关于诊断CPLEX / Yalmip的问题,但该帖子更侧重于Windows,并没有真正解决我的问题.
更多细节:
> Yalmip版本2012-09-26
> CPLEX 12.5版