2015-12-22 67 views
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 

回答

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 

但是如果有变量的唯一原因就是创建agentset,你可以直接做这件事:

to find-dominant-flockmates 
    let my-own-age-experience age-experience 
    set dominant-flockmates other turtles with [ age-experience > my-own-age-experience ] 
end 
+0

我使用你的第三个版本,现在和它完美的作品, 感谢你及时的答复! – VeronicaLatLng