Netlogo 行为空间优化 - 删除中止的运行 - 最终命令
Netlogo BehaviorSpace Optmization - Delete Aborted Runs - Final Command
我正在处理相当多的运行,其中大部分将被中止。我可以编写删除中止运行的最终命令以加快进程 and/or 使我的 csv 文件更小吗?
没有什么可以让您以直接的方式做到这一点。无论如何它都不会真正加快速度。
除非您的 csv 文件的大小确实是个问题,否则最简单的方法就是在您使用的任何数据分析程序中过滤掉中止的 运行s。
我能想到的唯一选择是编写自己的实验代码。假设你有一个 stop-condition?
记者,而你 set aborted? true
当 运行 被中止时,你可以按照以下方式做一些事情:
extensions [ csv ]
globals [ aborted? ]
to experiment
let run-number 1
let file-name "experiment.csv"
if file-exists? file-name [ file-delete file-name ]
file-open file-name
foreach [ 1 2 3 ] [ ; vary x
set x ?
foreach [ "a" "b" "c" ] [ ; vary y
set y ?
set run-number run-number + 1
setup
while [ not stop-condition? ] [ go ]
if not aborted? [
file-print csv:to-row (list
run-number
x
y
(count turtles)
; whatever else you want to measure...
)
]
if run-number mod 10 = 0 [ file-flush ]
]
]
file-close-all
end
这假设 x
和 y
分别是一个滑块和一个选择器小部件。如果你想改变全局变量,你必须小心不要在设置中调用 clear-all
来覆盖它们。
如您所见,所有这些都远非理想,而且可能容易出错。
我正在处理相当多的运行,其中大部分将被中止。我可以编写删除中止运行的最终命令以加快进程 and/or 使我的 csv 文件更小吗?
没有什么可以让您以直接的方式做到这一点。无论如何它都不会真正加快速度。
除非您的 csv 文件的大小确实是个问题,否则最简单的方法就是在您使用的任何数据分析程序中过滤掉中止的 运行s。
我能想到的唯一选择是编写自己的实验代码。假设你有一个 stop-condition?
记者,而你 set aborted? true
当 运行 被中止时,你可以按照以下方式做一些事情:
extensions [ csv ]
globals [ aborted? ]
to experiment
let run-number 1
let file-name "experiment.csv"
if file-exists? file-name [ file-delete file-name ]
file-open file-name
foreach [ 1 2 3 ] [ ; vary x
set x ?
foreach [ "a" "b" "c" ] [ ; vary y
set y ?
set run-number run-number + 1
setup
while [ not stop-condition? ] [ go ]
if not aborted? [
file-print csv:to-row (list
run-number
x
y
(count turtles)
; whatever else you want to measure...
)
]
if run-number mod 10 = 0 [ file-flush ]
]
]
file-close-all
end
这假设 x
和 y
分别是一个滑块和一个选择器小部件。如果你想改变全局变量,你必须小心不要在设置中调用 clear-all
来覆盖它们。
如您所见,所有这些都远非理想,而且可能容易出错。