2023 研究生数学建模竞赛(F题)建模秘籍&文章代码思路大全

在这里插入图片描述

问题重述

1.如何利用双偏振雷达的数据有效改进强对流降水的短临预报?要求建立可以提取双偏振雷达数据中的微物理特征信息的模型,进行0-1小时的降水预报。
2.当前一些数据驱动模型存在“回归到均值”的问题,生成的强降水预报往往过于模糊。要求在问题1的基础上,设计模型以生成更真实、更丰富细节的降水预报结果。
3.要求利用雷达反射率Z_H和差分反射率Z_DR,建立模型进行定量降水估计,即利用这两个变量预测降水量。
4.要求设计模型来评估双偏振雷达数据对强降水预报的贡献,并通过优化数据融合策略,与其他数据源集成,以提高强降水检测与预报的准确性。

完整版内容在文末领取噢~

问题一

1.输入输出设计
输入: X = X t − 9 , . . . , X t \boldsymbol{X}={X_{t-9},...,X_{t}} X=Xt9,...,Xt

其中 X t ∈ R H × W × C X_{t} \in \mathbb{R}^{H×W×C} XtRH×W×C表示时刻t的雷达图像,H、W为高度和宽度,C为通道数。

输出: Y ^ = Y ^ t + 1 , . . . , Y ^ t + 10 \hat{\boldsymbol{Y}}={\hat{Y}{t+1},...,\hat{Y}{t+10}} Y^=Y^t+1,...,Y^t+10

其中 Y ^ t ∈ R H × W \hat{Y}_{t} \in \mathbb{R}^{H×W} Y^tRH×W表示时刻t的预测Z_H。

2.卷积特征提取
使用卷积层提取输入的局部特征: F = f ( [ X ; Θ f ] ) \boldsymbol{F}=f([\boldsymbol{X};\Theta_{f}]) F=f([X;Θf])

其中 f f f表示卷积运算, Θ f \Theta_f Θf为卷积层参数。

3.卷积LSTM建模时空相关性
KaTeX parse error: {align} can be used only in display mode.

其中 W W W b b b表示权重和偏置参数, i , f , o i, f, o i,f,o表示输入门、遗忘门和输出门。

4.转置卷积上采样
Y ^ = f T ( [ H ; Θ T ] ) \hat{\boldsymbol{Y}}=f^{T}([H;\Theta_{T}]) Y^=fT([H;ΘT])

其中 f T f^T fT表示转置卷积, H H H为卷积LSTM输出特征,\Theta_{T}为转置卷积参数。

5.损失函数设计
Loss = 1 N ∑ i = 1 N ∣ ∣ Y ^ i − Y i ∣ ∣ =\frac{1}{N}\sum_{i=1}^{N}||\hat{Y}_i-Y_i|| =N1i=1N∣∣Y^iYi∣∣

代码:

import tensorflow as tf
from tensorflow.keras.layers import ConvLSTM2D, Conv2D, Conv2DTranspose

# 输入层
inputs = tf.keras.Input(shape=(10, 128, 128, 3)) 

# 卷积层提取特征
x = Conv2D(filters=64, kernel_size=3, activation='relu')(inputs)
x = MaxPooling2D((2, 2))(x)
from tensorflow.keras.layers import ConvLSTM2D, Conv2D, Conv2DTranspose, Attention
from tensorflow.keras import Model

inputs = Input(shape=(10, 128, 128, 3))

# 第一层卷积
x = Conv2D(64, 3, padding='same', activation='relu')(inputs)  

# 第二层卷积
x = Conv2D(64, 3, padding='same', activation='relu')(x)

# 第一层卷积LSTM 
x = ConvLSTM2D(64, 3, padding='same', return_sequences=True)(x)

问题二

1.构建multi-scale的预报模型
在卷积LSTM模型中,同时预测不同尺度的Z_H:

·低分辨率Z_H:反映大尺度的降水格局
·高分辨率Z_H:反映小尺度的降水细节

2.加入先验约束
根据气象知识,加入对强降水的先验约束,例如:

·强降水具有聚集性
·细胞运动遵循流场
·生命期分不同发展阶段
可以将这些先验知识以约束条件加入模型。

3.模型集成
使用多个不同的模型,对其各自的预报结果进行融合。

4.数据增强
通过旋转、翻转、添加噪声等来增强训练数据,提高模型的鲁棒性。

5.模型和训练策略优化
改进模型结构,调整损失函数,优化训练超参等。

from tensorflow.keras.layers import Input, ConvLSTM2D, UpSampling2D
from tensorflow.keras.models import Model

inputs = Input(shape=(10, 128, 128, 1))

# 低分辨率预测分支

x1 = ConvLSTM2D(filters=32, kernel_size=3, padding='same', return_sequences=True)(inputs)
x1 = BatchNormalization()(x1) # 加入BN层
x1 = ConvLSTM2D(filters=32, kernel_size=3, padding='same')(x1)  
x1 = Conv2D(filters=1, kernel_size=1, padding='same')(x1)

# 高分辨率预测分支 

x2 = ConvLSTM2D(filters=64, kernel_size=3, padding='same', return_sequences=True)(inputs)
x2 = BatchNormalization()(x2) 
x2 = ConvLSTM2D(filters=64, kernel_size=3, padding='same')(x2)

问题三

思路:
1.输入输出设计
输入:雷达反射率Z_H 和 差分反射率 Z_DR

输出:预测降水量R

2.建立Z-R关系
R = a * Z_H^b * Z_DR^c

其中a,b,c为经验参数。

将问题转换为确定这三个参数。

  1. 参数确定

收集观测数据:从多个地区和多种降水类型收集大量三元组数据(Z_H, Z_DR, R)。
数据预处理:去除误差较大的样本,检查数据质量。标准化Z_H和Z_DR。
拟合参数:构建损失函数 L = ∑ i = 1 N ( R ^ i − R i ) 2 \mathcal L=\sum_{i=1}^N(\hat R_i-R_i)^2 L=i=1N(R^iRi)2,其中 R ^ i = a Z H i b Z D R i c \hat R_i=aZ_{H_i}^bZ_{DR_i}^c R^i=aZHibZDRic。使用梯度下降算法学习参数a,b,c以最小化损失函数。
模型选择:比较不同的幂指数组合,选择拟合效果最佳的一组参数。

  1. 模型检验

收集独立测试数据:保证训练数据和测试数据的地区和降水类型有所不同。
测试集预测:将测试数据Z_H和Z_DR代入学到的Z-R关系,生成降水预测 R ^ \hat R R^
评估指标:计算RMSE、MAE等检验预测效果。绘制散点图比较 R ^ \hat R R^ R R R
模型改进:比较不同区域和降水类型的预测效果,分析原因,进一步优化模型。
极端情况验证:使用极端降雨情况下的数据验证模型的适用范围和稳健性。
代码:

import numpy as np
from sklearn.metrics import mean_squared_error

# 收集并预处理观测数据
zh = [12, 15, 13, ...] # 反射率因子Z_H
zdr = [0.8, 1.2, 0.7, ...] # 差分反射率Z_DR
r = [10, 25, 12, ...] # 实测降水量R

# 定义Z-R关系,初始化参数  
def zr_relation(zh, zdr, a, b, c):
    return a * zh**b * zdr**c


# 使用最小二乘法拟合参数
def train(zh, zdr, r, a, b, c):
    preds = [zr_relation(z, zd, a, b, c) for z,zd in zip(zh, zdr)]  
    loss = mean_squared_error(r, preds)
    # 参数初始化
a, b, c = 0.01, 1.4, 0.9  

# 梯度下降函数

问题四

  1. 基准模型

Y ^ 0 = f ( X 0 ; θ 0 ) \hat{Y}_0 = f(X_0; \theta_0) Y^0=f(X0;θ0)

其中 X 0 X_0 X0为单偏振Z_H, θ 0 \theta_0 θ0为模型参数, Y ^ 0 \hat{Y}_0 Y^0为预测。

  1. 评估模型

