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

在NetLogo LevelSpace中的模型之间传递信息,netlogo,Netlogo,我目前正在设置一个多级模型,并希望使用NetLogo LevelSpace扩展。我希望父模型从子模型请求全局变量的值,但在语法方面有点困难。我可以找到代理请求信息的示例,例如 let turtle-id 0 (ls:report model-id [ [ color ] of turtle ? ] turtle-id) 但这似乎对全局变量不起作用,例如,我想做以下事情: ls:report model-id [child-global-variable] 这是可能的,还是我完全忽略了Leve

我目前正在设置一个多级模型,并希望使用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运行的版本:

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

"child-global-variable" ls:of model-id
您可以在此处找到该版本的文档:


抱歉搞混了

啊!!这就解释了为什么其他一些命令(例如ls:with)不起作用——我一直在阅读关于更高版本扩展的文档。这真的很有帮助-谢谢你!