节选自亚太杯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)根据数学模型,核弹目前拥有的最大破坏力是多少?足以毁灭地球吗?
把第一小问中建立的模型和搜集到的数据:其中对于各个国家的核弹爆炸当量。