二次规划问题转化为二阶锥项目
这个例子展示了如何将一个半正定二次规划问题,使用的二阶锥形式coneprog
解算器。一个二次规划问题的形式
,
可能受到范围和线性约束。coneprog
解决问题的形式
这样
,
可能受到范围和线性约束。
将二次程序coneprog
形式,首先计算矩阵的平方根矩阵
。假设
是一个对称半正定矩阵,命令吗
一个= sqrtm (H);
返回一个半正定矩阵一个
这样“* = * = 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哲学基本问题]= quadprog (H f Aineq bineq,[],[],磅,乌兰巴托)
最低发现满足约束。优化完成,因为目标函数中引入可行的方向,在最优值的宽容,和约束满足约束的值公差内。
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 1.0000
fval = -33.0000
eflag = 1
前三个元素的锥的解决方案u
等于二次规划的解决方案的元素xqp
显示精度:
disp ([xqp u (1: (end-1))))
1.0000 1.0000 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