文章目录

  • 输入数据
  • 优化代码
  • 计算对偶间隙
  • 原目标
  • 拉格朗日的形式
  • 对偶形式
  • 参考

解析一下 Boyd & Vandenberghe, "Convex Optimization"上的例子,重点在于其对偶形式是怎么得到的
Section 5.2.4: Solves a simple QCQP

输入数据

randn('state',13);
n = 6;
P0 = randn(n); P0 = P0'*P0 + eps*eye(n);
P1 = randn(n); P1 = P1'*P1;
P2 = randn(n); P2 = P2'*P2;
P3 = randn(n); P3 = P3'*P3;
q0 = randn(n,1); q1 = randn(n,1); q2 = randn(n,1); q3 = randn(n,1);
r0 = randn(1); r1 = randn(1); r2 = randn(1); r3 = randn(1);

优化代码

cvx_beginvariable x(n)dual variables lam1 lam2 lam3minimize( 0.5*quad_form(x,P0) + q0'*x + r0 )lam1: 0.5*quad_form(x,P1) + q1'*x + r1 <= 0;lam2: 0.5*quad_form(x,P2) + q2'*x + r2 <= 0;lam3: 0.5*quad_form(x,P3) + q3'*x + r3 <= 0;
cvx_end
obj1 = cvx_optval;

计算对偶间隙

P_lam = P0 + lam1*P1 + lam2*P2 + lam3*P3;
q_lam = q0 + lam1*q1 + lam2*q2 + lam3*q3;
r_lam = r0 + lam1*r1 + lam2*r2 + lam3*r3;
obj2 = -0.5*q_lam'*inv(P_lam)*q_lam + r_lam;
disp('The duality gap is equal to ');
disp(obj1-obj2)

原目标

minimize12xTP0x+q0Tx+r012xTP1x+q1Tx+r1<=012xTP2x+q2Tx+r2<=012xTP3x+q3Tx+r3<=0minimize \ \frac{1}{2}x^TP_0x+q_0^Tx+r_0\\ \frac{1}{2}x^TP_1x+q_1^Tx+r_1<=0\\ \frac{1}{2}x^TP_2x+q_2^Tx+r_2<=0\\ \frac{1}{2}x^TP_3x+q_3^Tx+r_3<=0 minimize 21​xTP0​x+q0T​x+r0​21​xTP1​x+q1T​x+r1​<=021​xTP2​x+q2T​x+r2​<=021​xTP3​x+q3T​x+r3​<=0
P0∈S++,P1,P2,P3∈S+P_0 \in S_{++},P_1,P_2,P_3 \in S_+P0​∈S++​,P1​,P2​,P3​∈S+​,原目标是严格凸函数,有唯一极小解

拉格朗日的形式

L(x,λ1,λ2,λ3)=12xTP0x+q0Tx+r0+∑i=13λi(12xTPix+qiTx+ri)=12xTP(λ)x+q(λ)Tx+r(λ)P(λ)=P0+∑i=13λiPiq(λ)=q0+∑i=13λiqir(λ)=r0+∑i=13λiriλ⪰0\mathcal{L}(x,\lambda_1,\lambda_2,\lambda_3)=\frac{1}{2}x^TP_0x+q_0^Tx+r_0+\sum_{i=1}^3\lambda_i(\frac{1}{2}x^TP_ix+q_i^Tx+r_i)\\= \frac{1}{2}x^TP(\lambda)x+q(\lambda)^Tx+r(\lambda)\\ P(\lambda)=P_0+\sum_{i=1}^3\lambda_iP_i\\ q(\lambda)=q_0+\sum_{i=1}^3\lambda_iq_i\\ r(\lambda)=r_0+\sum_{i=1}^3\lambda_ir_i\\ \lambda\succeq 0 L(x,λ1​,λ2​,λ3​)=21​xTP0​x+q0T​x+r0​+i=1∑3​λi​(21​xTPi​x+qiT​x+ri​)=21​xTP(λ)x+q(λ)Tx+r(λ)P(λ)=P0​+i=1∑3​λi​Pi​q(λ)=q0​+i=1∑3​λi​qi​r(λ)=r0​+i=1∑3​λi​ri​λ⪰0

对偶形式

由于对偶变量λ⪰0\lambda\succeq 0λ⪰0,因此,P(λ)∈S++P(\lambda)\in S_{++}P(λ)∈S++​
对拉格朗日求导可以得到极小值的位置
L(x,λ)=12xTP(λ)x+q(λ)Tx+r(λ)→P(λ)x+q(λ)=0→x=−P(λ)−1q(λ)\mathcal{L}(x,\lambda)=\frac{1}{2}x^TP(\lambda)x+q(\lambda)^Tx+r(\lambda)\rightarrow\\ P(\lambda)x+q(\lambda)=0\rightarrow x=-P(\lambda)^{-1}q(\lambda)L(x,λ)=21​xTP(λ)x+q(λ)Tx+r(λ)→P(λ)x+q(λ)=0→x=−P(λ)−1q(λ)
代入拉格朗日函数,得到对偶形式
g(λ)=infx(L(x,λ))=−12q(λ)TP(λ)−1q(λ)+r(λ)λ⪰0g(\lambda)=\underset{x}{inf}(\mathcal{L}(x,\lambda))=-\frac{1}{2}q(\lambda)^TP(\lambda)^{-1}q(\lambda)+r(\lambda)\\\lambda\succeq 0g(λ)=xinf​(L(x,λ))=−21​q(λ)TP(λ)−1q(λ)+r(λ)λ⪰0

参考

http://web.cvxr.com/cvx/examples/cvxbook/Ch05_duality/html/qcqp.html

二次规划的对偶形式(CVX)相关推荐

  1. 凸优化工具包CVX快速入门

    CVX工具包可以从斯坦福Boyed教授的个人主页下载http://cvxr.com/cvx/download/,也可以从我的资源中下载http://download.csdn.net/detail/h ...

  2. SVM学习笔记-对偶形式的SVM

    SVM学习笔记第二篇 SVM学习笔记-线性支撑向量机 SVM学习笔记-对偶形式的SVM SVM学习笔记-核函数与非线性SVM SVM学习笔记-软间隔SVM 0 - 回顾 上一篇笔记讲述了一个模型:线性 ...

  3. CVX工具包(for matlab)

    from:http://blog.csdn.net/duoduo1030/article/details/53582370?utm_source=itdadao&utm_medium=refe ...

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

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

  5. CVX工具箱配合MATLAB使用心得

    CVX工具箱配合MATLAB使用心得 使用过程中的随手笔记,希望可以帮到初学的朋友. 文章目录 CVX工具箱配合MATLAB使用心得 一.常见系统报错或警告 二.部分重命名的数学符号使用 一.常见系统 ...

  6. MATLAB cvx工具箱中常用的替换函数汇总,解决表达式报错问题

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.基础函数 二.进阶函数 1.inv_pos()-正数的倒数 2.norm_inv_pos(x, p)-逆范数函数 ...

  7. 感知机模型及其对偶形式

    1. 对偶 输入:线性可分的数据集 T={(x1,y1),(x2,y2),-,(xN,yN)},其中 xi∈Rn,yi∈{−1,+1} ,学习率为 η, 输出:α,b,感知机模型为 f(x)=sgn( ...

  8. Matlab中的CVX工具包安装

    毕设做压缩感知,不知道如何入手.已经安装了Matlab2012a(x64),装个CVX工具包,主要是想用还原算法.如果有一起做压缩感知的,欢迎一起讨论啊~ 首先去CVX工具包官方网站:http://c ...

  9. CVX约束中定义中间变量或表达式

    https://blog.csdn.net/Jinyindao243052/article/details/117233095 https://blog.csdn.net/qq_26347451/ar ...

  10. 感知机数据算法的对偶形式

    (1,1)*是x那3个2维向量具体计算得知. 所以可以求得对偶感知机模型: 和感知机的原始形式一样,对偶形式也是收敛的,可以存在多个解,这既依赖于初值的选择,也依赖于迭代过程中误分类点的选择顺序,如果 ...

最新文章

  1. 研究揭秘:神经网络越大、表现越好的“神秘力量”
  2. 电子工程可以报考二建_毕业证上财务管理专业,可以报考二建吗?
  3. X-Scan描述及简单教程
  4. [ECMAScript] 说说你对Babel的了解?
  5. python中gensim内没有summarization的问题
  6. 解决WORD无法多次编辑保存
  7. eoc机顶盒wifi服务器未响应,网络机顶盒中桌面配置服务器
  8. 普元EOS生成WebService时使用自定义实体映射属性
  9. 拆解一个老式电感电容表
  10. 看《岭南大医生》羽素与专家共揭痘痘背后的问题
  11. Ubuntu无法调节屏幕亮度问题
  12. R语言笔记:机器学习【K近邻】
  13. 谷歌账号--手机号无法验证的问题
  14. Python基础语言学习 day 6 ——列表的遍历、增删改、相关操作、函数和方法
  15. (附源码)springboot基于微信小程序的校园外卖系统 毕业设计091024
  16. 乳品车间设备布置图、啤酒厂总平面布置图、铜矿选矿厂厂区布置图、制药工厂平面布置图、脱硫布置图、选煤厂厂区总平面布置图、年产20万吨乙二醇厂区平面布置图、烟气脱硫布置图、脱硝SCR区布置图……
  17. getTime()方法在苹果系统的bug
  18. QT中使用C++ socket通信,socket通信原理三次握手和四次握手详解、客户端与服务端实例详解
  19. 对电脑屏幕进行远程监控和控制有什么方法?
  20. 刷magisk模块后不能开机_一日一技 | 让过时失效、无法刷入的 Magisk 模块重现生机...

热门文章

  1. 多尺度图像增强Retinex相关算法学习及实现
  2. 渗透测试专业人员使用的11种工具
  3. 视频课程:CMOS模拟集成电路设计--已上线
  4. iOS开发证书申请教程
  5. DB9接口定义 串口接口定义 MAX232电路
  6. (十一)国产密码算法
  7. 【Android】ListView 控件的简单使用
  8. java实现socket网络编程
  9. qq音乐下载|qq音乐播放器下载
  10. virtuebox 安装VBoxGuestAdditions,ubuntu下设置文件共享