为什么Agentset按钮的行为与询问代理集的观察者按钮的行为不同?

Rob*_*der 5 netlogo

我看到一个agentset按钮(贴剂,乌龟,链路)之间的差行为它运行的代码的某一部分和一个观察者按钮,askš patches(或turtles,或links运行的代码相同的部分).这是NetLogo中的错误吗?这是我的代码中的错误吗?

Rob*_*der 5

行为差异的原因实际上并不是一个bug,而是NetLogo的一个相当模糊的角落.在ask-concurrent原始的谎言在这种行为的核心.agentset按钮使用与ask-concurrent幕后相同的机制.使用ask-concurrent用于在同一代理程序集上运行相同代码的观察器按钮替换任何代理程序集按钮不应更改按钮的行为.

通常情况之间的差异ask,并ask-concurrent没有什么了不起的.海龟可能会略有不同,但它的工作方式基本相同.但在某些情况下,差异可能非常大.NetLogo模型库提供了一个名为"Ask-Concurrent Example"的模型,该模型探讨了ask和之间的差异ask-concurrent.

在NetLogo编程指南中,还有http://ccl.northwestern.edu/netlogo/docs/programming.html#buttons的"Turtle,patch和link forever按钮"部分中的文档.http://ccl.northwestern.edu/netlogo/docs/programming.html#ask-concurrent上关于ask-concurrent的部分内容也适用.

注意:ask-concurrent不建议使用.我用在这里澄清的行为,但应该不是一般的使用.

注意2:一般来说,最安全和最可预测的方法是根本不使用乌龟,补丁和链接按钮.取而代之的是,使用观察者按钮只,和使用ask turtles,ask patches或者ask links在按钮的代码,根据.