钢卷排序示例¶
钢卷排序示例用于展示序列优化问题:给定钢卷属性和直接焊接规则,选择排序以减少不兼容切换。该主题同时提供黑盒评分模型、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
注意事项¶
- 可用公开实例包括
toy、bundled_head40和bundled。 - 大实例的解质量和运行时间受 seed、预算和 profile 影响,评估时应记录命令参数。
- 兼容入口
examples/blackbox/steel_transition_sequence.py保留,但推荐使用examples/steel/下的入口。