结果查看¶
Orchestrator().run(...) 返回 OrchestratorResult。日常使用时,最常读取的是 result.final_solution。
最常用字段¶
# 1. final_solution 是业务读取最终解的主入口。
solution = result.final_solution
# 2. 先看求解器、状态和可行性。
print(solution.solver_name)
print(solution.status.value)
print(solution.feasible)
# 3. 再看目标值和变量赋值。
print(solution.objective_values)
print(solution.variable_values)
| 字段 | 含义 |
|---|---|
solver_name |
产出最终解的求解器或阶段 |
status |
求解状态 |
feasible |
是否满足约束 |
objective_values |
目标函数值,按目标节点 id 组织 |
variable_values |
变量取值,按变量节点 id 组织 |
metadata |
后端或求解器附加信息 |
读取变量名¶
variable_values 以内部节点 id 为 key。建模时建议给变量设置 name,这样在调试时更容易把节点和业务含义对应起来:
如果需要把节点 id 映射回名称,可以结合建模阶段保存的变量引用,或在调试时查看 program 图中的节点 metadata。
查看预设选择¶
自动选择或预设求解后,可以查看实际命中的预设:
# 1. 查看自动推荐或显式预设最终命中了哪个 preset。
print(result.selected_preset_name)
print(result.selected_preset_source)
常见来源包括显式字符串、枚举预设或自动推荐。
查看阶段记录¶
多阶段求解或混合求解时,建议查看 trace:
# 1. 遍历每个顶层求解阶段的摘要。
for trace in result.solver_traces:
print(trace.phase_name, trace.solver_name, trace.status, trace.feasible)
常用记录包括:
| 字段 | 含义 |
|---|---|
solver_traces |
每个求解阶段的结果摘要 |
phase_traces |
阶段合并和状态交接记录 |
heuristic_subphase_traces |
启发式内部子阶段记录 |
evolutionary_generation_traces |
进化式策略的代际记录 |
diagnostics |
后端选择、降级或求解诊断 |
判断结果是否可用¶
通常按以下顺序检查:
solution.feasible是否为True。solution.status.value是否符合预期。objective_values是否存在目标值。solver_traces是否有跳过、降级或失败记录。diagnostics是否包含后端不可用或求解失败信息。
下一步¶
- 发起求解:阅读 求解接口。
- 调整策略:阅读 策略配置。
- 查完整返回对象:阅读 Orchestrator API。