GCAM_learn 2024.10
1、模型背景/简介:
GCAM模型(Global Change Assessment Model)是一个全球气候变化的综合评估模型,由美国太平洋西北国家实验室与马里兰大学联合开发的,旨在为政府间气候变化专门委员会(IPCC)的《排放情景特别报告》提供综合评估。该模型包括能源、农业和土地利用、区域气候、全球气候等子模型,通过模拟全球及区域尺度的气候变化,为政策制定、科学研究等领域提供支持。本文运行的GCAM模型版本为gcam-china-v6-Windows-Release-Package。
1.1 GCAM模型主要组成部分
- 能源子模型:模拟能源系统的生产和消费,包括各种能源类型(如化石燃料、可再生能源)的使用和转换效率。
- 农业和土地利用子模型:评估农业生产和土地利用变化对气候变化的影响。
- 区域气候子模型:模拟不同地区的气候变化情况,包括温度、降水等气象要素的变化。
- 全球气候子模型:在更大的尺度上模拟全球气候变化,包括温室气体浓度、气候反馈机制等。
1.2 GCAM模型应用领域
- 政策制定:帮助决策者评估不同政策对气候变化的影响,为制定减排策略提供科学依据。
- 科学研究:支持气候变化研究,包括预测未来气候变化趋势、评估不同情景下的影响等。
- 教育和培训:提供学习和研究平台,帮助研究人员和学生对气候变化有更深入的理解。
1.3 GCAM模型最新发展
GCAM模型的最新发展包括模型的更新和功能的添加,以适应新的研究需求和数据变化。例如,模型的时空分辨率得到提高,能够更精细地模拟气候变化的影响;同时,模型的开源社区也在不断发展,吸引了更多的研究者和政策制定者参与,共同推动气候变化研究的进步。
GCAM模型在全球气候变化研究中扮演着重要角色,通过模拟和分析气候变化的各种情景,为应对气候变化提供了科学依据和技术支持。
1.4 模型学习资源
- 模型下载地址:https://github.com/umd-cgs/gcam-china/releases/tag/gcam-china-v6
- 模型介绍和使用方法: https://umd-cgs.github.io/metarepo_gcam-china/metarepo.html
- 模型说明文档:https://jgcri.github.io/gcam-doc/user-guide.html
- gcam培训网站: https://github.com/JGCRI/gcam_training
2、基础环境及模型搭建部署
2.1.编程环境配置
这里需要配置JAVA、R、Rstudio的基础编程环境。Java可以理解用来跑模型、跑模型的计算部分 。R语言类比成matlab,用于对模型运算结果进行统计分析、数据分析。Rstudio则是R语言的编译器,增加界面美观性、编辑的流畅性。R语言来自S语言,是S语言的一个变种。是一种解释型的面向数学理论研究工作者的语言,主要用于统计分析、绘图、数据挖掘。安装具体教程可以查看以下链接R&RStudio 下载及安装(详尽版)_r studio-CSDN博客
2.1.1 R语言下载及安装
注:R 版本过新或过久,构建时都有可能会发生错误,笔者运行时使用的R语言版本为4.4.1版本。
1.R语言官网下载地址 R: The R Project for Statistical Computing (r-project.org)
2. 安装后进行环境变量配置及简单测试
2.1.2 RStudio下载及安装
RStudio 是一个 R 编程语言的集成开发环境(IDE),包含控制台、语法高亮显示的编辑器、支持直接代码执行以及画图、浏览历史、调试和工作区管理功能。下载链接 Download RStudio - Posit
2.1.3 JAVA 安装 需要手动配置环境变量
参考链接:java安装教程及环境配置方法
2.2 模型运行
2.2.1 模型参数学习
运行模型前强烈建议先阅读gcam guider学习指南参考资料GCAM v7.1 Documentation: GCAM User Guide (jgcri.github.io)。(以下部分内容均翻译自该链接,建议英语好的同学自行阅读原文)
1.引言
GCAM提供可执行行文件版及源代码,对于普通用户而言使用gcam-v7.0-Windows-Release-Package.zip版本即可。本指南主要适用于想要使用GCAM可执行文件和XML输入文件的用户。对于想要编译自己的GCAM可执行文件的请参考https://jgcri.github.io/gcam-doc/gcam-build.html。对于想要运行gcamdata软件包和从头开始构建XML输入文件的说明,请参阅https://jgcri.github.io/gcam-doc/data-system.html。
2.GCAM快速入门
双击 gcam项目中exe文件夹下的run-gcam.bat便可开始运行模型,模型运行成功后将输出如下结果
3.查看模型结果
每个场景的综合模型输出结果都存储再XML数据库中(与旧版本模型接口不兼容),要查看模型输出结果,请打开ModelInterface程序(该程序位于gcam项目ModelInterface中,不需要额外下载)。
双击run-model-interface.bat开始运行该程序,从Model Interface File菜单中选择Open,然后从子菜单中选择DB Open。默认设置下XML数据库位于Output子目录中,名为database_basexdb。选择database_basexdb,您应该在屏幕上看到以下内容。
要查看数据,请选择一个或多个场景、一个或多个区域、一个或多个查询。一旦选择了这些元素中的一个,“Run Query”按钮将变得可用。按下该按钮,模型输出如下图所示:
4.GCAM用户指南
4.1配置文件 configuration.xml
配置文件指示 GCAM 可执行文件要读入哪些文件,并允许用户设置各种运行时和输出选项。GCAM 运行必须始终存在配置文件。配置文件分为以下几个部分:
Config Section | Description |
---|---|
Files | 将GCAM指向各种核心输入和输出文件位置。该块中可能需要更改的最常见的项是xmldb-location。更改此项允许用户更改输出xml数据库的名称和位置。 |
ScenarioComponents | 这是GCAM读取定义场景的数据的地方。每个条目都有一个名称和一个路径,必须指向有效的GCAM xml输入文件。注意,每个场景组件的name属性仅用于可读性,GCAM不使用这些属性。 |
Strings | 本节中应该修改的主要组件是场景名称,它应该是场景的简短描述性名称。 |
Bools | 这些布尔变量会改变 GCAM 的运行方式,并允许 GCAM 操作的一些替代模式。 |
Ints | 这些整数变量设置各种 GCAM 运行和输出选项。 |
4.1.1 Scenario Components
与GCAM一起分发的configuration_ref.xml文件包含了为GCAM版本定义参考场景的输入文件列表。不要修改任何原始场景组件文件。如果您希望进行更改,请创建文件副本并修改副本。
修改场景的一种常用方法是在场景组件文件列表的末尾添加其他组件。场景组件按顺序读取,后面的数据取代前面的数据。例如,可以通过添加气候策略组件来定义气候策略。气候政策组成部分的例子可以在GCAM分发的输入/政策文件夹中找到。
对于运行多个场景,批处理模式通常更方便。
4.1.2 <Files>
Input Options
下表总结了配置文件部分下可用的选项。注意,对于输出文件,write-output属性用于启用/禁用输出。可以使用append_scenario -name属性指示GCAM将场景名称附加到指定的文件名。参见configuration_ref.xml获取示例。
File Tag | Description |
---|---|
xmlInputFileName (xml输入文件名) | 第一个 XML 文件读入。在最新版本的 GCAM 中,这用于读入 modeltime 对象,该对象设置 GCAM 的时间间隔。modeltime 对象只能读入一次。 |
BatchFileName | 批处理文件输入的名称。这只会在BatchMode布尔值设置为1时使用。 |
policy-target-file | 在目标查找器模式下运行模型。只有当find-path布尔值设置为1时才会使用。 |
GHGInputFileName | 默认MAGICC输入温室气体排放时间序列 |
xmldb-location | xml输出数据库的位置和名称 |
xmlDebugFileName | 调试输出文件的名称。对于指定的调试区域(见下文),将在每个模型周期结束时输出一组内部状态变量。 |
climatFileName | 包含传递给MAGICC的温室气体和污染物排放的输出文件。 |
costCurvesOutputFileName | 如果createCostCurve设置为1,则输出成本曲线。 |
batchCSVOutputFile | CSV输出的最小变量集。这在大型批处理运行时非常有用,因为创建xml数据库会导致文件过大。 |
4.1.3 <Strings>
Input Options
下表总结了配置文件部分下可用的选项。这些选项应该是字符串,指定时不带引号。
File Tag | Description |
---|---|
scenarioName | 场景名称。该名称将嵌入到输出xml数据中。对于批处理文件操作,此名称是最终文件名的前缀。 |
debug-region | 指定用于调试输出的区域的字符串(请参阅xmlDebugFileName),它按模型周期提供GCAM内部状态变量的转储,这对于调试和理解结果很有用。 |
MAGICC-input-dir | 用于必要的MAGICC输入文件的输入目录。这通常不应该改变。 |
MAGICC-output-dir | MAGICC 模型输出文件的目录。 |
AbatedGasForCostCurves | 默认值:“二氧化碳”。在计算政策成本时,要更改其价格和排放量总和的市场/气体名称。注意,当针对多种气体时,您可以将此值指定为GHG;CO2;CH4;N2O;C2F6;CF4,例如,列出所有气体的总和,并根据相关的温室气体政策对它们进行加权 |
####### 4.1.4 <Bools> Input Options | |
下表总结了配置文件部分下可用的选项。这些值应该指定为1或0。 | |
File Tag | Description |
----------------- | ------------------------------------------------------------ |
CalibrationActive | 激活模型校准。在正常操作下,这应该处于打开状态。 |
固定 GDP 路径 | 如果使用固定的或动态的GDP反馈设置。详情见经济部分。 |
BatchMode | 激活GCAM批处理模式操作。还必须指定有效的BatchFileName。 |
find-path | 打开寻径功能。还必须指定有效的policy-target-file。 |
createCostCurve | 打开二氧化碳成本曲线的计算。该模型将多次运行以生成二氧化碳成本曲线,该曲线将被整合以估计总政策成本。 |
debugChecking | 打开一些内部一致性检查。 |
QuitFirstFailure | 当设置为1时,模型将在第一个失败的周期后中止一个场景(跳过剩余的周期,打印输出并退出)。在目标查找器模式下运行时,此功能不可用。 |
4.1.5 <Ints>
Input Options
下表总结了配置文件< int >部分下可用的选项。这些值应该被指定为整数。
File Tag | Description |
---|---|
numPointsForCO2CostCurve | 在CO2成本曲线计算中使用的点数(如果打开createCostCurve)。 |
carbon-output-start-year | XML数据库中碳循环输出的起始年份 |
climateOutputInterval | XML数据库中气候数据(浓度、强迫、温度等)的输出间隔 |
parallel-grain-size | 使用多线程支持编译GCAM时的性能调优选项。 |
stop-period | 指定一个早期的模型出口。运行到并包括给定的周期,表示运行所有周期。指示GCAM信任读在市场价格上升,但不包括指定时期的初始 |
restart-period | 解决方案的价格。这可以与停止周期一起使用,以支持检查点和重新启动GCAM模拟。设置超出最终模型周期的值还可以加快目标查找器场景。 |
4.2 GCAM 批处理模式
如果运行多个场景,GCAM也可以在批处理模式下运行,其中批处理输入文件包含用户指定的附加组件集,这些组件可用于定义多个场景,然后将全部运行。为了在批处理模式下运行,配置文件中的BatchMode bool(ean)设置必须设置为1,并且批处理输入文件必须指定为下的BatchFileName。
4.3 Target finder
为运行GCAM启用此模式需要指定策略目标文件并启用find-path。在运行目标查找器时(与运行任何策略时一样),用户应该从configuration_policy.xml开始,以确保正确设置了市场结构。在此模式下运行时,GCAM将多次运行一个场景,以找到满足配置的气候目标的最佳路径。在这种模式下运行GCAM可能会花费相当多的时间,加快速度的一个选择是提供一个良好的初始价格猜测,如下所示。示例策略目标文件在input/policy中提供,并且是自记录的。
4.4 ModelInterface 模型接口
模型接口是一个GCAM工具,用于查看来自BaseX XML数据库的GCAM结果或将CSV文件转换为XML。你可能会在发布包的顶层找到一个副本,可以通过双击ModelInterface.jar(在Mac上是ModelInterface.app)来运行。本节将主要关注查看结果。它可以以交互模式使用,或者用户可以设置批处理查询文件来自动将结果转储到CSV或XLS。
4.5 控制 XML DB 输出的级别
GCAM XML数据库输出非常冗长,可能会消耗大量磁盘空间。用户可能会寻求限制甚至查询和丢弃这些结果,特别是在进行大量运行时,以节省空间和时间。为此,他们可以在/exe/XMLDBDriver中进行配置。
2.3 gcamdata项目克隆及部署
2.3.1 项目文件介绍
模型下载地址:https://github.com/umd-cgs/gcam-china/releases/tag/gcam-china-v6
exe 存放模型的主程序;input 存放输入数据源及模型的输入数据产生程序(gcamdata) ;libs 存放模型运行所需的依赖包;modelinterface 为模型可视乎系统界面;output 存放模型运行后输出数据。
2.3.2 项目部署及运行问题解决
项目地址:https://github.com/JGCRI/gcamdata/wiki/1.-Getting-Started
2.3.2.1 克隆代码仓库至本地(下载完整代码包不需要此步)
在目的文件夹下打开cmd窗口键入目标代码仓库网址克隆项目
`git clone https://github.com/JGCRI/gcamdata.git`
[error_tip] 克隆项目时遇到报错
如遇fatal: unable to access ‘https://github.com/…’: OpenSSL SSL_read: Connection was reset, errno 10054
【产生原因】一般是因为服务器的SSL证书没有经过第三方机构的签署,所以才报错
【解决方式】解除ssl验证后,再次git即可
git config --global http.sslVerify false
二、代码下载完成后执行以下步骤,使用RStudio 打开项目
`install.packages("devtools")`
[error_tip] 下载devtools遇到报错
WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:
https://cran.rstudio.com/bin/windows/Rtools/
Installing package into ‘C:/Users/chenzhou/Documents/R/win-library/3.5’
(as ‘lib’ is unspecified)
[产生原因]在尝试构建R包时检测到系统中没有安装Rtools,需要下载Rtools。理一下R、RStudio、rtools的关系:R是基本的编程语言、RStudio类比visualstudio,帮助我们更加方便的查看查看变量、绘图、管理项目。Rtools是一个用于Windows操作系统的软件包,它为R编程语言提供了一套工具和依赖项,以便在Windows上进行编译和构建R软件包。
Rtools下载与安装:Rtools下载与安装(win) - 知乎 (zhihu.com)
Rstudio设置国内镜像站点:Rstudio设置国内镜像站点 - 知乎 (zhihu.com)
注意这里因为R语言版本和Rtools版本要对应,注意清华的镜像站旧版本仅为4.0,所以我们这里选择更换R语言为4.0版本,这边大家不着急换,后面试错又换成4.3版本了,如果有更好的解决办法,请在评论区留言分享。
安装Rtools后检查下R语言和Rtools的环境变量,而后输入 Sys.which("make")
进行验证 ,出现以下make “D:\gcam\rtools40\usr\bin\make.exe” 即成功。
[error_tip] 安装Rtools遇到报错
【try-1】 install.packages(“devtools”, type = “win.binary”)
直接在R的命令行中安装,未成功
【try-2】 通过官网下载离线devtools包,进行本地导入,未成功
运行devtools::load_all()时,显示cli版本过低,尝试删除cli并重新下载,未成功
`remove.packages("cli")`
`install.packages("cli")`
为啥我安装R包总出现‘…had non-zero exit status.‘??-CSDN博客
【try3-解决方法] 转过头再琢磨一下报错的头,发现以下报错信息
“这通常意味着该软件包最近在CRAN上进行了更新,但是该二进制文件尚不适用于您的OS(可能需要一两天的时间)。当二进制文件不适用于您的平台时,可能还有其他情况。”https://community.rstudio.com/t/meaning-of-common-message-when-install-a-package-there-are-binary-versions-available-but-the-source-versions-are-later/2431
所以我们就安装可用的二进制版本就好了
install.packages("devtools",type="binary")
使用 library(devtools)
检查安装结果,
发现缺少cachem包,使用同样的命令 install.packages("cachem",type="binary")
下载该包,再次检验
转过来发现原因还是我们的devtools版本和源码不匹配!
根据这个项目的时间,我们选一个2024年3月之前的R语言版本4.3.3,安装install.packages(“devtools”,type=“binary”)后执行library(devtools)
提示需要载入程辑包usethis,那就安装程辑包usethis:install.packages(“usethis”,dependencies = TRUE),执行library(usethis)
,而后再执行,发现顺利无报错。
devtools::load_all()
3.拓展
3.1 R软件包版本不匹配的问题
笔者在运行数据系统过程中遇到某个版本的if_else函数不支持不满足条件以后返回0的操作,经排查为的R软件包版本过新的问题,将dplyr包和tidyr包更换为(1.0.6)和(1.2.0)版本后运行正常 。可以参考以下指令
library(dplyr) / library(tidyr)
remove.packages("dplyr") / remove.packages("tidyr")
install.packages("dplyr", version = "1.0.6") / install.packages("tidyr", version = "1.2.0")
packageVersion("dplyr") / packageVersion("tidyr")
如果 直接install.packages无效,可以尝试下载remotes包,指定版本和下载镜像源地址。
install.packages("remotes")
library(remotes)
install_version("tidyr", version = "1.2.0", repos = "[https://cloud.r-project.org](https://cloud.r-project.org/)")
3.2 如何构建GCAM 数据输入系统 (GCAM data system)
GCAM系统大量的输入数据(xml文件)是通过 gcamdata_R
程序包将 inst/extdata
中的csv 文件转换而来的。想要更改模型输入数据文件,就需要重新运行GCAM模型中的数据输入系统(位于模型文件夹input下的gcamdata).
安装运行指南可知,运行模型数据输入系统可以执行以下代码:
devtools::load_all()
driver(write_output=FALSE, write_xml=TRUE)
完整处理流程可参照下图: