什么是 CVX?

‎CVX 是一个建模系统,用于构建和求解‎‎规范凸程序‎‎ (DCP)。‎CVX 支持多种标准问题类型,包括线性和二次型‎‎程序‎‎(LP/QPs)、二阶锥形程序 (SOCP) 和半定程序 (SDP)。‎CVX还可以解决更复杂的凸优化问题,包括许多涉及不可微分函数的问题,例如‎ℓ1‎‎范数。‎‎您可以使用 CVX 方便地表示和求解约束范数最小化、熵最大化、行列式最大化和许多其他凸程序。‎从 2.0 版本开始,CVX 还使用适当的具有整数功能的求解器求解‎‎混合整数规范凸程序‎‎ (MIDCP)。‎

要有效地使用 CVX,您至少需要了解一些关于凸优化的知识。有关凸优化的背景知识,请参阅《凸优化》一书 [BV04] 或斯坦福大学课程 EE364A。

CVX在‎‎Matlab‎‎中实现,有效地将Matlab转变为优化建模语言。模型设定是使用常见的 Matlab 操作和函数构建的,标准 Matlab 代码可以自由地与这些设定混合。‎这种组合使得执行形成优化问题所需的计算或处理从其解决方案中获得的结果变得简单。‎例如,通过改变约束来形成和解决一系列优化问题,很容易计算出最佳权衡曲线。‎作为另一个例子,CVX可以用作使用凸优化的大型系统的组件,例如分支和绑定方法或工程设计框架。‎

CVX提供特殊模式以简化两类特定问题的构造。在半定编程(SDP)模式下,CVX将矩阵解释应用于不等式运算符,以便线性矩阵不等式(LMI)和SDP可以用更自然的形式表示。在几何编程(GP)模式下,CVX接受几何编程的所有特殊函数和组合规则,包括单项式,正多项式和广义正多项式,并将这些问题转换为凸形式,以便可以有效地解决它们。有关几何编程的背景知识,请参阅本教程论文 [BKVH05]。

以前版本的 CVX 支持两个免费的 SQLP 求解器,即 SeDuMi [Stu99] 和 SDPT3 [TTT03]。这些求解器包含在 CVX 发行中。从 2.0 版开始,CVX 还支持两个商用求解器,即 Gurobi 和 MOSEK。有关详细信息,请参见求解器。

将 CVX 与商业求解器配合使用的能力是我们决定在新的 CVX 专业许可模型中包含的一项功能。学术用户将能够免费使用这些功能,但商业用户将需要付费的CVX专业许可证。有关更多详细信息,请参阅许可。

有什么新内容?

求解器技术的最新发展正在扩展CVX解决问题的能力。特别是,商业求解器Mosek增加了对指数锥的原生支持;这使得 CVX 能够解决涉及对数、指数和熵函数的问题,而无需依赖其逐次逼近的启发式方法。

什么是规范凸编程?

规范凸编程是由Michael Grant,Stephen Boyd和Yinyu Ye [GBY06],[Gra04]提出的一种构建凸优化问题的方法。 它旨在支持用户从一开始就认为是凸的优化问题的制定和构造。

规范凸编程强加了一组约定或规则,我们称之为 DCP 规则集。符合规则集的问题可以快速自动地验证为凸问题,并转换为可解的形式。违反规则集的问题将被拒绝,即使问题是凸的。这并不是说不能使用DCP解决此类问题;它们只需要以符合 DCP 规则集的方式重写即可。

DCP 规则集提供了 DCP 规则集的详细说明。对于任何打算积极使用CVX的人来说,理解它都非常重要。该规则集易于学习,并且取自凸分析的基本原理。作为接受规则集施加的限制的回报,我们获得了相当大的好处,例如将问题自动转换为可解的形式和不可微函数的完全支持。在实践中,我们发现规范凸编程与它们本质的数学形式非常相似。

混合整数问题

在 2.0 版中,CVX 现在支持混合整数规范凸程序 (MIDCP)。MIDCP 是一种遵循与标准 DCP 相同凸性规则的模型,不同之处在于其一个或多个变量被约束为整数。换句话说,如果移除了整数约束,则结果是标准 DCP。

与真正的 DCP 不同,混合整数问题不是凸的。找到全局最优值需要将传统的凸优化算法与穷举搜索(如分支定界算法)相结合。一些 CVX 求解器不包括第二部分,因此不支持 MIDCP;有关详细信息,请参阅求解器。更重要的是,即使是最好的求解器也无法保证每个中等大小的MIDC都可以在合理的时间内求解。

混合整数规范凸编程代表了 CVX 建模框架以及支持求解器的新领域。虽然混合整数线性和二次程序(MILP/MIQP)的求解器已经相当成熟,但对更一般的凸非线性的支持是一个相对较新的发展。我们预计 MIDCP 支持将随着时间的推移而改善。

CVX是什么

CVX并不是一个用于检查您的问题是否是凸性的工具。您需要了解一些凸优化才能有效使用CVX;否则,您就是谚语中打字机前的猴子,希望(意外地)输入有效的规范凸程序。如果在将问题输入 CVX 之前不确定问题是凸的,则说明您使用该工具不当,您的努力可能会失败。

