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

时间:2019-06-11 16:37:42

标签: r for-loop optimization while-loop doparallel

我将使用一个非常简单的示例来说明我的问题(实际问题涉及非常复杂的单变量函数)。考虑以下单变量函数

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中的多个优化问题。

非常感谢您的帮助。

1 个答案:

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