我使用R
运行蚁群优化,通常重复几次相同的优化来交叉验证我的结果。我想通过与foreach
和doParallel
软件包并行运行进程来节省时间。
我的代码的可复制示例将很长,因此我希望这足够了。我想我设法使代码像这样运行:
result <- list()
short <- function(n){
for(n in 1:10){
result[[n]] <- ACO(data, ...)}}
foreach(n=1:50) %dopar% short(n)
在ACO()函数中,我连续创建具有中间结果(例如当前信息素水平)的对象,并使用write.table(..., append=TRUE)
保存该对象,以跟踪迭代及其结果。现在,我正在并行运行这些进程,我编写的文件包含所有进程的结果,而我无法确定数据属于哪个进程。因此,我想为每个进程编写不同的文件。
通常,使用并行处理保存中间结果的最佳方法是什么?
答案 0 :(得分:0)
您可以使用log4r
包将所需信息写入日志文件。有关软件包here的更多信息。
您必须在short
函数中放入的代码示例:
# Import the log4r package.
library('log4r')
# Create a new logger object with create.logger().
logger <- create.logger()
# Set the logger's file output.
logfile(logger) <- 'base.log'
# Set the current level of the logger.
level(logger) <- 'INFO'
# Try logging messages with different priorities. # At priority level INFO, a call to debug() won't print anything.
debug(logger, 'Iretation and result info')