2023 研究生数学建模竞赛(F题)建模秘籍&文章代码思路大全
数字商品 教育 / 知识

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

数学建模小秘籍 · 2 · 0

商品介绍
开赛后持续放松我们的思路和代码呀!!!

铛铛!小秘籍来咯!
小秘籍希望大家都能轻松建模呀,研赛也会持续给大家放松思路滴~
抓紧小秘籍,我们出发吧~
来看看研赛F题的题目~
 

问题一

1.输入输出设计
输入:X=Xt−9 ,...,Xt
其中Xt ∈RH×W×C表示时刻t的雷达图像,H、W为高度和宽度,C为通道数。
输出:\Y^=Y^t+1,...,Y^t+10
其中Y^t ∈RH×W表示时刻t的预测Z_H。
2.卷积特征提取
使用卷积层提取输入的局部特征:F=f([X;Θf ])
其中ff表示卷积运算,\Theta_fΘf 为卷积层参数。
3.卷积LSTM建模时空相关性
KaTeX parse error: {align} can be used only in display mode.
其中WW及bb表示权重和偏置参数,i, f, oi,f,o表示输入门、遗忘门和输出门。
4.转置卷积上采样
Y^=fT([H;ΘT ])
其中f^TfT表示转置卷积,HH为卷积LSTM输出特征,\Theta_{T}为转置卷积参数。
5.损失函数设计

代码:
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为经验参数。
将问题转换为确定这三个参数。
3.  参数确定
收集观测数据:从多个地区和多种降水类型收集大量三元组数据(Z_H, Z_DR, R)。
数据预处理:去除误差较大的样本,检查数据质量。标准化Z_H和Z_DR。
拟合参数:构建损失函数 \mathcal L=\sum_{i=1}^N(\hat R_i-R_i)^2L=∑i=1N (R^i −Ri )2,其中\hat R_i=aZ_{H_i}^bZ_{DR_i}^cR^i =aZHi b ZDRi c 。使用梯度下降算法学习参数a,b,c以最小化损失函数。
4.  模型选择:比较不同的幂指数组合,选择拟合效果最佳的一组参数。模型检验
收集独立测试数据:保证训练数据和测试数据的地区和降水类型有所不同。
测试集预测:将测试数据Z_H和Z_DR代入学到的Z-R关系,生成降水预测\hat RR^。
评估指标:计算RMSE、MAE等检验预测效果。绘制散点图比较\hat RR^和RR。
模型改进:比较不同区域和降水类型的预测效果,分析原因,进一步优化模型。
极端情况验证:使用极端降雨情况下的数据验证模型的适用范围和稳健性。
代码: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

# 梯度下降函数

同店推荐

包含文件 · 4 · 433.4 KB

  • 01_问题3.py 1.5 KB
  • 02_F题代码_思路.pdf 429.0 KB
  • 03_问题2.py 1011.0 B
  • 04_问题1.py 1.8 KB
支付金额 ¥14.24