我将使用一个非常简单的示例来说明我的问题(实际问题涉及非常复杂的单变量函数)。考虑以下单变量函数
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)应用函数以及iv)foreach函数(doParallel软件包)来做到这一点。但是,我想知道您能否告诉我是否有一种更有效的方法来解决R软件中的上述优化问题。
我知道上述优化问题很难解决。但是,该问题着重于一种有效的过程,可以同时解决R中的多个优化问题。
非常感谢您的帮助。
答案 0 :(得分:2)
函数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'))]]