yalmip使用指南
1.介绍
首先,yalmip是一个matlab的工具包,通过matlab实现各种操作和调用。
其次,它是一个建模工具,甚至可以称为一种“语言”,通过这种“语言”来描述模型,然后再调用其他求解器(如gurobi、cplex等)来求解模型。相当于一个将“yalmip语言”转换成其他求解器“语言”的语言转换器。
不同的求解器有不同的专用语言,学习多个语言即冗余又浪费精力,所以,yalmip的珍贵之处就体现出来了。
更为可贵的是,yalmip真正实现了建模和算法二者的分离,它提供了一种统一的、简单的建模语言,针对所有的规划问题,都可以用这种统一的方式建模;至于用哪种求解算法,你只需要通过一次简单的参数配置指定就可以了,甚至不用你指定,yalmip会自动为你选择最适合的算法。
有了yalmip,你不再需要针对每一种工具包去学习特定的建模语言(比如用cplex要专门学习cplex的建模语言,用lingo要专门学习lingo的建模语言,还有GLPK、lpsolve、Matlab自带的求解器等等,如果每一种求解器都要学习新的建模语言的话,这个工作量是可想而知的)。相反,如果你选择使用yalmip,那么你只需要学习yalmip一种建模语法,因为yalmip真正实现了建模和算法的分离,所有的问题都可以用统一的方法建模,如果需要使用不同的求解器,只需要一句简单的配置即可。因此,yalmip不仅仅是一个线性规划求解器,更强大的地方在于,它提供了一个统一的建模平台,支持现有的几乎所有的求解算法。有了yalmip,一切都变得简单起来。
以上摘自博客《yalmip + lpsolve + matlab 求解混合整数线性规划问题(MIP/MILP)》
2.安装
- 官网下载https://yalmip.github.io/
- 解压至matlab/toolbox
- matlab中设置路径,注意:要将压缩包内的子文件夹都加入路径,选择“添加并包含子文件夹”来添加路径;
- 检查是否配置成功:matlab中调用yalmitest命令,查看所有支持的求解器已经他们的安装状态。
3.使用
3.1 定义变量
设置默认格式变量:x = sdpvar(m, n, [option])
设置整数格式变量:x = intvar(m, n, [option])
设置0-1格式变量:x = binvar(m, n, [option])
3.2 设定目标函数
举例:f = [4 2 1] * x;
3.3 设定约束
直接设置:Constraints = [sum(x) <= 10, x(1) == 0, 0.5 <= x(2) <= 1.5];
增加新约束:Constraints = [Constraints, x(2) == 1,];
3.4 设定求解要求及参数
命令语句:sdpsettings(option1, value1, option2, value2, ……)
举例:ops=sdpsettings('solver','gurobi','verbos',2)
'solver' 参数指定程序用gurobi求解器(如果已经安装,否则会报错),如果不指定 ‘solver’ 参数,他会根据决策变量类型自动挑选已安装的、最适合的求解器;'verbose' 指定显示冗余度(冗余度越大,你就可以看到越详细的求解过程信息)。
3.5 求解
result = solvesdp(F, f, ops)或sol = optimize(Constraints,Objective,options);
查看最优解x:solution=value(x)
问题探查:
% Analyze error flags
if sol.problem == 0% Extract and display valuesolution = value(x)
elsedisplay('Hmm, something went wrong!');sol.infoyalmiperror(sol.problem)
end
yalmip使用指南相关推荐
- 超详细中文预训练模型ERNIE使用指南-源码
作者 | 高开远,上海交通大学,自然语言处理研究方向 最近在工作上处理的都是中文语料,也尝试了一些最近放出来的预训练模型(ERNIE,BERT-CHINESE,WWM-BERT-CHINESE),比对 ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
- ASIC设计-终极指南
ASIC设计-终极指南 ASIC Design – The Ultimate Guide ASIC设计-终极指南 ASICs代表特定于应用的集成电路,指的是针对特定应用而设计的半导体解决方案,与其他解 ...
- Python神经网络集成技术Guide指南
Python神经网络集成技术Guide指南 本指南将介绍如何加载一个神经网络集成系统并从Python运行推断. 提示 所有框架的神经网络集成系统运行时接口都是相同的,因此本指南适用于所有受支持框架(包 ...
- 深度学习框架集成平台C++ Guide指南
深度学习框架集成平台C++ Guide指南 这个指南详细地介绍了神经网络C++的API,并介绍了许多不同的方法来处理模型. 提示 所有框架运行时接口都是相同的,因此本指南适用于所有受支持框架(包括Te ...
- HTML5与CSS3权威指南之CSS3学习记录
title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...
- Maven入门指南⑦:Maven的生命周期和插件
Maven入门指南⑦:Maven的生命周期和插件 一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周 ...
- ini文件怎么使用_ftp文件下载工具,ftp文件下载工具是怎么使用的?使用指南
ftp文件下载工具是什么工具,可能有人会回答说不知道,因为一般只有从事网站管理的工作者会使用的多一点.但不是每个人生来就会的,所以刚开始肯定都会学习怎么使用.这篇文章就来教一下大家ftp文件下载工具是 ...
- 王建春计算机应用基础,计算机应用基础(本)教学指南.pdf
"计算机应用基础(本 )"教学指南 一.课程概况 课程性质.教学目标.教学内容等详见 "课程导学--学什么". 1.学习资源 现有教学资源 功能 "学 ...
- java修改 nsf中的数据_最新NSF申请指南中的一些重要改动
作者:孟津 美国NSF已更新其申请书的写作和提交指南,从2009年1月5日起实施.比较重要的变化有下列几点,涉及几个方面: 1. 博士后指导:每一个含有支持博士后资金的申请,必须在申请书规定的15页课 ...
最新文章
- 查找数组中第二个最小元素
- copy_to_user和copy_from_user
- Android 控件之RatingBar评分条
- CCAI 2017 | 日本理化学研究所杉山将:弱监督机器学习的研究进展
- RestTemplate异常no suitable HttpMessageConverter found for request type [java.lang.Integer]
- Sublime Text 教程
- 409.最长回文串(力扣leetcode) 博主可答疑该问题
- 快速合并所有txt文档
- dcp9030cdn定影_兄弟DCP-9030CDN驱动下载
- 基于Opencv的人脸&姓名&表情&年龄&种族&性别识别系统(源码&教程)
- 流程图设计教程和参考样例
- mybatis plus 代码生成器
- [转载]前端代码规范 及 最佳实践
- linux安装ati工具,安装ati驱动的辛苦历程
- zigbee 问题一:协调器究竟如何选择信道?
- X265码率控制——ABR算法基本原理 源码解读
- 爬虫实战(一)利用scrapy爬取豆瓣华语电影
- java 实现SocketIo客户端
- 介绍一个中型开源社区
- 服务器运维基础知识,IDC机房服务器运维基础知识
热门文章
- 第一节 计算机硬件组成
- mysql毫秒丢失_MySQL JDBC 更新数据丢失毫秒精度
- win7虚拟磁盘服务器,深度Win7 64位旗舰版系统如何创建虚拟磁盘
- xml.html一键解密工具,AutoJs一键解密
- 国内的点对点聊天工具鱼信Fishchat怎么用?
- 宏碁e5-572g重装linux,Acer-E5-572G笔记本U盘装原版win10系统教程
- 计算机四级网络题型,全国计算机四级考试题型
- 探索大型网站技术架构(二)
- 网易云再度升级!用Python爬取下载(一:思路)
- 4.3 数值分析: 简单迭代法的构造和收敛条件