R语言二次规划之quadprog包

本文介绍了R语言中的quadprog包在解决二次规划问题中的应用。二次规划在投资组合和约束最小二乘问题中有广泛应用。quadprog包的solve.QP函数用于解决凸二次规划问题,详细解析了函数参数及一个实例演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

点击下方图片查看HappyChart专业绘图软件

HappyChart专业绘图软件

##二次规划
二次规划是非线性规划中一类特殊的数学规划问题,在如投资组合、约束最小二乘问题中都有应用。二次规划已经成为运筹学,经济数学,管理科学和组合优化科学的基本方法。
二次规划的一般形式:
m i n x q ( x ) = 1 2 x T D x − d T x + c s . t . A T x ≥ b 0 min_{x}\quad q(x)=\frac{1}{2}x^TDx-d^Tx+c\\ s.t. \quad A^Tx\ge b_0 minxq(x)=21xTDxdTx+cs.t.ATxb0
其中,x为向量,c为标量常数,G为Hessian矩阵,当G为半正定矩阵时,上式为凸二次规划,当G为正定矩阵时,上式为严格的凸二次规划,全局最小值是唯一的,A为约束系数矩阵。
##quadprog包
quadprog包是专门解决凸二次规划问题的包,其中的函数为solve.QP.但是该函数只解决严格的凸二次规划问题,求极小值。

solve.QP(Dmat, dvec, Amat, bvec, meq=0, factorized=FALSE)
函数参数:

  • Dmat: 为Hessian矩阵
  • dvec: 为向量,和Dmat相对应
  • Amat: 约束的系数矩阵,默认约束为“ ≥ \ge
  • bvec: 为向量,和Amat相对应
  • meq: 表示从哪一行开始Amat矩阵中的约束是等式,默认为0
    VALUE:
  • solution: 二次规划问题中向量的取值
  • value: 标量,二次规划目标函数的取值
  • unconstrained.solution: 没有约束条件下向量的取值
    ##R实现
    假设一个例子:
    要求最小化 Q ( x , y ) = 1 2 ( x 2 + y 2 ) − 3 x − y Q(x,y)=\frac{1}{2}(x^2+y^2)-3x-y Q(x,y)=21(x2+y2)3xy,则
    目标函数:
    KaTeX parse error: Undefined control sequence: \pmatrix at position 19: …,y)=\frac{1}{2}\̲p̲m̲a̲t̲r̲i̲x̲{x & y}\pmatrix…
    约束条件:
    x + y ≥ 2 − x + 2 y ≥ 1 2 x − y ≥ − 4 x+y\ge 2\\ -x+2y\ge 1\\ 2x-y\ge-4 x+y2x+2y12xy4
    从上式可得:
    KaTeX parse error: Undefined control sequence: \pmatrix at position 3: D=\̲p̲m̲a̲t̲r̲i̲x̲{1 & 0\\0 &2}\q…
    代码如下:
D <- matrix(c(1,0,0,2),nr=2)
d <- c(3,1)
A <- t(matrix(c(1,-1,2,1,2,-1),nr=3))##函数表达式中为A^T,而在程序中需要输入A。
b0 <- c(2,1,-4)
solve.QP(Dmat = D,dvec = d, Amat = A,bvec = b0)

$solution
[1] 2.0 1.5

$value
[1] -3.25

$unconstrained.solution
[1] 3.0 0.5

$iterations
[1] 2 0

$Lagrangian
[1] 0 1 0

$iact
[1] 2

在约束条件下, x = 2.0 , y = 1.5 x=2.0,y=1.5 x=2.0,y=1.5,目标函数最小值为-3.25;在无约束条件下 x = 3.0 , y = 0.5 x=3.0,y=0.5 x=3.0,y=0.5

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值