跳转至

资源流示例

资源流示例展示多阶段合同流、机器节点、物流边、库存和需求滚动之间的关系。该目录提供 CP-SAT 取向 formulation、MILP formulation、统一求解入口和滚动窗口 workflow。

https://github.com/Dongbox/optagent-examples/tree/main/examples/resource_flow

问题说明

同一份公开 case snapshot 可以用两种方式建模:

  • cp formulation:强调离散流量、整数约束和 CP-SAT 友好的重述。
  • milp formulation:强调代数线性约束,便于走 mathopt_mphighs_native

这类示例适合观察“业务工作流层”和“OptAgent 求解层”的边界:滚动窗口状态推进留在示例 workflow 中,单窗口模型交给 OptAgent。

目录结构

examples/resource_flow/
  README.md
  schema.py
  case_loader.py
  cp_builder.py
  milp_builder.py
  solve_case.py
  rolling.py
  original_bridge.py
  compare_original.py
  data/
    zj_case_cp_sat_p3.json.gz
    zj_case_mathopt_p3.json.gz

代码示例

from examples.resource_flow.case_loader import load_case
from examples.resource_flow.cp_builder import build_single_window_program
from optagent import Orchestrator

case = load_case(case_name="zj", formulation="cp", planning_period=3)
built = build_single_window_program(case.config, case.model_input, modeling_period=3, k=0)
result = Orchestrator().run(built.program)

运行

PYTHONPATH=. python examples/resource_flow/solve_case.py --formulation cp --summary-only
PYTHONPATH=. python examples/resource_flow/solve_case.py --formulation milp --summary-only
PYTHONPATH=. python examples/resource_flow/solve_case.py --formulation cp --mode hybrid
PYTHONPATH=. python examples/resource_flow/solve_case.py --formulation milp --mode exact --backend highs_native

注意事项

  • 默认 bundled 路径只依赖公开仓库内的数据文件。
  • compare_original.py 属于迁移比较脚本,需要额外的原始工程环境;普通公开运行不需要它。
  • 完整大实例 exact solve 时间和后端有关,建议先用 --summary-only 评估规模。
  • 滚动窗口当前是示例 workflow,不是核心 Orchestrator 的内置功能。