基于PaddleTS的亚太杯1月场E题第二问方案和代码解析(世界拥核国家数量预测)

节选自亚太杯1月场E题第二问基于PaddleTS的方案和代码解析完整版 (数据驱动建模中心)

背景

1945年8月6日,接近结束。为了尽快结束战争,美国在日本广岛投下了下一颗名为“小男孩”的原子弹。这样的原子弹造成广岛20万人死亡,广岛所有建筑全部倒塌。这是人类历史上第一次将原子弹付诸实施,也让很多人第一次意识到原子弹的可怕威力。核武器是指与核反应有关的大型致命武器,包括氢弹、原子弹等。核武器是人类有史以来开发的最强大的武器之一,它们常常使人们想起毁灭天地的景象。原子弹的瞬时爆炸温度可达到数千万度。原子弹的爆炸当量约为数万到数十万吨。原子弹的爆炸及其辐射区域可以摧毁一座城市。

APMCM组织委员会要求你的团队处理当前的报告和未来的核武器预测。他们提供了数据集2022_APMCM_E_Data.csv来帮助您进行研究。请收集相应的数据,建立一个数学模型,并回答问题。

第一问

问题

根据所附数据或您收集的数据,建立数学模型,预测核武器数量,预测未来100年拥有核武器的国家。

分析

这一问是预测问题,上难度了。

a小问,同意一下现在考虑、追求和拥有的国家大概有多少个,如果是乐观估计,那就是都拥有,如果反向估计,那就是那些追求的都无法拥有,甚至某些拥有的将来也不再拥有,因为世界趋势是更为和平也行,说法合理即可。

b小问,要研究变化趋势,这里要研究总数,所以必须要按照年份进行分类汇总,然后进行预测。

解决方案

使用先进的集成时间序列预测工具Paddle进行建模预测,部分可视化内容和代码解析如下。

target_cov_dataset = TSDataset.load_from_dataframe(
    df,
    target_cols=['Possession'],
    observed_cov_cols=[],
)
train_dataset, val_test_dataset = target_cov_dataset.split(0.5)
val_dataset, test_dataset = val_test_dataset.split(0.5)
train_dataset.plot(add_data=[val_dataset,test_dataset], labels=['Val', 'Test'])

df = pd.read_csv('2022_APMCM_E_Data_prolife.csv',index_col='Year')
df.index=pd.to_datetime(df.index, format = '%Y')
df.info()

#归一化
scaler = StandardScaler()
scaler.fit(train_dataset)
train_dataset_scaled = scaler.transform(train_dataset)
val_test_dataset_scaled = scaler.transform(val_test_dataset)
val_dataset_scaled = scaler.transform(val_dataset)
test_dataset_scaled = scaler.transform(test_dataset)

PaddleTS 是一款基于飞桨深度学习框架的开源时序建模算法库,其具备统一的时序数据结构、全面的基础模型功能、丰富的数据处理和分析算子以及领先的深度时序算法,可以帮助开发者实现时序数据处理、分析、建模、预测全流程,在预测性维护、智慧能耗分析、价格销量预估等场景中有重要应用价值。

第三问

保护我们的地球
(a)建立核武器起爆位置的数学模型,计算至少需要多少枚核弹才能毁灭地球?
核武器有效杀伤距离计算公式:杀伤半径= C × 爆炸当量^(1/3),C为比例常数,一般取为:1.493885。
按照这个公式可计算出:
当量为10万吨TNT时(W76),
有效杀伤半径= 1.493885 × 10^(1/3) = 3.22千米
有效杀伤面积 = pi × 3.22 × 3.22 = 33平方千米

当量为1000万吨TNT时,
有效杀伤半径= 1.493885 × 1000^(1/3) = 14.93千米
有效杀伤面积 = pi × 14.93 × 14.93 = 700平方千米

计算地球的面积是多少,可以查看多少枚核弹可以毁灭地球。

(b)根据数学模型,核弹目前拥有的最大破坏力是多少?足以毁灭地球吗?
把第一小问中建立的模型和搜集到的数据:其中对于各个国家的核弹爆炸当量。

第十二届APMCM亚太杯D要求我们设计一种算法,在给定的城市地图中,找到两个点之间的最短路径,并求出路径上所有连接点的数量。 首先,我们可以使用迪杰斯特拉算法来寻找两点之间的最短路径。迪杰斯特拉算法能够在有向图中找到单源最短路径,并且可以处理边权重为负数的情况。我们可以根据城市地图构建一个有向图,并将连接两点的路径权重设为连接两点之间的距离。 接着,我们可以使用一个数组或优先队列来存储从起点到其他顶点的当前最短路径的估计值。我们将起点的估计值设为0,其他顶点的估计值设为无穷大。 然后,我们以起点为中心,从数组或队列中选择估计值最小的顶点。然后将该顶点标记为已访,并更新与之相邻的顶点的估计值(如果新的估计值更小)。我们不断重复这个过程,直到所有顶点都被访过且更新过它们的估计值。 最后,在迪杰斯特拉算法执行过程中,我们可以记录下起点到每个顶点的最短路径长度,并将其存储在数组中。此外,我们可以通过在迭代过程中记录前驱节点的方式,构建最短路径。 为了求解路径上所有连接点的数量,我们可以在构建最短路径的过程中对经过的节点进行计数。当我们找到终点时,我们就可以得到起点到终点的最短路径的长度,并通过减去起点与终点之间的直线距离来得到路径上所有连接点的数量。 综上所述,我们可以使用迪杰斯特拉算法来解决第十二届APMCM亚太杯D算法的详细思路包括图的构建、估计值更新、最短路径构建以及路径上连接点数量的计算。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wormhacker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值