netlogo - 访问列表中项目的值
问题描述
我正在研究一个土地利用模型,其中每个刻度代表 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))
此外,如果有一种不同的方法来实现同样的结果,这对我也完全有用。
解决方案
这是正确的想法。 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 放入一个列表中,然后您可以对其进行总结。
推荐阅读
- java - 使用 Java 中的键对 JSON 进行排序
- python - ValueError:当更改为更大的 dtype 时,其大小必须是数组最后一个轴的总大小(以字节为单位)的除数
- django - Pinax Stripe - 无法向没有活动卡的客户收费
- sql - 不一致的类型 7481 - SQL case when 和 group by
- symfony - Symfony 4 中的自定义基础实体
- mysql - Spring Mysql com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column
- powershell - 全局变量未被函数拾取
- c# - 错误行上的转换异常
- javascript - 等到使用 react-js reactFileDownload 下载文件?
- ruby-on-rails - 在 2 个日期之间搜索