首页 > 其他 > 详细

『实践』Yalmip建模+Cplex类求解

时间:2017-10-29 16:28:41      阅读:1171      评论:0      收藏:0      [点我收藏+]

Yalmip建模+Cplex类求解

一、缘由

    Yalmip只能设置部分Cplex的参数,所以需要调用Cplex类。而且optimize是Yalmip提供的常用函数,但此函数的返回结果参数有限。

技术分享

图1  Yalmip网站对于Cplex求解器的说明

 

二、解决方法

  为了能够既利用Yalmip来建模(方便),又能调用Cplex类(功能齐全)。我们可以使用Yalmip提供的export函数来输出model,再新建一个Cplex类实体,将model中整理好的诸如Aineq、bineq等赋值给新建的Cplex类实体。

技术分享

图2  F为目标函数,h为约束,ops为options。

  下面举个具体例子,model存储着Yalmip建立的模型,cplex_milp为Cplex类实体,可以对其设置各种参数属性。Cplex的参数列表地址

 1 %yalmip设置
 2 options = sdpsettings(‘solver‘ ,‘cplex‘);
 3 options.showprogress = 1;%1为设置显示yalmip现在在做什么
 4 options.verbose = 2;%设置显示信息程度,1为适度显示,2为完全显示。
 5 
 6 [model,recoverymodel,diagnostic,internalmodel] = export(Constraints,Objective,options);%输出Yalmip模型
 7 %定义一个Cplex类实体
 8 cplex_milp = Cplex(‘Milp for HTC‘);
 9 cplex_milp.Model.sense = ‘minimize‘;
10 cplex_milp.Model.obj = model.f;
11 cplex_milp.Model.lb = model.lb;
12 cplex_milp.Model.ub = model.ub;
13 cplex_milp.Model.A = [model.Aineq;model.Aeq];
14 cplex_milp.Model.lhs = [-Inf.*ones(size(model.bineq,1),1);model.beq];
15 cplex_milp.Model.rhs = [model.bineq;model.beq];
16 cplex_milp.Model.ctype = model.ctype‘;
17 cplex_milp.Param.mip.pool.capacity.Cur = zk.pool_capacity;%解法池中保留的解法的最大数量
18 cplex_milp.Param.mip.pool.replace.Cur = zk.pool_replace;%解法池替换策略
19 cplex_milp.Param.mip.pool.intensity.Cur = zk.pool_intensity;%控制针对解法池生成的解法数量与消耗的时间或内存量之间的折衷。(解法池强度)
20 cplex_milp.Param.mip.tolerances.mipgap.Cur = zk.solver_error;%相对MIP间隔容差,(精度)
21 cplex_milp.Param.threads.Cur = 1;%设置将由任何 CPLEX 并行优化器调用的并行线程的缺省数量。1为单线程
22 cplex_milp.Param.mip.display = 1;%决定在混合整数优化期间cplex报告到屏幕的内容。默认为2.
23 cplex_milp.Param.timelimit = 15;%设置对优化器的调用的最长时间(以秒为单位)
24 cplex_milp.writeModel(‘hmilp.lp‘);%输出数学模型
25 cplex_milp.solve();

技术分享

图3 上面代码中的model变量中的参数列表

技术分享

图 4   Cplex类实体

三、相关网站

  https://www.ibm.com/support/knowledgecenter/zh/SSSA5P_12.7.0/ilog.odms.cplex.help/refmatlabcplex/html/classCplex.html

  https://www.ibm.com/support/knowledgecenter/zh/SSSA5P_12.7.0/ilog.odms.cplex.help/CPLEX/Parameters/topics/introListAlpha.html

  https://yalmip.github.io/command/export/

『实践』Yalmip建模+Cplex类求解

原文:http://www.cnblogs.com/landiljy/p/7750178.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!