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

을하지 않음 이것이 가장 효율적인 방법 일지 모르지만 작동하는 것 같습니다.