我有N组乌龟,它们拥有变量group-id
(1到N,在设置时定义了N,每组有25只乌龟)。
开始时,每组海龟都在一个随机变量上产卵,变量patch-group-id
与海龟group-id
相匹配,如下所示:
let i 0
while [ i < n_groups ] [
let x random 100
let y random 100
ask patch x y [ set patch-group-id i set pcolor gray ]
create-turtles 25 [
set group-id i
setxy x y
]
set i i + 1
]
海龟四处走动,但在此过程的后续步骤中,我希望它们回到其“家”位置。其他海龟也可能会更改其组ID,因此也会更改其主补丁,我也希望它们也移到那里。
有什么办法可以按照...进行比较吗?
Ask turtles [
Let target one-of patches with [patch-group-id = group-id]
]
然后要求乌龟移动到目标或跳到目标?
NetLogo不喜欢这样(‘Min-one-of expected this input to be a number block, but got a true/false block instead’
),我认为可能还有其他问题。
答案 0 :(得分:0)
patch-group-id是补丁拥有的变量,而group-id是乌龟拥有的变量。因此,您需要告诉NetLogo补丁程序试图匹配哪个组ID。试试这个:
ask turtles
[ let target one-of patches with [patch-group-id = [group-id] of myself]
]
另一种方法是放弃group-id的想法,只让每个乌龟记住其本地补丁。从概念上讲,这实现了一个想法,即组完全由其本地补丁定义。因此您的设置应类似于:
turtles-own
[ my-home
]
to setup
clear-all
ask n-of n-groups patches
[ sprout turtles 25
[ set my-home patch-here
]
set pcolor gray
]
end
然后,您无需构建目标,只需进入这些变量的my-home。
如果您走了这条路,那么您还需要更改使用group-id的代码。例如,您说有时候乌龟会更改其组ID,而不是set group-id [group-id] of ...