修改以将上下文从补丁修复为观察者netlogo

时间:2018-11-14 00:15:49

标签: netlogo

将代码从补丁转换为观察者上下文的一般规则是什么? 例如,如果我有这样的代码,我应该如何修改它以将按钮从补丁转换为观察者上下文? if numRed <= numYellow [set pcolor red] if numYellow < numRed [set pcolor yellow] if numGreen < numBlue [set pcolor green]

1 个答案:

答案 0 :(得分:2)

没有一般规则。但是,更改上下文的最常见方法是使用原始ask。看这段代码:

to testme
  ask n-of 10 patches
  [ set pcolor red
  ]
end

该过程在观察者上下文中。也就是说,它是从局外人看模型的角度编写的。然后ask随机选择10个色块。代码切换了透视图(在方括号中),并假装它是那些随机选择的补丁中的第一个。该补丁将其颜色(pcolor)设置为红色。然后,透视图切换到第二个随机选择的面片。它还考虑改变颜色。代码在这10个补丁中运行时,它处于补丁上下文中。右方括号结束了代码块,同时结束了补丁上下文并跳回到了观察者上下文。

如果您的代码在修补程序上下文(或链接上下文或乌龟上下文)中,则必须告诉它要将代码应用到哪些补丁程序(或链接或乌龟)。默认为全部。试试这个:

  • 打开一个新的NetLogo模型
  • 创建一个按钮:在该按钮的对话框中,使用顶部的下拉框使其修补上下文。在代码框中,键入set pcolor red

按下按钮,所有色块将变成红色。

我认为NetLogo的初学者应该从观察者上下文编写每个过程。这意味着所有有关补丁和乌龟的命令都包含在清晰的ask <agentset> [ <do something > ]结构中。您可以更轻松地跟踪自己在做什么以及哪些模型实体在做什么。