Y ^ 1 = f ( X 1 ; θ 1 ) \hat{Y}_1 = f(X_1; \theta_1) Y^1=f(X1;θ1)

其中 X 1 X_1 X1包含Z_H、Z_DR、K_DP, θ 1 \theta_1 θ1为参数, Y ^ 1 \hat{Y}_1 Y^1为预测。

  1. 模型评估

R M S E 0 = 1 n ∑ i = 1 n ( Y i − Y ^ 0 i ) 2 RMSE_0 = \frac{1}{n}\sum_{i=1}^{n}(Y_i - \hat{Y}_{0i})^2 RMSE0=n1i=1n(YiY^0i)2

R M S E 1 = 1 n ∑ i = 1 n ( Y i − Y ^ 1 i ) 2 RMSE_1 = \frac{1}{n}\sum_{i=1}^{n}(Y_i - \hat{Y}_{1i})^2 RMSE1=n1i=1n(YiY^1i)2

比较 R M S E 0 RMSE_0 RMSE0 R M S E 1 RMSE_1 RMSE1

  1. 注意力机制融合

Y ^ = ∑ i = 1 m α i f i ( X i ; θ i ) \hat{Y} = \sum_{i=1}^{m}\alpha_i f_i(X_i; \theta_i) Y^=i=1mαifi(Xi;θi)

学习权重 α i \alpha_i αi,自适应地融合不同数据源 X i X_i Xi的预测。

import tensorflow as tf
from tensorflow.keras import layers, models

# 1. 构建基准模型 
inputs_zh = layers.Input(shape=(10, 64, 64, 1))
conv_zh = layers.Conv2D(32, 3)(inputs_zh)
lstm_zh = layers.LSTM(32)(conv_zh)
outputs_zh = layers.Dense(64*64)(lstm_zh)
base_model = models.Model(inputs_zh, outputs_zh)

# 2. 构建增强模型
inputs_dual_pol = layers.Input(shape=(10, 64, 64, 3))  
conv_dual_pol = layers.Conv2D(32, 3)(inputs_dual_pol)
lstm_dual_pol = layers.LSTM(32)(conv_dual_pol)
outputs_dual_pol = layers.Dense(64*64)(lstm_dual_pol)
enhanced_model = models.Model(inputs_dual_pol, outputs_dual_pol)

# 3. 模型训练
# 载入数据
X_train, X_test = load_data()  

# 数据预处理
X_train = normalize(X_train)
X_test = normalize(X_test)

完整内容点击下方名片详细了解噢~
一起来关注数学建模小秘籍冲刺华为杯大奖!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
2023华为杯研究生数学建模竞赛F涉及到社交媒体数据分析和传播效应的研究。竞赛要求参赛队伍利用给定的社交媒体数据集,从中挖掘出用户行为模式、社交网络结构和信息传播规律,分析不同用户对信息的传播影响力,并提出有效的模型和算法,帮助企业或组织更好地进行社交媒体营销和信息传播。 团队首先需要对给定的社交媒体数据进行清洗和预处理,包括用户发布的内容、互动行为、社交网络关系等。随后,可以利用数据挖掘技术和网络分析方法,建立用户行为模式和社交网络结构的数学模型,揭示用户在社交媒体平台上的行为规律和信息传播路径。在此基础上,团队需要设计有效的传播影响力评估指标,并构建传播效应的数学模型,分析不同因素对信息传播的影响,并提出相应的改进策略。 最后,团队可以根据建立的模型和算法,针对企业或组织的实际需求,给出针对性的社交媒体营销和信息传播建议,推动传播效果的提升和营销效益的增长。 在参与竞赛的过程中,团队需要充分发挥团队协作和创新能力,灵活运用数学建模和数据分析方法,提出深刻见解和有效的解决方案,全面展现团队的专业素养和创造力。通过这样一场挑战,团队将不仅获得实战经验,也可以提高团队合作和问解决能力,从而在未来的职业发展中更加游刃有余。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

数学建模小secret

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

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

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

打赏作者

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

抵扣说明:

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

余额充值