[译]在R中使用quadprog包求解二次规划 - 知乎 (zhihu.com)
本文将探究一个被称为二次规划的优化问题,这是一种特殊形式的非线性约束优化问题。二次规划在许多领域都有运用,比如投资组合优化、求解支持向量机(SVM)分类问题等。
什么是二次规划
对于一个二次规划问题,首先要考虑的就是一个二次目标函数:
image.png
这里 x 在 ℝn 中是一个向量, D 是一个n×n 的对称正定矩阵,在 ℝn 中 d 是常数项约束,c 是一个标量常数。Q(x)函数通常以二次函数的形式出现,并且它高维的通项表达式是:
image.png
require(quadprog)
Dmat <- 2*matrix(c(1,-1/2,-1/2,1), nrow = 2, byrow=TRUE)
dvec <- c(-3,2)
A <- matrix(c(1,1,-1,1,0,-1), ncol = 2 , byrow=TRUE)
bvec <- c(2,-2,-3)
Amat <- t(A)
sol <- solve.QP(Dmat, dvec, Amat, bvec, meq=0)
网友评论