水文模型代码与建模 VIC模型集中式模型新安江模型、GR4J/GR6J模型、IHACRES模型、SIMHYYD模型、HMC_SEC模型、LSTM径流预测模拟模型 粒子群优化算法、遗传算法、SCE_UA优化算法。 研究区域建模、代码注释、优化参数、数据后处理与绘图代码一步到位水文模型这玩意儿玩的就是用代码把自然界的复杂水循环装进计算机。咱们搞建模的日常就是在集中式和分布式模型之间反复横跳。先说说老牌选手VIC模型这哥们擅长处理空间异质性但配置起来那叫一个酸爽。相比之下新安江这类集中式模型简直就是新手村福利三五行代码就能跑出像样的结果。最近两年LSTM模型在径流预测圈杀疯了给大家看个实战片段class StreamLSTM(nn.Module): def __init__(self, input_size5): super().__init__() self.lstm nn.LSTM(input_size, 64, num_layers2, dropout0.2) self.fc nn.Sequential( nn.Linear(64, 32), nn.ReLU(), nn.Dropout(0.1), nn.Linear(32, 1)) def forward(self, x): out, (h_n, c_n) self.lstm(x) return self.fc(out[-1])这段网络结构暗藏玄机双LSTM层配合随机失活既能捕捉长时序依赖又防过拟合。输入层5个特征对应降水、气温、前期流量等关键因子输出层直接怼径流量预测。注意最后只取时间序列末端的输出这个设计让模型自动关注关键时间窗。水文模型代码与建模 VIC模型集中式模型新安江模型、GR4J/GR6J模型、IHACRES模型、SIMHYYD模型、HMC_SEC模型、LSTM径流预测模拟模型 粒子群优化算法、遗传算法、SCE_UA优化算法。 研究区域建模、代码注释、优化参数、数据后处理与绘图代码一步到位参数优化这块儿传统智能算法依然能打。比如SCE-UA这个老江湖在GR4J模型率定时简直稳如老狗def calibrate_gr4j(params): X1, X2, X3, X4 params simulated gr4j_model.run(X1, X2, X3, X4) return nse(observed, simulated) optimizer SCEUA(calibrate_gr4j, bounds[(0,10), (-5,5), (10,600), (0.5,4)]) best_params optimizer.optimize()这算法牛逼之处在于把参数空间划分成多个复合形每个子群体独立进化还定期杂交。跑起来比遗传算法收敛快实测在20维以下参数优化场景里效果吊打粒子群算法。数据后处理推荐用xarray搭配dask处理NetCDF格式的遥感水文数据简直起飞。再配个自动化绘图流水线def plot_results(df): plt.style.use(ggplot) fig, ax plt.subplots(figsize(12,4)) df[观测流量].plot(axax, linewidth1.2) df[模拟流量].plot(axax, style--) ax.annotate(fNSE{nse:.3f}, xy(0.75, 0.9), xycoordsaxes fraction) plt.savefig(结果对比.png, dpi300, bbox_inchestight)这套组合拳下去从数据清洗到成果出图全流程打通。新手容易栽的坑是没做数据标准化就硬怼LSTM还有在优化算法里忘记设置最大迭代次数结果程序跑到地老天荒。建议在模型训练前先做个特征相关性热图把那些和径流八竿子打不着的变量提前踢出局。