MPS 示例¶
MPS 示例展示如何保留公开的 window_*.mps 数据文件,同时在运行时把 MPS 子集重建为 OptAgent ModelBuilder 定义,再比较 heuristic、hybrid 和 exact 路径。
https://github.com/Dongbox/optagent-examples/tree/main/examples/mps
问题说明¶
该目录面向已有 MPS 数据的迁移场景。核心问题不是手写一个新模型,而是把窗口模型转换为 OptAgent 变量、目标和约束,让后续可以接入 preset、后端选择和统一结果输出。
目录结构¶
examples/mps/
README.md
mps_builder.py
solve_window.py
resource_flow_heuristic_preset.json
resource_flow_hybrid_preset.json
resource_flow_exact_preset.json
window_0.mps
window_1.mps
...
代码示例¶
from pathlib import Path
from optagent import Orchestrator
program = build_program_from_mps(Path("examples/mps/window_0.mps"))
result = Orchestrator().run(program, preset="resource_flow_heuristic")
print(result.final_solution.status)
完整转换逻辑在 mps_builder.py,命令入口在 solve_window.py。
运行¶
PYTHONPATH=. python examples/mps/solve_window.py --window 0 --summary-only
PYTHONPATH=. python examples/mps/solve_window.py --window 0
PYTHONPATH=. python examples/mps/solve_window.py --window 0 --mode hybrid
PYTHONPATH=. python examples/mps/solve_window.py --window 0 --mode exact --backend highs_native
注意事项¶
- 先用
--summary-only查看变量、约束和系数规模,再执行完整求解。 - 默认 heuristic preset 不调用 MP backend;
--backend主要影响hybrid和exact模式。 --backend highs_native需要highspy,--backend mathopt_mp通常需要ortools。- MPS 文件必须是可公开的小型或脱敏数据。