将数据从死海龟保存到CSV NetLogo

问题描述 投票:1回答:1

我正在使用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仅适用于乌龟'

有没有解决的办法?

list netlogo data-transfer storing-data
1个回答
1
投票

有一种方法,用of

ask patches [ 
        set fertilisation_list [xy_list] of myself
]

由于xy_list属于乌龟,但是ask将您置于补丁程序上下文中,因此您需要告诉补丁程序要复制其xy_list。 myself指询问的代理商,在这种情况下为乌龟。但是,您真的要询问所有补丁,还是只询问蜜蜂所坐的单个补丁?如果是后者,则应询问patch-here

希望这会有所帮助,查尔斯

© www.soinside.com 2019 - 2024. All rights reserved.