在 R 中同时解决单变量优化问题

Solving univariate optimization problems simultaneously in R

我将用一个非常简单的例子来解释我的问题(真正的问题涉及一个非常复杂的单变量函数)。考虑以下单变量函数

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()可用于获取函数的最大值。 然后,您可以 lapply 参数值如下:

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'))]]