The flexible jobshop scheduling problem benchmark library

The FJSPLib is a benchmark of flexible jobshop problems with their best known solutions to date. Problems come from a variety of publications (all referenced). The best solutions known to date (upper bound and lower bound) are provided with the corresponding publication or engine that attained it.

The data and source code for the optimization models can be found in the Github repository This document is visible as a README.md in the Github folder flexible jobshop or as a webpage

Table of Contents


Overview of the flexible jobshop benchmark library

Flexible jobshop instances (332)

  • 10 instances mk from Brandimarte 1993
  • 4 x 66 instances edata rdata sdata and vdata from Hurink, Jurisch and Thole 1994
  • 18 instances #a from Dauzère-Pérès and Paulli 1994
  • 3 x 7 instances mt setb4 and seti5 from Chambers and Barnes 1996
  • 4 instances kacem from Kacem, Hammadi and Borne 2002
  • 20 instances fattahi from Fattahi, Mehrabad and Jolai 2007
  • 60 instances behnke from Behnke and Geiger 2012

The Hurinkm Jurisch and Thole instances are classic jobshop problems modified into flexible jobshops

Classification of the flexible jobshop instances

We use the following engines as references for the benchmark

  • IBM ILOG CP Optimizer : representative of the CP-scheduling family of engines
  • Google CP-SAT : representative of the lazy clause generation family of engines
  • OptalCP : representative of the lazy clause generation family of engines

We have dropped Cplex from the flexible jobshop tests due to poor performance of linear solvers as reported by multiple authors in the literature and confirmed by ourselves.

Instances are divided into

  • easy : solved to optimality (with proof) in 1 minute by at least 1 reference engine
  • medium : solved to optimality (with proof) in 1 hour by at least 1 reference engine
  • hard : solved to optimality (with proof) in > 1h by at least 1 reference engine
  • closed : allegedly solved to optimality. Most of the time the optimal solution is known because 2 different methods independently found equal upper and lower bounds. The problem moves to hard only when the optimality proof can be reproduced by a reference engine.
  • open : no proof of optimality

Currently the instances divide as follows

  • mk : 7 easy, 2 medium, 1 open
  • edata : 57 easy, 3 medium, 4 hard, 2 open
  • rdata : 43 easy, 5 medium, 6 closed, 12 open
  • vdata : 47 easy, 8 medium, 1 hard, 9 closed, 1 open
  • #a : 3 easy, 1 medium, 14 open
  • mt : 7 easy
  • setb4 : 7 easy
  • seti5 : 7 easy
  • kacem : 4 easy
  • fattahi : 20 easy
  • behnke : 15 easy, 12 medium, 33 open

Formats

The flexible jobshop format is a variant of the standard jobshop format.

First some terminology

  • a job is a sequence of operations done on an object
  • each operation has multiple options (also called modes)
    • in the case of the flexible jobshop a machine and a duration

Hence in a flexible jobshop file

  • each line represents a *job
  • the first number of the line is the number of operations in the job
  • then for each operation is given the number of options and as many pairs machine duration as there are options
#jobs #machines average_flexibility
#operations (#options (duration machine) (duration machine)) (#options (duration machine))

For instance fattahi1 is

2 2 2
2 2 1 25 2 37 2 1 32 2 24
2 2 1 45 2 65 2 1 21 2 65

meaning

  • (2 jobs) (2 machines) (average flexibility 2.0)
  • (2 operations) (2 options : (1,25) (2,37)) (2 options : (1,32) (2,24))
  • (2 operations) (2 options : (1,45) (2,65)) (2 options : (1,21) (2,65))


Publications (instances)

The instances come from the following publications

  • Brandimarte, P (1993). Routing and scheduling in a flexible job shop by tabu search. Annals of Operations research, 41(3), 157-183.

  • Hurink, J., Jurisch, B., & Thole, M. (1994). Tabu search for the job-shop scheduling problem with multi-purpose machines. Operations-Research-Spektrum, 15(4), 205-215.

  • Dauzère-Pérès, S., & Paulli, J. (1994). Solving the general multiprocessor job-shop scheduling problem.

  • Chambers, J. B., & Barnes, J. W. (1996). Flexible job shop scheduling by tabu search. The University of Texas, Austin, TX, Technical Report Series ORP96-09, Graduate Program in Operations Research and Industrial Engineering.

  • Kacem, I., Hammadi, S., & Borne, P. (2002). Pareto-optimality approach for flexible job-shop scheduling problems: hybridization of evolutionary algorithms and fuzzy logic. Mathematics and computers in simulation, 60(3-5), 245-276.

  • Fattahi, P., Saidi Mehrabad, M., & Jolai, F. (2007). Mathematical modeling and heuristic approaches to flexible job shop scheduling problems. Journal of intelligent manufacturing, 18(3), 331-342.

  • Behnke, D., & Geiger, M. J. (2012). Test instances for the flexible job shop scheduling problem with work centers Technical report, Helmut-Schmidt-Universität, Lehrstuhl für Betriebswirtschaftslehre, insbes. Logistik-Management, RR 12-01-01.


