我目前正在尝试使用模拟退火包 GenSA 以最小化以下功能:
efficientFunction <- function(v) {
t(v) %*% Cov_Mat %*% v
}
其中 Cov_Mat 是从 4 个资产获得的协方差矩阵,v 是维度为 4 的权重向量。
我正在尝试以这种方式解决 Markowitz 资产分配方法,我想知道如何引入数学约束,例如所有系数的总和必须等于 1 :
sum(v) = 1
此外,由于我打算依赖 GenSA 功能,我想使用这样的约束:
v <- c(0.25, 0.25, 0.25, 0.25)
dimension <- 4
lower <- rep(0, dimension)
upper <- rep(1, dimension)
out <- GenSA(v, lower = lower, upper = upper, fn = efficientFunction)
我在这篇论文中找到了:http ://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.97.6091&rep=rep1&type=pdf 如何在模拟退火算法中处理这种约束,但我不知道我如何在 R 中实现它。
我会非常感谢任何建议。这是我第一次使用 SO,所以请不要犹豫,告诉我我提问的方式是否有误。