生态扩展

HydroPilot

面向水文模型率定、评估与优化的配置优先运行框架,可与 UQPyL 协同工作。

HydroPilot

HydroPilot 是一个面向水文模型率定、评估与优化工作流的配置优先框架。

它主要解决模型执行、参数写入、结果提取和工作流编排之间的工程衔接问题,把这些环节组织成可复用的运行管线。

HydroPilot 适合做什么

如果你的工作已经不只是“把模型跑通一次”,而是需要围绕下面这些事情反复开展,HydroPilot 会更有用:

  • 参数率定
  • 目标函数和诊断项计算
  • 在不同项目之间复用同一套运行方式
  • 与优化或不确定性分析工具协同工作

它并不替代优化算法,而是把“模型如何运行、参数如何写入、结果如何提取”这一层做稳、做清楚、做成可复用的流程。

从这里开始

  • 架构 说明配置链路、运行链路和核心模块组织。
  • 命令行 概览校验、冒烟测试、参数写入和单次运行几个命令行入口。
  • Python 接口 介绍 SimModelBatchRunResult 以及公开的程序化入口。
  • UQPyL 集成 说明 UQPyLAdapter 如何把 HydroPilot 配置接入 UQPyL 工作流。
  • 示例 用来快速定位示例配置和起步路径。

常见使用方式

对大多数项目来说,HydroPilot 往往会按下面的顺序使用:

  1. 用一份紧凑配置描述工程、参数和输出
  2. 校验配置结构和模板展开结果
  3. 对真实模型做一次冒烟测试
  4. 通过 CLI 或 Python 执行一组或多组参数评估
  5. 如果需要优化或重复搜索,再接入 UQPyL

HydroPilot 的价值也正在这里:同一份配置可以从本地校验和测试,一直走到优化驱动的批量评估。

和 UQPyL 的关系

HydroPilot 和 UQPyL 的分工并不一样:

  • UQPyL 提供优化、不确定性量化、推断、校准和代理建模方法。
  • HydroPilot 提供面向水文模型的运行时执行层。
  • 当需要用 UQPyL 的算法驱动水文模型评估时,两者可以协同使用。

更直接一点说:

  • 如果你的问题是“怎样把这个水文模型稳定地跑起来,并且能重复评估”,核心层是 HydroPilot
  • 如果你的问题是“怎样在这个运行层之上做搜索、优化或分析”,算法层就是 UQPyL

HydroPilot 提供什么

  • 配置驱动的工作流定义方式
  • 对 SWAT、SWAT+、XAJ 等水文模型模板的支持
  • 用于校验、测试、参数写入和单次运行的命令行工具
  • SimModelBatchRunResultUQPyLAdapter 为核心的 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 官网中的一个专题区呈现,后续可以在不打乱主站结构的前提下继续补充和扩展。