我正在尝试使用 DEoptim 最小化目标函数,但要受到简单的约束。我不清楚如何将简单约束添加到对 DEoptim 的调用中。这是目标函数:
obj_min <- function(n,in_data) {
gamma <- in_data$Gamma
delta <- in_data$Delta
theta <- in_data$Theta
gammaSum <- sum(n * gamma)
deltaSum <- sum(n * delta)
thetaSum <- sum(n * theta)
abs((EPC * gammaSum - 2 * abs(deltaSum)) / thetaSum )
}
我的映射函数(施加整数约束)如下:
mappingFun <- function(x) {
x[1:length(x)] <- round(x[1:length(x)], 0)
}
我对 DEoptim 的呼吁是:
out <- DEoptim(DTRRR_min, lower = c(rep(-5, length(in_data[, 1]))),
upper = c(rep(5, length(in_data[, 1]))),
fnMap = mappingFun, DEoptim.control(trace = F),in_data)
我的 in_data 对象(数据框)是:
Underlying.Price Delta Gamma Theta Vega Rho Implied.Volatility
1 40.69 0.9237 3.2188 -0.7111 2.0493 0.0033 0.3119
2 40.69 0.7713 6.2267 -1.6352 4.3240 0.0032 0.3402
3 40.69 0.5822 8.4631 -2.0019 5.5782 0.0338 0.3229
4 40.69 0.3642 8.5186 -1.8403 5.3661 0.0210 0.3086
5 40.69 0.1802 6.1968 -1.2366 3.7517 0.0093 0.2966
我想添加一个简单的约束:
sum(n * delta) = target
换句话说,优化参数的总和 n 乘以我的 in_data 数据帧中的增量总和到某种目标。为简单起见,我们只说 0.5。我该如何强加
sum(n * delta) = 0.5
作为约束?谢谢您的帮助!