Flexible jobshop benchmark

The flexible jobshop benchmark problems have been collected from the literature from 1993 to 2012. Some are modified versions of JSPLIB jobshop problems, but some instances come from industrial problems. On this page we keep track of the best known solutions (BKS) and classify the instances based on difficulty.

An instance is considered

  • easy if it is solved to optimality by a reference engine in < 1 minute
  • medium if it is solved to optimality by a reference engine in < 1h
  • hard if it is solved to optimality by a reference engine in > 1h
  • closed if the combination of upper and lower bounds found in the literature allows concluding the value of the optimal solution is known
  • open otherwise


For each instance we indicate the publication or engine that reaches that bound (lower or upper). When reporting the results:

  • we give priority to engines over publications because of reproductibility of the results
  • we give priority to the fastest engine to attain the bound
  • when an engine attains a bound previously reported in the literature, we attribute the bound to the engine and remove the correponding paper from the list of relevant references

Other databases keep instead the first publication or method to have achieved that bound for historical reference. This work instead is meant for engine and algorithm developers to have means of reproducing the claimed results for comparison.

Best known solutions

If you visualize the markdown in Visual Studio Code you will have colors !

Brandimarte (1993)

InstanceSizeProblemLBUBTypeSolved by
mk0110 x 6fjsp4040easyOptalCP < 1 min
mk0210 x 6fjsp2626easyOptalCP < 1 min
mk0315 x 8fjsp204204easyOptalCP < 1 min
mk0415 x 8fjsp6060easyOptalCP < 1 min
mk0515 x 4fjsp172172easyOptalCP < 1 min
mk0610 x 15fjsp5757mediumOptalCP < 1h
mk0720 x 5fjsp139139mediumOptalCP < 1h
mk0820 x 10fjsp523523easyOptalCP < 1 min
mk0920 x 10fjsp307307easyOptalCP < 1 min
mk1020 x 15fjsp189193openQuintiq / Quintiq
mk1130 x 5fjsp608612openOptalCP
mk1230 x 10fjsp508508easyOptalCP < 1 min
mk1330 x 10fjsp353391openCPO / OptalCP
mk1430 x 15fjsp694694easyOptalCP < 1 min
mk1530 x 15fjsp333333hardOptalCP in 2h

Instances mk11 to mk15 are present in the supplementary material of Test Instances for the Flexible Job Shop Scheduling Problem with Work Centers but absent of other problem repositories

Hurink, Jurisch and Thole (1994)

The problems in this benchmark are modified versions of the corresponding jobshop problems. They are divided into

  • sdata : each operation can be assigned to a single machine (jobshop)
  • edata : a few operations can be assigned to many machines
  • rdata : most operations can be assigned to a few machines
  • vdata : all operation can be assigned to many machines
