Yalmip+Ipopt+Cplex使用手册

1.软件版本

2.Cplex添加方法

  • 官方下载地址: http://www-01.ibm.com/software/websphere/products/optimization/cplex-studio-community-edition/

  • 破解版下载地址:http://www.0daydown.com/02/140054.html
  • 其中community-edition可以免费试用,但最多只能计算1000个变量或1000个约束条件的优化问题。

  • 点击安装,安装步骤默认操作即可。

  • 点击Matlab中的,点击,找到路径并将其添加,最后点击即可。

  • 然后在Matlab命令行窗口输入,出现帮助文档,代表添加成功。

3.Ipopt添加方法

  • 需要的组件:VC_redist.x64和ww_ifort_redist_intel64_2017.0.109.msi

  • (组件下载地址链接:链接1:https://pan.baidu.com/s/1f-J5PBu1WsJO8uxyZzbcTQ 密码:crxv )

  • 链接2:
  • 在打开的界面中选择图1-1即可。

图1

图2

  • 打开MATLAB,设置路径-》添加并包含子文件夹-》选择Ipopt路径-》保存。见下图1-3。

图3

  • 右键运行图2中的opti_Install。
  • 出现提示让你安装optiMEXFiles_mexw64_2_27,回车几下,弹出窗口,找到optiMEXFiles_mexw64_2_27(不需要自己手动解压)选中即可。
  • VC_redist.x64和ww_ifort_redist_intel64_2017.0.109.msi ,这两个组件自己手动安装,注意版本即可。
  • 注意下图中框框中的组件我已经安装好了,如果没有安装,是会有提示的。

IPOPT 3.12.9

4.Yalmip添加方法

  • 下载地址:https://yalmip.github.io/(最新版本)
  • 下载链接:http://pan.baidu.com/s/1eRBhRlK 密码:dv4o(之前版本)
  • 将下载的文件解压,设置路径-》添加并包含子文件夹-》选择Yalmip路径-》保存。
  • 在Matlab的命令行窗口中输入或输入Yalmiptest,测试是否添加成功。

5.Yalmip建模常用语法

5.1  变量设置

  • 实数变量:sdpvar;
  • 0-1变量:binvar;
  • 整数变量:intvar。
  • 例如:x = sdpvar(1,1);    %x为1×1的实数变量

5.2  约束条件

  • Constraints = [];  %Constraints为自己定义的一个存储约束的矩阵
  • Constraints = [Constraints,0 <= x  <= 1];   %定义了一个变量x大于0且小于1的约束条件

5.3  目标函数

  • F = 0;    %F为目标函数
  • x = sdpvar(1,1);
  • Constraints = [Constraints, x >= 2];
  • F = F + x^2 + x^3;   %目标函数为x^2+x^3

5.4   查看变量或表达式的值

  • value(x);   %查看变量x的值
  • value(x^2+x^3);   %查看表达式x^2+x^3的值

5.5  设置Yalmip和求解器的options

  • 通过sdpsettings设置,(sdpsettings参数列表链接
  • options = sdpsettings('field',value,'field',value,.....);   %filed为参数名,value为设置值
  • 例如:options = sdpsettings('solver','cplex');   %设置求解器为cplex
  • 或者这样也可以:options.cplex.exportmodel = 'model.lp';   %设置求解器cplex输出lp格式的数学模型,文件名为model。

图4

图5   options

图6  options.cplex

图7     xxxx.lp格式的数学模型

5.6  常用求解函数optimize

  • sol = optimize(Constraints,Objective,options);  %Constraints为约束,Objective为目标函数,options为5.5节的options

5.7 输出Yalmip模型

  • export函数是将Yalmip模型按照求解器的格式输出。
  • [model,recoverymodel,diagnostic,internalmodel] = export(Constraints,Objective,options);  %Constraints为约束,Objective为目标函数,options为5.5节的options
  • 例如:
  • x = intvar(2,2);
  • Constraints = [];
  • Constraints = [Constraints,0 <= x  <= 1];
  • F = sum(x) * ones(2,1);
  • options = sdpsettings('solver','cplex');   %设置求解器为cplex
  • [model,recoverymodel,diagnostic,internalmodel] = export(Constraints,Objective,options);  %此时model中就会有符合cplex求解器格式的模型

图8  model中的参数列表

5.8  获取求解器的求解时间和Yalmip的建模时间

  • sol = optimize(Constraints,Objective,options);  %Constraints为约束,Objective为目标函数,options为5.5节的options
  • sol.yalmiptime;  %Yalmip的建模时间
  • sol.solvertime;  %求解器的求解时间

5.9  设置初值

  • P = sdpvar(2,2);
  • assign(P,double(Pit));  %P为2×2的实数变量,Pit为2×2的已知矩阵,将Pit的值赋值给P
  • options = sdpsettings('solver','cplex','usex0',1);  %usex0默认为0,1为开启设置初值功能

图9   Yalmip网站说明

5.10  获取对偶乘子

5.11  Yalmip输出模型,调用Cplex类求解

5.12  IPOPT参数设置说明

图10 IPOPT参数列表

『实践』Yalmip+Ipopt+Cplex使用手册的更多相关文章

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

    Yalmip建模+Cplex类求解 一.缘由 Yalmip只能设置部分Cplex的参数,所以需要调用Cplex类.而且optimize是Yalmip提供的常用函数,但此函数的返回结果参数有限. 图1 ...

  2. 『实践』Yalmip获取对偶函数乘子

    『实践』Yalmip获取对偶函数乘子 一.sdpsetting设置 Yalmip网站给出的说明 savesolveroutput默认为0,需要设置为1才会保存输出结果. 下面是我模型的约束个数: 二. ...

  3. 『实践』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 ...

  4. 『实践』Matlab实现Flyod求最短距离及存储最优路径

    Matlab实现Flyod求最短距离及存储最优路径 一.实际数据 已知图中所有节点的X.Y坐标. 图中的节点编号:矩阵中的编号 J01-J62:1-62; F01-F60:63-122; Z01-Z0 ...

  5. 『实践』Android之短信验证码(用的Mob短信验证)

    1.参考资料 Mob网站:http://www.mob.com/ Mob在Github上的例子:https://github.com/MobClub/SMSSDK-for-Android 教程:htt ...

  6. 『实践』Java Web开发之分页(ajax)

    1.需要用到的jar包.js文件 JSONArray().fromObject()需要的jar包: (1)commons-beanutils-1.8.3.jar (2)commons-collecti ...

  7. 『实践』百度地图给map添加右键菜单(判断是否为marker)

      var map; var s;//经度 var w;//纬度 $(document).ready(function(){ $(".mune").load("jsp/c ...

  8. 『实践』百度地图给多个marker添加右键菜单(删除、更新)

    js: $.getJSON("./GetStationPlaceServlet",function(json){ for(var i=0;i<json.length;i++) ...

  9. 在Ubuntu 11.10工具栏上用数字显示网速、CPU负荷和内存占用量『译』

    基本上照抄了<How To Display Network Upload / Download Speed On The Panel In Ubuntu 11.04>,只不过我的实践环境是 ...

随机推荐

  1. Linux换源

    Linux换源 前言 最近学校的ipv6坏了,导致从deepin本身获取的源速度极慢,笔者实在忍无可忍,随后在同学指导下换了清华大学ipv4的源 步骤 sudo gedit /etc/apt/sour ...

  2. POI操作Excel(xls、xlsx)

    阿帕奇官网:http://poi.apache.org/ POI3.17下载:http://poi.apache.org/download.html#POI-3.17 POI操作Excel教程(易百教 ...

  3. CF1073E Segment Sum

    数位DP,求[L,R]区间内所有"数字内包含的不同数码不超过k个的数字"之和.在状态上加一维状态压缩表示含有的数码集合.一开始读错题以为是求数字的个数.读对题之后调了一会儿. #i ...

  4. Spring Shell打Jar包时需要注意的地方

    Spring-Shell打Jar包时需要注意的地方:   1.Main-Class spring-shell项目打Jar包的一个必要条件就是,指定Main-Class为org.springframew ...

  5. 【刷题】LOJ 6003 「网络流 24 题」魔术球

    题目描述 假设有 \(n\) 根柱子,现要按下述规则在这 \(n\) 根柱子中依次放入编号为 \(1, 2, 3, 4, \cdots\) 的球. 每次只能在某根柱子的最上面放球. 在同一根柱子中,任 ...

  6. 自学Zabbix3.5.3-监控项item-zabbix agent 类型所有key

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 1. 温习       Zabbix server是Zabbix软件的中心进程. Server执行 ...

  7. 基于Maven构建Web项目

    1.下载Maven,并配置好环境变量 2.打开命令行窗口,输入以下命令构建Maven Web项目 mvn archetype:generate -DgroupId=com.hello -Dartifa ...

  8. 【UVA514】铁轨

    题目大意:给定 N 个数,编号从 1 到 N,现需要判断,利用一个无限大的栈结构,能否实现到给定序列的转换. 题解:本题一共涉及三个部分的交互,分别是目标序列,栈和初始序列,由栈的顶端进入,顶端弹出性 ...

  9. 关于Thinkphp5类命名导致的“模块不存在”问题

    不得不说,thinkphp5就是个十足的坑货, 在thinkphp3.2.3的基础上,函数.用法变了也就忍了, 在mac下写的一个类文件 GetRedisData.php,在mac+mamp环境下是正 ...

  10. python---django中orm的使用(1)

    首先推荐两篇文章:Django之ORM操作,http://www.cnblogs.com/yuanchenqi/articles/6083427.html十分全面. 另外和python---ORM之S ...