如何求R中多元函数的最大值

如何求R中多元函数的最大值,r,maximize,mle,R,Maximize,Mle,我有一个共同的可能性,我需要最大化,这是由大约25个不同的变量决定的。我希望有一种方法可以找到变量值的组合,使函数最大化,而不必求助于循环遍历每个可能值的25个“for”循环 这是一个可能性小得多的例子,使用“for”循环方法最大化,其中“temp”计算可能性值,test是记录所用变量值的向量: h1=23 h2=31 test=c(NA,NA,NA,NA,0) for (N in seq(60,150,10)) { for (p1 in seq(0.01,1,.01)) { fo

我有一个共同的可能性,我需要最大化,这是由大约25个不同的变量决定的。我希望有一种方法可以找到变量值的组合,使函数最大化,而不必求助于循环遍历每个可能值的25个“for”循环

这是一个可能性小得多的例子,使用“for”循环方法最大化,其中“temp”计算可能性值,test是记录所用变量值的向量:

h1=23
h2=31

test=c(NA,NA,NA,NA,0)
for (N in seq(60,150,10)) {
  for (p1 in seq(0.01,1,.01)) {
    for (p2 in seq(0.01,1,.01)) {
      for (S1 in seq(0.5,1,.005)) {
        temp=factorial(N)/(factorial(h1)*factorial(h2)*factorial(N-h1-h2))*(p1)^h1*((1-p1)*S1*p2)^h2*(1-(p1+(1-p1)*S1*p2))^(N-h1-h2)
        if (temp>test[5]) test=c(p1,p2,S1,N,temp)
      }
    }
  }
}
test
提前感谢,,
Sergey

?optim
(但请确保设置
fnscale
参数,否则默认情况下将最小化)。您可能还会更好地最大化目标函数的日志。谢谢-这对较小的数据集很有效,但是当我尝试使用完整的集合[optim(var,joilik,method=“L-BFGS-B”,lower=c(rep(5,10),rep(1,15),rep(-1,3),rep(0,3)),upper=c(rep(60,10),rep(50,15),rep(0,3),rep(1,3)))时,我得到以下错误:“optim中的错误(var,joilik,method=“L-BFGS-B”,lower=c(代表(5,10)):非有限差分值[26]“。有什么建议吗?使用optim的
parscale
参数来确保所有参数的变化在相同的数量级上可能会有所帮助。您也可以尝试
minqa
包中的
bobyqa
(该包使用无导数方法,还允许框约束)。