A Real-World and Synthetic Benchmark Dataset for the Anaesthetist Rostering Problem
Description
This dataset provides a comprehensive benchmark for the Anaesthetist Rostering Problem (ARP), a two-phase healthcare workforce scheduling problem comprising monthly on-call (24-hour) and weekly daytime (office-hours) assignments across 84 concrete operational locations (7 monthly on-call and 77 weekly daytime). The dataset includes 6 months of anonymised real-world operational data (168 days, 31 December 2018 to 16 June 2019) from the Department of Anaesthesiology and Intensive Care at Hospital Canselor Tuanku Muhriz (HCTM), Universiti Kebangsaan Malaysia, covering 29 anaesthetists (eleven senior specialists, twelve junior specialists, six part-time locum anaesthetists). It also includes 30 synthetic scalability instances spanning 5 workforce sizes (16 to 58 permanent staff) by 6 horizon lengths (1, 2, 3, 6, 9, 12 months). The constraint model comprises 15 hard constraints and 26 soft constraints with empirically-calibrated penalty tier weights. Hard constraints cover qualification matrices, demand coverage, sole-coverage continuity, junior-bundle weekend coverage, and request fulfilment. Soft constraints implement dual-matrix fairness (cumulative overall and current-period), pre-public-holiday equity, multi-room operating theatre adjacency, junior-senior intensive care mixing, cross-phase shift consistency, and academic-clinical workload balance. Cross-month state propagation (previous-week solved roster, cumulative assignment matrix, cyclic next-month look-ahead) enables multi-month chained solving consistent with the actual hospital rostering workflow. The complete Java solver implementation is provided with backend abstractions for IBM ILOG CPLEX 22.1.1 and Google OR-Tools CP-SAT 9.12. Baseline benchmark results from both solvers are included for all instances. Use cases: algorithmic benchmarking for personnel rostering, evaluation of fairness mechanisms in healthcare scheduling, validation of multi-month scheduling formulations, and reproducible comparison of MILP versus constraint-programming approaches on a structurally complex real-world instance.
Files
Steps to reproduce
A. Real-world data (data/real-world/). Six months of anonymised rostering records (168 days, 29 anaesthetists, 31 Dec 2018 to 16 Jun 2019) were extracted from three operational spreadsheets at Hospital Canselor Tuanku Muhriz: the executed monthly roster, the non-clinical academic schedule, and the monthly preference request file. All identifiable information was removed; staff appear as anonymous codes (SE1–SE11, JU1–JU12, PT1–PT6). The spreadsheets were converted to a per-month CSV layout (34 files per month) by CsvGenerator (src/com/arp/v4/data/). Each month folder contains qualification matrix, demand, calendar, requests, executed Phase 1/Phase 2 solutions, and cross-month state (previous_week, previous_month, cum_after_mN, next_month_request). Cumulative state and previous-week roster from month i propagate as input to month i+1; cyclic look-ahead ties month 6 back to month 1. B. Synthetic data (data/synthetic/). Thirty instances spanning five workforce sizes (16, 24, 35, 47, 58 permanent staff) by six horizon lengths (1, 2, 3, 6, 9, 12 months) were generated by SyntheticBenchmarkRunner (src/com/arp/v4/synth/) with fixed random seeds, inheriting the structural properties of the real instance. manifest.csv enumerates all 30 instances. C. Reproducing benchmark results (output/). Compile against IBM ILOG CPLEX 22.1.1 and Google OR-Tools CP-SAT 9.12: javac -cp "lib/*" -d build src/com/arp/v4/**/*.java Run: java -cp "build;lib/*" com.arp.v4.solver.BenchmarkRunner2 output both 120 300 12 "*" "_runX" Arguments: output dir, backends, Phase 1 time limit s, Phase 2 time limit s, parallel workers, instance filter, suffix. Per-month results land in consolidated_results_jobX.csv; per-instance aggregates in benchmark_aggregate_jobX.csv. Compare against baseline jobs 1–5. Baseline feasibility across 680 runs is 99.12%. The 15 hard and 26 soft constraints with formulations and tier weights are documented in docs/constraint_reference.md/.pdf. D. Requirements. Java 11+, CPLEX 22.1.1 (free academic licence) or OR-Tools 9.12. 8+ CPU cores, 16 GB RAM, no GPU. Real-world headline ≈35–45 min per backend; full synthetic sweep ≈6–8 hours.
Institutions
- National University of MalaysiaSelangor, Bangi