UQPyL 集成
HydroPilot 提供 UQPyLAdapter,用来把 HydroPilot 配置接到 UQPyL 优化工作流里。
核心思路
UQPyLAdapter 会把一份 HydroPilot 配置包装成 UQPyL 的 Problem。这样一来,UQPyL 优化器就可以通过标准 Problem 接口调用 HydroPilot 的模型评估。
适配器映射了什么
- 设计参数数量 ->
nInput - 目标数量 ->
nObj - 约束数量 ->
nCon - 变量上下界 ->
lb和ub - 变量类型 ->
varType和varSet
评估是怎么流动的
适配器内部会委托给 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 分析模块
