我正在使用NetLogo创建模拟模型,蜜蜂对花朵进行授粉并对其授粉。我需要了解遗传多样性。因此,要知道花粉来自的可能斑块,我正在记录海龟访问的每朵花的位置。该数据被保存为乌龟变量,然后我希望当乌龟对花进行授粉时(在存储足够的花粉后访问补丁),它将该列表提供给补丁。尽管它不允许我访问,但所访问的花朵列表是一个乌龟变量。有什么办法解决吗?
patches-own [
scent
fertilisation_list
]
turtles-own [
pollen
energy
xy_list
]
to pollenate
ask turtles [
if (pollen > pollen-required-to-fertalise) and ((pcolor = yellow) or (pcolor = blue))
[
set pcolor white
set pollen pollen - pollen-required-to-fertalise
ask patches [
set fertilisation_list xy_list
]
]
]
end
to record-patch
ask turtles [
if ((pcolor = yellow) or (pcolor = white) or (pcolor = blue)) [
set xy_list fput patch-here xy_list
]
]
end
to setup-patches
ask patches[
if random 100 < number-of-flowers [ set pcolor yellow]
]
ask patches [
if ( pcolor = yellow )
[ set scent 50
]
]
ask patches [
set fertilisation_list (list 0 0)
]
end
to setup-bees
create-turtles number-of-bees
ask turtles [ setxy 0 0 ]
ask turtles [ set color red]
ask turtles [
set xy_list (list 0 0)
]
end
以上代码是存储所谈论列表时的大多数相关信息。
我收到错误'您不能在补丁程序上下文中使用xy_list,因为xy_list仅适用于乌龟'
有没有解决的办法?
有一种方法,用of
。
ask patches [
set fertilisation_list [xy_list] of myself
]
由于xy_list属于乌龟,但是ask
将您置于补丁程序上下文中,因此您需要告诉补丁程序要复制其xy_list。 myself
指询问的代理商,在这种情况下为乌龟。但是,您真的要询问所有补丁,还是只询问蜜蜂所坐的单个补丁?如果是后者,则应询问patch-here
。
希望这会有所帮助,查尔斯