跳转至

结果查看

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,这样在调试时更容易把节点和业务含义对应起来:

# 1. 建模时给变量命名,后续 trace 和调试更容易定位。
x = builder.int_var(default=0, lb=0, ub=1, name="open_north")

如果需要把节点 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 后端选择、降级或求解诊断

判断结果是否可用

通常按以下顺序检查:

  1. solution.feasible 是否为 True
  2. solution.status.value 是否符合预期。
  3. objective_values 是否存在目标值。
  4. solver_traces 是否有跳过、降级或失败记录。
  5. diagnostics 是否包含后端不可用或求解失败信息。

下一步