【发布时间】:2017-05-23 23:34:49
【问题描述】:
我正在计算 netlogo 中的累积海龟死亡率,它是海龟(其中 100 只)从 netlogo 界面世界中的原点 (start-patch) 移动的距离的函数。在下面的代码中,“Pass-Away”程序链接到一个名为“space-death”的全局接口开关,该开关打开时会产生由名为“Pass-Away-Space”的程序承担的基于距离的死亡率,否则会保持定期的 per-由名为“Pass-Away-Time”的程序承担的时间步长 (tick) 死亡率:
to Pass-Away-Time
ask turtles [
let chances 1 - exp( -1 * mortality * ticks )
if chances >= 1 [die
set dead-count dead-count + 1
]
]
end
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
to Pass-Away
ask turtles [
ifelse space-death [
Pass-Away-Space][
Pass-Away-Time
]
]
end
执行此操作时出现两个错误,都可能是由于“Pass-Away-Space”过程的编码问题。第一个是只有观察者可以询问所有海龟的集合。然后当我将let chances 1 - exp( -1 * mortality * [distance start-patch] of turtles) 移到ask turtles[] 括号之外时,这个错误得到解决,只产生另一个说**预期输入到是一个数字,但得到 list* 后跟一系列数字。可能是因为死亡率方程中读取* [distance start-patch] of turtles的部分被多个海龟调用(这正是我想要实现的——让每只随机游走的海龟使用它与原点的距离来计算它的累积每次-步死亡率和死亡超过阈值 - 对于不同距离的不同海龟在不同时间发生的事件)。关于如何解决这个问题的任何想法?
【问题讨论】:
标签: netlogo