两只乌龟同时运行“相似”代码

时间:2016-02-05 14:39:31

标签: netlogo

我的代码一直存在这个奇怪的问题。

在我的模型中,我有女性(设置女性真实)和男性(设置男性真实)。

在特定触发时,每个都将“成为”分散器(设置分散器为真)。

分散剂和非分散剂的行为非常不同。

我尝试用代表这两个类的不同品种解决这个问题,但这也没有用。

问题是其中一只乌龟,例如男性,会相应地操作并在遇到对方龟时将驱散器设置为“假”。然而另一个不会,并将继续使用分散器设置'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

1 个答案:

答案 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 ]
  ]
]

您可能还应考虑将搜索合作伙伴'来自'找到合作伙伴的代码'码。此外,您可能最好让他们检查他们是否有合作伙伴,然后通过将标题设置为最接近并向前移动来搜索合作伙伴。目前他们环顾四周但不去任何地方。