我将使用一个非常简单的例子来解释我的问题(真正的问题涉及一个非常复杂的单变量函数)。考虑以下单变量函数
f <- function(x, p){ 10 - (x - p)^2 }
其中 p 属于 {-500, -499,..., -1, 0, 1,..., 499, 500}。
对于每个 p 值,我想找到使 f 最大化的 x 值。这可转换为 x 的 1001 个值。
我知道可以在 R 软件中使用 i)for 循环,ii)while 循环,iii)apply 函数,iv)foreach 函数(doParallel 包)来做到这一点。不过,我想知道您能否告诉我在 R 软件中是否有更有效的方法来解决上述优化问题。
我知道上面的优化问题解决起来很简单。然而,问题的重点是在 R 中同时解决多个优化问题的有效过程。
非常感谢您的帮助。
最佳答案
函数optimize()
可用于获取函数的最大值。
然后,您可以按如下方式应用参数值:
p<-seq(-500,500,1)
fn <- function(param,p,...){return( 10 - (param - p)^2) }
ll <- lapply(pp,function(i)
optimize(f= fn,
par =c(-1000),
p=i,
interval = c(-100000000,1000000000),
maximum = TRUE))
ll[[which.max(sapply(ll,'[[','maximum'))]]
关于r - 在 R 中同时解决单变量优化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56548210/