R 中的 MILP 优化器

MILP optimizer in R

我正在尝试将权重重新训练为 1 进行最小方差优化。我尝试了多个求解器,但它们要么计算时间太长,要么不够精确,因此我想尝试使用 MILP 求解器。 这是我的 Objectif 函数:

library(Rglpk)

funct1 <- function(weight)  {
  t(weight) %*% covariance_matrix %*% weight
}

限制条件:

equality <- function(weight) { 
  a1 <- sum(weight)
  return(a1)
}

Rglpk_solve_LP(funct1,equality,c("=="),c(1))

我一直收到错误消息:

Error in as.numeric(funct1) :
cannot coerce type 'closure' to vector of type 'double'

我认为错误是由于函数引起的,但是如何在没有函数的情况下制定优化的 objective?

这是一个二次模型:objective 是 x'Qx。这意味着您不能使用 Rglpk,因为它仅适用于 LP 和 MIP 模型(即线性模型)。

你可以看看支持QP和MIQP模型的CVXR。请注意,最好(最快、最可靠)的 MIQP 求解器不是开源求解器,而是像 Cplex 和 Gurobi 这样的求解器(对于学术用户来说,它们可能是免费的)。