- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试使用模拟退火包 GenSA 以最小化以下功能:
efficientFunction <- function(v) {
t(v) %*% Cov_Mat %*% v
}
其中Cov_Mat是从4个 Assets 得到的协方差矩阵,v是4维的权重向量。
我正在尝试以这种方式解决 Markowitz Assets 分配方法,我想知道如何引入数学约束,例如所有系数的总和必须等于 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,如果我提出问题的方式有误,请随时告诉我。
最佳答案
一种可能的方法是使用所谓的拉格朗日乘数(参见 http://en.wikipedia.org/wiki/Lagrange_multiplier)。例如,设置
efficientFunction <- function(v) {
lambda <- 100
t(v) %*% Cov_Mat %*% v + lambda * abs( sum(v) - 1 )
}
,这样为了最小化目标函数 efficientFunction
,结果参数也最小化了惩罚项 lambda * abs( sum(v) - 1 )
。拉格朗日乘数 lambda
设置为任意但足够高的水平。
关于r - 如何在 R 中使用 GenSA 函数进行数学约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23808693/
我正在使用模拟退火,如在 R 的包 GenSa 中实现的那样(函数 GenSA ),搜索导致高维函数的“良好值”(与某些基线相比)的输入变量的值。我注意到设置目标函数的最大调用次数对运行时间没有影响。
我目前正在尝试使用模拟退火包 GenSA 以最小化以下功能: efficientFunction <- function(v) { t(v) %*% Cov_Mat %*% v } 其中
我是一名优秀的程序员,十分优秀!