我正在使用组合函数c()
来定义gradient
:
eval_f <- function( x, param, n ) {
return(list("objective" = x[5] * (param[1] - param[2] / sum(x[1:4])),
"gradient" = c( x[5] * param[2] / (x[1] * x[1]),
x[5] * param[2] / (x[2] * x[2]),
x[5] * param[2] / (x[3] * x[3]),
x[5] * param[2] / (x[4] * x[4]),
param[1] - param[2] / sum(x[1:4])
) ) )
}
可以看到渐变包含具有相同结构的元素: x[5] * param[2] / (x[...] * x[...])
问题。是否可以使用标准函数(如rep(c(...), times=n)
)来创建gradient
?
你可以这样做:
eval_f <- function( x, param, n ) {
return(list(objective = x[5] * (param[1] - param[2] / sum(x[1:4])),
gradient = c(x[5] * param[2] / (x[1:4]^2),
param[1] - param[2] / sum(x[1:4])
)))
}
或者也可以使用(x[1:4] * x[1:4])
如果这是您喜欢的而不是(x[1:4]^2)
.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句