是否有一个R包可以使带有非线性约束的线性物镜最大化?

时间:2019-07-02 22:52:41

标签: r optimization

我已经能够使用quadprog来最小化具有线性约束的非线性目标,但是,我却无法以其他方式做到这一点...

require(quadprog)
min_var <- function(Obj,Rentabilidades,var_covar){

  b <- c(Obj,1)
  Betha <- var_covar
  A <- t(matrix(rbind(Rentabilidades,c(1,1)),nrow=2))
  Gamma <- matrix(0,nrow=2)
  solve.QP(Betha,Gamma,A,b,2)

}

现在,我想将以前的约束最大化,以以前的目标作为新约束。遗憾的是,solve.QP()仅支持线性约束。有人知道类似于quadprog的软件包可能对我有帮助吗?

1 个答案:

答案 0 :(得分:1)

标准投资组合优化模型如下:

min sum((i,j), x(i)*Q(i,j)*x(j))
sum(i,x(i)) = 1
sum(i,r(i)*x(i)) >= R
x(i) >= 0

这是一个二次规划模型,可以使用标准QP求解器进行求解。

如果您解决了这个问题(在风险约束下获得最大回报),则可以这样写:

max sum(i,r(i)*x(i))
sum((i,j), x(i)*Q(i,j)*x(j)) <= V
sum(i,x(i)) = 1
x(i) >= 0

这是一个平方约束问题。幸运的是,这是凸的,因此您可以使用Cplex,Gurobi或Mosek等求解器(它们具有R接口)进行求解。开源候选人可以是像ECOSolveR这样的求解器,甚至可以是像cxvr这样的框架。