我试着从YALMIP开始,它是一个Matlab接口,用于优化求解器,如CPLEX。我有一个目标函数obj和约束cons,我把它们插入了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包含obj、cons,对Yalmip的调用可以在我朋友的计算机上运行,我们很困惑为什么它不能在我的计算机上运行。
以下是我在我的Ubuntu 12.04机器上使用Matlab R2012b对CPLEX和Yalmip进行的设置步骤:
在此处安装IBM CPLEX:home/user/IBM/ILOG/CPLEX\u Studio125/CPLEX
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,我运行了
help 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/extas/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论坛上寻找答案。一个朋友在IBM论坛上给我指了这篇关于诊断CPLEX/Yalmip的帖子,但是这篇文章更关注视窗,它并没有真正解决我的问题。
更多详细信息:
Yalmip版本2012-09-26
匿名用户
在深入研究Yalmip源代码后,我最终发现了问题。
在Yalmip源代码中,有一个名为Yalmip/solvers/definesolvers的文件。m。在定义求解器中。m,有很多这样的语句:
solver(i) = lpsolver;
solver(i).tag = 'CPLEX';
solver(i).version = 'IBM';
solver(i).subversion = '12.4';
solver(i).checkfor = {'cplexlp.m','cplexlink124'};
...
这些语句适用于CPLEX 12.0、12.1、12.2、12.3和12.4。但是,我使用的是CPLEX 12.5,对于CPLEX 12.5,没有这样的语句。
我将12.4
的所有实例替换为12.5
并将cplexlink 124
的实例替换为cplexlink 125
。我的优化代码现在有效!
这是yalmiptest的新输出:
>> yalmiptest
+++++++++++++++++++++++++++++++++++++++++++++++
| Searching for installed solvers |
+++++++++++++++++++++++++++++++++++++++++++++++
| Solver| Version/module| Status|
+++++++++++++++++++++++++++++++++++++++++++++++
| CPLEX| IBM| found|
| CPLEX| IBM| found|
| CPLEX| IBM| found|
| 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 12.0、12.1、12.2和12.3。
当我通过齐柏林飞艇使用pyspark时,我得到以下错误。 python和spark解释器可以工作,所有环境变量都设置正确。 信息[2017-11-01 12:30:42,972]({pool-2-thread-4}remoteinterpriser.java[init]:221)-创建远程解释器org.apache.zeppelin.spark.pysparkinterpriserorg.apac
我的班级照片列表: 我的班级照片:
scala代码是: 打包以后的jar中有stopwords.dic这个文件 路径也是对的 但是还是报错了: Caused by: java.io.FileNotFoundException: file:/Users/laiyinan/Desktop/cc_core/out/artifacts/cc/cc_core.jar!/stopwords.dic (No such file or direct
当我运行我的Android应用程序从eclipse,我得到这个错误。 从日蚀错误复制粘贴 然而,我的亚洲开发银行就在它说的不在的地方。 出了什么问题,如何解决? 我将cd放入adb所在的目录()中,输入adb并显示 adb是绿色的,这意味着它是可执行的,对吗? 例如,dx也是绿色的,当我在命令提示符中输入dx时,它工作了... adb怎么了?
块引号 J拥有一个包含maven父项目(parent)和子项目(Domain,Web,Win)的Eclipse工作区。父pom包含wicket-spring-boot-starter-parent
当我尝试使用或出现以下错误 JAVA错误:sun。安全ssl。SSLSessionImpl。(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite;Ljava/util/Collection;Lsun/security/ssl/SessionId;Ljava/lang/String;I)V 在sun.security.ssl