InstanceSizesdataedatardatavdataSolved by
abz510 x 1012341167954859OptalCP
abz610 x 10943925807742OptalCP
abz720 x 15656604 / 610497 / 522492OptalCP, CPO2013 / Quintiq, CdGKGC2025 / DLLSXG2019, Quintiq / Quintiq
abz820 x 15667625 / 636509 / 535506 / 507OptalCP, CPO2013 / Quintiq, CdGKGC2025 / DLLSXG2019, OptalCP / Quintiq
abz920 x 15678644517 / 536497OptalCP, CPO2013 / CPO2013, CPO2013 / Quintiq, OptalCP / Quintiq
InstanceSizesdataedatardatavdataSolved by
car111 x 57038617650345005OptalCP, OptalCP / Quintiq
car213 x 47166632759855929OptalCP
car312 x 57312685656225597OptalCP, Quintiq / Quintiq
car414 x 48003778965146514OptalCP
car510 x 67702722956154909OptalCP, OptalCP / CdGKGC2025
car68 x 98313799061475486OptalCP
car77 x 76558612344254281OptalCP
car88 x 88264768956924613OptalCP
InstanceSizesdataedatardatavdataSolved by
la0110 x 5666609570570OptalCP
la0210 x 5655655529529OptalCP
la0310 x 5597550477477OptalCP
la0410 x 5590568502502OptalCP
la0510 x 5593503457457OptalCP
la0615 x 5926833799799OptalCP
la0715 x 5890762749749OptalCP
la0815 x 5863845765765OptalCP
la0915 x 5951878853853OptalCP
la1015 x 5958866804804OptalCP
la1120 x 51222110310711071OptalCP
la1220 x 51039960936936OptalCP
la1320 x 51150105310381038OptalCP
la1420 x 51292112310701070OptalCP
la1520 x 51207111110891089OptalCP
la1610 x 10945892717717OptalCP
la1710 x 10784707646646OptalCP
la1810 x 10848842666663OptalCP
la1910 x 10842796700617OptalCP
la2010 x 10902857756756OptalCP
la2115 x 1010461009809 / 825800OptalCP, CdGKGC2025 / Quintiq
la2215 x 10927880745 / 753733OptalCP, CdGKGC2025 / DLLSXG2019, OptalCP / CPO2013
la2315 x 101032950820 / 831809OptalCP, CdGKGC2025 / DLLSXG2019, OptalCP / Quintiq
la2415 x 10935908780 / 795773OptalCP, CdGKGC2025 / DLLSXG2019, OptalCP / Quintiq
la2515 x 10977936771 / 779751OptalCP, CdGKGC2025 / DLLSXG2019, OptalCP / Quintiq
la2620 x 10121811061056 / 10571052OptalCP, MG2000 / Quintiq
la2720 x 101235118110851084OptalCP, MG2000 / Quintiq
la2820 x 10121611421075 / 10761069OptalCP, CPO2013, MG2000 / Quintiq
la2920 x 1011521107993 / 994993OptalCP, CPO2013, OptalCP / Quintiq, OptalCP / Quintiq
la3020 x 10135511881068 / 10711068OptalCP, CPO2013, OptalCP / Quintiq, OptalCP / Quintiq
la3130 x 101784153215201520OptalCP
la3230 x 101850169816571657OptalCP, OptalCP / Quintiq, OptalCP / Quintiq
la3330 x 101719154714971497OptalCP, OptalCP / Quintiq, OptalCP / MG2000
la3430 x 101721159915351535OptalCP, OptalCP / Quintiq,
la3530 x 101888173615491549OptalCP, OptalCP / Quintiq
la3615 x 15126811601023948OptalCP
la3715 x 15139713971062986OptalCP
la3815 x 1511961141954943OptalCP
la3915 x 15123311841011922OptalCP
la4015 x 1512221144955955OptalCP
InstanceSizesdataedatardatavdataSolved by
ft066 x 655554747OptalCP
ft1010 x 10930871686655OptalCP
ft2020 x 51165108810221022OptalCP
InstanceSizesdataedatardatavdataSolved by
orb110 x 101059977746695OptalCP
orb210 x 10888865696620OptalCP
orb310 x 101005951712648OptalCP
orb410 x 101005984753753OptalCP
orb510 x 10887842639584OptalCP
orb610 x 101010958754715OptalCP
orb710 x 10397389302275OptalCP
orb810 x 10899894639573OptalCP
orb910 x 10934933694659OptalCP
orb1010 x 10944933742681OptalCP

Dauzère-Pérès and Paulli (1994)

InstanceSizeProblemLBUBTypeSolved by
01a10 x 5fjsp25052505easyOptalCP < 1 min
02a10 x 5fjsp22282228easyOptalCP < 1 min
03a10 x 5fjsp22282228easyOptalCP < 1 min
04a10 x 5fjsp25032503easyOptalCP < 1 min
05a10 x 5fjsp21952199openlb CdGKGC2025 / ub CdGKGC2025
06a10 x 5fjsp21642169openlb CdGKGC2025 / ub CdGKGC2025
07a15 x 8fjsp22162254openlb CPO2013 / ub DLLSXG2019
08a15 x 8fjsp20612061closedlb HHHL2010 / ub Quintiq
09a15 x 8fjsp20612061mediumOptalCP < 1h
10a15 x 8fjsp22122241openlb CPO2013 / ub Quintiq
11a15 x 8fjsp20192037openlb CdGKGC2025 / ub Quintiq
12a15 x 8fjsp19691984openlb OptalCP / ub Quintiq
13a20 x 10fjsp22062236openlb CdGKGC2025 / ub DLLSXG2019
14a20 x 10fjsp21612161closedlb HHHL2010 / ub Quintiq
15a20 x 10fjsp21612161closedlb HHHL2010 / ub Quintiq
16a20 x 10fjsp22022231openlb CdGKGC2025 / ub Quintiq
17a20 x 10fjsp20892105openlb CdGKGC2025 / ub Quintiq
18a20 x 10fjsp20572070openlb OptalCP / ub Quintiq

