HydroPilot

UQPyL 集成

UQPyL 集成

HydroPilot 提供 UQPyLAdapter,用来把 HydroPilot 配置接到 UQPyL 优化工作流里。

核心思路

UQPyLAdapter 会把一份 HydroPilot 配置包装成 UQPyL 的 Problem。这样一来,UQPyL 优化器就可以通过标准 Problem 接口调用 HydroPilot 的模型评估。

适配器映射了什么

  • 设计参数数量 -> nInput
  • 目标数量 -> nObj
  • 约束数量 -> nCon
  • 变量上下界 -> lbub
  • 变量类型 -> varTypevarSet

评估是怎么流动的

适配器内部会委托给 SimModel。实际流程大致如下:

text
UQPyL algorithm
  -> Problem.evaluate(X)
  -> UQPyLAdapter
  -> SimModel.run(X)
  -> HydroPilot runtime
  -> objective / constraint arrays

这样分层以后,职责会更清楚:

  • HydroPilot 负责模型执行、参数写入、输出提取和指标评估
  • UQPyL 负责优化算法、搜索策略和更高层的算法行为

基本用法

python
from UQPyL.optimization.soea import GA
from hydropilot.integrations import UQPyLAdapter

with UQPyLAdapter("config.yaml") as problem:
    algorithm = GA()
    result = algorithm.run(problem, seed=42)

如果你想更细地控制调用过程,也可以直接使用 evaluate(X)objFunc(X)conFunc(X)

什么时候适合用

它更适合下面这些场景:

  • 模型执行层更适合用 HydroPilot 表达
  • 搜索或分析算法更适合用 UQPyL 表达
  • 你希望把水文运行时问题和优化问题明确拆开

范围和边界

UQPyLAdapter 是桥接层,不是 HydroPilot 里的第二套分析系统。

它提供的是:

  • 一个兼容 UQPyL 的 Problem
  • 标准的目标和约束访问接口
  • 对 HydroPilot 运行时和配置系统的复用

它不提供的是:

  • UQPyL 算法本身
  • 针对具体优化器的收敛保证
  • HydroPilot 原生实现的 UQPyL 分析模块

建议继续阅读