ai-for-decision-making-tue/Job_Shop_Scheduling_Benchmark_Environments_and_Instances

A benchmarking repo with various solution methods to various machine scheduling problems

Jupyter Notebook

212

104 commits

updated Sep 24, 2026

See the code

README

python License: GPLv3

Job Shop Scheduling Benchmark: Environments and Instances for Learning and Non-learning Methods

πŸ“– Overview:

This repository provides a comprehensive benchmarking environment for a variety of machine scheduling problems, including Job Shop Scheduling (JSP), Flow Shop Scheduling (FSP), Flexible Job Shop Scheduling (FJSP), FJSP with Assembly constraints (FAJSP), FJSP with Sequence-Dependent Setup Times (FJSP-SDST), and the online FJSP (with online job arrivals). It aims to be a centralized hub for researchers, practitioners, and enthusiasts interested in tackling machine scheduling challenges.

πŸ›  Solution Methods:

The repository includes exact, heuristic and learning based solution methods, each compatible with one or more machine scheduline problem variants:

Solution methodsTypeJSPFSPFJSPSDSTAJSPDynamic JSP
MILPExactβœ“βœ“βœ“βœ“βœ“βœ—
CP-SATExactβœ“βœ“βœ“βœ“βœ“βœ—
Dispatching RulesHeuristicβœ“βœ“βœ“βœ“βœ“βœ“
Genetic AlgorithmHeuristicβœ“βœ“βœ“βœ“βœ“βœ—
L2DDRLβœ“βœ“βœ—βœ—βœ—
FJSP-DRLDRLβœ“βœ“βœ“βœ—βœ—βœ“
DANIELDRLβœ“βœ“βœ“βœ—βœ—

πŸš€ How to use:

Here we provide some short examples on how to use the solution methods in this repository. For more detailed information and more examples, please refer to the tutorials here and here.

  1. Dispatching Rules:

from solution_methods.L2D import run_dispatching_rules
from solution_methods.helper_functions import load_job_shop_env, load_parameters

parameters = load_parameters("configs/dispatching_rules.toml")
jobShopEnv = load_job_shop_env(parameters['instance'].get('problem_instance'))

makespan, jobShopEnv = run_dispatching_rules(jobShopEnv, **parameters)
  1. Genetic Algorithm:
from solution_methods.helper_functions import load_job_shop_env, load_parameters
from solution_methods.GA.run_GA import run_GA
from solution_methods.GA.src.initialization import initialize_run

parameters = load_parameters("configs/genetic_algorithm.toml")
jobShopEnv = load_job_shop_env(parameters['instance'].get('problem_instance'))

population, toolbox, stats, hof = initialize_run(jobShopEnv, **parameters)
makespan, jobShopEnv = run_GA(jobShopEnv, population, toolbox, stats, hof, **parameters)  
  1. L2D (DRL-based):
from solution_methods.L2D.src.run_L2D import run_L2D
from solution_methods.helper_functions import load_job_shop_env, load_parameters
 
parameters = load_parameters("configs/L2D.toml")
jobShopEnv = load_job_shop_env(parameters['instance'].get('problem_instance'))
makespan, jobShopEnv = run_L2D(jobShopEnv, **parameters)

πŸ–ΌοΈ Plotting:

We provide plotting functions to draw both the precedence relations between operationsand the Gantt chart for the job shop scheduling problems:

Precedence ConstraintsGantt Chart

πŸ—οΈ Repository Structure

The repository is structured to provide ease of use and flexibility:

  • Configs: Contains the configuration files for the solution methods.
  • Data: Contains the problem instances for benchmarking for different problem variants and data parsers for configuring the benchmarking instances in the scheduling environment.
  • Visualization: Contains the plotting functions for visualizing the results.
  • Scheduling Environment: Defines the core environment components (job, operation, machine, and jobShop). Also contains the simulationEnv for dynamic scheduling problems with online job arrivals.
  • Solution Methods: Contains the solution methods, including exact, heuristic, and learning-based approaches.

πŸ“„ Reference

For more detailed information, please refer to our paper. If you use this repository in your research, please consider citing the following paper:

Reijnen, R., Smit, I. G., Zhang, H., Wu, Y., Bukhsh, Z., & Zhang, Y. (2026). Job shop scheduling benchmark: Environments and instances for learning and non-learning methods. Annals of Mathematics and Artificial Intelligence, 1-31. https://doi.org/10.1007/s10472-026-10007-3

Or, using the following BibTeX entry:

@article{reijnen2026job,
  title={Job shop scheduling benchmark: Environments and instances for learning and non-learning methods},
  author={Reijnen, Robbert and Smit, Igor G and Zhang, Hongxiang and Wu, Yaoxin and Bukhsh, Zaharah and Zhang, Yingqian},
  journal={Annals of Mathematics and Artificial Intelligence},
  pages={1--31},
  year={2026},
  publisher={Springer}
}

A preprint of this paper is available or arXiv.

assembly
benchmarking
combinatorial-optimization
deep-reinforcement-learning
fjsp
flexible-job-shop-scheduling
job-shop-scheduling
jsp
machine-learning
python
setup-times

