Skip to main content

A benchmarking harness for job-shop scheduling. HyperBench runs exact solvers, metaheuristics and evolved dispatching rules on the same benchmark instances across a SLURM cluster, then compares the schedules they produce.

Source on GitHub
  • Honours Project
  • Python + SLURM
  • Job-shop scheduling
A comparable run from input to schedule
  1. InstancesABZ, FT and LA benchmark sets
  2. ExperimentsSolver parameters and 30 seeds per combination
  3. ExecutionSLURM array jobs
  4. SchedulesDistinct results, Gantt charts and GIFs

The comparison problem

Job-shop scheduling orders jobs across machines to finish the last one as early as possible. It is NP-hard. I built HyperBench to run different methods on the same instances, vary their parameters, and inspect how the resulting schedules differ.

Methods in the harness

The bundled methods cover exact solving, dispatching, metaheuristics and evolved dispatching rules. A new solver can use the bundled simulation environment or bring its own. The included external algorithms retain credit to their original authors.

Exact and simple baselines

OR-Tools constraint programming; priority dispatching rules

Search methods

Genetic algorithm; simulated annealing; tabu search

Evolved rules

Genetic programming based on the Java GPJSS code by Yi Mei and Fangfang Zhang

A Gantt chart from HyperBench: OR-Tools constraint programming on the abz5 instance, ten machines by ten jobs, each job a colour across the machines it visits, finishing at 1,234.

From a grid to a schedule

A generator writes the parameter combinations and 30 seeds for each one across the ABZ, FT and LA instances. It prints a worst-case runtime before submission. SLURM array jobs run the experiments; post-processing selects distinct schedules and renders Gantt charts and GIFs.

This was completed in partial fulfilment of a Bachelor of Engineering with Honours at Victoria University of Wellington, supervised by Dr Yi Mei and Dr Fangfang Zhang.

Read the source