Netlogo:在这种情况下,如何比较ID和标志?

Netlogo:在这种情况下,如何比较ID和标志?,netlogo,flags,Netlogo,Flags,我想为id最小的海龟挂上一个名为“min id”的旗子。我想把其他海龟挂上“not min id”的旗子。但是,以下示例语法有错误。错误消息如下所示 “0运行时出错> 通过程序GO调用 按“开始”按钮调用 我可能需要你的建议。多谢各位 globals [ min-id not-min-id count-up ID ] to go reset-ticks ask patch 0 0 [ sprout 1 ;;This model needs to use sprout.

我想为id最小的海龟挂上一个名为“min id”的旗子。我想把其他海龟挂上“not min id”的旗子。但是,以下示例语法有错误。错误消息如下所示

“0运行时出错> 通过程序GO调用 按“开始”按钮调用

我可能需要你的建议。多谢各位

globals [ min-id not-min-id count-up ID ]

to go
  reset-ticks

  ask patch 0 0 
  [
    sprout 1 ;;This model needs to use sprout.
  ]

  ask (turtles-on patch 0 0)
  [
    set ID who
    setxy min-pxcor 0
    set heading 90
  ]

  if (count turtles > 0)
    [
      ask min-one-of turtles [who]
      [
        set min-id TRUE
      ]
  ]

  if (count turtles > 0)
    [
      ask (turtles-on patch 0 0)
      [
        if ID > min-one-of turtles [who] ;;This syntax has errors.
        [
          set not-min-id TRUE
        ]
      ]
  ]  

  ask (turtles-on patch 0 0) with [not-min-id]
  [
    set count-up count-up + 1
  ]

  if (count turtles > 0) [
    ask (turtles-on patch 0 0) with [min-id]
    [
      die
    ]

    tick
end

你的代码有些混乱。根据你的描述,我相信你希望每只海龟都有一面旗子,表明它是否有最小的who数量。这意味着每只海龟都需要一面旗帜。但是,您已经将min id设置为全局变量,而不是turtle变量。此外,您只需要flag变量一次(即,您需要minid,但不需要minid),然后将其设置为TRUE或FALSE

替换

globals [ min-id not-min-id count-up ID ]

看看这能不能解决问题。还将min id初始化为FALSE,作为
sprout
的一部分


说到这里,我非常同意Alan的观点,如果您在调试中使用
who
变量来处理除打印语句以外的任何事情,那么您可能需要重新考虑代码。在你的例子中,拥有最低
编号的海龟有什么特别之处,让你想跟踪它?你只是想要一只偶然出现在某个特定地点的海龟吗?然后在该位置随机选择一只海龟,在不经过
who

ID
的情况下进行真/假判断,如果
min,海龟[who]
中的一只是海龟。更一般地说,当你发现自己与
who
合作时,你通常应该进行重构。这有助于设置标志和变量。非常感谢你。
globals [ count-up ID ]
turtles-own [ min-id ]