2016-08-12 92 views
2

我目前正在设置一个多级模型,并且希望能够使用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的工作方式?

回答

1
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

很抱歉的混乱!

+0

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

1

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

to-report report-variable 
    report variable 
end 

然后,我可以打电话从父模型此功能:

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

不当然,如果这是最有效的方式,但它似乎有效。