跳转至

钢卷排序示例

钢卷排序示例用于展示序列优化问题:给定钢卷属性和直接焊接规则,选择排序以减少不兼容切换。该主题同时提供黑盒评分模型、DAG 路径模型、默认求解 profile 和搜索归因脚本。

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

问题说明

  • 黑盒版本把焊接兼容性和切换次数封装为 Python 评分函数。
  • DAG 版本把部分路径结构显式建模,便于精确或混合路径接入。
  • 搜索归因脚本用于区分初始构造解、tabu/GA 搜索和扰动恢复分别贡献了多少质量。

目录结构

examples/steel/
  README.md
  steel_domain.py
  blackbox_model.py
  dag_path_model.py
  solve_profiles.py
  run_blackbox.py
  run_dag.py
  steel_blackbox_sequence.py
  steel_dag_sequence.py
  search_attribution.py
  data/
    steel_coils.json
scripts/
  run_steel_experiments.py
  run_steel_search_attribution.py

代码示例

from optagent import Orchestrator
from steel.blackbox_model import build_program
from steel.solve_profiles import build_blackbox_config
from steel.steel_domain import load_steel_instances

instance = load_steel_instances()["bundled_head40"]
program, sequence_node_id = build_program(instance)
result = Orchestrator().run(
    program,
    config=build_blackbox_config(mode="preset", budget_iterations=200, generation_limit=10, seed=0),
)
best_sequence = result.final_solution.variable_values[sequence_node_id]

运行

PYTHONPATH=. python examples/steel/steel_blackbox_sequence.py --instance toy --mode preset
PYTHONPATH=. python examples/steel/steel_dag_sequence.py --instance toy --mode preset
PYTHONPATH=. python examples/steel/steel_dag_sequence.py --instance bundled_head40 --mode exact
PYTHONPATH=. python scripts/run_steel_experiments.py --instance bundled_head40 --mode preset --seed 0 --seed 1
PYTHONPATH=. python scripts/run_steel_search_attribution.py --instance bundled --search-seed 11

注意事项

  • 可用公开实例包括 toybundled_head40bundled
  • 大实例的解质量和运行时间受 seed、预算和 profile 影响,评估时应记录命令参数。
  • 兼容入口 examples/blackbox/steel_transition_sequence.py 保留,但推荐使用 examples/steel/ 下的入口。