二次规划的对偶形式(CVX)
文章目录
- 输入数据
- 优化代码
- 计算对偶间隙
- 原目标
- 拉格朗日的形式
- 对偶形式
- 参考
解析一下 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 21xTP0x+q0Tx+r021xTP1x+q1Tx+r1<=021xTP2x+q2Tx+r2<=021xTP3x+q3Tx+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)=21xTP0x+q0Tx+r0+i=1∑3λi(21xTPix+qiTx+ri)=21xTP(λ)x+q(λ)Tx+r(λ)P(λ)=P0+i=1∑3λiPiq(λ)=q0+i=1∑3λiqir(λ)=r0+i=1∑3λiriλ⪰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,λ)=21xTP(λ)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,λ))=−21q(λ)TP(λ)−1q(λ)+r(λ)λ⪰0
参考
http://web.cvxr.com/cvx/examples/cvxbook/Ch05_duality/html/qcqp.html
二次规划的对偶形式(CVX)相关推荐
- 凸优化工具包CVX快速入门
CVX工具包可以从斯坦福Boyed教授的个人主页下载http://cvxr.com/cvx/download/,也可以从我的资源中下载http://download.csdn.net/detail/h ...
- SVM学习笔记-对偶形式的SVM
SVM学习笔记第二篇 SVM学习笔记-线性支撑向量机 SVM学习笔记-对偶形式的SVM SVM学习笔记-核函数与非线性SVM SVM学习笔记-软间隔SVM 0 - 回顾 上一篇笔记讲述了一个模型:线性 ...
- CVX工具包(for matlab)
from:http://blog.csdn.net/duoduo1030/article/details/53582370?utm_source=itdadao&utm_medium=refe ...
- CVX文档(Release 2.2)(自翻中文)
CVX用户指南(Release 2.2) Authors: Michael C. Grant, Stephen P. Boyd CVX Research, Inc. January 28,2020 翻 ...
- CVX工具箱配合MATLAB使用心得
CVX工具箱配合MATLAB使用心得 使用过程中的随手笔记,希望可以帮到初学的朋友. 文章目录 CVX工具箱配合MATLAB使用心得 一.常见系统报错或警告 二.部分重命名的数学符号使用 一.常见系统 ...
- MATLAB cvx工具箱中常用的替换函数汇总,解决表达式报错问题
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.基础函数 二.进阶函数 1.inv_pos()-正数的倒数 2.norm_inv_pos(x, p)-逆范数函数 ...
- 感知机模型及其对偶形式
1. 对偶 输入:线性可分的数据集 T={(x1,y1),(x2,y2),-,(xN,yN)},其中 xi∈Rn,yi∈{−1,+1} ,学习率为 η, 输出:α,b,感知机模型为 f(x)=sgn( ...
- Matlab中的CVX工具包安装
毕设做压缩感知,不知道如何入手.已经安装了Matlab2012a(x64),装个CVX工具包,主要是想用还原算法.如果有一起做压缩感知的,欢迎一起讨论啊~ 首先去CVX工具包官方网站:http://c ...
- CVX约束中定义中间变量或表达式
https://blog.csdn.net/Jinyindao243052/article/details/117233095 https://blog.csdn.net/qq_26347451/ar ...
- 感知机数据算法的对偶形式
(1,1)*是x那3个2维向量具体计算得知. 所以可以求得对偶感知机模型: 和感知机的原始形式一样,对偶形式也是收敛的,可以存在多个解,这既依赖于初值的选择,也依赖于迭代过程中误分类点的选择顺序,如果 ...
最新文章
- 研究揭秘:神经网络越大、表现越好的“神秘力量”
- 电子工程可以报考二建_毕业证上财务管理专业,可以报考二建吗?
- X-Scan描述及简单教程
- [ECMAScript] 说说你对Babel的了解?
- python中gensim内没有summarization的问题
- 解决WORD无法多次编辑保存
- eoc机顶盒wifi服务器未响应,网络机顶盒中桌面配置服务器
- 普元EOS生成WebService时使用自定义实体映射属性
- 拆解一个老式电感电容表
- 看《岭南大医生》羽素与专家共揭痘痘背后的问题
- Ubuntu无法调节屏幕亮度问题
- R语言笔记:机器学习【K近邻】
- 谷歌账号--手机号无法验证的问题
- Python基础语言学习 day 6 ——列表的遍历、增删改、相关操作、函数和方法
- (附源码)springboot基于微信小程序的校园外卖系统 毕业设计091024
- 乳品车间设备布置图、啤酒厂总平面布置图、铜矿选矿厂厂区布置图、制药工厂平面布置图、脱硫布置图、选煤厂厂区总平面布置图、年产20万吨乙二醇厂区平面布置图、烟气脱硫布置图、脱硝SCR区布置图……
- getTime()方法在苹果系统的bug
- QT中使用C++ socket通信,socket通信原理三次握手和四次握手详解、客户端与服务端实例详解
- 对电脑屏幕进行远程监控和控制有什么方法?
- 刷magisk模块后不能开机_一日一技 | 让过时失效、无法刷入的 Magisk 模块重现生机...