在 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
抱歉造成混淆!
我目前正在设置多层次模型,希望使用 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
抱歉造成混淆!