The jobshop scheduling problem benchmark library
JSPLib is a comprehensive benchmark library for the Job Shop Scheduling Problem (JSP), with three components:
- Instance repository — a centralized set of classic synthetic instances (ft, la, abz, orb, yn, swv, ta, dmu, tai) and industrial reentrant instances (dct, bel).
- Engine benchmark — a standardized 10-minute comparison of reference solvers (CPO, CP-SAT, OptalCP), measuring each engine’s optimality gap and deviation from the best known bounds.
- Best-known-solutions archive — a running record of the best upper/lower bounds ever found for each instance, from any source (published papers, meta-heuristics, or engine runs) — not limited to the three reference engines above.
The data and source code can be found in the GitHub repository. This document is visible as a README.md in the GitHub folder jobshop or as a webpage. Instances are now available in json or text formats. The standardized benchmark results for each engine on each instance are available in json format. And a json file of best-known solutions is also provided with a trace of the evolution of the bounds.
Table of Contents
- Jobshop instances
- Standardized benchmark of engines
- Analysis of relaxations and their strength
- Best-known solutions
Overview of the jsplib
JSPLib doesn’t make the distinction between jobshop and reentrant jobshop (anymore) because the jobshop is the sub-problem obtained when tasks are assigned to machines in a flexible-jobshop and those jobshops are intrinsically reentrant.
Random (322)
- 3 instances
ftfrom Fisher and Thompson 1963 - 40 instances
lafrom Lawrence 1984 - 5 instances
abzfrom Adams, Balas and Zawack 1988 - 10 instances
orbfrom Applegate and Cook 1991 - 20 instances
swvfrom Storer, Wu and Vaccari 1992 - 4 instances
ynfrom Yamada and Nakano 1992 - 80 instances
tafrom Taillard 1993 - 80 instances
dmufrom Demirkol, Mehta and Uzsoy 1998 - 80 instances
taifrom Da Col and Teppan 2022
Industrial (44)
- 24 instances
dctfrom Da Col and Teppan 2022 - 20 instances
belfrom Boveroux, Ernst and Louveaux 2025
Stress-test (10)
- 10 instances
tai1000 x 1000 from Da Col and Teppan 2022
Both random and industrial instances are synthetic, but industrial instances were generated to mimic the features of manufacturing plants. The stress-test instances are a subset of the random Taillard-like instances that primarily stress implementation quality (memory usage, data structures, and $O(n\log n)$ versus $O(n^2)$ algorithms) rather than the combinatorial optimization capabilities of the optimization engine.
Notes about the instances
FT versus MT
The FT instances are also known as MT instances because the 1963 paper by Fisher and Thompson was published in the book Industrial Scheduling, edited by Muth and Thompson. In particular, the problem mt10 (today named ft10) is famous for having remained open for more than 20 years. It was eventually solved by Carlier-Pinson in 1989 using a combination of Jackson’s preemptive schedule and branch-and-bound, an approach that can be seen as a predecessor of modern constraint-programming engines.
The current convention is to use, whenever possible, the names of the authors who introduced the instances. This is why the ft designation has been largely adopted, although older publications still use mt. Some problems derived from ft instances (for instance in flexible jobshop) still contain mt in their names.
History of the tai and dct instances
The tai instances were generated by Da Col and Teppan in 2022 in conjunction with the dct instances. The aim of their work was to conduct a controlled experiment on the scalability of optimization engines toward “industrial-scale problems”. The dct instances were designed to mimic features of manufacturing plants, whereas the tai instances were generated using the Taillard instance generator with $10^k$ jobs or machines. The investigation was mainly centered on the dct instances, and concluded that CP Optimizer scaled better than CP-SAT on this family. Results for the tai instances are available in the supplementary material of the 2022 paper.
All these instances were added to jsplib around 2024
dctinstances for their industrial interesttaiinstances because they stressed the CP engines in different ways
In particular
tai_100_100instances exhibit slow convergence: improving solutions can be found quickly and regularly, but the optimality gap is so large relative to the typical improvement that convergence to the optimum is extremely slowtai_1000_1000instances expose scalability limitations in different parts of optimization engines. CP-SAT can spend its entire run in preprocessing without entering branch-and-bound, while CP Optimizer and OptalCP required approximately one hour to complete their first dive and find an initial solution. By comparison, a hand-written greedy algorithm produced an initial solution in approximately one minute.
While both sets of instances reveal limitations in CP engines, we have classified the tai_1000_1000 as instances that primarily stress the engine implementation (data structures, etc) but tai_100_100 as instances that stress the optimization capabilities of the engine.
Best-known solutions for tai
Most of the 22 BKS reported in A Comprehensive Benchmark of Constraint Programming Solvers for the Makespan-Minimisation Job Shop Scheduling Problem [YWR2026] were already known at the time of publication:
- 6 better BKS had been reported by Da Col and Teppan (2022 cited in [YWR2026]) using CP Optimizer (tai_100_1000 problems 5,6,8,9,10 and tai_1000_100_5)
- 1 BKS reported as found by Hexaly is dominated by the solution reported as found by CP Optimizer (tai_100_1000_3 unless there is a typo in the paper)
- The 10 tai_1000_100 instances had already been closed by Petr Vilim using OptalCP, and the 10 results for tai_100_1000 superseded the MDPI results (published on optalcp.com 2026/04/21)
- The 2 BKS on tai_1000_1000 were genuinely unknown, superseded later by Petr Vilim with OptalCP (2026/07/09)
The BKS previously listed in JSPLib were themselves outdated. We were aware of the CP Optimizer and OptalCP results, but had not updated the database because we hoped to independently reproduce them before incorporating them.
This experience has led us to shorten the publication cycle for BKS updates and to use personal communications when appropriate for unpublished results. We may also introduce a validated tag in the future to distinguish results that have been independently reproduced or validated by JSPLib.
We have also tried to reconstruct, as accurately as possible, the correct chronology of the results in bks.json.
The lack of industrial instances
There is a gap in the existing literature regarding job shop scheduling benchmarks. Most commonly referenced instances, such as those proposed by Taillard et al., Adams et al. or Demirkol et al., focus on small and rectangular configurations where the number of machines equals the number of operations for each job. This structure does not adequately represent the complexities of larger, unbalanced scenarios commonly encountered in real-world manufacturing.
To address this gap, we first analyzed an industrial dataset from a real manufacturing facility that includes 51 machines, 828 jobs and a total of 6057 operations. In this instance, the workload distribution is unbalanced, with some machines heavily loaded while others are lightly used. Furthermore, the number of operations per job varies significantly, ranging from 1 to 20.
Boveroux, Ernst and Louveaux (2025)
We strongly encourage anyone who has access to real jobshop instances to share them with us and the scheduling community.
Classification of the jobshop instances
The reference engines used are
- IBM ILOG Cplex: a state-of-the-art MIP engine
- 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 CP-scheduling family of engines
We use the following criteria to classify instances by difficulty:
- toy: solved to optimality (with proof) in 1 minute by at least 1 reference engine
- easy: solved to optimality (with proof) in 10 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 more than 1 hour 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 is reclassified into toy, easy, medium or hard when a reference engine is able to reproduce the results.
- open: no proof of optimality
The 10-minute time limit reflects industrial workflows in which schedules are repeatedly regenerated after manual adjustments, parameter tuning, or changes in production data. Furthermore, problems that can be solved to optimality in less than 10 minutes are suitable as sub-problems in decomposition methods like Benders decomposition, Pareto frontier generation or rolling-horizon optimization.
What we expect from a scheduling engine is:
- prove optimality for as many instances as possible within the 10-minute limit
- for instances that cannot be closed in 10 minutes, to minimize the deviation from the best known upper and lower bounds
Why upper and lower bounds? Because a decomposition may use the scheduling problem as a dual certificate, not only a primal one.
Currently there are 462 instances
Random (322)
ft: 3 toyla: 39 toy, 1 easyabz: 2 toy, 1 easy, 1 medium, 1 hardorb: 10 toyswv: 9 toy, 2 easy, 3 medium, 3 hard, 3 openyn: 4 hardta: 42 toy, 6 easy, 12 medium, 8 hard, 12 opendmu: 19 toy, 5 easy, 6 medium, 5 hard, 45 opentai: 50 toy, 2 medium, 8 hard, 20 open
Industrial (44)
dct: 21 toy, 2 medium, 1 openbel: 20 toy
Stress-test (10)
tai: 10 open
Similar work
We have borrowed data and ideas from the following sources
Naderi, Ruiz and Roshanaei (2022)
Our work was inspired by the outstanding work of Naderi, Ruiz and Roshanaei Mixed-Integer Programming versus Constraint Programming for shop scheduling problems: New Results and Outlook [NRR2022] which compares CPO, Cplex, Gurobi and OR-tools on a benchmark of 6623 instances over 17 benchmarks with a timeout of 1h. They have made all the raw results available.
Jelke J. van Hoorn (2017)
Jelke J. van Hoorn collected and verified in 2017 all available upper and lower bounds for jobshop problems and published them in The Current state of bounds on benchmark instances of the job-shop scheduling problem. J Sched 21, 127–128 (2018). The online Appendix contains the data.
Oleg V. Shylo (2014 - present)
Since 2014, Optimizizer has been the reference in terms of published upper and lower bounds for jobshop problems. For each problem, the publication that explains the method used to find the upper or lower bound is given, and upper bounds are explicitly provided and verified. Optimizizer is a repository of published results, while jsplib.org is a repository of engine results. JSPLib is interested in non-engine results (meta-heuristics, etc) only to investigate what changes are needed for engines to surpass them! We do not report improved bounds to optimizizer (there are no peer-reviewed publications supporting them and we don’t consider “I ran an engine for a while because I am very patient” a scientific contribution). The authors of the benchmarked engines are invited to write papers about how their engines work, submit them for peer-review and report the bounds to Optimizizer.
There may be some lag between jsplib.org and optimizizer; always check both.
SchedulingLab (2022 - present)
SchedulingLab collects instances of various types of scheduling problems, including instances not referenced here.
Formats
There are three main formats, JSON, standard, and DaColTeppan for reentrant instances.
JSON format
The json format is more verbose but probably easier to use and contains meta-data about the instance that is useful for automating benchmarks. It is common between jobshop, reentrant jobshop, flexible jobshop and (flexible) jobshop with arbitrary precedences.
{
"instance": "la01",
"family": "la",
"family_long": "Lawrence",
"year": "1984",
"jobs": 10,
"machines": 5,
"operations":[
{"operation":0,"job":0,"step":0,"option":0,"machine":1,"duration":21},
{"operation":1,"job":0,"step":1,"option":0,"machine":0,"duration":53},
{"operation":2,"job":0,"step":2,"option":0,"machine":4,"duration":95},
{"operation":3,"job":0,"step":3,"option":0,"machine":3,"duration":55},
{"operation":4,"job":0,"step":4,"option":0,"machine":2,"duration":34},
{"operation":5,"job":1,"step":0,"option":0,"machine":0,"duration":21},
{"operation":6,"job":1,"step":1,"option":0,"machine":3,"duration":52},
{"operation":7,"job":1,"step":2,"option":0,"machine":4,"duration":16},
{"operation":8,"job":1,"step":3,"option":0,"machine":2,"duration":26},
...
{"operation":49,"job":9,"step":4,"option":0,"machine":0,"duration":96}
],
"precedences":[
{"before":0,"after":1,"label":0},
{"before":1,"after":2,"label":0},
{"before":2,"after":3,"label":0},
...
]
}
Standard format
#n #m
((machine duration ){m}\n){n}
For instance la01 on standard format is
10 5
1 21 0 53 4 95 3 55 2 34
0 21 3 52 4 16 2 26 1 71
3 39 4 98 1 42 2 31 0 12
1 77 0 55 4 79 2 66 3 77
0 83 3 34 2 64 1 19 4 37
1 54 2 43 4 79 0 92 3 62
3 69 4 77 1 87 2 87 0 93
2 38 0 60 1 41 3 24 4 83
3 17 1 49 4 25 0 44 2 98
4 77 3 79 2 43 1 75 0 96
DaColTeppan format (reentrant)
#n #m
((machine duration )+ -1 -1\n){n}
In the DaColTeppan format
- there can be any number of tasks per job
- there can be various tasks in a job running on the same machine (reentrance)
- the jobs end in a -1 -1
A modified instance of la01 would look like
10 5
1 21 0 53 -1 -1
0 21 3 52 4 16 2 26 1 71 4 95 3 55 2 34 -1 -1
3 39 4 98 1 42 2 31 0 12 79 2 66 3 77 -1 -1
1 77 0 55 4 -1 -1
0 83 -1 -1
1 54 2 43 4 79 0 92 3 62 3 34 2 64 1 19 4 37 -1 -1
3 69 4 77 1 87 2 87 0 93 41 3 24 4 83 -1 -1
2 38 0 60 1 -1 -1
3 17 1 49 4 25 0 44 2 98 -1 -1
4 77 3 79 2 43 1 75 0 96 -1 -1
Publications (instances)
The instances come from the following publications
-
H. Fisher, G.L. Thompson (1963), Probabilistic learning combinations of local job-shop scheduling rules, J.F. Muth, G.L. Thompson (eds.), Industrial Scheduling, Prentice Hall, Englewood Cliffs, New Jersey, 225-251.
-
Lawrence, S. (1984). Resource constrained project scheduling: An experimental investigation of heuristic scheduling techniques (Supplement). Graduate School of Industrial Administration, Carnegie-Mellon University.
-
Adams, J., Balas, E., & Zawack, D. (1988). The shifting bottleneck procedure for job shop scheduling. Management Science, 34(3), 391-401.
-
Applegate, D., & Cook, W. (1991). A computational study of the job-shop scheduling problem. ORSA J. Comput, 3, 49-51.
-
Storer, R. H., Wu, S. D., & Vaccari, R. (1992). New Search Spaces for Sequencing Problems with Application to Job Shop Scheduling. Management Science, 38(10), 1495–1509.
-
T. Yamada, R. Nakano (1992), A genetic algorithm applicable to large-scale job-shop instances, R. Manner, B. Manderick (eds.), Parallel instance solving from nature 2, North-Holland, Amsterdam, 281-290
-
Taillard, E. (1993). Benchmarks for basic scheduling problems. European Journal of Operational Research, 64(2), 278-285.
-
Dauzère-Pérès, S., & Paulli, J. (1994). Solving the general multiprocessor job-shop scheduling problem.
-
Demirkol, E., Mehta, S., & Uzsoy, R. (1998). Benchmarks for shop scheduling problems. European Journal of Operational Research, 109(1), 137-141.
-
Da Col, G., & Teppan, E. C. (2022). Industrial-size job shop scheduling with constraint programming. Operations Research Perspectives, 9, 100249.
-
Boveroux, L., Ernst, D., & Louveaux, Q. (2025). Investigating the Monte-Carlo Tree Search approach for the job shop scheduling problem. EURO Journal on Computational Optimization, 100118.
Standardized benchmark of engines
We track the State-Of-The-Art (SOTA) of optimization engines for scheduling with a standardized 10-minute benchmark of the reference engines
The engines that are benchmarked are
- IBM ILOG Cplex: a state-of-the-art MIP engine
- 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 CP-scheduling family of engines
A short history of the reference engines
IBM ILOG Cplex (1987 - present)
Cplex is a MIP engine founded by Robert Bixby in 1987, and acquired in 1997 by ILOG, subsequently acquired by IBM in 2009.
Like similar state-of-the-art MIP engines, Cplex features
- a presolve
- various LP algorithms (simplex, dual simplex, barrier)
- search strategies with learning (branching, restarts)
- a large collection of cuts
- primal heuristics
- conflict analysis adapted from SAT
- solution polishing before the time-limit
Improvements in complex software like Cplex are incremental, but we can broadly divide its evolution as follows
- Cplex 1-3 [1987-1994] LP improvements (simplex, dual simplex, interior points), basic presolve and branch-and-cut. Cplex 3.0 is a performance milestone due to its mature dual simplex.
- Cplex 6-7 [1998-2001] established what we would recognize today as a modern MIP (presolve + branch-and-cut + heuristics + learning) with a particular emphasis on cuts. Cplex 6.5 (1999) is considered by practitioners as a performance milestone.
- Cplex 9-11 [2003-2007] more emphasis on primal approaches: heuristics (RINS, Feasibility pump), search strategies (restart + node presolve), solution polishing, SAT-like conflict analysis. Cplex 11 is considered as a performance milestone.
- Cplex 11/12- [2007-] more cuts (GCD-based cuts, multi-commodity flow) sometimes mixed with heuristics (pump reduce) or search (conflict analysis), and systematic cutting plane filtering allowing a more aggressive usage of cuts.
From 2008, Bixby, Rothberg and Gu created Gurobi.
References
- Solving Real-World linear programs: a decade and more of progress (Robert Bixby - 2002)
- Mixed Integer Programming: Analyzing 12 Years of Progress.” In Facets of Combinatorial Optimization (Tobias Achterberg, Roland Wunderling - 2013)
IBM ILOG CP Optimizer (2007 - present)
CP Optimizer is a descendant of ILOG Solver developed over the years by Jean-François Puget, Jean-Charles Régin and later Laurent Perron and ILOG Scheduler developed by Claude Le Pape, Wim Nuijten and later Philippe Laborie. CP Optimizer (led by Paul Shaw, Laurent Perron and Philippe Laborie) merged the general CP engine and the specific scheduling add-on in a single engine, promoted the model-and-run approach and pioneered a new scheduling language (optional intervals, noOverlap, cumulative functions, etc.) that has become an industry standard.
From a technical perspective, CP Optimizer interleaves the following search methods
- Large Neighbourhood Search (Shaw et al.): tree-search based local search
- Iterative diving (designed by Philippe Laborie): a quick diving heuristic for “simple” scheduling problems that often provides fast and good initial solutions
- Failure Directed Search (designed by Petr Vilim): a generalization of the fail-first principle that reduces the search space by eliminating assignments unlikely to succeed
- Genetic algorithms on top of the scheduling engine: named “multi-point” search, they are not on by default unless a large number of cores are available
The temporal linear relaxation solved by an LP and objective landscapes act like a reduced cost / impact based oracle but for scheduling problems.
Because CP Optimizer was designed in a time where multi-core computers were not common, the engine alternates the different strategies on the same core, and replicates itself over various cores with different parameters if more cores are available.
The main propagation algorithms in CP Optimizer are
- time tabling and edge-finding for disjunctive and cumulative resources (Claude Le Pape, Wim Nuijten, Philippe Baptiste) later improved by Petr Vilim
- logical network for implications and (dis)equalities between boolean variables
- simple temporal networks for precedences
References
- 20+ years of scheduling with constraints at IBM/ILOG (Philippe Laborie, Jérôme Rogerie, Paul Shaw and Petr Vilim - 2018)
- Introduction to CP Optimizer (Philippe Laborie - 2019)
- Self-adapting large neighborhood search: Application to single-mode scheduling problems (Philippe Laborie and Daniel Godard - 2007)
- Reasoning with Conditional Time-intervals (Philippe Laborie and Jérôme Rogerie - 2008)
- Reasoning with Conditional Time-intervals Part II (Philippe Laborie, Jérôme Rogerie, Paul Shaw and Petr Vilim - 2009)
- Temporal linear relaxation in IBM ILOG CP Optimizer (Philippe Laborie and Jérôme Rogerie - 2014)
- Failure-Directed Search for Constraint-Based Scheduling (Petr Vilim, Philippe Laborie and Paul Shaw - 2015)
- Objective landscapes for constraint programming (Philippe Laborie - 2018)
Google OR-Tools CP-SAT (2017 - present)
CP-SAT is an open-source lazy clause generation engine augmented with an LP, MIP-style cuts and CP-style propagators designed by Laurent Perron, Frédéric Didier and Steven Gay.
CP-SAT includes
- LP-based lower bounds + MIP-style cuts, in particular MIP cuts specialized for scheduling
- CP-style propagation algorithms (time-tabling, edge-finding)
- SAT-style conflict analysis
- synchronization of MIP and CP-style reasoning
- LNS: tree-based local search
- LS with infeasible moves
CP-SAT is the “successor” of a more traditional CP + LS engine by Laurent Perron and Vincent Furnon, focusing more on VRP problems.
The CP-SAT team doesn’t publish much about how CP-SAT works, but maintains very informative comments in the source code. Here is an overview of the files and what they contain:
| Constraint | Main source files | Implemented algorithms |
|---|---|---|
| NoOverlap | disjunctive.cc | Detectable precedences, Edge Finding, Not-First/Not-Last, overload checking |
| Cumulative | cumulative.cc, timetable.cc, timetable_edgefinding.cc | Time-table propagation, Edge Finding, energetic reasoning |
| NoOverlap2D | diffn.cc | DiffN filtering, energetic reasoning |
| Circuit | circuit.cc | SCC detection, subtour elimination |
| AllDifferent | all_different.cc | Matching-based filtering, binary decomposition in some cases |
| Linear | integer_expr.cc, linear_constraint.cc | Integer propagation, pseudo-Boolean reasoning |
| Element | element.cc | Bounds consistency |
| Automaton | table.cc, automaton.cc | DFA propagation |
| Table | table.cc | Compact table propagation |
| Reservoir | reservoir.cc | Specialized cumulative reasoning |
The paper From Literals to Atomic Constraints: Generalising Conflict-Driven Clause Learning for Constraint Programming contains a comparison of the implementation of various LCG-based CP solvers.
OR-Tools only creates literals for decisions. However, OR-Tools often decomposes constraints into a SAT representation, leading to more existing literals than only decision literals. During conflict analysis, an atomic constraint with no associated literal is repeatedly replaced with its reason until only existing literals are left. OR-Tools’s approach has the benefits that 1) it only creates literals that are “important” enough to be decisions, and 2) decomposed constraints ensure that there are enough literals for conflict analysis. However, OR-Tools suffers from the fact that 1) limiting created literals can lead to less general nogoods, and 2) since explanations are resolved until consisting of existing literals, explanation lifting and nogood minimisation can have less impact
The presolver of CP-SAT does a significant amount of work, closer to a MIP than a typical CP engine:
- variable fixing
- domain tightening
- affine relation detection
- duplicate constraint elimination
- implied bound computation
- linear simplification
- clique extraction
- symmetry detection
- interval simplification
- objective simplification
Moreover, some of the classic scheduling algorithms have been transformed into cutting planes (scheduling_cuts.cc): energetic reasoning, time-table propagation, cumulative precedence, cumulative completion time, energetic reasoning for disjunctive resources.
References
- CP-SAT at scheduling seminar (Laurent Perron - 2024)
- From Literals to Atomic Constraints: Generalising Conflict-Driven Clause Learning for Constraint Programming (Imko Marijnissen, Maarten Flippo, Emir Demirović - CP2026)
OptalCP (2021 - present)
OptalCP was designed by Petr Vilim, Nicolas Bonifas and Diego Olivier Fernandez Pons (initially with input from Philippe Laborie). Compared to CPO, the parallelism is done with one strategy per core instead of interleaving. The strategies used are:
- Large Neighbourhood Search (LNS): tree-search-based local search
- Failure Directed Search (FDS): generalizes first-fail principle
- FDSDual: generalizes destructive lower bounds
OptalCP continues the legacy of CP Optimizer (engine style, modeling language). The hybridization of OptalCP with heuristics and meta-heuristics is done outside by communicating upper and lower bounds in real time (during search).
References
- OptalCP at scheduling seminar (Petr Vilim - 2026)
If your name appears in this section and you notice an error, contact me
Incorrect best-known solutions used in publications and better metrics
Scheduling problems have received considerable attention over the last decade. Several sets of benchmark instances are available for comparing the quality of the different methods developed. A large number of publications achieve either the current best known or improved bounds for a subset of these instances. It is unfortunate, however, that several publications erroneously reference the current state of these bounds.
Jelke J. van Hoorn, The Current state of bounds on benchmark instances of the job-shop scheduling problem (2017)
While the effort of van Hoorn is commendable, having accurate best-known solutions does not solve the problem of poorly reported results in publications. Announcing a best-known solution while having little scientific interest in itself (e.g. a random solution) has sadly become a central “contribution” of papers.
By giving too much importance to best-known solutions we miss what really matters:
- An approach that finds a best known solution for a single problem but is unable to provide good results for other problems is totally unusable in practice (e.g. a random solution)
- An approach that systematically gets close to the best-known solutions in a short time may not improve any best known bound but be of significant practical interest
We therefore adopt the following metrics instead
- Geometric average of lower bound to best known lower bound ratio
- Geometric average of the upper bound to best known upper bound ratio
- Geometric shifted average of the gap
Similar to the MIP community (Mittelmann benchmarks), we use geometric averages to reduce the influence of outliers.
Comparison of reference solvers
Comparisons were performed on a Windows PC with an i7 4-core 3GHz 32GB RAM in 600 seconds
- Cplex 22.1.1.0
- CPO 22.1.1.0
- with gap tolerance = 0
- CP-SAT V9.15.6755 with default configuration
- OptalCP Academic Version 2026.4.0
- with maximum propagation instead of default, gap tolerance = 0 and some other parameter changes
- we may benchmark with default parameters later
The raw data is in the solutions folder
We recommend running your own benchmarks on your own machines. All required code is provided with HOWTO instructions in each README file.
Important caveats.
- Engines have relative and absolute optimality tolerances (CPO, OptalCP) which can lead to reporting sub-optimal solutions as optimal (for the tolerance). For this test, the tolerances have been set to zero
- Engines are very non-deterministic (results between two runs of the same engine on the same machine differ significantly) due to parallelism. As a result, it makes no sense to consider very accurate values for average deviations or gap.
- Engines have different bottlenecks (CPU, memory) that are due to their internal architecture and trade-offs made by their designers. An engine doesn’t behave in the same way with 2, 4, 8, 16, 32 or 64 cores, doesn’t behave the same in machines with fast/slow memory, etc.
- Engines recommend different configurations: CP-SAT recommends a minimum of 8 cores and ideally 16 (due to the high number of strategies that need to be interleaved with fewer cores). CPO, on the other hand, gives most of its performance on 1 or 2 cores (refer for instance to the comparison of Da Col Teppan 2022). The 4-core configuration was chosen because it is a usual laptop configuration, but commercial users will probably run on a larger server.
by type of instance
The types are defined as follows
- outdated:
ft,la,orb - random:
abz,swv,yn,dmu,ta,tai(except 10 stress-test tai) - industrial:
bel,dct - stress-test: 10
tai1000 x 1000 instances - open: all instances still open
- closed: all instances already closed
Averages are made on instances solved. Outlier solutions returned by the engine (e.g. a schedule of makespan equal to the sum of processing times - all tasks scheduled one at a time) have been manually removed as they distort the arithmetic average. In such cases, the engine is considered as having not solved. We may formalize this in the future (e.g. only solutions better than a left-to-right greedy are accepted).
| Group | Solver | Ran | Solved | Optimal | %opt | lb | ub | gap |
|---|---|---|---|---|---|---|---|---|
| all | Cplex | 376 | 258 | 27 | 7% | 0.49 | 1.27 | 43% |
| CPO | 376 | 376 | 192 | 51% | 0.89 | 1.03 | 8% | |
| CP-SAT | 376 | 350 | 165 | 44% | 0.91 | 1.03 | 5% | |
| OptalCP | 376 | 376 | 223 | 59% | 1.00 | 1.01 | 3% | |
| outdated | Cplex | 53 | 53 | 10 | 19% | 0.70 | 1.03 | 26% |
| CPO | 53 | 53 | 51 | 96% | 1.00 | 1.00 | 0% | |
| CP-SAT | 53 | 53 | 52 | 98% | 1.00 | 1.00 | 0% | |
| OptalCP | 53 | 53 | 53 | 100% | 1.00 | 1.00 | 0% | |
| random | Cplex | 322 | 258 | 27 | 8% | 0.57 | 1.27 | 43% |
| CPO | 322 | 322 | 166 | 52% | 0.92 | 1.02 | 6% | |
| CP-SAT | 322 | 312 | 139 | 43% | 0.90 | 1.02 | 5% | |
| OptalCP | 322 | 322 | 185 | 57% | 0.99 | 1.01 | 2% | |
| stress-test | Cplex | 10 | 0 | 0 | 0% | NaN | NaN | NaN% |
| CPO | 10 | 10 | 0 | 0% | 0.97 | 1.22 | 47% | |
| CP-SAT | 10 | 0 | 0 | 0% | NaN | NaN | NaN% | |
| OptalCP | 10 | 10 | 0 | 0% | 1.00 | 1.10 | 39% | |
| industrial | Cplex | 44 | 0 | 0 | 0% | 0.04 | NaN | NaN% |
| CPO | 44 | 44 | 26 | 59% | 0.70 | 1.10 | 16% | |
| CP-SAT | 44 | 38 | 26 | 59% | 0.96 | 1.07 | 5% | |
| OptalCP | 44 | 44 | 38 | 86% | 1.00 | 1.04 | 2% | |
| open | Cplex | 90 | 60 | 0 | 0% | 0.58 | 1.41 | 61% |
| CPO | 90 | 90 | 0 | 0% | 0.98 | 1.08 | 15% | |
| CP-SAT | 90 | 80 | 0 | 0% | 0.98 | 1.08 | 12% | |
| OptalCP | 90 | 90 | 0 | 0% | 0.99 | 1.04 | 11% | |
| closed | Cplex | 286 | 198 | 27 | 9% | 0.46 | 1.23 | 39% |
| CPO | 286 | 286 | 192 | 67% | 0.87 | 1.02 | 6% | |
| CP-SAT | 286 | 270 | 165 | 58% | 0.89 | 1.02 | 3% | |
| OptalCP | 286 | 286 | 223 | 78% | 1.00 | 1.01 | 1% |
Per family
| ft | Cplex | 3 | 3 | 1 | 33% | 0.70 | 1.02 | 22% |
| CPO | 3 | 3 | 3 | 100% | 1.00 | 1.00 | 0% | |
| CP-SAT | 3 | 3 | 3 | 100% | 1.00 | 1.00 | 0% | |
| OptalCP | 3 | 3 | 3 | 100% | 1.00 | 1.00 | 0% | |
| la | Cplex | 40 | 40 | 8 | 20% | 0.67 | 1.03 | 30% |
| CPO | 40 | 40 | 38 | 95% | 1.00 | 1.00 | 0% | |
| CP-SAT | 40 | 40 | 39 | 98% | 1.00 | 1.00 | 0% | |
| OptalCP | 40 | 40 | 40 | 100% | 1.00 | 1.00 | 0% | |
| orb | Cplex | 10 | 10 | 1 | 10% | 0.87 | 1.01 | 13% |
| CPO | 10 | 10 | 10 | 100% | 1.00 | 1.00 | 0% | |
| CP-SAT | 10 | 10 | 10 | 100% | 1.00 | 1.00 | 0% | |
| OptalCP | 10 | 10 | 10 | 100% | 1.00 | 1.00 | 0% | |
| abz | Cplex | 5 | 5 | 1 | 20% | 0.79 | 1.08 | 24% |
| CPO | 5 | 5 | 2 | 40% | 0.97 | 1.01 | 4% | |
| CP-SAT | 5 | 5 | 2 | 40% | 0.98 | 1.01 | 3% | |
| OptalCP | 5 | 5 | 3 | 60% | 0.99 | 1.00 | 1% | |
| swv | Cplex | 20 | 20 | 0 | 0% | 0.38 | 1.22 | 65% |
| CPO | 20 | 20 | 7 | 35% | 0.98 | 1.02 | 4% | |
| CP-SAT | 20 | 20 | 6 | 30% | 0.99 | 1.02 | 4% | |
| OptalCP | 20 | 20 | 10 | 50% | 0.99 | 1.01 | 2% | |
| yn | Cplex | 4 | 4 | 0 | 0% | 0.79 | 1.13 | 30% |
| CPO | 4 | 4 | 0 | 0% | 0.90 | 1.02 | 11% | |
| CP-SAT | 4 | 4 | 0 | 0% | 0.94 | 1.03 | 8% | |
| OptalCP | 4 | 4 | 0 | 0% | 0.95 | 1.01 | 6% | |
| dmu | Cplex | 80 | 80 | 0 | 0% | 0.52 | 1.41 | 60% |
| CPO | 80 | 80 | 16 | 20% | 0.97 | 1.04 | 7% | |
| CP-SAT | 80 | 80 | 10 | 13% | 0.99 | 1.05 | 7% | |
| OptalCP | 80 | 80 | 23 | 29% | 0.99 | 1.02 | 4% | |
| ta | Cplex | 80 | 70 | 0 | 0% | 0.54 | 1.30 | 48% |
| CPO | 80 | 80 | 40 | 50% | 0.98 | 1.01 | 3% | |
| CP-SAT | 80 | 80 | 23 | 29% | 0.99 | 1.02 | 3% | |
| OptalCP | 80 | 80 | 46 | 58% | 0.99 | 1.00 | 1% | |
| tai | Cplex | 90 | 26 | 16 | 18% | 0.66 | 1.45 | 15% |
| CPO | 90 | 90 | 50 | 56% | 0.78 | 1.05 | 16% | |
| CP-SAT | 90 | 70 | 46 | 51% | 0.68 | 1.03 | 9% | |
| OptalCP | 90 | 90 | 50 | 56% | 1.00 | 1.02 | 7% | |
| dct | Cplex | 24 | 0 | 0 | 0% | 0.45 | NaN | NaN% |
| CPO | 24 | 24 | 6 | 25% | 0.52 | 1.19 | 32% | |
| CP-SAT | 24 | 18 | 6 | 25% | 0.93 | 1.16 | 11% | |
| OptalCP | 24 | 24 | 18 | 75% | 1.00 | 1.07 | 5% | |
| bel | Cplex | 20 | 0 | 0 | 0% | 0.02 | NaN | NaN% |
| CPO | 20 | 20 | 20 | 100% | 1.00 | 1.00 | 0% | |
| CP-SAT | 20 | 20 | 20 | 100% | 1.00 | 1.00 | 0% | |
| OptalCP | 20 | 20 | 20 | 100% | 1.00 | 1.00 | 0% |
Analysis of relaxations and their strength
Inspired by SchedulingLab, this section analyzes how far you can get with polynomial algorithms before having to resort to exponential search.
Evaluating relaxations also gives an indirect
- measure of the hardness of an instance: how complex is the technique you need to solve it?
- understanding of the structure of an instance: what features prevent the optimal bound from being reached?
There is a long tradition in optimization of studying families of increasingly stronger relaxations to reveal the structure of a problem (e.g. the Sherali-Adams, or the Lasserre hierarchies). Without having the sophistication of such approaches, we attempt a similar structural analysis here.
Analysis via $n/m$ ratio
The paper “How the Landscape of Random Job Shop Scheduling Instances Depends on the Ratio of Jobs to Machines” (Streeter and Smith 2006) introduced the statistical analysis of the jobshop instances via their job-to-machine $n/m$ ratio.
The authors show that the search space of randomly generated JSP problems behaves like a “big valley”, with phase transitions occurring at extreme regimes:
- As $N/M \to 0$: The expected backbone (variable assignments common to all globally optimal solutions) approaches 100%, and a random schedule or simple priority rule is almost surely optimal
- As $N/M \to \infty$: The expected backbone size vanishes toward 0%, yet simple priority rules again almost surely produce an optimal schedule
- In the middle ($N/M \approx 1$): The distance between random local optima and the global optimum is maximal. Algorithms regularly get trapped in local optima far from the global optimum, facing large search distances to escape into better solution pockets.
While this framework provides a good intuition for why square-ish instances ($N/M \approx 1$) are on average harder than rectangular ones, statistical landscape analysis remains insufficient: for instance ta39 and ta40 have the same size and shape (30 x 15), were generated by the same generator, yet one is solved under a minute while the other remains open.
We believe the lower-bound analysis provides a much more insightful metric:
- ta39 has a Carlier lower bound of 1791 for an optimal value of 1795.
- ta40 has a Carlier lower bound of 1617 for an optimal value in the range [1658, 1669].
Any optimization engine that uses the Carlier bound to propagate (like CP engines do) will quickly reduce the size of ta39 and close it.
Analysis via lower bounds
We consider the following classic polynomial lower bounds
- Job length
The maximum total processing time of any job
\[\max_j \sum_{o \in j} p_o\]- Machine load
The maximum total processing time assigned to any machine:
\[\max_m \sum_{o \in m} p_o\]- Machine load with minimum heads and tails
Precedences can be approximated by static constants. The “head” of a task is its earliest start time induced by precedences, while the “tail” is the minimum time required after its completion:
\(\sum_{i \prec j} p_i = \mathrm{head}_j\) and \(\sum_{i \succ j} p_i = \mathrm{tail}_j\)
The approximation resides in the fact that if any task is scheduled after its earliest start time, this delay is not reflected by the static head computed before scheduling. For a given machine, whichever task $o$ is scheduled first cannot start before $\mathrm{head}_o$, and symmetrically for the last task’s tail. Therefore, a tighter bound is:
\[\max_m \left ( \min_{o \in m}\mathrm{head}_o + \sum_{o \in m} p_o + \min_{o \in m}\mathrm{tail}_o\right )\]- Single-machine preemptive relaxation (Carlier inequalities)
Carlier’s inequalities compute the length of the optimal preemptive schedule for a single machine (known as Jackson’s preemptive schedule). This relaxation simplifies precedences into heads and tails, allows tasks to be preempted, and ignores the interactions between different machines:
\[\max_m \max_{p,q \in m} \left ( \mathrm{head}_p + \sum_{\substack{r \in m \\ \mathrm{head}_r \ge \mathrm{head}_p \\ \mathrm{tail}_r \ge \mathrm{tail}_q}} p_r + \mathrm{tail}_q \right )\]Results on classic instances
The background is colored in green when the lower bound reaches the best known upper-bound.
| Instance | job length | machine | machine + h/t | Carlier | BKS |
|---|---|---|---|---|---|
| abz5 | 859 | 868 | 1000 | 1028 | 1234 |
| abz6 | 742 | 688 | 784 | 835 | 943 |
| abz7 | 410 | 556 | 638 | 650 | 656 |
| abz8 | 443 | 566 | 566 | 597 | 667 |
| abz9 | 467 | 563 | 606 | 616 | 678 |
| Instance | job length | machine | machine + h/t | Carlier | BKS |
|---|---|---|---|---|---|
| dmu01 | 1753 | 2179 | 2268 | 2363 | 2563 |
| dmu02 | 2167 | 2277 | 2318 | 2452 | 2706 |
| dmu03 | 1872 | 2350 | 2540 | 2571 | 2731 |
| dmu04 | 1908 | 2332 | 2332 | 2486 | 2669 |
| dmu05 | 1827 | 2455 | 2625 | 2654 | 2749 |
| dmu06 | 2585 | 2533 | 2783 | 2834 | 3244 |
| dmu07 | 2545 | 2354 | 2604 | 2677 | 3046 |
| dmu08 | 2493 | 2642 | 2642 | 2901 | 3188 |
| dmu09 | 2544 | 2466 | 2706 | 2739 | 3092 |
| dmu10 | 2394 | 2488 | 2699 | 2716 | 2984 |
| dmu11 | 1913 | 3395 | 3395 | 3395 | 3402 .. 3430 |
| dmu12 | 1902 | 3465 | 3465 | 3481 | 3481 .. 3492 |
| dmu13 | 1945 | 3450 | 3450 | 3681 | 3681 |
| dmu14 | 1798 | 3394 | 3394 | 3394 | 3394 |
| dmu15 | 1945 | 3296 | 3296 | 3332 | 3343 |
| dmu16 | 2351 | 3491 | 3726 | 3726 | 3734 .. 3750 |
| dmu17 | 2491 | 3670 | 3697 | 3697 | 3733 .. 3811 |
| dmu18 | 2546 | 3844 | 3844 | 3844 | 3844 |
| dmu19 | 2315 | 3408 | 3408 | 3650 | 3707 .. 3764 |
| dmu20 | 2586 | 3604 | 3604 | 3604 | 3632 .. 3699 |
| dmu21 | 1873 | 4345 | 4345 | 4380 | 4380 |
| dmu22 | 1965 | 4712 | 4712 | 4725 | 4725 |
| dmu23 | 2038 | 4524 | 4524 | 4668 | 4668 |
| dmu24 | 2120 | 4554 | 4648 | 4648 | 4648 |
| dmu25 | 1861 | 4164 | 4164 | 4164 | 4164 |
| dmu26 | 2627 | 4559 | 4632 | 4647 | 4647 |
| dmu27 | 2590 | 4848 | 4848 | 4848 | 4848 |
| dmu28 | 2537 | 4538 | 4692 | 4692 | 4692 |
| dmu29 | 2505 | 4691 | 4691 | 4691 | 4691 |
| dmu30 | 2606 | 4670 | 4707 | 4732 | 4732 |
| dmu31 | 2159 | 5640 | 5640 | 5640 | 5640 |
| dmu32 | 2134 | 5927 | 5927 | 5927 | 5927 |
| dmu33 | 1828 | 5681 | 5681 | 5728 | 5728 |
| dmu34 | 2040 | 5385 | 5385 | 5385 | 5385 |
| dmu35 | 2241 | 5635 | 5635 | 5635 | 5635 |
| dmu36 | 2705 | 5621 | 5621 | 5621 | 5621 |
| dmu37 | 2616 | 5851 | 5851 | 5851 | 5851 |
| dmu38 | 2436 | 5713 | 5713 | 5713 | 5713 |
| dmu39 | 2607 | 5747 | 5747 | 5747 | 5747 |
| dmu40 | 2548 | 5577 | 5577 | 5577 | 5577 |
| dmu41 | 1842 | 2193 | 2839 | 2839 | 3176 .. 3248 |
| dmu42 | 1810 | 2504 | 2897 | 3066 | 3339 .. 3390 |
| dmu43 | 1915 | 2523 | 3121 | 3121 | 3441 |
| dmu44 | 1975 | 2530 | 3112 | 3112 | 3414 .. 3475 |
| dmu45 | 1768 | 2352 | 2930 | 2930 | 3217 .. 3266 |
| dmu46 | 2664 | 2495 | 3394 | 3425 | 3780 .. 4035 |
| dmu47 | 2689 | 2462 | 3268 | 3353 | 3714 .. 3939 |
| dmu48 | 2516 | 2387 | 3268 | 3317 | 3628 .. 3763 |
| dmu49 | 2403 | 2366 | 3369 | 3369 | 3543 .. 3706 |
| dmu50 | 2494 | 2426 | 3312 | 3379 | 3618 .. 3729 |
| dmu51 | 1825 | 3327 | 3827 | 3839 | 4070 .. 4151 |
| dmu52 | 1989 | 3504 | 4006 | 4012 | 4203 .. 4297 |
| dmu53 | 2229 | 3493 | 4108 | 4108 | 4248 .. 4378 |
| dmu54 | 1990 | 3554 | 4165 | 4165 | 4277 .. 4360 |
| dmu55 | 1959 | 3597 | 4099 | 4099 | 4191 .. 4258 |
| dmu56 | 2778 | 3526 | 4366 | 4366 | 4755 .. 4934 |
| dmu57 | 2529 | 3268 | 4182 | 4182 | 4462 .. 4643 |
| dmu58 | 2625 | 3452 | 4133 | 4214 | 4484 .. 4701 |
| dmu59 | 2546 | 3230 | 4009 | 4199 | 4366 .. 4607 |
| dmu60 | 2547 | 3380 | 4098 | 4259 | 4468 .. 4721 |
| dmu61 | 1995 | 4426 | 4850 | 4886 | 5038 .. 5166 |
| dmu62 | 2079 | 4513 | 5004 | 5004 | 5176 .. 5244 |
| dmu63 | 1877 | 4470 | 5049 | 5049 | 5245 .. 5296 |
| dmu64 | 2134 | 4447 | 5130 | 5130 | 5155 .. 5225 |
| dmu65 | 1892 | 4525 | 5072 | 5072 | 5122 .. 5158 |
| dmu66 | 2416 | 4479 | 5206 | 5357 | 5526 .. 5692 |
| dmu67 | 2668 | 4715 | 5454 | 5484 | 5661 .. 5774 |
| dmu68 | 2542 | 4476 | 5423 | 5423 | 5513 .. 5749 |
| dmu69 | 2453 | 4642 | 5384 | 5419 | 5511 .. 5682 |
| dmu70 | 2518 | 4696 | 5365 | 5492 | 5633 .. 5868 |
| dmu71 | 2029 | 5490 | 6050 | 6050 | 6129 .. 6206 |
| dmu72 | 2061 | 5889 | 6216 | 6223 | 6434 .. 6448 |
| dmu73 | 2071 | 5430 | 5935 | 5935 | 6107 .. 6132 |
| dmu74 | 2017 | 5442 | 5993 | 6015 | 6168 .. 6196 |
| dmu75 | 2087 | 5377 | 5915 | 6010 | 6123 .. 6186 |
| dmu76 | 2729 | 5493 | 6297 | 6329 | 6479 .. 6708 |
| dmu77 | 2542 | 5549 | 6247 | 6399 | 6520 .. 6739 |
| dmu78 | 2727 | 5742 | 6447 | 6508 | 6643 .. 6744 |
| dmu79 | 2717 | 5785 | 6593 | 6593 | 6720 .. 6899 |
| dmu80 | 2642 | 5670 | 6435 | 6435 | 6460 .. 6621 |
| Instance | job length | machine | machine + h/t | Carlier | BKS |
|---|---|---|---|---|---|
| ft06 | 47 | 43 | 52 | 52 | 55 |
| ft10 | 655 | 631 | 796 | 808 | 930 |
| ft20 | 387 | 1119 | 1164 | 1164 | 1165 |
| Instance | job length | machine | machine + h/t | Carlier | BKS |
|---|---|---|---|---|---|
| la01 | 413 | 666 | 666 | 666 | 666 |
| la02 | 394 | 635 | 655 | 655 | 655 |
| la03 | 349 | 588 | 588 | 588 | 597 |
| la04 | 369 | 537 | 567 | 567 | 590 |
| la05 | 380 | 593 | 593 | 593 | 593 |
| la06 | 413 | 926 | 926 | 926 | 926 |
| la07 | 376 | 869 | 890 | 890 | 890 |
| la08 | 369 | 863 | 863 | 863 | 863 |
| la09 | 382 | 951 | 951 | 951 | 951 |
| la10 | 443 | 958 | 958 | 958 | 958 |
| la11 | 413 | 1222 | 1222 | 1222 | 1222 |
| la12 | 408 | 1039 | 1039 | 1039 | 1039 |
| la13 | 382 | 1150 | 1150 | 1150 | 1150 |
| la14 | 443 | 1292 | 1292 | 1292 | 1292 |
| la15 | 378 | 1207 | 1207 | 1207 | 1207 |
| la16 | 717 | 660 | 705 | 875 | 945 |
| la17 | 646 | 683 | 730 | 739 | 784 |
| la18 | 663 | 623 | 654 | 770 | 848 |
| la19 | 617 | 685 | 685 | 709 | 842 |
| la20 | 756 | 744 | 780 | 807 | 902 |
| la21 | 717 | 935 | 954 | 995 | 1046 |
| la22 | 619 | 830 | 913 | 913 | 927 |
| la23 | 640 | 1032 | 1032 | 1032 | 1032 |
| la24 | 704 | 857 | 872 | 881 | 935 |
| la25 | 723 | 864 | 872 | 894 | 977 |
| la26 | 717 | 1218 | 1218 | 1218 | 1218 |
| la27 | 686 | 1188 | 1235 | 1235 | 1235 |
| la28 | 756 | 1216 | 1216 | 1216 | 1216 |
| la29 | 723 | 1105 | 1105 | 1114 | 1152 |
| la30 | 726 | 1355 | 1355 | 1355 | 1355 |
| la31 | 717 | 1784 | 1784 | 1784 | 1784 |
| la32 | 756 | 1850 | 1850 | 1850 | 1850 |
| la33 | 723 | 1719 | 1719 | 1719 | 1719 |
| la34 | 656 | 1721 | 1721 | 1721 | 1721 |
| la35 | 647 | 1888 | 1888 | 1888 | 1888 |
| la36 | 948 | 1028 | 1098 | 1224 | 1268 |
| la37 | 986 | 980 | 1187 | 1355 | 1397 |
| la38 | 943 | 876 | 914 | 1077 | 1196 |
| la39 | 922 | 1012 | 1137 | 1221 | 1233 |
| la40 | 955 | 1027 | 1069 | 1170 | 1222 |
| Instance | job length | machine | machine + h/t | Carlier | BKS |
|---|---|---|---|---|---|
| orb01 | 695 | 643 | 928 | 929 | 1059 |
| orb02 | 620 | 671 | 733 | 766 | 888 |
| orb03 | 648 | 624 | 851 | 865 | 1005 |
| orb04 | 753 | 759 | 833 | 833 | 1005 |
| orb05 | 584 | 630 | 801 | 801 | 887 |
| orb06 | 715 | 659 | 930 | 930 | 1010 |
| orb07 | 275 | 286 | 345 | 345 | 397 |
| orb08 | 573 | 585 | 894 | 894 | 899 |
| orb09 | 659 | 661 | 705 | 873 | 934 |
| orb10 | 681 | 652 | 868 | 899 | 944 |
| Instance | job length | machine | machine + h/t | Carlier | BKS |
|---|---|---|---|---|---|
| swv01 | 727 | 1219 | 1366 | 1366 | 1407 |
| swv02 | 664 | 1259 | 1475 | 1475 | 1475 |
| swv03 | 647 | 1178 | 1328 | 1328 | 1398 |
| swv04 | 642 | 1161 | 1366 | 1393 | 1464 |
| swv05 | 720 | 1235 | 1411 | 1411 | 1424 |
| swv06 | 974 | 1229 | 1477 | 1513 | 1667 |
| swv07 | 947 | 1128 | 1394 | 1394 | 1541 .. 1594 |
| swv08 | 1058 | 1330 | 1586 | 1586 | 1694 .. 1751 |
| swv09 | 947 | 1266 | 1594 | 1594 | 1655 |
| swv10 | 939 | 1159 | 1560 | 1560 | 1692 .. 1743 |
| swv11 | 739 | 2808 | 2983 | 2983 | 2983 |
| swv12 | 714 | 2829 | 2949 | 2955 | 2972 |
| swv13 | 727 | 2977 | 3104 | 3104 | 3104 |
| swv14 | 728 | 2842 | 2968 | 2968 | 2968 |
| swv15 | 687 | 2762 | 2885 | 2885 | 2885 |
| swv16 | 664 | 2924 | 2924 | 2924 | 2924 |
| swv17 | 683 | 2794 | 2794 | 2794 | 2794 |
| swv18 | 643 | 2852 | 2852 | 2852 | 2852 |
| swv19 | 684 | 2843 | 2843 | 2843 | 2843 |
| swv20 | 684 | 2823 | 2823 | 2823 | 2823 |
| Instance | job length | machine | machine + h/t | Carlier | BKS |
|---|---|---|---|---|---|
| ta01js | 963 | 977 | 1005 | 1168 | 1231 |
| ta02js | 942 | 919 | 953 | 1143 | 1244 |
| ta03js | 921 | 900 | 1036 | 1109 | 1218 |
| ta04js | 911 | 870 | 973 | 1059 | 1175 |
| ta05js | 940 | 902 | 914 | 1115 | 1224 |
| ta06js | 849 | 889 | 1134 | 1134 | 1238 |
| ta07js | 935 | 920 | 1103 | 1144 | 1227 |
| ta08js | 963 | 860 | 980 | 1096 | 1217 |
| ta09js | 982 | 966 | 1020 | 1136 | 1274 |
| ta10js | 896 | 911 | 940 | 1107 | 1241 |
| ta11js | 949 | 1139 | 1254 | 1254 | 1357 |
| ta12js | 1012 | 1251 | 1267 | 1284 | 1367 |
| ta13js | 919 | 1178 | 1243 | 1243 | 1342 |
| ta14js | 990 | 1130 | 1329 | 1341 | 1345 |
| ta15js | 880 | 1148 | 1163 | 1231 | 1339 |
| ta16js | 932 | 1181 | 1211 | 1238 | 1360 |
| ta17js | 979 | 1257 | 1306 | 1433 | 1462 |
| ta18js | 900 | 1153 | 1315 | 1315 | 1396 |
| ta19js | 920 | 1202 | 1202 | 1216 | 1332 |
| ta20js | 928 | 1186 | 1213 | 1279 | 1348 |
| ta21js | 1217 | 1182 | 1182 | 1435 | 1642 |
| ta22js | 1223 | 1240 | 1314 | 1385 | 1600 |
| ta23js | 1164 | 1185 | 1248 | 1422 | 1557 |
| ta24js | 1151 | 1271 | 1284 | 1466 | 1644 |
| ta25js | 1170 | 1256 | 1256 | 1473 | 1595 |
| ta26js | 1207 | 1205 | 1245 | 1445 | 1643 |
| ta27js | 1291 | 1331 | 1403 | 1567 | 1680 |
| ta28js | 1221 | 1269 | 1387 | 1529 | 1603 |
| ta29js | 1227 | 1267 | 1352 | 1413 | 1625 |
| ta30js | 1212 | 1159 | 1277 | 1363 | 1562 .. 1584 |
| ta31js | 990 | 1764 | 1764 | 1764 | 1764 |
| ta32js | 972 | 1774 | 1774 | 1774 | 1774 .. 1783 |
| ta33js | 1056 | 1729 | 1733 | 1747 | 1791 |
| ta34js | 975 | 1828 | 1828 | 1828 | 1828 |
| ta35js | 969 | 1729 | 1754 | 1997 | 2007 |
| ta36js | 988 | 1777 | 1777 | 1819 | 1819 |
| ta37js | 1045 | 1771 | 1771 | 1771 | 1771 |
| ta38js | 952 | 1673 | 1673 | 1673 | 1673 |
| ta39js | 905 | 1641 | 1764 | 1791 | 1795 |
| ta40js | 961 | 1602 | 1608 | 1617 | 1658 .. 1669 |
| ta41js | 1232 | 1830 | 1850 | 1850 | 1926 .. 2005 |
| ta42js | 1192 | 1761 | 1761 | 1867 | 1900 .. 1937 |
| ta43js | 1230 | 1694 | 1710 | 1809 | 1809 .. 1846 |
| ta44js | 1204 | 1787 | 1820 | 1887 | 1961 .. 1978 |
| ta45js | 1253 | 1731 | 1785 | 1955 | 1997 |
| ta46js | 1290 | 1856 | 1940 | 1940 | 1976 .. 2002 |
| ta47js | 1334 | 1690 | 1751 | 1768 | 1827 .. 1889 |
| ta48js | 1282 | 1744 | 1770 | 1905 | 1921 .. 1937 |
| ta49js | 1190 | 1758 | 1758 | 1892 | 1938 .. 1960 |
| ta50js | 1251 | 1674 | 1678 | 1804 | 1848 .. 1923 |
| ta51js | 975 | 2760 | 2760 | 2760 | 2760 |
| ta52js | 1007 | 2756 | 2756 | 2756 | 2756 |
| ta53js | 942 | 2717 | 2717 | 2717 | 2717 |
| ta54js | 1144 | 2797 | 2813 | 2839 | 2839 |
| ta55js | 940 | 2679 | 2679 | 2679 | 2679 |
| ta56js | 920 | 2781 | 2781 | 2781 | 2781 |
| ta57js | 1137 | 2943 | 2943 | 2943 | 2943 |
| ta58js | 1042 | 2885 | 2885 | 2885 | 2885 |
| ta59js | 963 | 2655 | 2655 | 2655 | 2655 |
| ta60js | 1061 | 2723 | 2723 | 2723 | 2723 |
| ta61js | 1284 | 2868 | 2868 | 2868 | 2868 |
| ta62js | 1318 | 2848 | 2848 | 2869 | 2869 |
| ta63js | 1289 | 2755 | 2755 | 2755 | 2755 |
| ta64js | 1229 | 2691 | 2697 | 2702 | 2702 |
| ta65js | 1270 | 2725 | 2725 | 2725 | 2725 |
| ta66js | 1297 | 2845 | 2845 | 2845 | 2845 |
| ta67js | 1273 | 2812 | 2812 | 2821 | 2825 |
| ta68js | 1343 | 2764 | 2764 | 2784 | 2784 |
| ta69js | 1416 | 3063 | 3071 | 3071 | 3071 |
| ta70js | 1225 | 2995 | 2995 | 2995 | 2995 |
| Instance | job length | machine | machine + h/t | Carlier | BKS |
|---|---|---|---|---|---|
| yn1 | 694 | 643 | 689 | 763 | 884 |
| yn2 | 713 | 686 | 732 | 795 | 904 |
| yn3 | 680 | 659 | 733 | 793 | 892 |
| yn4 | 719 | 676 | 818 | 871 | 967 |
Best-known solutions
In this section are collected the best-known solutions (upper and lower bounds) for each problem in the benchmark.
The solutions may come from
- Published papers (eg. NS2002), the section publications provides references
- An engine run by someone else (eg. CPO2015) whose results have been published
- An engine run by us (CPO, OptalCP, CP-SAT) with approximate running time
The type of hardware and time required to find the best known solution are difficult to track and compare, in particular for bounds coming from published papers. Which is why
- When a reference engine reproduces a published bound, the table credits the engine because of the reproducibility advantage
- An approximative timing for reference engines is provided, in particular when the time to find the solution is unusually long
We do not systematically run the instances for very long times on large machines. Most of the instances that appear as having been solved after a large computation time (eg. 40h) had peculiarities (e.g.
best lb + 1 == best ub) that justified exploring how long it would take to solve them to optimality. We also devote more effort to solve instances which best-known solutions are given by papers that are old, difficult to find and difficult to reproduce. This allows verifying the paper claims and having a more accessible way of generating the result.
Best-known solutions json format
The best-known solutions are now collected in a json file with the following syntax
{
"instance": "dmu80",
"size": "50 x 20",
"family": "dmu",
"family_long": "Demikol, Mehta and Uzsoy 1998",
"type": "synthetic",
"status": "open",
"lower_bound": 6460,
"upper_bound": 6621,
"history":{
"lb": [
{ "value":6460,
"date":"2026-06-01",
"solver":"OptalCP",
"hardware":"Intel 11th Gen Core i7-1185G7",
"time":null,
"certificate":"no"
}
],
"ub": [
{ "value":6621,
"date":"2026-06-29",
"solver":"DOFP2026",
"hardware":"Intel 11th Gen Core i7-1185G7",
"time":null,
"certificate":"yes"
},
{ "value":6633,
"date":"2026-06-22",
"solver":"QXL2026",
"hardware":null,
"time":null,
"certificate":"yes"
},
{ "value":6634,
"date":"2022-01-01",
"solver":"CS2022",
"hardware":null,
"time":null,
"certificate":"no"
}
]
}
}
For most of the best-known solutions, the date, hardware, running time and certificate (valid primal or valid dual solution) are not known. Even when some information is known things are usually “complicated”. For instance the dmu80 solution reported by DOFP2026 is the solution of QXL2026 used as a starting point in OptalCP running for 10 minutes. What time to attribute to that solution? And what solver?
The data will be progressively updated to the best of our knowledge.
Best-known solutions per instance family
Fisher and Thompson 1963
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| ft06 | 6 x 6 | jobshop | 55 | 55 | toy | OptalCP in < 1m |
| ft10 | 10 x 10 | jobshop | 930 | 930 | toy | OptalCP in < 1m |
| ft20 | 20 x 5 | jobshop | 1165 | 1165 | toy | OptalCP in < 1m |
Lawrence 1984
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| la01 | 10 x 5 | jobshop | 666 | 666 | toy | OptalCP in < 1m |
| la02 | 10 x 5 | jobshop | 655 | 655 | toy | OptalCP in < 1m |
| la03 | 10 x 5 | jobshop | 597 | 597 | toy | OptalCP in < 1m |
| la04 | 10 x 5 | jobshop | 590 | 590 | toy | OptalCP in < 1m |
| la05 | 10 x 5 | jobshop | 593 | 593 | toy | OptalCP in < 1m |
| la06 | 15 x 5 | jobshop | 926 | 926 | toy | OptalCP in < 1m |
| la07 | 15 x 5 | jobshop | 890 | 890 | toy | OptalCP in < 1m |
| la08 | 15 x 5 | jobshop | 863 | 863 | toy | OptalCP in < 1m |
| la09 | 15 x 5 | jobshop | 951 | 951 | toy | OptalCP in < 1m |
| la10 | 15 x 5 | jobshop | 958 | 958 | toy | OptalCP in < 1m |
| la11 | 20 x 5 | jobshop | 1222 | 1222 | toy | OptalCP in < 1m |
| la12 | 20 x 5 | jobshop | 1039 | 1039 | toy | OptalCP in < 1m |
| la13 | 20 x 5 | jobshop | 1150 | 1150 | toy | OptalCP in < 1m |
| la14 | 20 x 5 | jobshop | 1292 | 1292 | toy | OptalCP in < 1m |
| la15 | 20 x 5 | jobshop | 1207 | 1207 | toy | OptalCP in < 1m |
| la16 | 10 x 10 | jobshop | 945 | 945 | toy | OptalCP in < 1m |
| la17 | 10 x 10 | jobshop | 784 | 784 | toy | OptalCP in < 1m |
| la18 | 10 x 10 | jobshop | 848 | 848 | toy | OptalCP in < 1m |
| la19 | 10 x 10 | jobshop | 842 | 842 | toy | OptalCP in < 1m |
| la20 | 10 x 10 | jobshop | 902 | 902 | toy | OptalCP in < 1m |
| la21 | 15 x 10 | jobshop | 1046 | 1046 | toy | OptalCP in < 1m |
| la22 | 15 x 10 | jobshop | 927 | 927 | toy | OptalCP in < 1m |
| la23 | 15 x 10 | jobshop | 1032 | 1032 | toy | OptalCP in < 1m |
| la24 | 15 x 10 | jobshop | 935 | 935 | toy | OptalCP in < 1m |
| la25 | 15 x 10 | jobshop | 977 | 977 | toy | OptalCP in < 1m |
| la26 | 20 x 10 | jobshop | 1218 | 1218 | toy | OptalCP in < 1m |
| la27 | 20 x 10 | jobshop | 1235 | 1235 | toy | OptalCP in < 1m |
| la28 | 20 x 10 | jobshop | 1216 | 1216 | toy | OptalCP in < 1m |
| la29 | 20 x 10 | jobshop | 1152 | 1152 | easy | OptalCP in < 5m |
| la30 | 20 x 10 | jobshop | 1355 | 1355 | toy | OptalCP in < 1m |
| la31 | 30 x 10 | jobshop | 1784 | 1784 | toy | OptalCP in < 1m |
| la32 | 30 x 10 | jobshop | 1850 | 1850 | toy | OptalCP in < 1m |
| la33 | 30 x 10 | jobshop | 1719 | 1719 | toy | OptalCP in < 1m |
| la34 | 30 x 10 | jobshop | 1721 | 1721 | toy | OptalCP in < 1m |
| la35 | 30 x 10 | jobshop | 1888 | 1888 | toy | OptalCP in < 1m |
| la36 | 15 x 15 | jobshop | 1268 | 1268 | toy | OptalCP in < 1m |
| la37 | 15 x 15 | jobshop | 1397 | 1397 | toy | OptalCP in < 1m |
| la38 | 15 x 15 | jobshop | 1196 | 1196 | toy | OptalCP in < 1m |
| la39 | 15 x 15 | jobshop | 1233 | 1233 | toy | OptalCP in < 1m |
| la40 | 15 x 15 | jobshop | 1222 | 1222 | toy | OptalCP in < 1m |
Adams, Balas and Zawack 1988
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| abz5 | 10 x 10 | jobshop | 1234 | 1234 | toy | OptalCP in < 1m |
| abz6 | 10 x 10 | jobshop | 943 | 943 | toy | OptalCP in < 1m |
| abz7 | 20 x 15 | jobshop | 656 | 656 | easy | OptalCP in < 10m |
| abz8 | 20 x 15 | jobshop | 667 | 667 | hard | OptalCP in < 10h |
| abz9 | 20 x 15 | jobshop | 678 | 678 | medium | OptalCP in < 1h |
Various places report “Henning A (2002). Praktische Job-Shop Scheduling-Probleme. Ph.D. thesis, Friedrich-Schiller-Universität Jena, Jena, Germany” as having found a solution of 665 for abz8, but the original document says their solution is 667 and 665 is a “solution from the literature”. Jelke J. van Hoorn attributes the 665 bound to “Paul Douglas Martin. A time-oriented approach to computing optimal schedules for the job-shop scheduling problem. PhD thesis. 1996”. However, OptalCP proves a lower bound of 667 and Optimizizer only provides a verified solution for 667. We advise caution until this result is confirmed by independent means.
Applegate and Cook 1991
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| orb01 | 10 x 10 | jobshop | 1059 | 1059 | toy | OptalCP in < 1m |
| orb02 | 10 x 10 | jobshop | 888 | 888 | toy | OptalCP in < 1m |
| orb03 | 10 x 10 | jobshop | 1005 | 1005 | toy | OptalCP in < 1m |
| orb04 | 10 x 10 | jobshop | 1005 | 1005 | toy | OptalCP in < 1m |
| orb05 | 10 x 10 | jobshop | 887 | 887 | toy | OptalCP in < 1m |
| orb06 | 10 x 10 | jobshop | 1010 | 1010 | toy | OptalCP in < 1m |
| orb07 | 10 x 10 | jobshop | 397 | 397 | toy | OptalCP in < 1m |
| orb08 | 10 x 10 | jobshop | 899 | 899 | toy | OptalCP in < 1m |
| orb09 | 10 x 10 | jobshop | 934 | 934 | toy | OptalCP in < 1m |
| orb10 | 10 x 10 | jobshop | 944 | 944 | toy | OptalCP in < 1m |
Storer, Wu and Vaccari 1992
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| swv01 | 20 x 10 | jobshop | 1407 | 1407 | toy | OptalCP in < 1m |
| swv02 | 20 x 10 | jobshop | 1475 | 1475 | toy | OptalCP in < 1m |
| swv03 | 20 x 10 | jobshop | 1398 | 1398 | easy | OptalCP in < 10m |
| swv04 | 20 x 10 | jobshop | 1464 | 1464 | medium | OptalCP in < 1h |
| swv05 | 20 x 10 | jobshop | 1424 | 1424 | easy | OptalCP in < 10m |
| swv06 | 20 x 15 | jobshop | 1667 | 1667 | hard | OptalCP in < 40h |
| swv07 | 20 x 15 | jobshop | 1541 | 1594 | open | lb OptalCP | ub GR2014 |
| swv08 | 20 x 15 | jobshop | 1694 | 1751 | open | lb OptalCP | ub Mu2015 |
| swv09 | 20 x 15 | jobshop | 1655 | 1655 | hard | OptalCP in < 15h |
| swv10 | 20 x 15 | jobshop | 1692 | 1743 | open | lb OptalCP | ub SS2018 |
| swv11 | 50 x 10 | jobshop | 2983 | 2983 | medium | OptalCP in < 1h |
| swv12 | 50 x 10 | jobshop | 2972 | 2972 | medium | OptalCP in < 1h |
| swv13 | 50 x 10 | jobshop | 3104 | 3104 | toy | OptalCP in < 1m |
| swv14 | 50 x 10 | jobshop | 2968 | 2968 | toy | OptalCP in < 1m |
| swv15 | 50 x 10 | jobshop | 2885 | 2885 | hard | OptalCP in < 9h |
| swv16 | 50 x 10 | jobshop | 2924 | 2924 | toy | OptalCP in < 1m |
| swv17 | 50 x 10 | jobshop | 2794 | 2794 | toy | OptalCP in < 1m |
| swv18 | 50 x 10 | jobshop | 2852 | 2852 | toy | OptalCP in < 1m |
| swv19 | 50 x 10 | jobshop | 2843 | 2843 | toy | OptalCP in < 1m |
| swv20 | 50 x 10 | jobshop | 2823 | 2823 | toy | OptalCP in < 1m |
Yamada Nakano 1992
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| yn1 | 20 x 20 | jobshop | 884 | 884 | hard | OptalCP in < 6h |
| yn2 | 20 x 20 | jobshop | 904 | 904 | hard | OptalCP in < 40h |
| yn3 | 20 x 20 | jobshop | 892 | 892 | hard | OptalCP in < 40h |
| yn4 | 20 x 20 | jobshop | 967 | 967 | hard | OptalCP in < 16h |
Taillard 1993
We add the suffix js to distinguish the instance from other instances generated by Taillard for other problems
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| ta01js | 15 x 15 | jobshop | 1231 | 1231 | toy | OptalCP in < 1m |
| ta02js | 15 x 15 | jobshop | 1244 | 1244 | toy | OptalCP in < 1m |
| ta03js | 15 x 15 | jobshop | 1218 | 1218 | toy | OptalCP in < 1m |
| ta04js | 15 x 15 | jobshop | 1175 | 1175 | toy | OptalCP in < 1m |
| ta05js | 15 x 15 | jobshop | 1224 | 1224 | toy | OptalCP in < 1m |
| ta06js | 15 x 15 | jobshop | 1238 | 1238 | easy | OptalCP in < 10m |
| ta07js | 15 x 15 | jobshop | 1227 | 1227 | toy | OptalCP in < 1m |
| ta08js | 15 x 15 | jobshop | 1217 | 1217 | toy | OptalCP in < 1m |
| ta09js | 15 x 15 | jobshop | 1274 | 1274 | toy | OptalCP in < 1m |
| ta10js | 15 x 15 | jobshop | 1241 | 1241 | toy | OptalCP in < 1m |
| ta11js | 20 x 15 | jobshop | 1357 | 1357 | medium | OptalCP in < 1h |
| ta12js | 20 x 15 | jobshop | 1367 | 1367 | easy | OptalCP in < 10m |
| ta13js | 20 x 15 | jobshop | 1342 | 1342 | medium | OptalCP in < 1h |
| ta14js | 20 x 15 | jobshop | 1345 | 1345 | toy | OptalCP in < 1m |
| ta15js | 20 x 15 | jobshop | 1339 | 1339 | medium | OptalCP in < 1h |
| ta16js | 20 x 15 | jobshop | 1360 | 1360 | medium | OptalCP in < 1h |
| ta17js | 20 x 15 | jobshop | 1462 | 1462 | toy | OptalCP in < 1m |
| ta18js | 20 x 15 | jobshop | 1396 | 1396 | medium | OptalCP in < 1h |
| ta19js | 20 x 15 | jobshop | 1332 | 1332 | medium | OptalCP in < 1h |
| ta20js | 20 x 15 | jobshop | 1348 | 1348 | medium | OptalCP in < 1h |
| ta21js | 20 x 20 | jobshop | 1642 | 1642 | medium | OptalCP in < 1h |
| ta22js | 20 x 20 | jobshop | 1600 | 1600 | hard | OptalCP in < 2h |
| ta23js | 20 x 20 | jobshop | 1557 | 1557 | hard | OptalCP in < 2h |
| ta24js | 20 x 20 | jobshop | 1644 | 1644 | easy | OptalCP in < 10m |
| ta25js | 20 x 20 | jobshop | 1595 | 1595 | medium | OptalCP in < 1h |
| ta26js | 20 x 20 | jobshop | 1643 | 1643 | hard | OptalCP in < 7h |
| ta27js | 20 x 20 | jobshop | 1680 | 1680 | medium | OptalCP in < 1h |
| ta28js | 20 x 20 | jobshop | 1603 | 1603 | easy | OptalCP in < 10m |
| ta29js | 20 x 20 | jobshop | 1625 | 1625 | hard | OptalCP in < 2h |
| ta30js | 20 x 20 | jobshop | 1562 | 1584 | open | lb OptalCP | ub NS2002 |
| ta31js | 30 x 15 | jobshop | 1764 | 1764 | easy | OptalCP in < 10m |
| ta32js | 30 x 15 | jobshop | 1774 | 1783 | open | lb CPO2015 | ub QXL2026 |
| ta33js | 30 x 15 | jobshop | 1791 | 1791 | hard | OptalCP in < 10h |
| ta34js | 30 x 15 | jobshop | 1828 | 1828 | medium | OptalCP in < 1h |
| ta35js | 30 x 15 | jobshop | 2007 | 2007 | toy | OptalCP in < 1m |
| ta36js | 30 x 15 | jobshop | 1819 | 1819 | toy | OptalCP in < 1m |
| ta37js | 30 x 15 | jobshop | 1771 | 1771 | hard | OptalCP in < 2h |
| ta38js | 30 x 15 | jobshop | 1673 | 1673 | hard | OptalCP in < 7h |
| ta39js | 30 x 15 | jobshop | 1795 | 1795 | toy | OptalCP in < 1m |
| ta40js | 30 x 15 | jobshop | 1658 | 1669 | open | lb OptalCP | ub GR2014 |
| ta41js | 30 x 20 | jobshop | 1926 | 2005 | open | lb OptalCP | ub CPO2015 |
| ta42js | 30 x 20 | jobshop | 1900 | 1937 | open | lb OptalCP | ub GR2014 |
| ta43js | 30 x 20 | jobshop | 1809 | 1846 | open | lb CPO2015 | ub PLC2015 |
| ta44js | 30 x 20 | jobshop | 1961 | 1978 | open | lb OptalCP | ub QXL2026 |
| ta45js | 30 x 20 | jobshop | 1997 | 1997 | easy | CP-SAT in < 10m |
| ta46js | 30 x 20 | jobshop | 1976 | 2002 | open | lb OptalCP | ub QXL2026 |
| ta47js | 30 x 20 | jobshop | 1827 | 1889 | open | lb OptalCP | ub PLC2015 |
| ta48js | 30 x 20 | jobshop | 1921 | 1937 | open | lb OptalCP | ub SS2018 |
| ta49js | 30 x 20 | jobshop | 1938 | 1960 | open | lb OptalCP | ub LHW2024 |
| ta50js | 30 x 20 | jobshop | 1848 | 1923 | open | lb OptalCP | ub PLC2015 |
| ta51js | 50 x 15 | jobshop | 2760 | 2760 | toy | OptalCP in < 1m |
| ta52js | 50 x 15 | jobshop | 2756 | 2756 | toy | OptalCP in < 1m |
| ta53js | 50 x 15 | jobshop | 2717 | 2717 | toy | OptalCP in < 1m |
| ta54js | 50 x 15 | jobshop | 2839 | 2839 | toy | OptalCP in < 1m |
| ta55js | 50 x 15 | jobshop | 2679 | 2679 | toy | OptalCP in < 1m |
| ta56js | 50 x 15 | jobshop | 2781 | 2781 | toy | OptalCP in < 1m |
| ta57js | 50 x 15 | jobshop | 2943 | 2943 | toy | OptalCP in < 1m |
| ta58js | 50 x 15 | jobshop | 2885 | 2885 | toy | OptalCP in < 1m |
| ta59js | 50 x 15 | jobshop | 2655 | 2655 | toy | OptalCP in < 1m |
| ta60js | 50 x 15 | jobshop | 2723 | 2723 | toy | OptalCP in < 1m |
| ta61js | 50 x 20 | jobshop | 2868 | 2868 | toy | OptalCP in < 1m |
| ta62js | 50 x 20 | jobshop | 2869 | 2869 | medium | OptalCP in < 1h |
| ta63js | 50 x 20 | jobshop | 2755 | 2755 | toy | OptalCP in < 1m |
| ta64js | 50 x 20 | jobshop | 2702 | 2702 | toy | OptalCP in < 1m |
| ta65js | 50 x 20 | jobshop | 2725 | 2725 | toy | OptalCP in < 1m |
| ta66js | 50 x 20 | jobshop | 2845 | 2845 | toy | OptalCP in < 1m |
| ta67js | 50 x 20 | jobshop | 2825 | 2825 | hard | OptalCP in < 4h |
| ta68js | 50 x 20 | jobshop | 2784 | 2784 | toy | OptalCP in < 1m |
| ta69js | 50 x 20 | jobshop | 3071 | 3071 | toy | OptalCP in < 1m |
| ta70js | 50 x 20 | jobshop | 2995 | 2995 | toy | OptalCP in < 1m |
| ta71js | 100 x 20 | jobshop | 5464 | 5464 | toy | OptalCP in < 1m |
| ta72js | 100 x 20 | jobshop | 5181 | 5181 | toy | OptalCP in < 1m |
| ta73js | 100 x 20 | jobshop | 5568 | 5568 | toy | OptalCP in < 1m |
| ta74js | 100 x 20 | jobshop | 5339 | 5339 | toy | OptalCP in < 1m |
| ta75js | 100 x 20 | jobshop | 5392 | 5392 | toy | OptalCP in < 1m |
| ta76js | 100 x 20 | jobshop | 5342 | 5342 | toy | OptalCP in < 1m |
| ta77js | 100 x 20 | jobshop | 5436 | 5436 | toy | OptalCP in < 1m |
| ta78js | 100 x 20 | jobshop | 5394 | 5394 | toy | OptalCP in < 1m |
| ta79js | 100 x 20 | jobshop | 5358 | 5358 | toy | OptalCP in < 1m |
| ta80js | 100 x 20 | jobshop | 5183 | 5183 | toy | OptalCP in < 1m |
Demirkol, Mehta and Uzsoy 1998
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| dmu01 | 20 x 15 | jobshop | 2563 | 2563 | medium | OptalCP in < 1h |
| dmu02 | 20 x 15 | jobshop | 2706 | 2706 | easy | OptalCP in < 10m |
| dmu03 | 20 x 15 | jobshop | 2731 | 2731 | easy | OptalCP in < 10m |
| dmu04 | 20 x 15 | jobshop | 2669 | 2669 | medium | OptalCP in < 1h |
| dmu05 | 20 x 15 | jobshop | 2749 | 2749 | medium | OptalCP in < 1h |
| dmu06 | 20 x 20 | jobshop | 3244 | 3244 | hard | OptalCP in < 2h |
| dmu07 | 20 x 20 | jobshop | 3046 | 3046 | hard | OptalCP in < 3h |
| dmu08 | 20 x 20 | jobshop | 3188 | 3188 | easy | OptalCP in < 10m |
| dmu09 | 20 x 20 | jobshop | 3092 | 3092 | easy | OptalCP in < 10m |
| dmu10 | 20 x 20 | jobshop | 2984 | 2984 | medium | OptalCP in < 1h |
| dmu11 | 30 x 15 | jobshop | 3402 | 3430 | open | lb OptalCP | ub PLC2015 |
| dmu12 | 30 x 15 | jobshop | 3481 | 3492 | open | lb OptalCP | ub SS2018 |
| dmu13 | 30 x 15 | jobshop | 3681 | 3681 | hard | OptalCP in < 3h |
| dmu14 | 30 x 15 | jobshop | 3394 | 3394 | toy | CP-SAT in < 1m |
| dmu15 | 30 x 15 | jobshop | 3343 | 3343 | easy | OptalCP in < 10m |
| dmu16 | 30 x 20 | jobshop | 3734 | 3750 | open | lb CPO2015 | ub LHW2024 |
| dmu17 | 30 x 20 | jobshop | 3733 | 3811 | open | lb OptalCP | ub DOFP2026 |
| dmu18 | 30 x 20 | jobshop | 3844 | 3844 | hard | OptalCP in < 10h |
| dmu19 | 30 x 20 | jobshop | 3707 | 3764 | open | lb OptalCP | ub CS2022 |
| dmu20 | 30 x 20 | jobshop | 3632 | 3699 | open | lb OptalCP | ub LHW2024 |
| dmu21 | 40 x 15 | jobshop | 4380 | 4380 | toy | OptalCP in < 1m |
| dmu22 | 40 x 15 | jobshop | 4725 | 4725 | toy | OptalCP in < 1m |
| dmu23 | 40 x 15 | jobshop | 4668 | 4668 | toy | OptalCP in < 1m |
| dmu24 | 40 x 15 | jobshop | 4648 | 4648 | toy | OptalCP in < 1m |
| dmu25 | 40 x 15 | jobshop | 4164 | 4164 | toy | OptalCP in < 1m |
| dmu26 | 40 x 20 | jobshop | 4647 | 4647 | medium | OptalCP in < 1h |
| dmu27 | 40 x 20 | jobshop | 4848 | 4848 | toy | OptalCP in < 1m |
| dmu28 | 40 x 20 | jobshop | 4692 | 4692 | toy | OptalCP in < 1m |
| dmu29 | 40 x 20 | jobshop | 4691 | 4691 | toy | OptalCP in < 1m |
| dmu30 | 40 x 20 | jobshop | 4732 | 4732 | medium | OptalCP in < 1h |
| dmu31 | 50 x 15 | jobshop | 5640 | 5640 | toy | OptalCP in < 1m |
| dmu32 | 50 x 15 | jobshop | 5927 | 5927 | toy | OptalCP in < 1m |
| dmu33 | 50 x 15 | jobshop | 5728 | 5728 | toy | OptalCP in < 1m |
| dmu34 | 50 x 15 | jobshop | 5385 | 5385 | toy | OptalCP in < 1m |
| dmu35 | 50 x 15 | jobshop | 5635 | 5635 | toy | OptalCP in < 1m |
| dmu36 | 50 x 20 | jobshop | 5621 | 5621 | toy | OptalCP in < 1m |
| dmu37 | 50 x 20 | jobshop | 5851 | 5851 | toy | OptalCP in < 1m |
| dmu38 | 50 x 20 | jobshop | 5713 | 5713 | toy | OptalCP in < 1m |
| dmu39 | 50 x 20 | jobshop | 5747 | 5747 | toy | OptalCP in < 1m |
| dmu40 | 50 x 20 | jobshop | 5577 | 5577 | toy | OptalCP in < 1m |
| dmu41 | 20 x 15 | jobshop | 3176 | 3248 | open | lb OptalCP | ub PLC2015 |
| dmu42 | 20 x 15 | jobshop | 3339 | 3390 | open | lb OptalCP | ub SS2018 |
| dmu43 | 20 x 15 | jobshop | 3441 | 3441 | hard | OptalCP in < 7h |
| dmu44 | 20 x 15 | jobshop | 3414 | 3475 | open | lb OptalCP | ub SS2018 |
| dmu45 | 20 x 15 | jobshop | 3217 | 3266 | open | lb OptalCP | ub CS2022 |
| dmu46 | 20 x 20 | jobshop | 3780 | 4035 | open | lb OptalCP | ub GR2014 |
| dmu47 | 20 x 20 | jobshop | 3714 | 3939 | open | lb OptalCP | ub GR2014 |
| dmu48 | 20 x 20 | jobshop | 3628 | 3763 | open | lb OptalCP | ub SS2018 |
| dmu49 | 20 x 20 | jobshop | 3543 | 3706 | open | lb OptalCP | ub LHW2024 |
| dmu50 | 20 x 20 | jobshop | 3618 | 3729 | open | lb OptalCP | ub PLC2015 |
| dmu51 | 30 x 15 | jobshop | 4070 | 4151 | open | lb OptalCP | ub QXL2026 |
| dmu52 | 30 x 15 | jobshop | 4203 | 4297 | open | lb OptalCP | ub LHW2024 |
| dmu53 | 30 x 15 | jobshop | 4248 | 4378 | open | lb OptalCP | ub CS2022 |
| dmu54 | 30 x 15 | jobshop | 4277 | 4360 | open | lb OptalCP | ub QXL2026 |
| dmu55 | 30 x 15 | jobshop | 4191 | 4258 | open | lb OptalCP | ub LHW2024 |
| dmu56 | 30 x 20 | jobshop | 4755 | 4934 | open | lb OptalCP | ub QXL2026 |
| dmu57 | 30 x 20 | jobshop | 4462 | 4643 | open | lb OptalCP | ub QXL2026 |
| dmu58 | 30 x 20 | jobshop | 4484 | 4701 | open | lb OptalCP | ub CS2022 |
| dmu59 | 30 x 20 | jobshop | 4366 | 4607 | open | lb OptalCP | ub LHW2024 |
| dmu60 | 30 x 20 | jobshop | 4468 | 4721 | open | lb OptalCP | ub CS2022 |
| dmu61 | 40 x 15 | jobshop | 5038 | 5166 | open | lb OptalCP | ub DOFP2026 |
| dmu62 | 40 x 15 | jobshop | 5176 | 5244 | open | lb OptalCP | ub QXL2026 |
| dmu63 | 40 x 15 | jobshop | 5245 | 5296 | open | lb OptalCP | ub QXL2026 |
| dmu64 | 40 x 15 | jobshop | 5155 | 5225 | open | lb OptalCP | ub QXL2026 |
| dmu65 | 40 x 15 | jobshop | 5122 | 5158 | open | lb OptalCP | ub DOFP2026 |
| dmu66 | 40 x 20 | jobshop | 5526 | 5692 | open | lb OptalCP | ub DOFP2026 |
| dmu67 | 40 x 20 | jobshop | 5661 | 5774 | open | lb OptalCP | ub QXL2026 |
| dmu68 | 40 x 20 | jobshop | 5513 | 5749 | open | lb OptalCP | ub DOFP2026 |
| dmu69 | 40 x 20 | jobshop | 5511 | 5682 | open | lb OptalCP | ub DOFP2026 |
| dmu70 | 40 x 20 | jobshop | 5633 | 5868 | open | lb OptalCP | ub CS2022 |
| dmu71 | 50 x 15 | jobshop | 6129 | 6206 | open | lb OptalCP | ub QXL2026 |
| dmu72 | 50 x 15 | jobshop | 6434 | 6448 | open | lb CdGKGC2025 | ub QXL2026 |
| dmu73 | 50 x 15 | jobshop | 6107 | 6132 | open | lb OptalCP | ub QXL2026 |
| dmu74 | 50 x 15 | jobshop | 6168 | 6196 | open | lb OptalCP | ub SS2018 |
| dmu75 | 50 x 15 | jobshop | 6123 | 6186 | open | lb OptalCP | ub DOFP2026 |
| dmu76 | 50 x 20 | jobshop | 6479 | 6708 | open | lb OptalCP | ub DOFP2026 |
| dmu77 | 50 x 20 | jobshop | 6520 | 6739 | open | lb OptalCP | ub QXL2026 |
| dmu78 | 50 x 20 | jobshop | 6643 | 6744 | open | lb OptalCP | ub QXL2026 |
| dmu79 | 50 x 20 | jobshop | 6720 | 6899 | open | lb OptalCP | ub QXL2026 |
| dmu80 | 50 x 20 | jobshop | 6460 | 6621 | open | lb OptalCP | ub DOFP2026 |
Da Col and Teppan 2022 - taillard-like instances
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| tai_10_10_1 | 10 x 10 | jobshop | 8219 | 8219 | toy | OptalCP in < 1m |
| tai_10_10_2 | 10 x 10 | jobshop | 7416 | 7416 | toy | OptalCP in < 1m |
| tai_10_10_3 | 10 x 10 | jobshop | 8094 | 8094 | toy | OptalCP in < 1m |
| tai_10_10_4 | 10 x 10 | jobshop | 8657 | 8657 | toy | OptalCP in < 1m |
| tai_10_10_5 | 10 x 10 | jobshop | 7936 | 7936 | toy | OptalCP in < 1m |
| tai_10_10_6 | 10 x 10 | jobshop | 8509 | 8509 | toy | OptalCP in < 1m |
| tai_10_10_7 | 10 x 10 | jobshop | 8299 | 8299 | toy | OptalCP in < 1m |
| tai_10_10_8 | 10 x 10 | jobshop | 7788 | 7788 | toy | OptalCP in < 1m |
| tai_10_10_9 | 10 x 10 | jobshop | 8300 | 8300 | toy | OptalCP in < 1m |
| tai_10_10_10 | 10 x 10 | jobshop | 8481 | 8481 | toy | OptalCP in < 1m |
| tai_10_100_1 | 10 x 100 | jobshop | 56609 | 56609 | toy | OptalCP in < 1m |
| tai_10_100_2 | 10 x 100 | jobshop | 52330 | 52330 | toy | OptalCP in < 1m |
| tai_10_100_3 | 10 x 100 | jobshop | 56412 | 56412 | toy | OptalCP in < 1m |
| tai_10_100_4 | 10 x 100 | jobshop | 54889 | 54889 | toy | OptalCP in < 1m |
| tai_10_100_5 | 10 x 100 | jobshop | 54603 | 54603 | toy | OptalCP in < 1m |
| tai_10_100_6 | 10 x 100 | jobshop | 53723 | 53723 | toy | OptalCP in < 1m |
| tai_10_100_7 | 10 x 100 | jobshop | 55456 | 55456 | toy | OptalCP in < 1m |
| tai_10_100_8 | 10 x 100 | jobshop | 56466 | 56466 | toy | OptalCP in < 1m |
| tai_10_100_9 | 10 x 100 | jobshop | 55096 | 55096 | toy | OptalCP in < 1m |
| tai_10_100_10 | 10 x 100 | jobshop | 56661 | 56661 | toy | OptalCP in < 1m |
| tai_10_1000_1 | 10 x 1000 | jobshop | 515370 | 515370 | toy | OptalCP in < 1m |
| tai_10_1000_2 | 10 x 1000 | jobshop | 513525 | 513525 | toy | OptalCP in < 1m |
| tai_10_1000_3 | 10 x 1000 | jobshop | 508161 | 508161 | toy | OptalCP in < 1m |
| tai_10_1000_4 | 10 x 1000 | jobshop | 513814 | 513814 | toy | OptalCP in < 1m |
| tai_10_1000_5 | 10 x 1000 | jobshop | 517020 | 517020 | toy | OptalCP in < 1m |
| tai_10_1000_6 | 10 x 1000 | jobshop | 517777 | 517777 | toy | OptalCP in < 1m |
| tai_10_1000_7 | 10 x 1000 | jobshop | 514921 | 514921 | toy | OptalCP in < 1m |
| tai_10_1000_8 | 10 x 1000 | jobshop | 522277 | 522277 | toy | OptalCP in < 1m |
| tai_10_1000_9 | 10 x 1000 | jobshop | 511213 | 511213 | toy | OptalCP in < 1m |
| tai_10_1000_10 | 10 x 1000 | jobshop | 509855 | 509855 | toy | OptalCP in < 1m |
| tai_100_10_1 | 100 x 10 | jobshop | 54951 | 54951 | toy | OptalCP in < 1m |
| tai_100_10_2 | 100 x 10 | jobshop | 57160 | 57160 | toy | OptalCP in < 1m |
| tai_100_10_3 | 100 x 10 | jobshop | 54166 | 54166 | toy | OptalCP in < 1m |
| tai_100_10_4 | 100 x 10 | jobshop | 54371 | 54371 | toy | OptalCP in < 1m |
| tai_100_10_5 | 100 x 10 | jobshop | 56142 | 56142 | toy | OptalCP in < 1m |
| tai_100_10_6 | 100 x 10 | jobshop | 52447 | 52447 | toy | OptalCP in < 1m |
| tai_100_10_7 | 100 x 10 | jobshop | 54051 | 54051 | toy | OptalCP in < 1m |
| tai_100_10_8 | 100 x 10 | jobshop | 55624 | 55624 | toy | OptalCP in < 1m |
| tai_100_10_9 | 100 x 10 | jobshop | 54210 | 54210 | toy | OptalCP in < 1m |
| tai_100_10_10 | 100 x 10 | jobshop | 55464 | 55464 | toy | OptalCP in < 1m |
| tai_100_100_1 | 100 x 100 | jobshop | 62843 | 76926 | open | OptalCP |
| tai_100_100_2 | 100 x 100 | jobshop | 62814 | 77322 | open | OptalCP |
| tai_100_100_3 | 100 x 100 | jobshop | 61533 | 76910 | open | OptalCP |
| tai_100_100_4 | 100 x 100 | jobshop | 64742 | 78604 | open | OptalCP |
| tai_100_100_5 | 100 x 100 | jobshop | 61766 | 78023 | open | OptalCP |
| tai_100_100_6 | 100 x 100 | jobshop | 61360 | 77895 | open | OptalCP |
| tai_100_100_7 | 100 x 100 | jobshop | 64040 | 77670 | open | OptalCP |
| tai_100_100_8 | 100 x 100 | jobshop | 63224 | 78031 | open | OptalCP |
| tai_100_100_9 | 100 x 100 | jobshop | 62631 | 79419 | open | OptalCP |
| tai_100_100_10 | 100 x 100 | jobshop | 64866 | 77837 | open | OptalCP |
| tai_100_1000_1 | 100 x 1000 | jobshop | 522298 | 533080 | open | OptalCP |
| tai_100_1000_2 | 100 x 1000 | jobshop | 530375 | 538067 | open | OptalCP |
| tai_100_1000_3 | 100 x 1000 | jobshop | 530560 | 538757 | open | OptalCP |
| tai_100_1000_4 | 100 x 1000 | jobshop | 527101 | 534746 | open | OptalCP |
| tai_100_1000_5 | 100 x 1000 | jobshop | 517728 | 529580 | open | OptalCP |
| tai_100_1000_6 | 100 x 1000 | jobshop | 522907 | 534969 | open | OptalCP |
| tai_100_1000_7 | 100 x 1000 | jobshop | 522537 | 534974 | open | OptalCP |
| tai_100_1000_8 | 100 x 1000 | jobshop | 526428 | 535757 | open | OptalCP |
| tai_100_1000_9 | 100 x 1000 | jobshop | 528097 | 536993 | open | OptalCP |
| tai_100_1000_10 | 100 x 1000 | jobshop | 521766 | 529918 | open | OptalCP |
| tai_1000_10_1 | 1000 x 10 | jobshop | 515334 | 515334 | toy | OptalCP in < 1m |
| tai_1000_10_2 | 1000 x 10 | jobshop | 509226 | 509226 | toy | OptalCP in < 1m |
| tai_1000_10_3 | 1000 x 10 | jobshop | 517493 | 517493 | toy | OptalCP in < 1m |
| tai_1000_10_4 | 1000 x 10 | jobshop | 519369 | 519369 | toy | OptalCP in < 1m |
| tai_1000_10_5 | 1000 x 10 | jobshop | 513881 | 513881 | toy | OptalCP in < 1m |
| tai_1000_10_6 | 1000 x 10 | jobshop | 511932 | 511932 | toy | OptalCP in < 1m |
| tai_1000_10_7 | 1000 x 10 | jobshop | 523900 | 523900 | toy | OptalCP in < 1m |
| tai_1000_10_8 | 1000 x 10 | jobshop | 513101 | 513101 | toy | OptalCP in < 1m |
| tai_1000_10_9 | 1000 x 10 | jobshop | 508701 | 508701 | toy | OptalCP in < 1m |
| tai_1000_10_10 | 1000 x 10 | jobshop | 521360 | 521360 | toy | OptalCP in < 1m |
| tai_1000_100_1 | 1000 x 100 | jobshop | 525343 | 525343 | medium | OptalCP in < 1h |
| tai_1000_100_2 | 1000 x 100 | jobshop | 528088 | 528088 | hard | OptalCP in < 2h |
| tai_1000_100_3 | 1000 x 100 | jobshop | 522793 | 522793 | hard | OptalCP in < 2h |
| tai_1000_100_4 | 1000 x 100 | jobshop | 524271 | 524271 | hard | OptalCP in < 2h |
| tai_1000_100_5 | 1000 x 100 | jobshop | 531216 | 531216 | medium | OptalCP in < 1h |
| tai_1000_100_6 | 1000 x 100 | jobshop | 518763 | 518763 | hard | OptalCP in < 3h |
| tai_1000_100_7 | 1000 x 100 | jobshop | 527093 | 527093 | hard | OptalCP in < 2h |
| tai_1000_100_8 | 1000 x 100 | jobshop | 519524 | 519524 | hard | OptalCP in < 3h |
| tai_1000_100_9 | 1000 x 100 | jobshop | 520889 | 520889 | hard | OptalCP in < 3h |
| tai_1000_100_10 | 1000 x 100 | jobshop | 529112 | 529112 | hard | OptalCP in < 3h |
| tai_1000_1000_1 | 1000 x 1000 | jobshop | 549392 | 811195 | open | OptalCP |
| tai_1000_1000_2 | 1000 x 1000 | jobshop | 549043 | 813044 | open | OptalCP |
| tai_1000_1000_3 | 1000 x 1000 | jobshop | 552580 | 811269 | open | OptalCP |
| tai_1000_1000_4 | 1000 x 1000 | jobshop | 547670 | 809549 | open | OptalCP |
| tai_1000_1000_5 | 1000 x 1000 | jobshop | 545193 | 811467 | open | OptalCP |
| tai_1000_1000_6 | 1000 x 1000 | jobshop | 547286 | 813117 | open | OptalCP |
| tai_1000_1000_7 | 1000 x 1000 | jobshop | 545877 | 809043 | open | OptalCP |
| tai_1000_1000_8 | 1000 x 1000 | jobshop | 549220 | 812442 | open | OptalCP |
| tai_1000_1000_9 | 1000 x 1000 | jobshop | 543559 | 810111 | open | OptalCP |
| tai_1000_1000_10 | 1000 x 1000 | jobshop | 549075 | 809421 | open | lb Hexaly | ub OptalCP |
Da Col and Teppan (2022) - reentrant jobshop
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| dct-long-100-10000-1 | 103 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-100-10000-2 | 103 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-100-10000-3 | 103 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-100-100000-1 | 109 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-100-100000-2 | 114 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-100-100000-3 | 109 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-1000-10000-1 | 1002 x 1000 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-1000-10000-2 | 1002 x 1000 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-1000-10000-3 | 1002 x 1000 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-1000-100000-1 | 1002 x 1000 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-1000-100000-2 | 1002 x 1000 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-long-1000-100000-3 | 1003 x 1000 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-100-10000-1 | 2162 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-100-10000-2 | 2192 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-100-10000-3 | 2169 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-100-100000-1 | 20685 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-100-100000-2 | 20870 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-100-100000-3 | 20767 x 100 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-1000-10000-1 | 2882 x 1000 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-1000-10000-2 | 2863 x 1000 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-1000-10000-3 | 2897 x 1000 | reentrant jobshop | 600000 | 600000 | toy | OptalCP in < 1m |
| dct-short-1000-100000-1 | 21280 x 1000 | reentrant jobshop | 600000 | 600019 | open | OptalCP |
| dct-short-1000-100000-2 | 21349 x 1000 | reentrant jobshop | 600000 | 600000 | medium | OptalCP in < 1h |
| dct-short-1000-100000-3 | 21338 x 1000 | reentrant jobshop | 600000 | 600000 | medium | OptalCP in < 1h |
Da Col and Teppan report that instance dct-short-1000-100000-1 was solved to optimality by CP Optimizer in 6h which we haven’t been able to reproduce (with CPO or any other solver). We are still investigating. We have recently noticed some regression in OptalCP on two of these instances, hence you may need specific parameters to reach the solution in the time announced.
Boveroux, Ernst and Louveaux 2025
| Instance | Size | Problem | LB | UB | Type | Solved by |
|---|---|---|---|---|---|---|
| bel00 | 792 x 48 | reentrant jobshop | 766329 | 766329 | toy | OptalCP in < 1m |
| bel01 | 627 x 52 | reentrant jobshop | 428900 | 428900 | toy | OptalCP in < 1m |
| bel02 | 660 x 59 | reentrant jobshop | 270437 | 270437 | toy | OptalCP in < 1m |
| bel03 | 691 x 52 | reentrant jobshop | 670943 | 670943 | toy | OptalCP in < 1m |
| bel04 | 952 x 63 | reentrant jobshop | 408633 | 408633 | toy | OptalCP in < 1m |
| bel05 | 929 x 59 | reentrant jobshop | 620171 | 620171 | toy | OptalCP in < 1m |
| bel06 | 678 x 57 | reentrant jobshop | 502510 | 502510 | toy | OptalCP in < 1m |
| bel07 | 968 x 55 | reentrant jobshop | 750360 | 750360 | toy | OptalCP in < 1m |
| bel08 | 822 x 65 | reentrant jobshop | 484451 | 484451 | toy | OptalCP in < 1m |
| bel09 | 651 x 53 | reentrant jobshop | 534811 | 534811 | toy | OptalCP in < 1m |
| bel10 | 733 x 61 | reentrant jobshop | 468304 | 468304 | toy | OptalCP in < 1m |
| bel11 | 761 x 66 | reentrant jobshop | 509503 | 509503 | toy | OptalCP in < 1m |
| bel12 | 897 x 64 | reentrant jobshop | 388715 | 388715 | toy | OptalCP in < 1m |
| bel13 | 836 x 54 | reentrant jobshop | 420576 | 420576 | toy | OptalCP in < 1m |
| bel14 | 935 x 57 | reentrant jobshop | 1115063 | 1115063 | toy | OptalCP in < 1m |
| bel15 | 818 x 48 | reentrant jobshop | 610946 | 610946 | toy | OptalCP in < 1m |
| bel16 | 855 x 59 | reentrant jobshop | 575843 | 575843 | toy | OptalCP in < 1m |
| bel17 | 662 x 47 | reentrant jobshop | 520426 | 520426 | toy | OptalCP in < 1m |
| bel18 | 677 x 50 | reentrant jobshop | 347889 | 347889 | toy | OptalCP in < 1m |
| bel19 | 806 x 69 | reentrant jobshop | 529239 | 529239 | toy | OptalCP in < 1m |
Publications (best known solutions)
The upper and lower bounds come from:
-
NS2002 (1 bound - ta30js): Nowicki, E., & Smutnicki, C. (2002). Some new tools to solve the job shop problem. Raport serii: Preprinty, 60.
-
GR2014 (5 bounds in swv, ta and dmu): Gonçalves, J. F., & Resende, M. G. (2014). An extended Akers graphical method with a biased random‐key genetic algorithm for job‐shop scheduling. International Transactions in Operational Research, 21(2), 215-246.
-
CPO2015 (4 bounds in ta and dmu): Vilím, P., Laborie, P., & Shaw, P. (2015). Failure-directed search for constraint-based scheduling. In CPAIOR 2015 proceedings. Detailed experimental results.
-
Mu2015 (1 bound - swv08): Personal communication to Optimizizer probably based on Murovec, B. (2015). Job-shop local-search move evaluation without direct consideration of the criterion’s value. European Journal of Operational Research, 241(2), 320-329.
-
PLC2015 (6 bounds in ta and dmu): Peng, B., Lü, Z., & Cheng, T. C. E. (2015). A tabu search/path relinking algorithm to solve the job shop scheduling problem. Computers & Operations Research, 53, 154-164.
-
SS2018 (7 bounds in swv, ta and dmu): Shylo, O. V., & Shams, H. (2018). Boosting binary optimization via binary classification: A case study of job shop scheduling.
-
CS2022 (6 bounds in dmu): Constantino, O. H., & Segura, C. (2022). A parallel memetic algorithm with explicit management of diversity for the job shop scheduling problem. Applied Intelligence, 52(1), 141-153. available online
-
LHW2024 (7 bounds in ta and dmu): Mingjie Li, Jin-Kao Hao & Qinghua Wu (2025). Combining Hash-based Tabu Search and Frequent Pattern Mining for Job-Shop Scheduling. IISE Transactions.
-
CdGKGC2025 (1 bounds - dmu72): 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.
-
QXL2026 (17 bounds in ta and dmu): Qihao Liu, Xinyu Li, and Liang Gao (2026). A Knowledge-Driven Decoupling and Coordinated Optimization Framework Based on Decision-Variable Parameterization and Release for the Job-Shop Scheduling Problem
-
DOFP2026 (9 bounds in dmu): Diego Olivier Fernandez Pons (2026) [Personal communication]: upper-bounds provided by optimizizer were given as a starting solution to OptalCP, and ran for 10 minutes
All other bounds were found by OptalCP except 4 bounds by CP-SAT (equal but faster) and 1 bound by Hexaly (strictly better than all other solvers). The cited papers also may use an engine directly like [CPO2015] or as part of an algorithm like [CdGKGC2025] which uses CP-SAT. [DOFP2026] uses OptalCP.