1

我有一个agentset所有海龟的年龄/经验值不同的地方。我想做的是为每只海龟找到更有经验的海龟,然后跟随这些海龟。不幸的是,我收到以下错误ifelse [ age-experience > my-own-age-experience ]

此处应为 TRUE/FALSE,而不是列表或块。

这是我的代码:

turtles-own [
  age-experience
  more-dominant
  dominant-flockmates  
]

to setup
  clear-all
  create-turtles 10 [ set age-experience random-float 1 ]
  reset-ticks
end

to go
  ask turtles [
    find-dominant-flockmates
    ifelse any? dominant-flockmates
      [ show "follow the more dominant flockmates" ]
      [ show "take the lead" ]
  ]
  tick
end

to find-dominant-flockmates
  let my-own-age-experience age-experience
  ask other turtles [
    ifelse [ age-experience > my-own-age-experience ]
      [ set more-dominant true ]
      [ set more-dominant false ]
  ]
  set dominant-flockmates other turtles with [ more-dominant ]
end
4

1 回答 1

2

好的,你在这里有几个选择。您可以通过删除[]

to find-dominant-flockmates
  let my-own-age-experience age-experience
  ask other turtles [
    ifelse age-experience > my-own-age-experience
      [ set more-dominant true ]
      [ set more-dominant false ]
  ]
  set dominant-flockmates other turtles with [ more-dominant ]
end

但是有更有效的方法来编码。如果您要将变量more-dominant用于其他目的(所以您需要它),您可以ifelse-value像这样使用(因为它是真/假,您实际上并不需要 ifelse-value 但这是一件好事):

to find-dominant-flockmates
  let my-own-age-experience age-experience
  ask other turtles
  [ set more-dominant ifelse-value (age-experience > my-own-age-experience)
      [ true ]
      [ false ]
  ]
  set dominant-flockmates other turtles with [ more-dominant ]
end

但是如果拥有变量的唯一原因是创建代理集,您可以直接完成整个事情:

to find-dominant-flockmates
  let my-own-age-experience age-experience
  set dominant-flockmates other turtles with [ age-experience > my-own-age-experience ]
end
于 2015-12-22T11:21:07.100 回答