将二次规划问题转化为二阶锥规划
这个例子展示了如何将一个正的半定二次规划问题转化为二阶圆锥形式coneprog
解算器。二次规划问题有这样的形式
,
可能受到边界和线性约束。coneprog
解决表单中的问题
这样
,
可能受到边界和线性约束。
将二次程序转换为coneprog
表格中,首先计算出矩阵的平方根
.假设
是对称正半定矩阵的命令吗
一个= sqrtm (H);
返回一个正的半定矩阵一个
这样A'*A = A*A = h
.因此,
.
将二次规划的形式修改如下:
在哪里 满足约束条件
.
扩展控制变量 来 ,其中包括 最后一个元素是:
.
将二阶锥约束矩阵和向量扩展为:
.
扩展系数向量 :
.
用这些新变量表示二次规划问题
在哪里
.
这个二次约束通过下面的计算变成了一个圆锥约束,其中使用了前面的定义 , , :
但 .所以,回忆 定义是 ,不等式就变成
.
二次规划与相应的锥规划具有相同的解。唯一的区别是附加项 在圆锥程序中。
数值例子
的quadprog
文档给出了这个例子。
H = [1,-1,1 -1,2,-2 1,-2,4];f = [7, -12; -15);磅= 0 (3,1);乌兰巴托= 1(大小(磅));Aineq = (1 1 1);bineq = 3;[xqp fqp] = quprog (H,f,Aineq,bineq,[],[],lb,ub)
找到满足约束条件的最小值。由于目标函数在可行方向上不减小,达到最优容差的值,且约束条件满足于约束容差的值,从而完成了优化。
xqp =3×11 1 1
哲学基本问题= -32.5000
引用本示例开头的描述,指定二阶锥约束变量,然后调用coneprog
函数。
Asc = sqrtm (H);Asc(+ 1)结束,结束(+ 1)= 1;d =[0(大小(f (:))); 1];γ= 1;b = 0(大小(d));qp = secondordercone (Asc, b, d,γ);Aq = Aineq;Aq (:, (+ 1) = 0;结束磅(+ 1)=无穷;乌兰巴托(结束+ 1)=正; [u,fval,eflag] = coneprog([f(:);1],qp,Aq,bineq,[],[],lb,ub)
找到最优解。
u =4×11.0000 1.0000 1.0000
fval = -33.0000
eflag = 1
圆锥解的前三个元素u
等于二次规划解的元素吗xqp
,显示精度:
disp ([xqp u (1: (end-1))))
1.0000 1.0000 1.0000 1.0000
返回的二次函数值哲学基本问题
返回的圆锥值是- 1/2时
是正的,还是+ 1/2
是负的。
disp ([fqp-sign u (2 * () + 1) * 1/2 fval])
-33.0000 - -33.0000
另请参阅
quadprog
|coneprog
|secondordercone