如何链接代理的动作



我正在尝试用3组代理- A,B,C来编程模拟。关键在于,集合A中的代理可以选择执行或不执行该操作。如果他们决定不做这个动作,模拟就会停止。当它们决定采取行动时,模拟继续进行下一步,B组中的智能体也可以决定是否采取行动。这里也是一样。集合C中的智能体,也可以决定做或不做,但在这里,两种情况下的模拟都停止了。下面是我的代码:

ask turttles [
if breed = set A [ ifeslse do?= false [ set lazy]
                                        stop]
[ if breed = set B [ ifelse do1?= false [ set lazy]
                                         stop]
[ask other turtles [ if breed = set C [ ifelse do 2? = false [ set lazy
                                                               stop] ] 
                                       [set done
                                        stop] ]
                                        ]
                                      ]
                                    ]

代码不能很好地工作,我需要一些东西来链接这三个步骤,因为当我导出世界时,我只从第一步

获得数据

如果您在ask中执行stop,则不会导致整个模拟停止。它只会阻止当前海龟执行ask的剩余部分。

我想你应该更喜欢这样:

globals [done?]
to setup
  ...
  set done? false
  ...
end
to go
  if done? [ stop ]
  ifelse ...
    [ ask A [ do-action ] ]
    [ set done? true ]
  ifelse ...
    [ ask B [ do-action ] ]
    [ set done? true ]
  ifelse ...
    [ ask C [ do-action ] ]
    [ set done? true ]
  ...
end

但我有点猜测,因为很难从你的描述中看出你的实际意图是什么。(特别是因为你没有包括你的实际代码-代码在你的问题不会通过编译器。)

最新更新