2023年全国研究生数学建模竞赛华为杯D题区域双碳目标与路径规划研究求解全过程文档及程序
2023年全国研究生数学建模竞赛华为杯
D题 区域双碳目标与路径规划研究
原题再现:
一、背景介绍
我国是世界上最大的发展中国家,为实现中华民族伟大复兴,规划了在2035年基本实现现代化、在2050年实现中国式现代化的经济社会发展目标。因此,实现2060年碳中和的目标,必须破解发展与碳减排之间的矛盾。其中,推动经济社会高质量发展是矛盾的主要方面。
经济增长与能源消费量以及能源消费量与碳排放量之间存在关联关系,破解发展与减排的矛盾,只能寻求经济增长与碳排放量的负相关变化,必须从提高能源利用效率和提高非化石能源消费比重两个方面入手。
提高能源利用效率(即降低单位GDP能耗),可实现经济增长与能源消费量增长的负相关变化。提高能源利用效率的主要途径:一是开展管理节能、技术节能和结构节能等能效工程,降低单位产品与服务的能耗;二是开展以科技创新为基础的产业升级工程,增加单位产品与服务的科技附加值。
提高非化石能源消费比重(即降低单位能耗碳排放),可实现能源消费量与碳排放量增长的负相关变化。提高非化石能源消费比重的主要途径有:一是开展新能源发电、火电脱碳与新型电网等能源脱碳工程,提升非化石能源发电占比;二是开展以电能替代化石能源为核心的能源消费电气化工程,提升电力消费比重。
可见,破解发展与减排的矛盾,需要从提高能源利用效率和提高非化石能源消费比重两个方面,实施能效提升、产业(产品)升级、能源脱碳和能源消费电气化等四大重点工程。
本赛题需要建立并运用数学模型,分析、评价和预测能效提升、产业(产品)升级、能源脱碳和能源消费电气化等重点工程对碳排放的影响。
二、需要解决的问题
请你们结合数学建模的方法解决如下几个问题:
问题一:区域碳排放量以及经济、人口、能源消费量的现状分析
(1)建立指标与指标体系
要求1:指标能够描述某区域经济、人口、能源消费量和碳排放量的状况;
要求2:指标能够描述各部门(能源供应部门、工业消费部门、建筑消费部门、交通消费部门、居民生活消费、农林消费部门)的碳排放状况;
要求3:指标体系能够描述各主要指标之间的相互关系;
要求4、部分指标的变化(同比或环比)可以成为碳排放量预测的基础。
(2)分析区域碳排放量以及经济、人口、能源消费量的现状
要求1:以2010年为基期,分析某区域十二五(2011-2015年)和十三五(2016-2020年)期间的碳排放量状况(如总量、变化趋势等);
要求2:分析对该区域碳排放量产生影响的各因素及其贡献;
要求3:研判该区域实现碳达峰与碳中和需要面对的主要挑战,为该区域双碳(碳达峰与碳中和)路径规划中差异化的路径选择提供依据。
(3)区域碳排放量以及经济、人口、能源消费量各指标及其关联模型
要求1:分析相关指标的变化(环比与同比);
要求2:建立各项指标间的关联关系模型;
要求3:基于相关指标的变化,结合双碳政策与技术进步等多重效应,确定碳排放预测模型参数(如能源利用效率提升和非化石能源消费比重等)取值。
问题二:区域碳排放量以及经济、人口、能源消费量的预测模型
(1)基于人口和经济变化的能源消费量预测模型
要求1:以2020年为基期,结合中国式现代化的两个时间节点(2035和2050),预测某区域十四五(2021-2025年)至二十一五(2056-2060年)期间人口、经济(GDP)和能源消费量变化。
要求2:能源消费量与人口预测相关联。
要求3:能源消费量与经济(GDP)预测相关联;
(2)区域碳排放量预测模型
要求1:碳排放量与人口、GDP和能源消费量预测相关联;
要求2:碳排放量与各能源消费部门(工业消费部门、建筑消费部门、交通消费部门、居民生活消费、农林消费部门)以及能源供应部门的能源消费量相关联(如反映能效提升对总能耗在上述能源消费部门分布的影响);
要求3:碳排放量与各能源消费部门(同上)的能源消费品种(一次能源中化石能源消费与非化石能源消费以及二次能源(电或热)消费)以及能源供应部门的能源消费品种(化石能源发电与非化石能源发电)相关联(如反映非化石能源消费比重提升对各部门能源消费品种或碳排放因子的影响)。
问题三:区域双碳(碳达峰与碳中和)目标与路径规划方法
(1)情景设计(不少于三种情景,如无人为干预的自然情景、按时碳达峰与碳中和的基准情景、率先碳达峰与碳中和的雄心情景等)。
要求1:与碳达峰和碳中和的时间节点相关联;
要求2:与能效提升和非化石能源消费比重提升相关联。
(2)多情景下碳排放量核算方法
基本假设:
假设1、2035年的GDP比基期(2020年)翻一番;2060年比基期翻两番;
假设2、2060年生态碳汇的碳消纳量为基期碳排放量的10%;
假设3、2060年工程碳汇或碳交易的碳消纳量为基期碳排放量10%。
要求1:区域碳排放与多情景假设相一致;
要求2:区域碳排放与各部门碳排放量的总和相一致;
要求3:碳排放量核算模型与问题二中预测模型相一致(即在多情景条件约束下,区域与各部门能源消费量、能源消费品种及其碳排放量预测方法相一致)。
(3)确定双碳(碳达峰与碳中和)目标与路径要求1:确定GDP、人口和能源消费量的目标值(2025年、2030年、2035年、2050年和2060年);
要求2:确定提高能源利用效率和提高非化石能源消费比重的目标值(2025年、2030年、2035年、2050年和2060年);
要求3:完成能效提升、产业(产品)升级、能源脱碳和能源消费电气化的定性与定量分析。
三、术语及关联模型
1、地区生产总值(GDP)
地区生产总值(以下简称GDP)是区域经济发展的重要标志。GDP来源于第一、第二和第三产业。通常第一、第二和第三产业、行业、企业甚至产品的生产总值又称为增加值,因此有:GDP等于第一、第二和第三产业增加值的总和。
2、部门的划分
国民经济各行业可以分为第一、第二和第三产业。在本赛题中,为了与国民经济统计数据一致,采用以下部门的划分方法:(1)第一产业为农林消费部门;(2)第二产业分为能源供应部门和工业消费部门,其中,能源供应部门是指电力热力以及石油制品等二次能源转换行业,其他如钢铁、建材、化工等能源消费行业;(3)第三产业分为建筑消费部门、交通消费部门,其中,建筑消费部门是指以建筑用能为主的服务业,交通消费部门是指以交通用能为主的服务业;(4)居民生活消费是指居民建筑以及私家车相关的能源消费。即本赛题将国民经济各行业分为能源供应部门、工业消费部门、建筑消费部门、交通消费部门、居民生活消费、农林消费部门等。
3、能源消费量(简称能耗量)
能源消费量具有部门分布和品种分布以及加工转换过程等三种特征。从部门分布看,包含第一、第二和第三产业内各部门的能耗与生活能耗;从品种分布看,包含化石能源消费(有碳排放)和非化石能源消费(无碳排放);从加工转换过程看,包含一次能源(指未经加工转换的能源,如煤炭、石油、天然气、太阳能、风能、水能、核能、生物质能、地热能等)和二次能源(指经过加工转换的能源,如电能、热能、冷能、光伏、风电、水电、核电等)。
4、碳排放量
碳排放量是指伴随着能源消费而产生的二氧化碳排放量,主要与化石能源消费量相关,既包含化石能源作为一次能源消费所产生的直接碳排放量,也包含由化石能源转换生产的电能、热(冷)能等二次能源消费所产生的间接碳排放。
5、Kaya模型
Kaya模型常常用来分析区域碳排放量和该区域人口、社会经济发展水平、能源利用效率以及碳排放因子的关系。其表达式为:
二氧化碳排放量=人口 人均GDP单位GDP能耗*单位能耗二氧化碳排放量
c 式中:
人口是区域社会发展水平的重要标志,一般而言,人口多,则社会活力强,社会发展水平高,但生活能耗呈刚需增长的趋势。
人均GDP是区域经济发展水平的重要标志,人均GDP水平高,表明该区域经济发展状况好。
单位GDP能耗(又称为能源消费强度)是区域能源利用效率的重要标志,单位GDP能耗低,则能源利用效率高。
单位能耗二氧化碳排放(又称为能源消费的碳排放因子)是区域能源消费低碳排放的重要标志,单位能耗二氧化碳排放量低,表示能源消费中非化石能源消费比重大,能源消费产生的温室气体排放低。
6、非化石能源消费比重
非化石能源消费比重是指非化石能源消费量与能源消费量的比值,提高非化石能源消费比重是降低单位能耗二氧化碳排放量的根本和关键。
《意见》中明确指出,到2025年非化石能源消费比重达到20%左右;到2030年非化石能源消费比重达到25%左右;到2060年非化石能源消费比重超过80%。
由于非化石能源规模化消费的主要途径是转化为电力(如光伏、风电、水电、核电、生物质能发电等)消费,所以,非化石能源消费比重基本等价于非化石能源发电比重。即:
非化石能源消费比重=非化石能源消费量/能源消费量≈非化石能源发电量/能源消费量=非化石能源发电比重
非化石能源发电比重=(非化石能源发电量/电力消费量)(电力消费量/能源消费量)=非化石能源发电占比电力消费比重
由上述分析可知,提高非化石能源消费比重等效于提升非化石能源发电占比(表示能源脱碳的指标)和提升电力消费比重(表示能源消费电气化的指标)。
根据一种全电气化社会的情景预测,为了实现非化石能源消费比重超过80%的目标,非化石能源发电比重和电力消费比重均应达到90%。
其中,提高非化石能源消费比重的必要条件是提高非化石能源发电占比,需要由新能源发电、脱碳火电和包含储能在内的新型电网等能源生产部门完成;而充分条件是提高非化石能源消费比重,需要由工业消费部门、建筑消费部门、交通消费部门、居民生活消费和农林消费部门等能源消费部门完成。
7、单位GDP能耗
单位GDP能耗=总能耗/GDP
分子为:总能耗=第一产业能耗+第二产业能耗+第三产业能耗+生活能耗
其中:
第一产业能耗=第一产业增加值第一产业单位增加值能耗;
第二产业能耗=第二产业增加值第二产业单位增加值能耗;
第三产业能耗=第三产业增加值第三产业单位增加值能耗;
生活能耗=总能耗生活能耗比重(生活能耗比重=生活能耗/总能耗)。
分母为:GDP=总增加值=第一产业增加值+第二产业增加值+第三产业增加值
则:
单位GDP能耗=(第一产业增加值第一产业单位增加值能耗+第二产业增加值第二产业单位增加值能耗+第三产业增加值第三产业单位增加值能耗+总能耗生活能耗比重)/ GDP=第一产业增加值/ GDP第一产业单位增加值能耗+第二产业增加值/ GDP第二产业单位增加值能耗+第三产业增加值/ GDP第三产业单位增加值能耗+总能耗/ GDP生活能耗比重=第一产业增加值权重第一产业单位增加值能耗+第二产业增加值权重第二产业单位增加值能耗+第三产业增加值权重第三产业单位增加值能耗+单位GDP能耗生活能耗比重。
其中:
第一产业增加值权重=第一产业增加值/总增加值
第二产业增加值权重=第二产业增加值/总增加值
第三产业增加值权重=第三产业增加值/总增加值
上式等号两侧均有“单位GDP能耗”项,移项整理后,得:
单位GDP能耗=(第一产业增加值权重第一产业单位增加值能耗+第二产业增加值权重第二产业单位增加值能耗+第三产业增加值权重*第三产业单位增加值能耗)/(1-生活能耗比重)。
《意见》中明确,到2025年,重点行业能源利用效率大幅提升,单位GDP能耗比2020年下降13.5%;到2030年,重点耗能行业能源利用效率达到国际先进水平;到2060年,能源利用效率达到国际先进水平。
8、人均GDP与人均能耗
单位GDP能耗=人均能耗/人均GDP。
9、生态碳汇与工程碳汇
碳汇是指消纳二氧化碳的能力,碳汇包含生态碳汇和工程碳汇两种类型。
生态碳汇是指森林和湿地等自然资源形成的碳汇,工程碳汇是指通过二氧化碳捕集、利用与储存(CCUS)等工程手段形成的碳汇。
10、碳达峰与碳中和
基于Kaya模型,有如下关系:
CO2=P * GDP/P * E/GDP * CO2/E
式中,CO2是二氧化碳排放量;P是人口;GDP/P是人均GDP;E/GDP是单位GDP能耗;CO2/E是单位能耗二氧化碳排放量。
上式取对数对时间求偏导数[1],有:
δCO2=δP+δGDP/P+δE/GDP+δCO2/E
式中,δX是参量X对某基准年的相对变化率。
碳达峰是指碳排放量不再增长。碳达峰的要求是:δCO2=0
碳中和是指碳排放量与碳汇(生态碳汇+工程碳汇+碳交易)消纳量相平衡。
碳中和的要求是:δCO2<<0,在《意见》中要求:非化石能源消费比重>80%。
11、间接碳排放统计口径
依据谁消费谁负责的原则,能源供应部门产生的碳排放,将按照电力和热力的消费份额被折算至工业,建筑,交通,生活和农业等能源消费部门,即能源消费部门的碳排放既包含化石能源消费所产生的直接碳排放,也包含电力和热力消费所产生的间接碳排放。但能源供应部门依然负有电力和热力碳减排的责任,亦即,同样需要对能源供应部门做碳排放的历史数据分析和未来趋势预测,在分析其碳排放状况的同时,也为能源消费部门的间接碳排放提供数据支撑。
整体求解过程概述(摘要)
本研究对某区域的碳排放现状、未来趋势以及双碳目标路径进行了全面的模型建立与分析求解[1]。在问题一中,通过构建指标体系、分析历史数据变化趋势以及建立碳排放关联预测模型,对区域碳排放现状进行了分析与评估。在问题二中,首先对某区域两个期间的人口和经济进行了预测,并利用岭回归模型对能源消费量与碳排放量进行了预测。在问题三中,设计了三种碳中和情景,并通过建立优化模型找出了实现碳中和的最佳路径。
对问题一,构建以该区域经济、人口、能源消费量和碳排放量为一级指标的指标评价体系,初步建立了关于碳排放量的Kaya模型[2-4],在此基础上对数据进行分析找到相关二级指标,在此基础上建立了关于碳排放量的STIRPAT模型[5-7]。针对数据缺失问题进行补全,并通过对补全后的数据可视化分析了在“十二五”和“十三五”期间经济、人口、能源消费结构以及碳排放量的变化情况。通过person相关性分析,找出影响碳排放的关键因素,如人口、GDP和能源消费量,确定了碳排放预测模型中的参数,为后续建模奠定了基础[8,9]。
对问题二的经济、人口和能源消费量的预测模型。本研究整合并处理了人口和GDP的历史数据,建立了回归预测模型,通过自相关函数和偏自相关函数确定ARIMA模型的阶数,对两个期间的人口和经济进行预测[10-13]。在预测未来人口与GDP的基础上,本研究建立了岭回归模型,预测未来的能源消费量。对问题二的区域碳排放量预测模型。本研究分析了碳排放量与人口、GDP和能源消费量之间,以及碳排放量与各能源消费及供应部门和能源消费品种之间的关联关系,利用ARIMA模型对每个能源消费及供应部门和能源消费品种的碳排放量进行预测,结果表明所建立的碳排放预测模型能够反映关键因素,对未来趋势具有较好的预测效果[14]。
对问题三,本研究拟以2030年达到碳达峰,2060年实现碳中和为确定时间节点,利用IDMI模型计算不同情景的难度系数,构建自然、基准与雄心三种情景下的碳中和路径,分别对应为无人为干预、按时和提前达到碳达峰碳中和的情况[15,16]。在对社会经济参数、终端能源消费和能源转换等三个维度进行考虑后,建立了LEAP模型进行碳排放量核算与碳达峰和中和[17-20]。求解得到各情景下最佳年度单位GDP能耗增长率和最佳年度碳排放因子增长率,并利用碳排放因子增长率反推得到非化石能源消费比重增长率,给出了实现碳中和的最佳途径,即提高能源利用效率与非化石能源消费比重的年度增长率[21]。 最终,本研究通过构建相关模型,对区域碳排放现状与未来趋势进行了较为全面的预测与规划,以实现双碳目标。
模型假设:
假设在区域双碳目标与路径规划中扮演着关键角色,原因如下:首先,假设为建立科学的碳减排模型和决策支持系统提供了基础,有助于政府和决策者做出明智的减排决策。其次,它允许我们探索不同的碳减排情景,从而更好地理解不同政策和行动对碳排放的可能影响。此外,通过假设,可以明确设定碳达峰和碳中和的目标,并用作规划和监测的基准,以便实时追踪进展。此外,基于假设的模型还可用于评估政策效果,优化政策制定,以实现碳减排目标。最后,它有助于识别潜在的风险和挑战,从而为风险管理策略提供有力支持。总之,假设是碳减排规划不可或缺的一部分,为制定策略、规划未来行动和管理碳减排提供了基础和指导。这些假设应根据实际情况不断修正和优化,以适应不断变化的环境和需求。故我们做出如下假设:
假设1、2035年的GDP比基期(2020年)翻一番;2060年比基期翻两番;
假设2、2060年生态碳汇的碳消纳量为基期碳排放量的10%;
假设3、2060年工程碳汇或碳交易的碳消纳量为基期碳排放量10%。
假设4、 假设未来的经济增长速度不会下降,以年度的GDP增长率来表示。这可以包括基准情景、自然情景和雄心情景下的不同经济增长假设。
假设5、假设未来的人口增长率会一直增长且不会下降,这对于计算每人碳排放和能源需求非常重要。
假设6、假设未来能源结构不会变化,包括非化石能源(如太阳能、风能、核能等)和化石能源(如煤、石油、天然气等)会一直存在。
假设7、 假设未来将采取哪些政策和措施来减少碳排放,如碳定价、能源税、能源效率标准、清洁能源补贴等。
假设8、 假设未来化石能源的碳排放因子保持不变,即单位能源产生的碳排放量。
假设9、 假设未来不会发生的自然灾害、能源供应中断或其他外部因素。
问题分析:
问题一分析
问题一的主要目标是构建一个综合的指标评价体系,以研究某区域的碳排放量,并建立相关模型。首先,文章建立了一级指标,包括经济、人口、能源消费量和碳排放量,并初步引入了Kaya模型来探讨碳排放量。接着,通过分析数据,找到了与碳排放相关的二级指标,并建立了STIRPAT 模型,以深入研究碳排放的影响因素。 在解决数据缺失问题方面,研究通过整理和分析给定数据,并完成了能源供应部门碳排放量的数据补全,确保了研究的数据准确性。 通过可视化分析,“十二五”和“十三五”期间经济、人口、能源消费结构以及碳排放量的变化情况得以呈现。此外,通过进行person相关性分析,作者找出了关键因素,如人口、GDP和能源消费量,这些因素将被用于碳排放预测模型的参数设定。在问题一中,通过建立指标体系和模型,分析数据,填补缺失值,可视化展示趋势,以及确定关键因素,为深入研究该区域的碳排放问题提供了坚实的基础。
问题二分析
问题二的目标是建立经济、人口和能源消费量的预测模型,然后基于这些预测结果,构建区域碳排放量的预测模型。 对于经济和人口的预测模型,问题二整合并处理了历史数据,采用回归分析方法,确定了相关关系,并借助自相关函数和偏自相关函数确定了ARIMA模型的阶数,以便预测未来的人口和经济趋势。同时,通过岭回归模型,预测未来的能源消费量,考虑了这两个因素的影响。 针对问题二中区域碳排放量的预测,首先分析碳排放与人口、GDP、能源消费量以及各能源消费部门和品种之间的关系。然后,利用ARIMA模型对每个能源消费部门和品种的碳排放量进行预测,从而综合考虑了各个关键因素对碳排放的影响。 问题二通过建立多个预测模型,深入研究了人口、经济、能源消费以及碳排放之间的关联,为解决问题二提供了系统的方法和预测工具。这些模型能够更好地反映未来趋势,有助于区域碳排放量的预测和管理,为环境保护和政策决策提供了重要支持。
问题三分析
问题三的主要问题是确定碳达峰和碳中和的时间节点并为实现这些目标提供路径。问题三采用了IDMI模型,通过计算不同情景下的难度系数,包括无人为干预、按时和提前达到碳达峰碳中和的情况。在考虑社会经济参数、终端能源消费和能源转换等维度后,建立了LEAP模型,用于核算碳排放量和实现碳达峰和中和的路径。 通过LEAP模型的求解,问题三得出了各情景下最佳的年度单位GDP能耗增长率和最佳年度碳排放因子增长率。进一步,通过反推,确定了非化石能源消费比重的年度增长率,从而提供了实现碳中和的最佳途径,即通过提高能源利用效率和增加非化石能源消费比重来实现碳中和目标。 问题三采用多维度模型,结合不同情景下的难度系数计算,为确定碳达峰和碳中和的时间节点提供了科学依据。同时,通过LEAP模型的运用,提供了明确的行动路径,即在碳中和过程中关注能源利用效率和非化石能源消费比重的增长率,为碳中和目标的实现提供了战略指导。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
程序代码:
部分程序代码如下:
import numpy as np
import statsmodels.api as sm
import matplotlib.pyplot as plt
import pandas as pd
import os
from pmdarima import auto_arima
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from scipy.stats import shapiro, probplot
from statsmodels.graphics.gofplots import qqplot
from statsmodels.stats.diagnostic import acorr_ljungbox
# 加载具有多个工作表的Excel文件
excel 文件 = pd.ExcelFile(数据_区域双碳目标与路径规划研究(含拆分数据表).xlsx)
# 加载碳排放数据
sheet_name = 碳排放拆分表
# 从指定工作表中读取数据到Pandas DataFrame
df = pd.read_excel(excel 文件, sheet_name=碳排放拆分表, header=None)
# 将DataFrame 转换为NumPy数组
Energy_supply_factor = df.values
# 定义Energy_consumption_structure 作为 NumPy 数组(你可以类似地提取它)
Energy_consumption_structure =np.array([
[2.730, 2.657, 2.656, 2.759, 2.656, 2.784, 2.789, 2.810, 2.878, 2.938, 2.951],
[2.111, 2.274, 2.141, 2.097, 2.116, 2.085, 2.106, 2.080, 1.971, 2.058, 2.049],
[1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628],
[2.906, 2.916, 2.916, 2.967, 2.998, 3.107, 3.190, 3.278, 3.745, 3.662, 3.705],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[2.783, 2.656, 2.657, 2.680, 2.834, 2.824, 2.818, 2.824, 2.791, 2.788, 2.766],
[2.002, 2.273, 2.078, 1.994, 1.967, 1.956, 1.959, 1.926, 1.934, 1.922, 2.021],
[1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628, 1.628],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[8.137, 0.165, -4.646, 8.864, 8.042, 7.885, 7.858, 7.320, 7.333, 7.260, 7.277],
[1.222, 1.250, 1.448, 1.515, 1.688, 1.722, 1.893, 2.037, 2.483, 2.356, 2.088],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[2.906, 2.906, 2.906, 2.906, 2.906, 2.906, 2.906, 2.906, 2.906, 2.906, 2.906],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000], [0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000],
[3.072, 3.031, 3.157, 3.118, 3.312, 3.399, 3.309, 3.400, 3.919, 3.827, 3.873],
[5.869, 5.995, 5.864, 6.028, 5.227, 5.554, 5.515, 5.490, 5.430, 5.479, 5.246],
[0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000, 0.000]
])
# 执行乘法和求和以计算Energy_supply_CO2
Energy_supply_CO2 = np.sum(Energy_supply_factor * Energy_consumption_structure, axis=1)
import pandas as pd
import numpy as np
# 年份
year = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020]
# 总人口
population = [
7869.34, 8022.99, 8119.81, 8192.44, 8281.09, 8315.11, 8381.47, 8423.50, 8446.19, 8469.09,
8477.26
]
# 地区生产总值
GDP = [
[41383.87, 45952.65, 50660.20, 55580.11, 60359.43, 65552.00, 70665.71, 75752.20,
80827.71, 85556.13, 88683.21],
[2409.24, 2736.86, 3057.82, 3228.54, 3358.61, 3636.08, 3690.61, 3568.54, 3591.61,
3726.61, 3916.81],
[21853.60, 23739.96, 25612.91, 27298.13, 28907.54, 30700.41, 32013.02, 34514.33,
36533.74, 37730.14, 38183.23],
[904.65, 947.43, 1121.15, 1065.45, 1149.82, 1357.63, 1417.90, 1526.98, 1604.56, 1692.70,
1660.68],
[20948.95, 22792.53, 24491.76, 26232.68, 27757.72, 29342.78, 30595.12, 32987.35,
34929.18, 36037.45, 36522.55],
[17121.03, 19475.83, 21989.47, 25053.44, 28093.28, 31215.51, 34962.07, 37669.33,
40702.36, 44099.38, 46583.18],
[1767.22, 1988.43, 2199.51, 2233.94, 2378.93, 2240.39, 2316.43, 2420.17, 2570.68,
2749.08, 2761.51],
[15353.81, 17487.40, 19789.96, 22819.50, 25714.36, 28975.11, 32645.64, 35249.16,
38131.69, 41350.30, 43821.67]
]
# 转换为NumPy数组
year = np.array(year)
population = np.array(population)
GDP = np.array(GDP)
# 计算GDP_total 和GDP_bumen_total
GDP_total = GDP[0, :]
GDP_bumen_total = GDP[[1, 2, 6], :]
# 计算各部门GDP
GDP_bumen = np.vstack((GDP[[1, 3, 4, 7, 8], :], np.zeros((1, 11))))
# 打印或根据需要使用Energy_supply_CO2# 创建一个DataFrame包含所有数据
data_total = pd.DataFrame({
CO2: CO2_total,
人口: population,
GDP: GDP_total,
能量消费量: Energy_consumption_total
})
# 能源消费量数据
energy_consumption = [
[23539.31, 26860.03, 27999.22, 28203.10, 28170.51, 29033.61, 29947.98, 30669.89,
31373.13, 32227.51, 31438.00],
[345.36, 393.87, 448.95, 362.18, 383.72, 429.37, 433.46, 440.49, 457.99, 438.58, 423.78],
[20113.07, 23145.47, 23869.22, 23889.14, 23670.13, 24261.96, 24929.67, 25317.56,
25580.66, 26196.12, 25325.99],
[5752.10, 6992.75, 7339.98, 7820.62, 6951.05, 7380.49, 7786.52, 8219.69, 8104.87,
8131.55, 7491.05],
[204.84, 286.73, 354.09, 335.18, 382.10, 440.86, 415.01, 523.98, 1010.79, 953.12, 1003.97],
[-610.67, 243.37, 223.05, -968.04, -1181.69, -1275.59, -1334.32, -1635.70, -2028.82,
2376.43, -2414.66],
[454.13, 450.76, 457.50, 353.57, 500.15, 474.01, 337.92, 377.27, 370.15, 378.33, 372.90],
[14312.68, 15171.86, 15494.59, 16347.81, 17018.53, 17242.19, 17724.55, 17832.32,
18123.66, 19109.55, 18872.74],
[1932.84, 2115.56, 2308.96, 2481.88, 2644.20, 2776.11, 2878.53, 3049.20, 3300.79, 3522.38,
3507.62],
[1398.26, 1494.74, 1618.15, 1743.67, 1915.88, 2019.29, 2083.59, 2187.96, 2324.65,
2482.93, 2484.47],
[534.58, 620.83, 690.81, 738.21, 728.32, 756.83, 794.94, 861.24, 976.14, 1039.46, 1023.15],
[1148.05, 1205.13, 1372.09, 1469.91, 1472.45, 1566.16, 1706.31, 1862.64, 2033.69, 2070.43,
2180.60]
]
# CO2 排放量数据
co2_emission = [
[56360.052, 65193.342, 67502.613, 66749.376, 64853.276, 66074.810, 68526.125,
70451.557, 71502.003, 74096.331, 72633.324], [896.070, 1031.176, 1165.275, 1007.478, 1020.853, 1162.512, 1211.034, 1245.019,
1295.487, 1278.384, 1238.759],
[45225.697, 52975.787, 54048.282, 52229.084, 51187.980, 51101.873, 52382.224,
52975.849, 52506.881, 54235.439, 52954.049],
[5898.284, 6584.556, 7147.774, 7791.472, 7676.077, 8314.531, 8801.016, 9524.015,
10422.113, 11150.957, 10906.028],
[3068.031, 3280.292, 3561.730, 3847.156, 4157.352, 4398.073, 4556.294, 4826.106,
5125.165, 5449.651, 5456.836],
[2830.254, 3304.264, 3586.045, 3944.317, 3518.725, 3916.458, 4244.722, 4697.909,
5296.948, 5701.306, 5449.191],
[4340.001, 4601.822, 5141.282, 5721.341, 4968.367, 5495.894, 6131.851, 6706.674,
7277.522, 7431.551, 7534.489]
]
# 转换为NumPy数组
energy_consumption = np.array(energy_consumption)
co2_emission = np.array(co2_emission)
# 计算能源消费总量
energy_consumption_total = energy_consumption[0, :]
# 计算各部门能源消费总量
energy_consumption_bumen_total = energy_consumption[[1, 2, 8], :]
# 计算各部门能源消费量
energy_consumption_bumen = np.vstack((energy_consumption[1, :],
np.sum(energy_consumption[[3, 4, 5, 6], :], axis=0)))
# 计算CO2排放总量
co2_emission_total = co2_emission[0, :]
# 计算各部门CO2排放总量
co2_emission_bumen_total = co2_emission[[1, 2, 3], :]
# 计算各部门CO2排放量
co2_emission_bumen = np.vstack((co2_emission[1, :], co2_emission[[4, 5, 6], :]))
# 输出结果
print("能源消费总量:", energy_consumption_total)
print("各部门能源消费总量:", energy_consumption_bumen_total)
print("各部门能源消费量:", energy_consumption_bumen)
print("CO2 排放总量:", co2_emission_total)
print("各部门 CO2 排放总量:", co2_emission_bumen_total)
print("各部门 CO2 排放量:", co2_emission_bumen)
# 计算相关性矩阵
corr_matrix = data_total.corr()
# 定义图片输出目录
folder = img
# 检查文件夹是否存在,如果不存在则创建
if not os.path.exists(folder):
os.mkdir(folder)
else:
print(dir is exist)
# 绘制CO2排放总量变化图
plt.figure(figsize=(10, 5))
plt.plot(year, CO2_total)
plt.xlabel( 年份)
plt.ylabel(CO2 排放总量)
plt.title(2010-2020 年 CO2 排放总量变化)
plt.grid(True)
plt.savefig(os.path.join(folder, 2010-2020 年 CO2 排放总量变化.png), dpi=300)
plt.close()
# 绘制十二五期间CO2排放总量变化图
plt.figure(figsize=(10, 5))
plt.plot(year[1:6], CO2_total[1:6])
plt.xlabel( 年份)
plt.ylabel(CO2 排放总量)
plt.title( 十二五(2011-2015 年)CO2 排放总量变化)
plt.grid(True)
plt.savefig(os.path.join(folder, 十二五(2011-2015 年)CO2 排放总量变化.png), dpi=300)
plt.close()
# 绘制十三五期间CO2排放总量变化图
plt.figure(figsize=(10, 5))
plt.plot(year[6:11], CO2_total[6:11])
plt.xlabel( 年份)
plt.ylabel(CO2 排放总量)
plt.title( 十三五(2016-2020 年)CO2 排放总量变化)
plt.grid(True)
plt.savefig(os.path.join(folder, 十三五(2016-2020 年)CO2 排放总量变化.png), dpi=300)
plt.close()
# 绘制各产业CO2排放量变化图
plt.figure(figsize=(10, 5))
for i in range(3):
plt.plot(year, CO2_bumen_total[i], label=f 第{i + 1}产业)