我正在尝试使用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] ]
]
]
]
代码不能很好地工作,我需要将这三个步骤链接起来,因为当我导出世界时,我只从第一步获得数据
答案 0 :(得分:1)
如果你在stop
内进行ask
,则不会导致整个模拟停止。它只会阻止当前的乌龟执行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
但我有点猜测,因为从你的描述中很难说出你的实际意图是什么。 (特别是因为你还没有包含你的真实代码 - 你问题中的共同点不会超过编译器。)