Netlogo:在行为空间中跨运行保留数据以节省加载时间

Netlogo:在行为空间中跨运行保留数据以节省加载时间,netlogo,behaviorspace,Netlogo,Behaviorspace,我的模型在设置时需要导入一定数量的补丁相关信息(通过导入世界),大约需要10秒钟。 当使用行为空间时,这些秒数加起来非常快,大大增加了运行实验所需的时间 我需要缩短这段时间,以便在启动行为空间时,只在第一次运行时运行import world命令,而在其他所有时间都可以避免 如果有可能的话,我可以这样安排我的代码,每次启动行为空间时只需要10秒钟 但是,据我所知,行为空间只要求您在每次运行开始时运行setup命令 我可能能够想出一些方法来实现我想要的,但我只想到一些看起来容易出错或编码风格不好的事

我的模型在设置时需要导入一定数量的补丁相关信息(通过
导入世界
),大约需要10秒钟。 当使用行为空间时,这些秒数加起来非常快,大大增加了运行实验所需的时间

我需要缩短这段时间,以便在启动行为空间时,只在第一次运行时运行
import world
命令,而在其他所有时间都可以避免

如果有可能的话,我可以这样安排我的代码,每次启动行为空间时只需要10秒钟

但是,据我所知,行为空间只要求您在每次运行开始时运行
setup
命令

我可能能够想出一些方法来实现我想要的,但我只想到一些看起来容易出错或编码风格不好的事情(例如,在设置时不使用
清除所有
,而是“手动”清除),在我的代码末尾,一个接一个地列出我想要清除的内容,这将允许我清除导入的修补程序数据,然后在设置时使用
if
检查该数据是否已经存在,如果存在则不导入)。 但是,我想知道是否有更好的方法来实现我的目标。

您的“糟糕的编码风格”想法是正确的。在这种情况下,没有其他方法可以在清除其余模型数据的同时保持补丁数据的完整性。对于它在文档中的作用非常清楚,因此您只需将其替换为除
清除修补程序之外的所有组件命令即可:

结合了清除全局、清除刻度、清除海龟、清除斑块、清除绘图、清除所有绘图和清除输出的效果

然后,您需要清除任何不是要保存的“特殊”数据的修补程序数据<代码>询问修补程序[set pcolor 0]
,例如,如果在模型运行中更改了
pcolor

您确实需要检查
设置中的一些条件,以查看是否需要加载修补程序数据。不仅是第一次运行,而且因为在BehaviorSpace中运行的每个线程都有自己的“世界”,所以每个线程都需要运行数据导入命令。从:

第六,每一次并行运行都将有自己的世界供模型运行。如果一个并行运行被重新用于另一个重复,那么这个世界不会被BehaviorSpace自动清除,这是非常频繁的。这意味着,例如,如果您在一次运行中执行了
ask patches[set pcolor red]
,并且在下一次运行的设置命令中未使用
clear all
clear patches
,则补丁仍将是红色的。通常,在每次运行之前使用
清除所有
是一种最佳做法,但是有时您可能不想这样做,例如从一个文件加载数据,而该文件不会将运行更改为运行。只要小心未清除的数据。

我希望这有帮助