dash-jsp-trainer / scripts /run_baselines.py
Vittal-M's picture
Trainer Space: download -> train -> push -> sleep
52c82e4
"""Run all 6 fixed dispatch rules on every available benchmark instance.
Output: results/baselines.csv with one row per (family, instance, rule).
"""
from __future__ import annotations
import argparse
from pathlib import Path
from dash_jsp.benchmarks import taillard, lawrence, dmu
from dash_jsp.eval.benchmark import MethodSpec, run_benchmark
from dash_jsp.heuristics.rules import ALL_RULES
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--data-dir", default="data")
parser.add_argument("--out", default="results/baselines.csv")
parser.add_argument(
"--families",
nargs="+",
default=["taillard", "lawrence", "dmu"],
choices=["taillard", "lawrence", "dmu"],
)
args = parser.parse_args()
data_dir = Path(args.data_dir)
instances = []
if "taillard" in args.families:
instances.extend(taillard.load_all(data_dir / "taillard"))
if "lawrence" in args.families:
instances.extend(lawrence.load_all(data_dir / "lawrence"))
if "dmu" in args.families:
instances.extend(dmu.load_all(data_dir / "dmu"))
methods = [
MethodSpec.from_fixed_rule(name, rule)
for name, rule in ALL_RULES.items()
]
print(f"Running {len(methods)} methods on {len(instances)} instances")
df = run_benchmark(methods, instances, seeds=[0])
out = Path(args.out)
out.parent.mkdir(parents=True, exist_ok=True)
df.to_csv(out, index=False)
print(f"Wrote {out} ({len(df)} rows)")
if __name__ == "__main__":
main()