SDP(SemiDefinite Programing,半定规划)是凸优化(Convex Optimization)的一种,貌似近些年来比较热,反正这个东西常常出现在我看的论文中。论文里一般是把一个问题转化为SDP,然后极不负责任的扔了一句可以使用SeDuMi等工具箱解决就完事了,搞的本人非常迷茫,于是决定一探究竟,谁知还搞了个意外收获,那就是YALMIP工具箱。SeDuMi和YALMIP都是Matlab的工具箱,下载和安装请参见它们的主页。下面我就分别谈谈怎么样将两个工具箱应用于SDP求解吧。

SDP问题的对偶原型及求解步骤

下面就是一个典型的SDP问题:

目标函数是线性的,有一个等式约束,有一个不等式约束,最后一个是LMI(Linear Matrix Inequality,线性矩阵不等式)约束。使用SeDuMi来解决此类问题,我们就要自行构造调用SeDuMi的核心函数sedumi(Att,bt,ct,K)的四个参数。





 *等式约束的个数
 *不等式约束的个数
 *LMI中矩阵的阶数

这样,我们就可以调用来求解了,其中的y即为优化后得到的最优解。

一个典型的例子

这里举一个简单的例子,并给出Matlab的实际代码,以便能更好地理解运用上节的知识。SDP的一个最简单的应用就是最大化矩阵的特征值问题。如我们要找使矩阵的特征值最大化,其中

分别为:

同时,我们对也给出一个不等式限制和一个等式限制:


那么这个问题可以描述成以下形式:

其中的取值分别为:

下面我们就可以使用sedumi函数进行优化求解了,给出Matlab代码:

最后得到的y即为最优解,它的前三个分量就是我们想要的答案。如下图所示:



YALMIP一出,谁与争锋

我们从上面也可以看到,SeDuMi的求解过程还是比较复杂的,不仅需要将优化问题先化成SDP的标准形式,而且参数的配置也相当费功夫,很不直观!在搜索SeDuMi的过程中,我又发现了一个叫YALMIP的工具箱,它的命名挺有意思,Yet Another LMI Package,又一个LMI包,呵呵,不过它可不是徒有虚名啊!简单的说,它可以非常直观的将目标函数和约束条件赋给它的核心函数solvesdp(Constraint,Objective),下面我们就看看解决同样的问题YALMIP是怎么操作的,废话不说了,直接上Matlab代码:


结果如下图所示:

可以看到两者的结果基本是一致的,当然,我怀疑YALMIP在操作的过程中有调用SeDuMi的可能性,但是不管怎么说,YALMIP的代码则更直观,更容易理解,甚至连双向不等式都可以直接书写,这都是明显的,可见它的牛逼,所以必然果断抛弃其他一切优化工具箱,你的意见呢?嘿嘿~

我觉得目前最牛的是SDPT3!

求解SDP问题—使用SeDuMi和YALMIP相关推荐

  1. SDP sedumi yalmip

    转自:http://hi.baidu.com/wbh200892268/item/173dffc94943781c50505840 SDP(SemiDefinite Programing,半定规划)是 ...

  2. Yalmip使用学习 配置cplex求解器 实例

    yalmip学习 0. yalmip简介 0.1 什么是yalmip yalmip是由Lofberg开发的一种免费的优化求解工具,其最大特色在于集成许多外部的最优化求解器,形成一种统一的建模求解语言, ...

  3. SDP半正定规划的低复杂度求解:基于块坐标下降(Block Coordinate Descent)

    前言 之前的几篇博客 经典的SDR算法: 用半正定松弛法 ( Semidefinite Relaxation) 求解二次优化问题 和 经典的SDR算法(下):SDR的具体使用细节与相关代码 中介绍了一 ...

  4. 在matlab中通过yalmip平台调用cplex求解器,可用于求解MILP问题,适合于综合能源系统优化求解(完整程序分享)

    综合能源系统优化求解 完整程序: %% 请先确保YALMIP工具箱和CPLEX正确安装,MATLAB导入对应文件,否则无法运行程序!! %CPLEX免费试用版对求解规模有限制,如出现规模过大无法求解, ...

  5. 基于主从博弈的智能小区代理商定价策略及 电动汽车充电管理matlab程序(yalmip+cplex)(yalmip+gurobi)

    基于主从博弈的智能小区代理商定价策略及电动汽车充电管理matlab程序(yalmip+cplex)(yalmip+gurobi) 参考文献:基于主从博弈的智能小区代理商定价策略及电动汽车充电管理 智能 ...

  6. Matlab工具箱:ggplab 和 YALMIP 安装

    Matlab工具箱:ggplab 和 YALMIP 安装 一.ggplab 1.简介 ggplab 是基于Matlab的工具箱,用于求解几何规划(Geometric Programs,简称GP)以及广 ...

  7. CVX文档(Release 2.2)(自翻中文)

    CVX用户指南(Release 2.2) Authors: Michael C. Grant, Stephen P. Boyd CVX Research, Inc. January 28,2020 翻 ...

  8. CVX用户指南之简介

    什么是 CVX? ‎CVX 是一个建模系统,用于构建和求解‎‎规范凸程序‎‎ (DCP).‎CVX 支持多种标准问题类型,包括线性和二次型‎‎程序‎‎(LP/QPs).二阶锥形程序 (SOCP) 和半 ...

  9. 【模型】OpenBuild中的MPC控制器

    OpenBuild 是一种建筑HVAC系统热力学仿真控制软件. https://la.epfl.ch/files/content/sites/la/files/shared/common/openBu ...

最新文章

  1. 广东生态所孙蔚旻团队EST发表利用稳定同位素示踪-宏基因组分箱联用技术揭示砷污染土壤中的厌氧砷氧化微生物及其代谢途径...
  2. 极大似然法估计与极大验后法估计
  3. 老笔记整理四:字符串的完美度
  4. python初始化函数_当你学会了Python爬虫,网上的图片素材就免费了
  5. jenkins 插件目录_10 个 Jenkins 实战经验,助你轻松上手持续集成
  6. 【C#】C#实现鼠标滚轮的图像居中缩放
  7. 手写 Promise
  8. Python项目:用微信自动给女朋友每天一句英语问候
  9. python3_04.循环函数
  10. 记模拟面试日记(更新...)
  11. 远程桌面服务器怎么重启计算机,电脑怎么样远程重新启动
  12. 树如何找共同祖先_树的运用:求树上共同祖先LCA
  13. 17.TCP/IP 详解卷1 --- TCP: 传输控制协议
  14. cocos2d-x中的尺寸之二
  15. 2019PMP考试专题资料大全
  16. 如何编写游戏辅助工具
  17. java 异或_Java异或详解
  18. PowerDesigner详细安装教程
  19. 人脸关键点检测 代码 matlab,从传统方法到深度学习,人脸关键点检测方法综述...
  20. BZZ节点如何成为有效节点,BZZ节点优势

热门文章

  1. 如何设计接口测试用例
  2. Android硬件加速介绍与实现
  3. 振南的znFAT FAT32文件系统
  4. JAVA环境搭建及入门
  5. 小米平板位置服务器,腾讯内容开放平台
  6. 【高频电子线路】信号的调幅与解调
  7. 国脉科技股份有限公司
  8. Python-OpenCV图像处理(四):修改相机参数并保存高分辨率图片
  9. QA小白的学习之路!!!!
  10. html5画图作品,10款最佳HTML5绘图工具