『实践』Yalmip+Ipopt+Cplex使用手册
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
- Ipopt下载地址:https://www.inverseproblem.co.nz/OPTI/index.php/DL/DownloadOPTI(最新版本3.12.9)
- Ipopt下载链接:链接:https://pan.baidu.com/s/1tWBRJ7syW-WctcL1LkB06w 密码:1n3m (以前的版本3.12.6)
- 下载下来后解压缩,打开文件,目录如下图1-2。
图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 获取对偶乘子
- 查看我的另一篇博客:『实践』Yalmip获取对偶函数乘子
5.11 Yalmip输出模型,调用Cplex类求解
- 查看我的另一篇博客::『实践』Yalmip建模+Cplex类求解
5.12 IPOPT参数设置说明
图10 IPOPT参数列表
- IPOPT中参数的说明详见: https://www.gams.com/latest/docs/S_IPOPT.html#IPOPTpardiso_max_iterative_refinement_steps
『实践』Yalmip+Ipopt+Cplex使用手册的更多相关文章
- 『实践』Yalmip建模+Cplex类求解
Yalmip建模+Cplex类求解 一.缘由 Yalmip只能设置部分Cplex的参数,所以需要调用Cplex类.而且optimize是Yalmip提供的常用函数,但此函数的返回结果参数有限. 图1 ...
- 『实践』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 ...
- 『实践』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++) ...
- 在Ubuntu 11.10工具栏上用数字显示网速、CPU负荷和内存占用量『译』
基本上照抄了<How To Display Network Upload / Download Speed On The Panel In Ubuntu 11.04>,只不过我的实践环境是 ...
随机推荐
- linux分区命名
linux中任何内容都是文件 硬盘 文件 用户 都是文件 硬件设备文件名称 ide硬盘 /dev/hd[a-d] scsi/sata/usb硬盘 /dev/sd[a-p] 光驱 /dev/cdrom/ ...
- 2013长春网赛1005 hdu 4763 Theme Section(kmp应用)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4763 题意:给出一个字符串,问能不能在该串的前中后部找到相同的子串,输出最长的字串的长度. 分析:km ...
- [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
本专题概要: 引言 同步代码存在的问题 传统的异步编程改善程序的响应 C# 5.0 提供的async和await使异步编程更简单 async和await关键字剖析 小结 一.引言 在之前的C#基础知 ...
- poj1064 Cable master
Description Inhabitants of the Wonderland have decided to hold a regional programming contest. The J ...
- PHP内核-代码的执行(二)
学习来源:http://www.php-internals.com/book/?p=chapt02/02-00-overview 最开始学习PHP的时候感觉上手真的好容易,噼里啪啦一个回车 “Hell ...
- ES6学习(二)基础命令
一.Let 和 const 作用域的概念:在es5之前是有两个作用域,一个是全局作用域,另外一个是函数作用域,在es6中就多了这样一个块作用域.在这里let 和 const 就是传说中的块作用域,它 ...
- Redis的持久化数据
Redis支持两种持久化:RDB和AOF模式 一.名词解释: RDB:持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot).AOF:持久化记录服务器执行的 ...
- gdb调试2—单步执行和跟踪函数
int add_range(int low, int high); int main(int argc, char *argv[]) { int result[100]; result[0] = ad ...
- python学习(26)分析ajax请求抓取今日头条cosplay小姐姐图片
分析ajax请求格式,模拟发送http请求,从而获取网页代码,进而分析取出需要的数据和图片.这里分析ajax请求,获取cosplay美女图片. 登陆今日头条,点击搜索,输入cosplay 下面查看浏览 ...
- 高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少
高性能网络编程(一):单台服务器并发TCP连接数到底可以有多少 阅读(81374) | 评论(9)收藏16 淘帖1 赞3 JackJiang Lv.9 1 年前 | 前言 曾几何时我 ...