Chambers and Barnes (1996)

InstanceSizeProblemLBUBTypeSolved by
mt10c110 x 11fjsp927927easyOptalCP < 1 min
mt10cc10 x 12fjsp908908easyOptalCP < 1 min
mt10x10 x 11fjsp918918easyOptalCP < 1 min
mt10xx10 x 12fjsp918918easyOptalCP < 1 min
mt10xxx10 x 13fjsp918918easyOptalCP < 1 min
mt10xy10 x 12fjsp905905easyOptalCP < 1 min
mt10xyz10 x 13fjsp847847easyOptalCP < 1 min
mtb4c915 x 11fjsp914914easyOptalCP < 1 min
setb4cc15 x 12fjsp907907easyOptalCP < 1 min
setb4x15 x 11fjsp925925easyOptalCP < 1 min
setb4xx15 x 12fjsp925925easyOptalCP < 1 min
setb4xxx15 x 13fjsp925925easyOptalCP < 1 min
setb4xy15 x 12fjsp910910easyOptalCP < 1 min
setb4xyz15 x 13fjsp902902easyOptalCP < 1 min
seti5c1215 x 16fjsp11691169easyOptalCP < 1 min
seti5cc15 x 17fjsp11351135easyOptalCP < 1 min
seti5x15 x 16fjsp11981198easyOptalCP < 1 min
seti5xx15 x 17fjsp11941194easyOptalCP < 1 min
seti5xxx15 x 18fjsp11941194easyOptalCP < 1 min
seti5xy15 x 17fjsp11351135easyOptalCP < 1 min
seti5xyz15 x 18fjsp11251125easyOptalCP < 1 min

Kacem, Hammadi and Borne (2002)

InstanceSizeProblemLBUBTypeSolved by
kacem14 x 6fjsp1111easyOptalCP < 1 min
kacem210 x 7fjsp1111easyOptalCP < 1 min
kacem310 x 10fjsp77easyOptalCP < 1 min
kacem415 x 10fjsp1111easyOptalCP < 1 min

Fattahi, Mehrabad and Jolai (2007)

InstanceSizeProblemLBUBTypeSolved by
fattahi12 x 2fjsp6666easyOptalCP < 1 min
fattahi22 x 2fjsp107107easyOptalCP < 1 min
fattahi33 x 2fjsp221221easyOptalCP < 1 min
fattahi43 x 2fjsp355355easyOptalCP < 1 min
fattahi53 x 2fjsp119119easyOptalCP < 1 min
fattahi63 x 2fjsp320320easyOptalCP < 1 min
fattahi73 x 5fjsp397397easyOptalCP < 1 min
fattahi83 x 4fjsp253253easyOptalCP < 1 min
fattahi93 x 3fjsp210210easyOptalCP < 1 min
fattahi104 x 5fjsp516516easyOptalCP < 1 min
fattahi115 x 6fjsp468468easyOptalCP < 1 min
fattahi125 x 7fjsp446446easyOptalCP < 1 min
fattahi136 x 7fjsp466466easyOptalCP < 1 min
fattahi147 x 7fjsp554554easyOptalCP < 1 min
fattahi157 x 7fjsp514514easyOptalCP < 1 min
fattahi168 x 7fjsp634634easyOptalCP < 1 min
fattahi178 x 7fjsp879879easyOptalCP < 1 min
fattahi189 x 8fjsp884884easyOptalCP < 1 min
fattahi1911 x 8fjsp10551055easyOptalCP < 1 min
fattahi2012 x 8fjsp11961196easyOptalCP < 1 min

Behnke and Geiger (2012)

