Netlogo:根据条件从一组列表中更改乌龟颜色

Netlogo: change turtle color from set of list with condition

我有这组代码。 代理是 "consumers",它有变量 "type-of-value"。我正在尝试将 white turtle 更改为 "type-of-value" 列表中的一种颜色。但我不断收到 "expected a constant" 错误消息。

to develop-needs
  if ticks mod 5 = 0 [
    ask consumers [set type-of-value  (list blue red green)] 
    let a count consumers with [color = white]
    if any? consumers with [color = white]
      [ set color one-of type-of-value ]
        ask turtles with [ color = one-of type-of-value ]
      ]]
end

如有任何帮助,我们将不胜感激。

谢谢

你还没有告诉它有多少 select。也就是说,ask n-of a 需要说(例如)ask n-of 5 a 如果你想 select 来自名为 a.

的代理集中的 5 个消费者

对了,你的代码也有逻辑错误:

[ set color one-of type-of-value ]
  ask turtles with [ color = one-of type-of-value ]

如果值的类型是 3 项的列表(例如代码中的 [blue green red]),那么第一行中的 set color one-of 将选择其中一种颜色,但第二行one-of ... 将做新的随机 select 离子。我不确定你想要实现什么,所以我无法提供代码,但你可能想要 select 一种颜色并将其分配给一个变量然后与该变量进行比较而不是进一步 select离子。

这段代码终于可以用了。 感谢 JenB,我发现了我的错误。

to develop-needs
  if ticks mod 5 = 0 [
    ask consumers [set type-of-value  (list blue red green)] 
    let a count consumers with [color = white]
    if any? consumers with [color = white]
      [ ask n-of (random a ) consumers with [color = white]
        [set color one-of type-of-value
         set value? true]
         ]]
end