根据netlogo中的起源距离计算龟死亡率

时间:2017-05-25 04:35:21

标签: netlogo

我正在编写一个程序(Pass-Away-Space)来计算从原点(start-patch)到世界各地的海龟的死亡率。每只乌龟根据其与原点的距离(start-patch)计算出自己的死亡率。我试图为此过程实现的代码如下:

    to Pass-Away-Space
  ask turtles [
  let chances 1 - exp( -1 * mortality * [distance start-patch] of turtles)
    if chances >= 1 [die
      set dead-count dead-count + 1
    ]
  ]
end

我得到的错误是 预期输入为数字,但得到了列表 。我不知道问题是什么,我想知道是否有人可以指出并纠正代码中的问题。

1 个答案:

答案 0 :(得分:1)

这里的问题是你的of turtles。由于一个问题程序一次影响一只乌龟,上面程序中的每只乌龟都在评估所有海龟的[distance start-patch]而不是它自己到起始补丁的距离。为了澄清,请查看以下设置:

globals [ start-patch ]

to setup
  ca
  reset-ticks
  crt 10 [
    setxy random 30 - 15 random 30 - 15
  ]
  set start-patch patch 0 0
end

to incorrect-example
  ask turtles [
    print ([ distance start-patch ] of turtles)
  ]
end

to correct-example
  ask turtles [
    print distance start-patch
  ]
end

比较incorrect-examplecorrect-example程序的打印输出,您会看到当您使用[distance start-patch] of turtles时,您会获得所有海龟的距离列表。当您ask turtles评估turtles-own变量(包括颜色,大小等)时,每只乌龟将自动访问该变量的自己版本 - 无需指定哪个乌龟。因此,您的pass-away-space可能看起来更像下面(未经测试):

to Pass-Away-Space
  ask turtles [
    let chances 1 - exp( -1 * mortality * (distance start-patch) )
    if chances >= 1 [
      die
    set dead-count dead-count + 1
    ]
  ]
end