Netlogo 上下文未对齐

Netlogo context misaligned

我从昨天开始换档,现在对我 posted 的配对问题有了一个可行的解决方案。然而,现在我被最简单的问题打败了。我不断收到各种错误。 1)Maketerrain 是 运行 安装的第一个模块。它错误地说我不能在观察者上下文中使用 maketerrain,因为它仅 patch/turtle。我从来没有遇到过模块给出这样的错误,我经常使用模块化代码编写。所以这让我很困惑。 2)无论我把 "tick"(go 结束,go 开始,go 中间,在其他一些过程中)进一步破坏代码,并出现同样的错误--"tick is observer and thus will not run because this is X context." 我已经检查了括号和括号十几次——休息一下,然后重新开始,看看我是否遗漏了什么。那里没有我能找到的错误。我正在使用 Netlogo 6.1.1。我现在一头雾水。

此时 post 另一组冗长的代码,我想自己再尝试一下。所以我问,任何人都可以提供一两个我可以用来尝试调试它的原则吗?比如,什么建立了上下文?我该怎么做才能使上下文成为我想要的,而不是之前命令得到的 "implied"?我怎样才能使用一个模块,在这个模块中,补丁和海龟会做一些事情来设置自己,并且在设置时仍然有它 运行? (注意——把东西移到界面上并没有解决问题。)什么设置了 "go" 过程上下文,它应该是什么到 运行,以及有人可以做些什么来让它成为它所需要的成为?我该怎么做才能正确放置 tick(我以前从未遇到过问题的命令)?

我已经搜索了 Whosebug、netlogo 手册页和编程指南,以及我拥有的书籍,但仍然无法调试似乎非常非常简单的问题。

看看 Maketerrain 程序的前几行。 NetLogo 从所使用的原语中解释上下文。如果第一行是这样的:

set color red

然后NetLogo 'knows' 这是一个被海龟运行的程序(也就是海龟上下文) 因为只有海龟才能set color 因为color是海龟变量。但是,如果它开始:

ask turtles
[ set color red

然后它是观察者上下文,因为外部'observer'指示海龟做事情(大致)。

上下文实际上是 NetLogo 编程中一个非常重要的概念 - 当您执行以下操作时,您会不断改变上下文:

to demo
  ask patches
  [ ask one-of turtles-here 
    [ set color red
    ]
  ]
end

它从观察者上下文开始,然后遍历补丁做某事。从某种意义上说,它像补丁一样思考(并且处于补丁环境中)。然后你用 [ 打开下一个代码块并切换到海龟上下文,这样 'I' (当前补丁上随机选择的海龟)可以改变颜色。然后每个 ] 结束一个代码块退出上下文层。