Netlogo 两只海龟在奔跑';类似';同时编码

Netlogo 两只海龟在奔跑';类似';同时编码,netlogo,Netlogo,我的代码出现了一个奇怪的问题 在我的模型中,我有女性(设置女性为真)和男性(设置男性为真) 在特定触发时,每个将“成为”分散器(将分散器设置为真) 分散剂和非分散剂具有非常不同的行为 我曾尝试用代表这两个阶级的不同品种来解决这个问题,但这也不起作用 问题是,其中一只海龟(例如雄海龟)会相应地操作,并在遇到另一只海龟时将分散器设置为“false”。但是,另一个将不会,并将继续将分散器设置为“true” 我确信这是因为一旦其中一只海龟操作了代码,它就不再是“分散者”,因此不再适用于后来海龟的搜索条件

我的代码出现了一个奇怪的问题

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

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

分散剂和非分散剂具有非常不同的行为

我曾尝试用代表这两个阶级的不同品种来解决这个问题,但这也不起作用

问题是,其中一只海龟(例如雄海龟)会相应地操作,并在遇到另一只海龟时将分散器设置为“false”。但是,另一个将不会,并将继续将分散器设置为“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

我不完全相信我知道你们想要做什么,但我想你们是在要求将这两只海龟的分散器设置为false。在这种情况下,您希望代码看起来像这样(未经测试):


<>你也应该考虑从“找到合作伙伴”代码中分离“寻找合作伙伴”代码。另外,最好让他们检查一下是否有合作伙伴,然后通过将标题设置为“最近”并向前移动来搜索合作伙伴。目前,它们环顾四周,但哪儿也不去。

我不完全相信我知道您想要做什么,但我认为您要求将这两只海龟的disperser设置为false。在这种情况下,您希望代码看起来像这样(未经测试):

<>你也应该考虑从“找到合作伙伴”代码中分离“寻找合作伙伴”代码。另外,最好让他们检查一下是否有合作伙伴,然后通过将标题设置为“最近”并向前移动来搜索合作伙伴。此刻,他们环顾四周,但哪儿也不去

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