For-Loop 使代码优化超过 7 个常量非常慢

For-Loop making code what optimizes over 7 constants inordinately slow

我正在尝试 运行 一个代码,用于寻找超过 20 年的流行病学数据的最佳预测措施。我正在优化超过 7 个常量的模型,所以我的代码如下所示:

correcttot<-function(v,p,r){  
  correct3<-array(0,dim=c(10,10,10,10,10,10,10))
  for(i in 1:10){
    for(j in 1:10){
      for(k in 1:10){
        for(l in 1:10){ 
          for(m in 2:10){
            for(n in 2:10){
              for(o in 1:10){
                correct3[i,j,k,l,m,n,o]<-percentcorrect((i/10),(j/10),(20*k),(20*l),m,n,o,v,p,r)
              }
            }
          }
        }
      }
    }
  }
 print(correct3)
}

但是这个 运行 和糖蜜一样慢(大约需要 35 小时)。我知道在很多情况下 apply() 是比 for 循环更好的选择,但在这种情况下有什么办法可以使用它吗?那会是什么样子?函数 (percentcorrect) 采用七个常量,然后是我的数据集 v、p、r 中的三个向量。功能不是特别快,但是还是要花很长时间。

非常感谢您。

你有 1000 万次 运行 正确。尽一切可能加快该功能。如果它正在从磁盘读取您的矢量,请尝试提前将所有内容放入内存中。如果他们正在打印一些内容以进行控制台,请终止所有输出。

任何事情做 1000 万次都需要一段时间。

PS: 您可能会考虑其他优化方法,而不是暴力破解每个可能的答案。除非你的结果对于每个组合都是完全随机的,否则必须有一种更漂亮的方法来做到这一点。线性优化是一个丰富的领域。