首页 > 解决方案 > 访问列表中项目的值

问题描述

我正在研究一个土地利用模型,其中每个刻度代表 3 个“现实生活”月。我想计算一整年的森林砍伐率,并将此信息提供给某些代理。我将森林砍伐定义为去年森林范围的自然对数除以今年的森林范围乘以 100。目前,我正在按季度计算森林砍伐,如下所示:

to go
   set forest-extent-last-tick count patches with [land-cover = "forest"] 
   ;agents carrying out all their actions, including deforestation
   set forest-extent count patches with [land-cover = "forest"]
end 

然后我使用 forest-extent 和 forest-extent-last-tick 来计算该刻度的森林砍伐率。为了计算年度森林砍伐率,我想我需要构成本年度的四个蜱虫的森林范围和构成前一年的四个蜱虫的森林范围。

我认为解决方案可能涉及一个列表,我使用 fput 命令在每个刻度中输入最新的森林范围。这样,列表中的项目 0 - 3 将代表当前年份,项目 4 - 7 将代表上一年。我的问题是,有没有办法可以将这些项目从列表中拉到另一个命令/计算中?我在想这样的事情:

Set deforestation-rate ((sum deforestation-list item 4 item 5 item 6 item 7) / (sum deforestation-list item 0 item 1 item 2 item 3))

此外,如果有一种不同的方法来实现同样的结果,这对我也完全有用。

标签: netlogo

解决方案


这是正确的想法。 item有不同的语法,但无论如何我认为这sublist就是你想要的。

Set deforestation-rate ((sum sublist deforestation-list 4 8) / (sum sublist deforestation-list 0 4))

sublist将列表、开始项(包括)和结束项(不包括)作为参数,因此sublist mylist 4 8将项 4、5、6 和 7 放入一个列表中,然后您可以对其进行总结。


推荐阅读