『实践』Yalmip建模+Cplex类求解
Yalmip建模+Cplex类求解(文末附程序、文章和算例)
一、缘由
Yalmip只能设置部分Cplex的参数,所以需要调用Cplex类。而且optimize是Yalmip提供的常用函数,但此函数的返回结果参数有限。

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

图2 F为目标函数,h为约束,ops为options。
下面举个具体例子,model存储着Yalmip建立的模型,cplex_milp为Cplex类实体,可以对其设置各种参数属性。Cplex的参数列表地址。
ps:model中的矩阵中的变量排序无法知道。
%yalmip设置
options = sdpsettings('solver' ,'cplex');
options.showprogress = 1;%1为设置显示yalmip现在在做什么
options.verbose = 2;%设置显示信息程度,1为适度显示,2为完全显示。 [model,recoverymodel,diagnostic,internalmodel] = export(Constraints,Objective,options);%输出Yalmip模型
%定义一个Cplex类实体
cplex_milp = Cplex('Milp for HTC');
cplex_milp.Model.sense = 'minimize';
cplex_milp.Model.obj = model.f;
cplex_milp.Model.lb = model.lb;
cplex_milp.Model.ub = model.ub;
cplex_milp.Model.A = [model.Aineq;model.Aeq];
cplex_milp.Model.lhs = [-Inf.*ones(size(model.bineq,1),1);model.beq];
cplex_milp.Model.rhs = [model.bineq;model.beq];
cplex_milp.Model.ctype = model.ctype';
cplex_milp.Param.mip.tolerances.mipgap.Cur = zk.solver_error;%相对MIP间隔容差,(精度)
cplex_milp.Param.threads.Cur = 1;%设置将由任何 CPLEX 并行优化器调用的并行线程的缺省数量。1为单线程
cplex_milp.Param.mip.display = 1;%决定在混合整数优化期间cplex报告到屏幕的内容。默认为2.
cplex_milp.Param.timelimit = 15;%设置对优化器的调用的最长时间(以秒为单位)
cplex_milp.writeModel('hmilp.lp');%输出数学模型
cplex_milp.solve();

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

图 4 Cplex类实体
三、相关网站
Yalmip(Matlab)+Cplex类求解电力机组组合问题的样例程序:http://www.scholat.com/showTeamScholar.html?id=867&changeTo=Ch&nav=5
https://yalmip.github.io/command/export/
『实践』Yalmip建模+Cplex类求解的更多相关文章
- 『实践』Yalmip+Ipopt+Cplex使用手册
Yalmip+Ipopt+Cplex使用手册 1.软件版本 Cplex 12.6.2,Matlab R2014a,Ipopt 3.12.9,Yalmip 2.Cplex添加方法 官方下载地址: htt ...
- 『实践』Yalmip获取对偶函数乘子
『实践』Yalmip获取对偶函数乘子 一.sdpsetting设置 Yalmip网站给出的说明 savesolveroutput默认为0,需要设置为1才会保存输出结果. 下面是我模型的约束个数: 二. ...
- 『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现
『实践』VirtualBox 5.1.18+Centos 6.8+hadoop 2.7.3搭建hadoop完全分布式集群及基于HDFS的网盘实现 1.基本设定和软件版本 主机名 ip 对应角色 mas ...
- 『Java』Collection接口 Collections类
接口Collection public interface Collection<E>定义了所有单列集合中共性的方法,所有的单列集合都可以使用共性方法. Collection的常用子接口有 ...
- 『实践』Matlab实现Flyod求最短距离及存储最优路径
Matlab实现Flyod求最短距离及存储最优路径 一.实际数据 已知图中所有节点的X.Y坐标. 图中的节点编号:矩阵中的编号 J01-J62:1-62; F01-F60:63-122; Z01-Z0 ...
- 『实践』Android之短信验证码(用的Mob短信验证)
1.参考资料 Mob网站:http://www.mob.com/ Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android 教程:htt ...
- 『实践』Java Web开发之分页(ajax)
1.需要用到的jar包.js文件 JSONArray().fromObject()需要的jar包: (1)commons-beanutils-1.8.3.jar (2)commons-collecti ...
- 『实践』百度地图给map添加右键菜单(判断是否为marker)
var map; var s;//经度 var w;//纬度 $(document).ready(function(){ $(".mune").load("jsp/c ...
- 『实践』百度地图给多个marker添加右键菜单(删除、更新)
js: $.getJSON("./GetStationPlaceServlet",function(json){ for(var i=0;i<json.length;i++) ...
随机推荐
- windows 2008 R2操作系统上使用iis服务运行php和mysql数据库的网站遇到的验证码不显示问题?
1,本地运行正常,路径没问题. 2,GD2.dll开启 3,IIS服务正常开启,并启用父路径为True 4,检查是否IIS服务中FSO权限问题 开始 -> 程序 -> 管理工具 -> ...
- VS问题
ref:https://q.cnblogs.com/q/86096/
- javascript篇-----数据类型
ECMAScript中一共有6种数据类型,其中包括5种基本数据类型(Undefined,Null,Boolean,Number,String)以及一种复杂数据类型(Object).[ES6增加多了一种 ...
- 解决外部编辑器修改Eclipse文件延迟刷新【补充】
在之前的文章,使用gulp解决外部编辑器修改Eclipse文件延迟刷新,原理是用gulp把更改过的项目文件直接复制一份到Tomcat的webapp.root下, 现在补充另外一种方法,双击Server ...
- 关于form表单或者Ajax向后台发送数据时,数据格式的探究
最近在做一个资产管理系统项目,其中有一个部分是客户端向服务端发送采集到的数据的,服务端是Django写的,客户端需要用rrequests模块模拟发送请求 假设发送的数据是这样的: data = {'s ...
- Jquery插件之ajaxForm ajaxSubmit的理解用法(转)
我们在平常使用Jquery异步提交表单,一般是在submit()中,使用$.ajax进行.比如: $(function(){ $('#myForm').submit(function(){ $.aja ...
- webapp 启动 手机app
<div class="downLoad clearfix"> <div onclick="jsOpenApp.Close(this);" c ...
- java web mysql 入门知识讲解
MySQL学习笔记总结 一.SQL概述: SQL:Structured Query Language的缩写(结构化查询语言) SQL工业标准:由ANSI(ISO核心成员) 按照工业标准编写的SQ ...
- javascript小节
javascript 语法总结 知识概要: (1)Javascript概述 1.1javascript是什么? 1.2JavaScript语言组成 1.3JavaScript与Html的结 ...
- 有趣的flash例子
仓鼠 <object type="application/x-shockwave-flash" data="http://cdn.abowman.com/widge ...