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:
您可能会考虑其他优化方法,而不是暴力破解每个可能的答案。除非你的结果对于每个组合都是完全随机的,否则必须有一种更漂亮的方法来做到这一点。线性优化是一个丰富的领域。
我正在尝试 运行 一个代码,用于寻找超过 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: 您可能会考虑其他优化方法,而不是暴力破解每个可能的答案。除非你的结果对于每个组合都是完全随机的,否则必须有一种更漂亮的方法来做到这一点。线性优化是一个丰富的领域。