将 NetLogo GUI 模型转换为在群集上运行无头模式所需的所有步骤是什么?



除了避免在无头模式下清除所有之外,我们是否需要将"所有"开关和滑块转换为全局变量? 在没有GUI的集群上运行大型NetLogo模型还需要做什么?

我已经按照这个 https://www.openmole.org/Netlogo+Headless.html 指南转换我的模型,但我不知道如果我们删除无头设置中的 init-globals,我们如何设置值?由于没有按照确切的步骤初始化显式全局变量,我得到了div/0 错误,之后,我将显式全局变量添加到具有 2 个值的行为空间中,但我得到了两个实验完全相同的结果,这是不正确的。

当模型具有大量滑块和开关时,行为空间对于轻松创建实验非常有用,因为它预先填充了新的实验参数,我们只需要为每个参数添加所需的值(真假或数值(。但是,当所有开关都转换为显式全局变量时,我们如何使用行为空间?它的工作方式是否与隐式 GUI 小部件相同?我们可以在行为空间中有明确的全局变量吗,我已经为此测试了我的模型,并且所有实验运行都得到了完全相同的结果,我应该寻找什么来解决问题?

正如我在评论中所说,这些方向专门针对OpenMOLE的,实际上与你想要的只是运行无头BehaviorSpace相反。

对于无头模型,您实际上应该将所有这些开关和滑块保留为开关和滑块。输入小部件只是创建未被clear-all清除的全局:它们在无头模式下运行良好。当然,它们不能使用,但它们仍然提供了一种设置setup中未清除的内容的方法,这正是您想要的。NetLogo被设计为无缝运行普通的GUI模型作为无头的行为空间实验。事实上,即使您在 GUI 中运行 BehaviorSpace,它也会在后台运行模型的无头版本以利用多核处理器。

因此,在无头模型中转动 GUI 模型的方法是不改变任何东西!您希望在试验中改变的所有参数都应作为输入小组件实现。setup绝对应该打电话给clear-all.这是保证实验清洁且多次运行不会相互渗漏的最简单方法。

也就是说,请确保您正在设计模型设置等,以便通过设置输入小部件(滑块、开关等(和运行setup完全设置模型。它不需要与用户进行任何进一步的交互(例如,使用鼠标移动内容(。

此建议有一些例外。如果您的模型需要加载大文件,或者具有特别昂贵的setup,实际上不需要在模拟之间重新运行,则必须进行调整。但是,这些都是特殊情况,如果您正在处理它们,则应在单独的答案中解决。

最新更新