在 NetLogo LevelSpace 中的模型之间传递信息

Passing information between models in NetLogo LevelSpace

我目前正在设置多层次模型,希望使用 NetLogo LevelSpace 扩展。我希望父模型从子模型请求全局变量的值,但语法有点困难。我可以找到代理商请求信息的示例,例如

let turtle-id 0
(ls:report model-id [ [ color ] of turtle ? ] turtle-id)

但这似乎不适用于全局变量,例如,我想做类似的事情:

ls:report model-id [child-global-variable]

这可能吗,还是我完全不知道 LevelSpace 的工作方式?

我找到了一个解决方案:在报告变量的子模型中创建一个函数:

to-report report-variable
  report variable
end

然后,我可以从父模型调用这个函数:

show "report-variable" ls:of ls:models

不确定这是否是最有效的方法,但它似乎有效。

ls:report model-id [child-global-variable]

实际上会工作得很好,虽然我更喜欢使用 ls:of,只是因为它匹配 of:

[child-global-variable] ls:of model-id

也就是说,我们现在讨论的所有代码都需要即将推出的 LevelSpace 版本(它将 运行 在即将推出的 NetLogo 6.0 版本上)。

您可以在这里下载运行带有NetLogo 5.3.1的版本:https://github.com/NetLogo/LevelSpace/releases/tag/0.1

该版本要求代码以字符串形式在模型之间传递。所以你必须做:

"child-global-variable" ls:of model-id

您可以在此处找到该版本的文档:https://github.com/NetLogo/LevelSpace/blob/c3f78f45217e34cd31b18a246e4749e74209f29f/README.md

抱歉造成混淆!