【问题标题】:MILP optimizer in RR中的MILP优化器
【发布时间】:2021-01-15 07:39:34
【问题描述】:

我正在尝试使用重新训练为 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))

我不断收到错误:

as.numeric(funct1) 中的错误:
无法将类型“闭包”强制为“双”类型的向量

我假设错误是由于函数而存在的,但是如果没有函数,我如何制定优化目标?

【问题讨论】:

  • 这对cran.r-project.org/web/packages/Rglpk/Rglpk.pdf 有帮助吗?看一下示例中的结构。如果您需要进一步的帮助,则需要一个可重现的示例。
  • 可重现示例的唯一缺失数据是协方差矩阵。例如,可以将 matrix(c(0.14 , 0.46, 0.5,0.45, 0.36, 0.42 , 0.32 , 0.23, 0.75), nrow=3) 用于协方差矩阵

标签: r optimization constraints portfolio


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 2011-07-23
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多