InstanceSizeProblemLBUBTypeSolved by
behnke110 x 20fjsp9090easyOptalCP < 1 min
behnke210 x 20fjsp9191easyOptalCP < 1 min
behnke310 x 20fjsp9191easyOptalCP < 1 min
behnke410 x 20fjsp9797easyOptalCP < 1 min
behnke510 x 20fjsp9191easyOptalCP < 1 min
behnke620 x 20fjsp125125mediumOptalCP < 1h
behnke720 x 20fjsp89124openOptalCP
behnke820 x 20fjsp123123mediumOptalCP < 1h
behnke920 x 20fjsp125125mediumOptalCP < 1h
behnke1020 x 20fjsp127127mediumOptalCP < 1h
behnke1150 x 20fjsp163228openOptalCP
behnke1250 x 20fjsp157219openOptalCP
behnke1350 x 20fjsp160229openOptalCP
behnke1450 x 20fjsp164230openOptalCP
behnke1550 x 20fjsp159228openOptalCP
behnke16100 x 20fjsp327412openOptalCP
behnke17100 x 20fjsp320401openOptalCP
behnke18100 x 20fjsp321396openOptalCP
behnke19100 x 20fjsp323400openOptalCP
behnke20100 x 20fjsp322398openOptalCP
behnke2110 x 40fjsp8585easyOptalCP < 1 min
behnke2210 x 40fjsp8787easyOptalCP < 1 min
behnke2310 x 40fjsp8585easyOptalCP < 1 min
behnke2410 x 40fjsp8787easyOptalCP < 1 min
behnke2510 x 40fjsp8787easyOptalCP < 1 min
behnke2620 x 40fjsp113113mediumOptalCP < 1h
behnke2720 x 40fjsp122122mediumOptalCP < 1h
behnke2820 x 40fjsp114114mediumOptalCP < 1h
behnke2920 x 40fjsp76117openOptalCP
behnke3020 x 40fjsp120120mediumOptalCP < 1h
behnke3150 x 40fjsp85226openOptalCP
behnke3250 x 40fjsp79224openOptalCP
behnke3350 x 40fjsp80224openOptalCP
behnke3450 x 40fjsp80223openOptalCP
behnke3550 x 40fjsp82214openOptalCP
behnke36100 x 40fjsp152388openOptalCP
behnke37100 x 40fjsp153391openOptalCP
behnke38100 x 40fjsp151389openOptalCP
behnke39100 x 40fjsp153389openOptalCP
behnke40100 x 40fjsp156419openOptalCP
behnke4110 x 60fjsp8787easyOptalCP < 1 min
behnke4210 x 60fjsp8787easyOptalCP < 1 min
behnke4310 x 60fjsp8686easyOptalCP < 1 min
behnke4410 x 60fjsp8484easyOptalCP < 1 min
behnke4510 x 60fjsp8787easyOptalCP < 1 min
behnke4620 x 60fjsp114114mediumOptalCP < 1h
behnke4720 x 60fjsp117117mediumOptalCP < 1h
behnke4820 x 60fjsp78125openOptalCP
behnke4920 x 60fjsp113113mediumOptalCP < 1h
behnke5020 x 60fjsp123123mediumOptalCP < 1h
behnke5150 x 60fjsp77218openOptalCP
behnke5250 x 60fjsp81212openOptalCP
behnke5350 x 60fjsp76215openOptalCP
behnke5450 x 60fjsp81223openOptalCP
behnke5550 x 60fjsp79223openOptalCP
behnke56100 x 60fjsp99390openOptalCP
behnke57100 x 60fjsp99390openOptalCP
behnke58100 x 60fjsp100397openOptalCP
behnke59100 x 60fjsp99398openOptalCP
behnke60100 x 60fjsp101402openOptalCP

Publications (best known solutions)

The upper and lower bounds come from

  • MG2000 (4 bounds in la) : M. Mastrolilli, L. Gambardella, Effective neighbourhood functions for the flexible job shop problem, Journal of Scheduling 3 (2000) 3–20

  • Quintiq (37 bounds in mk, #a, abz, car and la) : Quintiq http://www.quintiq.com/optimization/fjssp-world-records.html (2013) - this site doesn’t exist anymore

  • CPO2013 (11 bounds in #a, abz and la) : Jean-François Puget Solving flexible job shop scheduling problems (cp optimizer 12.6) https://www.ibm.com/developerworks/community/blogs/jfp/entry/solving_flexible_job_shop_scheduling_problems?lang=en (2013) - this site doesn’t exist anymore

  • HHHL2010 (3 bounds in #a) : A. B. Hmida, M. Haouari, M.-J. Huguet, P. Lopez, Discrepancy search for the flexible job shop scheduling problem, Computers & Operations Research 37 (12) (2010) 2192–2201

  • DLLSXG2019 (8 bonds in #a, abz, car and la ) : J. Ding, Z. Lu, C.-M. Li, L. Shen, L. Xu, F. Glover (2019) A two-individual based evolutionary algorithm for the flexible job shop scheduling problem, in: Proceedings of the AAAI Conference on Artificial Intelligence, Vol. 33, 2019, pp. 2262–2271

  • CdGKGC2025 (16 bounds in #a, abz, car and la) : Marc-Emmanuel Coupvent des Graviers, Lotfi Kobrosly, Christophe Guettier, and Tristan Cazenave (2025). Updating Lower and Upper Bounds for the Job-Shop Scheduling Problem Test Instances CoRR abs/2504.16106

All other bounds were found with OptalCP