0

我正在尝试解决以下二次规划问题:

 最小w  w T Σ w ,
st w T e = 1,
st。‖w ‖<sub>1 ≤ δ

其中A是单位矩阵,Sigma是协方差矩阵,e是 1 的向量。

第一个约束确保解决方案加起来为一个。

第二个约束确保解的绝对值之和(1-范数)小于或等于某个常数。

我试图通过以下方式解决这个问题:

library(Rsolnp)
#Generate some sample data
N=100
sample.data <- replicate(N,rnorm(1000,0,1))

#specify optimization problem  


fn<-function(x) {cov.Rt<-cov(sample.data); return(as.numeric(t(x)%*%cov.Rt%*%x))}

#specify equality constraint   


eqn<-function(x){one.vec<-matrix(1,ncol=N,nrow=1);return(as.numeric(one.vec%*%x))}

constraints<-1

#specify inequality constraint


ineq<-function(x){one.vec<-matrix(1,ncol=N,nrow=1);
  z1<-one.vec%*%abs(x)
  return(as.numeric(z1))
      }
#specify lower and upper bounds

uh<-2
lb<-1

#specify starting vector of "w"
    x0<-matrix(1/N,N,1)

#solve quadratic optimization problem: 

control <- list("trace"="0")
sol1<-solnp(pars=x0,fun=fn,eqfun=eqn,eqB=constraints, ineqfun=ineq,ineqUB=uh,ineqLB=lb,control=control)

我想知道:

  1. 这个解决方案正确吗?

  2. 是否有替代(更简单)的方法来解决它?使用解决方案solnp()需要永远完成更大的任务。

4

0 回答 0