除了在无头模式下避免全部清除外,我们是否需要将“全部”开关和滑块转换为全局变量?还有什么办法可以在没有GUI的集群上运行大型NetLogo模型?
我已按照此https://www.openmole.org/Netlogo+Headless.html指南转换我的模型,但如果我们在无头设置中删除init-globals,我不知道如何设置值?我得到div / 0错误是因为没有通过遵循确切的步骤来初始化显式全局变量,之后,我将显式全局变量添加到具有2个值的行为空间但是我得到了两个实验的完全相同的结果正确。
当模型具有大量滑块和开关时,行为空间对于轻松创建实验非常有用,因为它预先填充了新的实验参数,我们只需要为每个参数添加所需的值(true-false或数值)。但是,当所有开关都转换为显式全局变量时,我们如何使用行为空间?它的工作方式与隐式GUI小部件相同吗?我们可以在行为空间中有明确的全局变量,我已经测试了我的模型,并且我得到了所有实验运行的完全相同的结果,我应该寻找什么来解决这个问题?
答案 0 :(得分:3)
正如我在评论中所说,这些指示专门用于OpenMOLE,并且实际上与你想要运行无头行为空间的目的相反。
对于无头型号,您应该将所有这些开关和滑块留作开关和滑块。输入小部件只是创建不被clear-all
清除的全局变量:它们在无头模式下运行良好。当然,它们无法使用,但它们仍然提供了一种设置在setup
中无法清除的东西的方法,这正是您想要的。 NetLogo旨在无缝地运行常规GUI模型,作为无头行为空间实验。实际上,即使您在GUI中运行BehaviorSpace,它也会在后台运行模型的无头版本以利用多核处理器。
因此,在无头模型中转换GUI模型的方法是不改变事物! 您希望在实验中改变的所有参数应实现为输入小部件。 setup
绝对应该致电clear-all
。这是保证干净实验的最简单方法,并且多次运行不会相互渗透。
也就是说,确保您正在设计模型设置等等,以便完全通过设置输入窗口小部件(滑块,开关等)和运行setup
来设置模型。它不应该要求与用户进行任何进一步的交互(例如,使用鼠标移动东西)。
此建议有一些例外。如果您的模型需要加载大文件,或者具有特别昂贵的setup
并且实际上不需要在模拟之间重新运行,则必须调整内容。但是,这些都是特殊情况,如果您正在处理它们,应该在单独的答案中解决。