我正在使用R构建基于代理的模型,但是由于尝试使用大型对象而出现了内存问题。特别是,在初始化时创建了8个三维数组,并且在每个时间步长中,每个三维数组都由不同的函数填充。
目前,ABM在1825天内运行,并模拟2500个个体在景观上移动。景观中有1000个单元格。使用这种配置,我没有内存问题。
在初始化时,
1 3D array is like:
h <- array(NA, dim=c(1825, 48, 2500), dimnames=list(NULL, NULL, as.character(seq(1, 2500, 1)))) ## 3th dimension = individual ID
1 3D array is like:
p <- array(NA, dim=c(1825, 38, 1000), dimnames=list(NULL, NULL, as.character(seq(1, 1000, 1)))) ## 3th dimension = cell ID
6 3D arrays are like:
t <- array(NA, dim=c(1825, 41, 2500), dimnames=list(NULL, NULL, as.character(seq(1, 2500, 1)))) ## 3th dimension = individual ID
这些数组包含字符/字符串数据类型。
理想情况下,我希望增加个体数量和/或补丁数量,但由于内存问题,这是不可能的。似乎有一些可用的工具,如bigmemory
、gc
来管理内存。这些工具有效吗?我是编程新手,没有管理内存和高性能计算的经验。非常感谢您的建议和时间。
sessionInfo() R版本3.5.3(2019-03-11) 平台:x86_64-w64-mingw32/x64(64位) 运行在:Windows 7 x64(build 7601)Service Pack 1
bigmemory
包是否能处理多维数组,但我也会考虑使用ff
包。 - SeGa