# 模型参数是测出来，还是调出来？

用一场事件寻找K，再用另一场事件检验它。

前置课程：前一期基础课程。本期所有数值均为教学合成数据，待独立专业审稿。

## 参数表里的数字，从哪里来？

知道方程，并不意味着知道参数。我们还要比较模型输出与观测，寻找能够解释数据的参数。这个过程叫率定。但让一场事件拟合得好，还只是第一步。

仍使用零初值的线性水库。率定事件入流100m³/s、持续30分钟；验证事件60m³/s、持续20分钟。两组观测在5、10、20、30、45、60分钟采样，均由K=20分钟生成后添加固定小扰动，明确属于合成数据。

## 让模拟曲线靠近观测点

拖动K，曲线的形状随之变化。观测点并不会跟着移动。我们要问的不是哪条线看起来顺眼，而是用什么规则，衡量模拟与观测之间的差异。

率定扰动为[3,−2,1,−3,2,0]m³/s，验证扰动为[−1,2,−2,1,−1,1]m³/s。扰动是固定教学设定，没有假定其来自某个概率分布。观察数据与模型曲线的形状、峰值及退水段，不能只看一个分数。

## 把差异，写成目标函数

这里使用均方根误差。每个时刻的模拟值减去观测值，平方后求平均，再开平方。误差越小，在这个指标下的拟合越好。它和流量使用相同单位，也会更强调较大的误差。

RMSE=sqrt(Σ(Qsim−Qobs)²/n)，单位m³/s。所有点本例等权，时间点固定。缺测、测站误差、时段代表性与业务目标，在真实项目中都可能影响目标函数选择。

## 只用率定事件，搜索一次

让计算机在五到六十分钟之间，逐个尝试整数K，选出率定误差最小的那个。搜索有明确的范围和步长。它得到的是这个候选集合里的最优值，不是证明真实参数已经被唯一找到。

按钮“仅用率定事件寻优”只访问率定数组，候选步长为1分钟。真实生成参数为20分钟，但带噪数据的最优点可能偏离它；非唯一性在多参数模型中更突出。这个教学例子可识别性较强，不能据此假定所有参数都容易率定。

## 把参数带到另一场事件

现在固定刚才得到的K，切换到验证事件。我们没有用这场事件参与搜索。它能帮助判断参数能否解释新的条件。若看到验证结果不好就反复按它调参，它也会渐渐失去独立验证的意义。

验证事件改变了来水幅度与时长，使用同一模型结构和生成K。界面切换只改变展示事件，自动搜索始终只用率定数据。验证通过也只说明在所检验条件下有一定支持，不能自动保证极端事件的外推。

## 率定不是万能的修补工具

不正确的雨量、遗漏的过程，也可能被参数暂时补偿。一个漂亮的分数，掩盖不了这些问题。先检查输入、单位、模型结构和数据质量，再解释参数是否合理。下一期，我们把单条预测曲线展开，看看结果可能有多不确定。

参考HEC-HMS率定流程及汇总统计文档。本例的Python和网页共享相同观测构造说明，可复算每个候选K的率定与验证RMSE。全量验证分数用于教学复核，工程工作中应先保留独立验证集，再决定调参方案。

## 练习与解释

1. 自动寻优按钮使用哪组数据？

答案：只使用率定事件。验证事件不进入目标函数或候选搜索。

2. RMSE的单位是？

答案：m³/s。先平方再开方后，与流量单位一致。

3. 反复按验证集调参，会怎样？

答案：验证信息泄漏进建模选择。需要保留未参与调参或选模的最终检验数据。

## 算例与依据

[下载Python算例](case/reproduce.py)，同目录包含完整模型源码foundation_models.py。运行后生成reference.csv。

[官方技术资料](https://www.hec.usace.army.mil/confluence/hmsdocs/hmstrm/calibration/summary-of-the-calibration-procedure)，查阅日期2026-09-15。通用概念参考上述资料；本文简化公式、数据和结论适用范围在各节说明。
