在 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'))]]
我将用一个非常简单的例子来解释我的问题(真正的问题涉及一个非常复杂的单变量函数)。考虑以下单变量函数
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'))]]