状态管理¶
编排器在多阶段执行过程中维护和传递求解状态。
状态生命周期¶
stateDiagram-v2
[*] --> Initialized: 创建编排器
Initialized --> Running: 开始执行
Running --> PhaseComplete: 阶段完成
PhaseComplete --> Running: 下一阶段
Running --> Fallback: 策略失败
Fallback --> Running: 回退后重试
Running --> Complete: 所有阶段完成
Complete --> [*]: 输出结果
状态内容¶
编排器维护的状态包括:
| 状态字段 | 类型 | 描述 |
|---|---|---|
best_solution |
Solution | 当前找到的最优解 |
best_objective |
float | 当前最优目标值 |
phase_results |
List[PhaseResult] | 各阶段的执行结果 |
elapsed_time |
float | 已用时间 |
remaining_budget |
float | 剩余时间预算 |
warm_start_state |
Dict | 热启动所需的求解器状态 |
状态合并¶
当多个求解器并行执行时,编排器需要合并它们的状态:
# 状态合并策略
merge_strategies = {
"best_objective": lambda states: min(states, key=lambda s: s.objective),
"union_solutions": lambda states: merge_all_solutions(states),
"weighted_average": lambda states: weighted_merge(states, weights)
}
回退机制¶
当某个阶段执行失败或超时未找到可行解时,编排器自动触发回退:
{
"fallback": {
"enabled": true,
"strategy": "portfolio",
"triggers": ["timeout", "no_feasible", "objective_degraded"],
"timeout_per_phase": 30
}
}
回退策略:
| 触发条件 | 回退动作 |
|---|---|
| 阶段超时 | 切换到更快的求解器 |
| 无可行解 | 放松约束,重新求解 |
| 目标值退化 | 回滚到上一阶段的最优解 |