跳转至

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 主要影响 hybridexact 模式。
  • --backend highs_native 需要 highspy--backend mathopt_mp 通常需要 ortools
  • MPS 文件必须是可公开的小型或脱敏数据。