HydroPilot
HydroPilot 是一个面向水文模型率定、评估与优化工作流的配置优先框架。
它主要解决模型执行、参数写入、结果提取和工作流编排之间的工程衔接问题,把这些环节组织成可复用的运行管线。
HydroPilot 适合做什么
如果你的工作已经不只是“把模型跑通一次”,而是需要围绕下面这些事情反复开展,HydroPilot 会更有用:
- 参数率定
- 目标函数和诊断项计算
- 在不同项目之间复用同一套运行方式
- 与优化或不确定性分析工具协同工作
它并不替代优化算法,而是把“模型如何运行、参数如何写入、结果如何提取”这一层做稳、做清楚、做成可复用的流程。
如果你想先找一个可以直接照着改的起点,优先看示例页。
先打通命令行先做校验和冒烟测试,确认工程、参数和输出链路是通的。
进入脚本调用当你需要重复评估时,再转向 `SimModel` 和 Python 接口。
接入优化流程当 HydroPilot 需要被算法驱动时,再通过 `UQPyLAdapter` 接入 UQPyL。
从这里开始
- 架构 说明配置链路、运行链路和核心模块组织。
- 命令行 概览校验、冒烟测试、参数写入和单次运行几个命令行入口。
- Python 接口 介绍
SimModel、BatchRunResult以及公开的程序化入口。 - UQPyL 集成 说明
UQPyLAdapter如何把 HydroPilot 配置接入 UQPyL 工作流。 - 示例 用来快速定位示例配置和起步路径。
常见使用方式
对大多数项目来说,HydroPilot 往往会按下面的顺序使用:
- 用一份紧凑配置描述工程、参数和输出
- 校验配置结构和模板展开结果
- 对真实模型做一次冒烟测试
- 通过 CLI 或 Python 执行一组或多组参数评估
- 如果需要优化或重复搜索,再接入 UQPyL
HydroPilot 的价值也正在这里:同一份配置可以从本地校验和测试,一直走到优化驱动的批量评估。
和 UQPyL 的关系
HydroPilot 和 UQPyL 的分工并不一样:
UQPyL提供优化、不确定性量化、推断、校准和代理建模方法。HydroPilot提供面向水文模型的运行时执行层。- 当需要用 UQPyL 的算法驱动水文模型评估时,两者可以协同使用。
更直接一点说:
- 如果你的问题是“怎样把这个水文模型稳定地跑起来,并且能重复评估”,核心层是 HydroPilot
- 如果你的问题是“怎样在这个运行层之上做搜索、优化或分析”,算法层就是 UQPyL
HydroPilot 提供什么
- 配置驱动的工作流定义方式
- 对 SWAT、SWAT+、XAJ 等水文模型模板的支持
- 用于校验、测试、参数写入和单次运行的命令行工具
- 以
SimModel、BatchRunResult和UQPyLAdapter为核心的 Python 接口
当前支持的模型路径
目前 HydroPilot 先围绕三类常见模型路径来组织内容:
SWAT 2012
适合经典 SWAT TxtInOut 工程,希望通过模板方式处理参数写入和输出提取的场景。
见 SWAT 2012。
SWAT+
适合需要遵循 SWAT+ 工程结构,并通过 calibration.cal 写参数的场景。
见 SWAT+。
XAJ
适合参数和输出都以 CSV 形式组织,而不是采用 SWAT 定宽文本文件的模型工程。
见 XAJ。
按模型选择入口
如果你已经知道自己的工程属于哪一类模型,直接进入对应页面会更高效:
- SWAT 2012:适合经典
TxtInOut工程,以及围绕率定、敏感性分析和目标函数构建的工作流 - SWAT+:适合基于 SWAT+ 工程结构、需要
calibration.cal写参与输出提取的场景 - XAJ:适合参数与输出都围绕 CSV 组织、需要按
RIVID管理数据定位的场景
建议先看哪一页
如果你不确定从哪里开始,可以按下面的方式选择:
- 想先找一个能跑起来的起点,就看 示例
- 想先把配置校验和测试打通,就看 命令行
- 想直接在脚本里调用评估,就看 Python 接口
- 想把 HydroPilot 接到优化算法上,就看 UQPyL 集成
- 想先理解内部执行结构,再决定如何扩展,就看 架构
当前状态
目前 HydroPilot 先以 UQPyL 官网中的一个专题区呈现,后续可以在不打乱主站结构的前提下继续补充和扩展。
