如何在此处制作 list/array 海龟补丁?
How to make a list/array of turtles-on patch-here?
我没有netlogo的经验,所以我想问一下是否有人知道如何在patch-here上设置乌龟的最大能量。如果我在补丁上有一个代理 y 和 3、2 或 4 个 x's,我想让代理 y 保持这 3 个中最大的能量,我知道我必须做一个循环但我不知道有多少循环x 型特工在这个补丁中?
breed [ y ys]
breed [ x ys]
x-own[ energy]
y-own [ energy ]
to move-y
ask y[
if count x-on patch-here > 2
[
set breed x
;anyone can help ?
let energy one-of x-on patch-here ; this is wrong because i dont want a random
]
]
end
希望你能帮助我=)
首先,您可能不应该考虑循环。 NetLogo 有许多在代理集(如 ask
和 of
)和列表(如 foreach
和 map
)上运行的原语,但你几乎不必编写显式循环使用您递增的索引。
关于您的代码的另一评论:您在声明品种时颠倒了复数和单数名称。复数必须在前,所以应该是 breed [ xs x ]
而不是 breed [ x xs ]
.
现在,关于您的具体问题:您不需要 patch-here
,因为 NetLogo 还提供了一个 <breeds>-here
原语,可以更直接地满足您的需求。
至于获取路径上所有xs
的最大能量,你可以简单地使用max
原语:
breed [ xs x ]
breed [ ys y ]
xs-own [ energy]
ys-own [ energy ]
to move-y
ask ys [
if count xs-here > 2 [
set energy max [ energy ] of xs-here
set breed xs
]
]
end
请注意,结果可能会有所不同,具体取决于您是在设置 energy
之前还是之后将当前 y
的品种更改为 xs
。我会让你试着找出原因。
我没有netlogo的经验,所以我想问一下是否有人知道如何在patch-here上设置乌龟的最大能量。如果我在补丁上有一个代理 y 和 3、2 或 4 个 x's,我想让代理 y 保持这 3 个中最大的能量,我知道我必须做一个循环但我不知道有多少循环x 型特工在这个补丁中?
breed [ y ys]
breed [ x ys]
x-own[ energy]
y-own [ energy ]
to move-y
ask y[
if count x-on patch-here > 2
[
set breed x
;anyone can help ?
let energy one-of x-on patch-here ; this is wrong because i dont want a random
]
]
end
希望你能帮助我=)
首先,您可能不应该考虑循环。 NetLogo 有许多在代理集(如 ask
和 of
)和列表(如 foreach
和 map
)上运行的原语,但你几乎不必编写显式循环使用您递增的索引。
关于您的代码的另一评论:您在声明品种时颠倒了复数和单数名称。复数必须在前,所以应该是 breed [ xs x ]
而不是 breed [ x xs ]
.
现在,关于您的具体问题:您不需要 patch-here
,因为 NetLogo 还提供了一个 <breeds>-here
原语,可以更直接地满足您的需求。
至于获取路径上所有xs
的最大能量,你可以简单地使用max
原语:
breed [ xs x ]
breed [ ys y ]
xs-own [ energy]
ys-own [ energy ]
to move-y
ask ys [
if count xs-here > 2 [
set energy max [ energy ] of xs-here
set breed xs
]
]
end
请注意,结果可能会有所不同,具体取决于您是在设置 energy
之前还是之后将当前 y
的品种更改为 xs
。我会让你试着找出原因。