题目
本项目将聚焦南海及其邻近海域(该区域是我国台风高发区),建立一个可实现典型台风路径准确预测的人工智能项目。结合典型台风的生成、移动以及自身特征,本项目把研究海域划分为2°×2°的网格,同时在每个网格建立基于人工神经网络的典型台风路径智能预测模型,包括台风移动速度预测模型和台风移动方向预测模型,从而实现对典型台风路径较为准确的预测
因此,本次实训要求建立基于神经网络的典型台风路径预测模型。
数据示例
处理好的数据如下图所示:
1.移动速度公式
式中:ΔLat — 两个观测时次的纬度之间的差值; ΔLon — 两个观测时次的经度之间的差值;β — 与纬度有关的距离参数(考虑到地球的表面曲率不一致、形状不是正球体的影响)。
代码:
speed = 0
beta = [0, 0]
before_logitude = before_log_and_lat[0]
before_latitude = before_log_and_lat[1]
after_logitude = after_log_and_lat[0]
after_latitude = after_log_and_lat[1]
# 请输入您的计算逻辑代码
for i, lat in enumerate([before_latitude, after_latitude]):
if lat >= 5 and lat < 16:
beta[i] = 110.6
elif lat >= 16 and lat < 22:
beta[i] = 110.7
elif lat >= 22 and lat < 29:
beta[i] = 110.8
else:
beta[i] = 110.5
speed = beta[0] * ((after_latitude - before_latitude) ** 2 + (after_logitude - before_logitude) ** 2) ** 0.5 / 6
2.移动方向公式
direction = 0
before_logitude = before_log_and_lat[0]
before_latitude = before_log_and_lat[1]
after_logitude = after_log_and_lat[0]
after_latitude = after_log_and_lat[1]
before_LATrad = math.radians(before_latitude)
before_LONGrad = math.radians(before_logitude)
after_LATrad = math.radians(after_latitude)
after_LONGrad = math.radians(after_logitude)
cosC = math.sin(after_LATrad)*math.sin(before_LATrad) + math.cos(after_LATrad)*math.cos(before_LATrad)*math.cos(after_LONGrad-before_LONGrad)
# print(cosC)
sinC = math.sqrt((1 - (cosC)**2))
# print(sinC)
sinA = math.cos(after_LATrad) * math.sin(after_LONGrad - before_LONGrad) / sinC
# print(sinA)
direction = math.asin(sinA)*180 / math.pi
3.划分网格
划分成2X2的网格,每个网格有自己的模型
4.模型建立
该部分主要调整超参数为:epoch、batci-size、adam、optimize(默认是adam)、decay(1e-4到1e-6)
以神经网络来预测台风的路径。
loss示例
优化得到的方向loss(mae)示例:
移动速度loss:
loss的结果:
方向的模型1(第一次优化结果,保存了部分模型):
模型2:
速度模型:
web建立
以redis存储相应的图片,来实时获取最新的台风预测路径,用flask当作网页路由,控制网页的页面,上传图片等。
如下图所示:
输入经纬度信息,要求必须在网格内
点击提交,实时显示预测过程
最终结果:
需要项目源码的:
- 咸鱼:【闲鱼】https://m.tb.cn/h.UAYYP0D?tk=RyFydrphEK3 「我在闲鱼发布了【台灯路径预测web完整项目】」
点击链接直接打开 - github:整理中,等待开源…