求解接口¶
OptAgent 的公开求解入口是 Orchestrator().run(...)。它接收建模阶段生成的 program,返回 OrchestratorResult。
最简单的求解方式¶
不传 preset 或 config 时,系统会根据问题特征自动选择内置策略:
from optagent import Orchestrator
# 1. 使用建模阶段生成的 program 发起求解。
result = Orchestrator().run(program)
# 2. final_solution 是读取状态、目标值和变量值的主入口。
solution = result.final_solution
这种方式适合快速验证模型是否能跑通。
使用内置预设¶
如果你知道问题类型,可以显式选择内置策略:
from optagent import BuiltInStrategyPreset, Orchestrator
# 1. 显式选择内置预设,避免每次都走自动推荐。
result = Orchestrator().run(
program,
preset=BuiltInStrategyPreset.SCHEDULING_EVOLUTIONARY_REPAIR,
)
也可以使用字符串形式:
使用显式配置¶
需要固定求解器、后端或阶段时,传入 OrchestratorConfig:
from optagent import (
ExactBackendName,
Orchestrator,
OrchestratorConfig,
OrchestratorSolver,
PhaseConfig,
)
# 1. 构造显式配置,强制使用 HiGHS 原生后端。
# 2. strict_backend=True 表示后端不满足时直接失败,而不是静默降级。
result = Orchestrator().run(
program,
config=OrchestratorConfig(
required_backend=ExactBackendName.HIGHS_NATIVE,
strict_backend=True,
phases=[
# 3. 定义一个 MILP 阶段,并给出阶段预算。
PhaseConfig(
name="milp_phase",
solver=OrchestratorSolver.MILP,
budget_iterations=20,
)
],
),
)
preset 和 config 不能同时传入。预设适合标准场景,显式配置适合需要固定求解路径的场景。
常见求解器类型¶
OrchestratorSolver |
用途 |
|---|---|
HEURISTIC |
启发式求解,适合大规模组合、黑盒或快速近似 |
CP_SAT |
CP-SAT 精确求解,适合调度和组合约束 |
MILP |
MILP 精确求解,适合线性、整数规划 |
如果需要固定具体后端,可使用 ExactBackendName:
ExactBackendName |
含义 |
|---|---|
CP_SAT_NATIVE |
OR-Tools CP-SAT 路径 |
MATHOPT_MP |
MathOpt 桥接路径 |
HIGHS_NATIVE |
HiGHS 原生路径 |
求解结果入口¶
run(...) 返回的结果对象包含:
| 字段 | 含义 |
|---|---|
final_solution |
最终统一解对象 |
solver_traces |
求解器阶段记录 |
phase_traces |
编排阶段记录 |
diagnostics |
后端或求解过程诊断 |
selected_preset_name |
实际选中的预设名 |
selected_preset_source |
预设来源 |
下一步¶
- 查看解对象字段:阅读 结果查看。
- 学习策略选择:阅读 策略配置。
- 查完整对象成员:阅读 Orchestrator API。