2023年美国大学生数学建模竞赛
F题 绿色GDP
原题再现:
背景
国内生产总值(GDP)可以说是衡量-一个国家经济健康状况的最知名和最常用的指标之一。它通常被用于确定一个国家的购买力和获得贷款的机会,为国家提出促进其gdp的政策和项目提供动力。GDP衡量一个国家在一定时期内生产的最终产品和服务的货币价值;它计算了一个国家境内产生的所有产出。”[凹]这种计算如此重要且经常被引用的指标的方法有利于今天的生产,而不考虑为明天保存资源。例如,一个拥有丰富森林的国家可以通过砍伐树木和生产大量木制家具来提高当前的GDP。这个国家可以这样做而不受惩罚,尽管会造成生物多样性的损失和其他负面的环境后果。同样,一个国家现在可以通过捕捞更多的鱼来提高其GDP,而不会因为对鱼类资源的潜在不可逆转的损害而受到惩罚
由于GDP未能为自然资源提供信贷,或许它不是衡量一个国家真正经济健康状况的好指标。如果国家改变了评估和比较经济的方式,国家政府可能会改变他们的行为,推动更有利于地球环境健康的政策和项目。“绿色”GDP(GGDP),其中“绿色”指的是纳入环境和可持续发展的观点和因素,能比目前的传统GDP更好地衡量吗?
多边变革极具挑战性。说服各国同意这一新的GGDP,而不是传统的GDP,作为经济健康的主要衡量标准,可能会非常困难。然而,如果这一转变引发了一场全球各国气候努力的运动,并在缓解气候危机方面取得了重大进展,那么或许值得一试。
要求
你的任务是考虑世界承认GGDP是衡量一个国家经济健康状况的主要指标。我们应该期待什么样的变化?这些变化会对环境产生怎样的影响?具体来说,你的团队应该:
目前已经提出了许多计算GDP的方法。选择您的团队认为,如果它取代GDP作为经济健康的主要衡量标准,它可能对气候缓解产生可衡量的影响。
如果你选择的GGDP被用作衡量一个国家经济健康状况的主要指标,制作一个容易防御的简单模型,以估计对气候缓解的预期全球影响。如何衡量全球影响,由你自己决定。
用GGDP取代GDP可能会遇到阻力。确定你的模型是否表明这种转变在全球范围内是值得的,同时比较气候缓解影响的潜在上行影响和取代现状所需努力的潜在下行影响。解释你的推理,并用你之前的全球影响分析来支持你的答案。
选择一个国家,并就这种转变可能对他们产生的影响提供更深入的分析。例如,从现在(在当前的GDP下)到采用GGDP之后,你期望他们在使用或节约自然资源方面有什么具体的变化?考虑到他们目前的经济状况和他们养活后代的能力,这些变化对这个特定的国家是否有利?确保您的分析明确地与GDP和GGDP计算方法之间的变化联系在一起。
根据你对具体国家的分析,向该国领导人写一份一页的非技术报告,说明是支持转向GGDP,还是反对转向,并保持GDP作为衡量国家经济健康的主要指标。
整体求解过程概述(摘要)
“绿色”GDP的概念是应对气候变化日益严重影响的众多解决方案中的一个创新概念。GGDP成功地将国家可持续发展与全球减缓和环境治理紧密结合。
对于任务1:根据环经核算制度和相关参考资料,GGDP被定义为国内生产总值的空气污染成本、废物利用成本和资源消耗成本。将46个国家的数据代入计算,得到2020年所有国家的G GDP与GDP(RGG)的R。价值越大,经济越绿色。我们发现,RGG在发达国家普遍较高,其次是大多数发展中国家,而资源输出国则最低。
对于任务2:参考前几年重大国际事件对二氧化碳排放的影响,对GGDP对污染指标的影响进行了统计,并计算了结果。研究发现,2040年全球平均RGG从0.9784增加到0.9881。本文考虑了温度、污染和生态系统平衡三个气候指标。然后,通过三级模糊综合评价计算出世界三项指标的得分。结果显示,在采用GGDP后,2040年的得分从正常条件下的(0.2534,0.7591.03802)上升到(0.7139,1.2795,0.3846),表明对减缓气候变化产生了积极影响。
对于任务3:从空间和时间两个维度分析GGDP的可行性。在空间维度上,博弈论用于模拟不同国家的利润分配过程。结果表明,所有最初反对GGDP的国家最终在15年内接受了该标准。在时间维度上定量分析了不同的发展模式。在第20年,采用GGDP比传统收入增加了收入,在接下来的40年里,全球又创造了51.6万亿美元的收入。
对于任务 4:我们认为澳大利亚是 GGDP 的采用者。首先,利用PVAR分析澳大利亚的产业结构。结果表明,第三产业对经济的贡献率约为47.27%,高于第二产业(21.07%),表明澳大利亚的产业转型将对其产生相对积极的带动作用。然后,将澳大利亚与德国进行比较,我们发现澳大利亚的废物利用率低,填埋率高。最后,我们为澳大利亚量身定制政策,帮助该国经济健康状况迅速改善。
对于任务5:从上述分析中可以清楚地看出,在澳大利亚采用GGDP是必要的。从经济发展、环境治理和废物利用三个角度向领导提出建议。
最后,对模型进行灵敏度分析,验证模型的稳定性,分析模型的优势和劣势。
模型假设:
假设:各国在采用GGDP评价标准后确定的国家发展方向将严格按照新标准进行规划。
▷理由:评估一国经济健康状况的标准与一国的发展规划息息相关,标准的变化将影响国家的发展方向。
假设:在愿景所主导的时间范围内,世界不会再经历任何突发的全球事件,如大规模的地区冲突、战争或经济危机。
▷理由:战争和经济危机的存在将扰乱我们的预测结果,偏离我们研究的目标和方向。
假设:在现行政策下,人力能源结构和资源利用效率在短时间内不会发生显著变化。
▷理由:在没有严重资源偏见的情况下,人类的发展和进步
问题重述:
考虑到问题陈述中确定的背景信息和约束,我们需要解决以下任务:
1.选择并分析了已开发的GGDP计算方法。
2.建模用于预测GGDP在采用时对全球减缓气候变化的影响。
3.比较采用GGDP的优缺点,并讨论切换是否值得。
4.深入分析GGDP在选定国家采用的影响。
5.就是否采用GGDP向选定国家的领导人写下我们的建议。
我们的工作
对于任务1,我们回顾了有关GGDP计算方法的文献,并选择了Mijo Mirkovic博士提出的计算方法,以应对环境污染产生的社会成本的影响。这种方法既考虑了损害成本,也考虑了治疗成本,可以更全面地说明该国的经济健康状况。
在任务2中,我们在政治事件对政策产生影响的条件下对GGDP进行了全面预测。预测结果还用于模糊综合评价模型,以衡量GGDP采用对全球范围内世界气候的影响。
来到任务3,我们利用博弈论和预测分析,在空间和时间两个维度上比较了采用GGDP和不采用GGDP的优缺点,并得出结论,采用GGDP是必要的。
在任务4中,我们选择澳大利亚作为GGDP的试点国家。我们首先从GGDP的计算角度出发,利用PVAR分析了澳大利亚工业试验结构的面板数据,对澳大利亚产业结构的变化进行了预测。然后,我们从废物利用的角度指出了澳大利亚面临的问题。最后,我们提出全面的政策建议。
模型的建立与求解整体论文缩略图
全部论文请见下方“ 只会建模 QQ名片” 点击QQ名片即可
部分程序代码:(代码和文档not free)
import urllib2
import numpy
from sklearn import tree
from sklearn.tree import DecisionTreeRegressor
import random
from math import sqrt
import matplotlib.pyplot as plot
#read data into iterable
target_url = "red.csv"
data = urllib2.urlopen(target_url)
xList = []
labels = []
names = []
firstLine = True
for line in data:
if firstLine:
names = line.strip().split(";")
firstLine = False
else:
#split on semi-colon
row = line.strip().split(";")
#put labels in separate array
labels.append(float(row[-1]))
#remove label from row
row.pop()
#convert row to floats
floatRow = [float(num) for num in row]
xList.append(floatRow)
nrows = len(xList)
ncols = len(xList[0])
#take fixed test set 30% of sample
random.seed(1)
nSample = int(nrows * 0.30)
idxTest = random.sample(range(nrows), nSample)
idxTest.sort()
idxTrain = [idx for idx in range(nrows) if not(idx in idxTest)]
#Define test and training attribute and label sets
xTrain = [xList[r] for r in idxTrain]
xTest = [xList[r] for r in idxTest]
yTrain = [labels[r] for r in idxTrain]
yTest = [labels[r] for r in idxTest]
#train a series of models on random subsets of the training data
#collect the models in a list and check error of composite as list grows
#maximum number of models to generate
numTreesMax = 30
#tree depth - typically at the high end
treeDepth = 1
#initialize a list to hold models
modelList = []
predList = []
#number of samples to draw for stochastic bagging
nBagSamples = int(len(xTrain) * 0.5)
for iTrees in range(numTreesMax):
idxBag = []
for i in range(nBagSamples):
idxBag.append(random.choice(range(len(xTrain))))
xTrainBag = [xTrain[i] for i in idxBag]
yTrainBag = [yTrain[i] for i in idxBag]
modelList.append(DecisionTreeRegressor(max_depth=treeDepth))
modelList[-1].fit(xTrainBag, yTrainBag)
#make prediction with latest model and add to list of predictions
latestPrediction = modelList[-1].predict(xTest)
predList.append(list(latestPrediction))
#build cumulative prediction from first "n" models
mse = []
allPredictions = []
for iModels in range(len(modelList)):
#average first "iModels" of the predictions
prediction = []
for iPred in range(len(xTest)):
prediction.append(sum([predList[i][iPred] for i in range(iModels + 1)])/(iModels + 1))
allPredictions.append(prediction)
errors = [(yTest[i] - prediction[i]) for i in range(len(yTest))]
mse.append(sum([e * e for e in errors]) / len(yTest))
nModels = [i + 1 for i in range(len(modelList))]
plot.plot(nModels,mse)
plot.axis('tight')
plot.xlabel('Number of Tree Models in Ensemble')
plot.ylabel('Mean Squared Error')
plot.ylim((0.0, max(mse)))
plot.show()
print('Minimum MSE')
print(min(mse))