CVX不适用于非常大的问题,因此,如果您的问题非常大(例如,大型图像处理或机器学习问题),CVX不太可能正常工作(或根本无法工作)。对于此类问题,您可能需要直接调用求解器,或者开发自己的方法,以获得所需的效率。

然而,对于这些问题,CVX可以发挥重要作用。在开始开发专门的大规模方法之前,您可以使用 CVX 来解决问题的缩小或简化版本,以快速试验您想要解决的问题。例如,对于图像重建,您可以使用 CVX 在50×50像素图像上实验不同的问题表示。

CVX解决许多中型和大型问题,只要它们具有可利用的结构(例如稀疏性),并且您避免了for循环,这在Matlab中可能会很慢。如果您在解决大型问题实例时遇到困难,请考虑将您的模型发布到CVX论坛;CVX社区可能能够提出一种CVX可以更有效地处理的等效表示。

CVX用户指南之简介相关推荐

  1. CVX用户指南之快速入门

    安装 CVX(请参阅安装)后,可以通过在 Matlab 脚本或函数中输入 CVX 规范,或直接从命令提示符开始使用它.为了将 CVX 规范与周围的 Matlab 代码区分开来,在它们前面加上语句 cv ...

  2. CVX用户指南之基础

    cvx_begin和cvx_end 所有 CVX 模型前面必须有命令cvx_begin,并以命令cvx_end终止.所有变量声明.目标函数和约束都应介于两者之间.cvx_begin命令可能还包括一个以 ...

  3. Matplotlib 中文用户指南 1 简介

    简介 原文:Introduction 译者:飞龙 协议:CC BY-NC-SA 4.0 Matplotlib 是一个用于在 Python 中绘制数组的 2D 图形库.虽然它起源于模仿 MATLAB®[ ...

  4. CVX用户指南之半定编程模式

    熟悉半定编程 (SDP) 的人都知道,在上面关于集合成员的讨论中,使用集合semidefinite(n)的约束在实践中通常使用线性矩阵不等式(LMI)表示.例如,给定.约束表示;也就是说,即X为正半定 ...

  5. CVX用户指南之DCP规则集

    CVX 强制执行规范凸编程规则集(简称 DCP 规则集)规定的约定.CVX 每当遇到违反任何规则的行为时,都会发出一条错误消息,因此在开始构建模型之前了解这些规则非常重要.这些规则来自凸分析的基本原理 ...

  6. 《Raspberry Pi用户指南》——2.3 Debian简介

    本节书摘来自异步社区<Raspberry Pi用户指南>一书中的第2章,第2.3节,作者[英]Eben Upton , [美]Gareth Halfacree,译者 王伟 , 许金超 , ...

  7. CVX 工具箱(安装及用户指南)

    目录 Introducition 下载地址 User Guide 安装CVX步骤 Quick Start 一个实例 CVX工具箱学习教程 Introducition CVX是一个基于matlab的凸优 ...

  8. [转载]Guice 1.0 用户指南

    http://code.google.com/p/google-guice/ 用 Guice 写 Java Guice 1.0 用户指南 (20070326 王咏刚 译自:http://docs.go ...

  9. Guice 1.0 用户指南

    http://code.google.com/p/google-guice/ 用 Guice 写 Java Guice 1.0 用户指南 (20070326 王咏刚 译自:http://docs.go ...

最新文章

  1. 【文本信息抽取与结构化】深入了解关系抽取你需要知道的东西
  2. 电脑屏幕保护怎么取消_怎么监控员工电脑?老板如何知道员工上班在干什么?...
  3. java cpu 监控工具_Java自带的GUI性能监控工具Jconsole以及JisualVM简介
  4. Google分布式系统三驾马车: GFS,mapreduce,Bigtable
  5. [转]订制CentOS自安装光盘
  6. 使用maven构建项目候,jar包错误的解决办法
  7. 开发VR游戏的基本要求
  8. c语言黑色星期五公式,求黑色星期五问题~
  9. 百度网盘自动备份php,服务器自动备份脚本上传至百度云存储
  10. 转 JMeter之修改Sampler响应数据的编码格式
  11. 最近面试有感,不要耍小聪明,面试官都是开了上帝视角的
  12. MySQL(12)-----多表查询(内连接和外连接)
  13. 电脑版微信防撤回插件
  14. QQ游戏连连看自动化脚本(仅限学习交流)
  15. C++windows环境管道通信
  16. 微信小程序wx.createInnerAudioContext使用方法
  17. python另存为_python+selenium修改“另存为”弹窗参数
  18. 上门洗车软件的核心功能和技术选型
  19. MapReduce优劣,理解MapReduce与Hadoop
  20. 浙江二级C语言2019年试题,2020年6月浙江省计算机二级C语言经验分享

热门文章

  1. webapi 开启gzip压缩
  2. 很好看的后台管理界面
  3. 解决The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized or represents more than one time zone问题
  4. 计算机毕业设计Java宠物医院管理系统(源码+系统+mysql数据库+lw文档
  5. 黄浩老师cpp平时作业(四)杨辉三角
  6. 机器学习与计算机视觉入门项目——视频投篮检测(一)
  7. 性能测试——深圳个贷营销项目出差总结
  8. mysql 基础命令进阶
  9. STM32 超声波测距模块HC-SR04 驱动
  10. centos7搭建zabbix4.4