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