ai-for-decision-making-tue/Job_Shop_Scheduling_Benchmark_Environments_and_Instances

A benchmarking repo with various solution methods to various machine scheduling problems

Jupyter Notebook

212

104 commits

updated Sep 24, 2026

See the code

README

python License: GPLv3

Job Shop Scheduling Benchmark: Environments and Instances for Learning and Non-learning Methods

πŸ“– Overview:

This repository provides a comprehensive benchmarking environment for a variety of machine scheduling problems, including Job Shop Scheduling (JSP), Flow Shop Scheduling (FSP), Flexible Job Shop Scheduling (FJSP), FJSP with Assembly constraints (FAJSP), FJSP with Sequence-Dependent Setup Times (FJSP-SDST), and the online FJSP (with online job arrivals). It aims to be a centralized hub for researchers, practitioners, and enthusiasts interested in tackling machine scheduling challenges.

πŸ›  Solution Methods:

The repository includes exact, heuristic and learning based solution methods, each compatible with one or more machine scheduline problem variants:

Solution methodsTypeJSPFSPFJSPSDSTAJSPDynamic JSP
MILPExactβœ“βœ“βœ“βœ“βœ“βœ—
CP-SATExactβœ“βœ“βœ“βœ“βœ“βœ—
Dispatching RulesHeuristicβœ“βœ“βœ“βœ“βœ“βœ“
Genetic AlgorithmHeuristicβœ“βœ“βœ“βœ“βœ“βœ—
L2DDRLβœ“βœ“βœ—βœ—βœ—
FJSP-DRLDRLβœ“βœ“βœ“βœ—βœ—βœ“
DANIELDRLβœ“βœ“βœ“βœ—βœ—

πŸš€ How to use:

Here we provide some short examples on how to use the solution methods in this repository. For more detailed information and more examples, please refer to the tutorials here and here.

  1. Dispatching Rules:

from solution_methods.L2D import run_dispatching_rules
from solution_methods.helper_functions import load_job_shop_env, load_parameters

parameters = load_parameters("configs/dispatching_rules.toml")
jobShopEnv = load_job_shop_env(parameters['instance'].get('problem_instance'))

makespan, jobShopEnv = run_dispatching_rules(jobShopEnv, **parameters)
  1. Genetic Algorithm:
from solution_methods.helper_functions import load_job_shop_env, load_parameters
from solution_methods.GA.run_GA import run_GA
from solution_methods.GA.src.initialization import initialize_run

parameters = load_parameters("configs/genetic_algorithm.toml")
jobShopEnv = load_job_shop_env(parameters['instance'].get('problem_instance'))

population, toolbox, stats, hof = initialize_run(jobShopEnv, **parameters)
makespan, jobShopEnv = run_GA(jobShopEnv, population, toolbox, stats, hof, **parameters)  
  1. L2D (DRL-based):
from solution_methods.L2D.src.run_L2D import run_L2D
from solution_methods.helper_functions import load_job_shop_env, load_parameters
 
parameters = load_parameters("configs/L2D.toml")
jobShopEnv = load_job_shop_env(parameters['instance'].get('problem_instance'))
makespan, jobShopEnv = run_L2D(jobShopEnv, **parameters)

πŸ–ΌοΈ Plotting:

We provide plotting functions to draw both the precedence relations between operationsand the Gantt chart for the job shop scheduling problems:

Precedence ConstraintsGantt Chart

πŸ—οΈ Repository Structure

The repository is structured to provide ease of use and flexibility:

  • Configs: Contains the configuration files for the solution methods.
  • Data: Contains the problem instances for benchmarking for different problem variants and data parsers for configuring the benchmarking instances in the scheduling environment.
  • Visualization: Contains the plotting functions for visualizing the results.
  • Scheduling Environment: Defines the core environment components (job, operation, machine, and jobShop). Also contains the simulationEnv for dynamic scheduling problems with online job arrivals.
  • Solution Methods: Contains the solution methods, including exact, heuristic, and learning-based approaches.

πŸ“„ Reference

For more detailed information, please refer to our paper. If you use this repository in your research, please consider citing the following paper:

Reijnen, R., Smit, I. G., Zhang, H., Wu, Y., Bukhsh, Z., & Zhang, Y. (2026). Job shop scheduling benchmark: Environments and instances for learning and non-learning methods. Annals of Mathematics and Artificial Intelligence, 1-31. https://doi.org/10.1007/s10472-026-10007-3

Or, using the following BibTeX entry:

@article{reijnen2026job,
  title={Job shop scheduling benchmark: Environments and instances for learning and non-learning methods},
  author={Reijnen, Robbert and Smit, Igor G and Zhang, Hongxiang and Wu, Yaoxin and Bukhsh, Zaharah and Zhang, Yingqian},
  journal={Annals of Mathematics and Artificial Intelligence},
  pages={1--31},
  year={2026},
  publisher={Springer}
}

A preprint of this paper is available or arXiv.

assembly
benchmarking
combinatorial-optimization
deep-reinforcement-learning
fjsp
flexible-job-shop-scheduling
job-shop-scheduling
jsp
machine-learning
python
setup-times