我的代码一直存在这个奇怪的问题。
在我的模型中,我有女性(设置女性真实)和男性(设置男性真实)。
在特定触发时,每个都将“成为”分散器(设置分散器为真)。
分散剂和非分散剂的行为非常不同。
我尝试用代表这两个类的不同品种解决这个问题,但这也没有用。
问题是其中一只乌龟,例如男性,会相应地操作并在遇到对方龟时将驱散器设置为“假”。然而另一个不会,并将继续使用分散器设置'true'
我确定这是因为一旦其中一只乌龟操作代码,它就不再是“分散器”,因此不再适用于后来的乌龟的搜索标准,但是我尝试过的每一项工作都导致了同样的问题或者没有错误。
to search-for partner
if male = true [ set potential-mates other turtles with [female = true
and disperser = true]
if female = true [ set potential-mates other turtles with [male = true
and disperser = true]
let chosen-mate min-one-of potential-mates [distance myself]
if any? potential-mates [
set heading towards chosen-mate]
if male = true [ if any? other turtles-here with [female = true and
disperser = true] [set disperser false]
if female = true [ if any? other turtles-here with [male = true and
disperser = true] [set disperser false]
end
答案 0 :(得分:2)
我并不完全相信我知道你想做什么,但我认为你要求为两只海龟设置分散器为假。在这种情况下,您希望代码看起来像这样(未经测试):
if male
[ let my-partner one-of other turtles-here with [female and disperser ]
if my-partner != nobody
[ set disperser false
ask partner [ set disperser false ]
]
]
您可能还应考虑将搜索合作伙伴'来自'找到合作伙伴的代码'码。此外,您可能最好让他们检查他们是否有合作伙伴,然后通过将标题设置为最接近并向前移动来搜索合作伙伴。目前他们环顾四周但不去任何地方。