2016-08-12 53 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 

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