NetLOGO:在行为空间中跨运行保存数据,以节省加载时间 [英] Netlogo: keep data across runs in behavior space to save loading time

查看:0
本文介绍了NetLOGO:在行为空间中跨运行保存数据,以节省加载时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

我需要缩短这段时间,因此我想设置一种方式,在启动行为空间时,import-world命令仅在第一次运行时运行,而其他所有时间都可以避免。

如果可以这样做,我可以这样安排我的代码,每次启动行为空间时只需要这10秒一次。

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

我也许能够想出一些方法来实现我想要的,但我只想到了一些看起来有点容易出错或编码风格不好的东西(例如,在安装时不使用,而是在代码结束时手动清除),逐个清除我想要清除的东西,这将允许我清除导入的补丁数据,然后在安装时使用if检查该数据是否已经存在,如果它存在,则不导入它)。 不过,我想听听有没有更好的方法来实现我的目标。

推荐答案

您的错误编码风格&想法是正确的在这种情况下,没有其他方法可以在清除其余模型数据的同时保持面片数据不变。clear-all primitive非常清楚它在文档中的作用,因此您只需将其替换为除clear-patches

之外的所有组件命令

结合了清除全局、清除勾号、清除海龟、清除补丁、清除绘制、清除所有绘图和清除输出的效果。

然后,您需要清除所有不是要保存的特殊数据的修补程序数据。ask patches [ set pcolor 0 ],例如在模型运行中更改了pcolor

您确实需要检查setup上的一些条件,以查看是否需要加载补丁数据。不仅是第一次运行,而且因为您在BehaviorSpace中运行的每个线程都拥有它自己的世界,所以每个线程都需要运行您的数据导入命令。来自sixth item in the BehaviorSpace gotchas

第六,每个并行运行都将有自己的世界供模型运行。如果并行运行被重新用于另一个重复,则BehaviorSpace不会自动清除这个世界,这种情况经常发生。这意味着,例如,如果您在一次运行中使用ask patches [ set pcolor red ],而在下一次运行的设置命令中不使用clear-allclear-patches,则补丁程序仍将全部为红色。通常,在每次运行之前使用clear-all是最佳实践,但有时您可能不想这样做,例如从不更改运行到运行的文件加载数据。请小心处理未清除的任何数据。

我希望这会有帮助。

这篇关于NetLOGO:在行为空间中跨运行保存数据,以节省加载时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