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

what are all the required steps to convert a NetLogo GUI model to run headless mode on a cluster?

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

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

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

正如我在评论中所说,这些说明专门针对 OpenMOLE,实际上与您想为 运行ning headless BehaviorSpace 所做的相反。

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

因此,在无头模型中转换GUI模型的方法是不改变任何东西! 所有 你想在实验中改变的参数应该作为输入小部件来实现。 setup绝对应该叫clear-all。这是保证实验干净且多个 运行 不会相互渗透的最简单方法。

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

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