Skip to the content.

The jobshop scheduling problem benchmark library

JSPLib is a comprehensive benchmark library for the Job Shop Scheduling Problem (JSP), with three components:

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


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)

Industrial (44)

Stress-test (10)


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

In particular

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:

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

We use the following criteria to classify instances by difficulty:

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:

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)

Industrial (44)

Stress-test (10)


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

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


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


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

Improvements in complex software like Cplex are incremental, but we can broadly divide its evolution as follows

From 2008, Bixby, Rothberg and Gu created Gurobi.

References


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

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

References


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

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:

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


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:

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


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:

We therefore adopt the following metrics instead

\[LB_{avg} = \exp\left(\sum_k\log\frac{LB}{LB_{best}}\right)\] \[UB_{avg} = \exp\left(\sum_k\log\frac{UB}{UB_{best}}\right)\] \[GAP = \exp\left(\frac{1}{N} \sum_k\log\left(1 + \frac{UB - LB}{UB}\right)\right) - 1\]

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

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.


by type of instance

The types are defined as follows


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).

GroupSolverRanSolvedOptimal%optlbubgap
allCplex376258277%0.491.2743%
CPO37637619251%0.891.038%
CP-SAT37635016544%0.911.035%
OptalCP37637622359%1.001.013%
outdatedCplex53531019%0.701.0326%
CPO53535196%1.001.000%
CP-SAT53535298%1.001.000%
OptalCP535353100%1.001.000%
randomCplex322258278%0.571.2743%
CPO32232216652%0.921.026%
CP-SAT32231213943%0.901.025%
OptalCP32232218557%0.991.012%
stress-testCplex10000%NaNNaNNaN%
CPO101000%0.971.2247%
CP-SAT10000%NaNNaNNaN%
OptalCP101000%1.001.1039%
industrialCplex44000%0.04NaNNaN%
CPO44442659%0.701.1016%
CP-SAT44382659%0.961.075%
OptalCP44443886%1.001.042%
openCplex906000%0.581.4161%
CPO909000%0.981.0815%
CP-SAT908000%0.981.0812%
OptalCP909000%0.991.0411%
closedCplex286198279%0.461.2339%
CPO28628619267%0.871.026%
CP-SAT28627016558%0.891.023%
OptalCP28628622378%1.001.011%

Per family

ftCplex33133%0.701.0222%
CPO333100%1.001.000%
CP-SAT333100%1.001.000%
OptalCP333100%1.001.000%
laCplex4040820%0.671.0330%
CPO40403895%1.001.000%
CP-SAT40403998%1.001.000%
OptalCP404040100%1.001.000%
orbCplex1010110%0.871.0113%
CPO101010100%1.001.000%
CP-SAT101010100%1.001.000%
OptalCP101010100%1.001.000%
abzCplex55120%0.791.0824%
CPO55240%0.971.014%
CP-SAT55240%0.981.013%
OptalCP55360%0.991.001%
swvCplex202000%0.381.2265%
CPO2020735%0.981.024%
CP-SAT2020630%0.991.024%
OptalCP20201050%0.991.012%
ynCplex4400%0.791.1330%
CPO4400%0.901.0211%
CP-SAT4400%0.941.038%
OptalCP4400%0.951.016%
dmuCplex808000%0.521.4160%
CPO80801620%0.971.047%
CP-SAT80801013%0.991.057%
OptalCP80802329%0.991.024%
taCplex807000%0.541.3048%
CPO80804050%0.981.013%
CP-SAT80802329%0.991.023%
OptalCP80804658%0.991.001%
taiCplex90261618%0.661.4515%
CPO90905056%0.781.0516%
CP-SAT90704651%0.681.039%
OptalCP90905056%1.001.027%
dctCplex24000%0.45NaNNaN%
CPO2424625%0.521.1932%
CP-SAT2418625%0.931.1611%
OptalCP24241875%1.001.075%
belCplex20000%0.02NaNNaN%
CPO202020100%1.001.000%
CP-SAT202020100%1.001.000%
OptalCP202020100%1.001.000%


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

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:

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:

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

The maximum total processing time of any job

\[\max_j \sum_{o \in j} p_o\]

The maximum total processing time assigned to any machine:

\[\max_m \sum_{o \in m} p_o\]

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 )\]

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.

Instancejob lengthmachinemachine + h/tCarlierBKS
abz5859868100010281234
abz6742688784835943
abz7410556638650656
abz8443566566597667
abz9467563606616678
Instancejob lengthmachinemachine + h/tCarlierBKS
dmu0117532179226823632563
dmu0221672277231824522706
dmu0318722350254025712731
dmu0419082332233224862669
dmu0518272455262526542749
dmu0625852533278328343244
dmu0725452354260426773046
dmu0824932642264229013188
dmu0925442466270627393092
dmu1023942488269927162984
dmu1119133395339533953402 .. 3430
dmu1219023465346534813481 .. 3492
dmu1319453450345036813681
dmu1417983394339433943394
dmu1519453296329633323343
dmu1623513491372637263734 .. 3750
dmu1724913670369736973733 .. 3811
dmu1825463844384438443844
dmu1923153408340836503707 .. 3764
dmu2025863604360436043632 .. 3699
dmu2118734345434543804380
dmu2219654712471247254725
dmu2320384524452446684668
dmu2421204554464846484648
dmu2518614164416441644164
dmu2626274559463246474647
dmu2725904848484848484848
dmu2825374538469246924692
dmu2925054691469146914691
dmu3026064670470747324732
dmu3121595640564056405640
dmu3221345927592759275927
dmu3318285681568157285728
dmu3420405385538553855385
dmu3522415635563556355635
dmu3627055621562156215621
dmu3726165851585158515851
dmu3824365713571357135713
dmu3926075747574757475747
dmu4025485577557755775577
dmu4118422193283928393176 .. 3248
dmu4218102504289730663339 .. 3390
dmu4319152523312131213441
dmu4419752530311231123414 .. 3475
dmu4517682352293029303217 .. 3266
dmu4626642495339434253780 .. 4035
dmu4726892462326833533714 .. 3939
dmu4825162387326833173628 .. 3763
dmu4924032366336933693543 .. 3706
dmu5024942426331233793618 .. 3729
dmu5118253327382738394070 .. 4151
dmu5219893504400640124203 .. 4297
dmu5322293493410841084248 .. 4378
dmu5419903554416541654277 .. 4360
dmu5519593597409940994191 .. 4258
dmu5627783526436643664755 .. 4934
dmu5725293268418241824462 .. 4643
dmu5826253452413342144484 .. 4701
dmu5925463230400941994366 .. 4607
dmu6025473380409842594468 .. 4721
dmu6119954426485048865038 .. 5166
dmu6220794513500450045176 .. 5244
dmu6318774470504950495245 .. 5296
dmu6421344447513051305155 .. 5225
dmu6518924525507250725122 .. 5158
dmu6624164479520653575526 .. 5692
dmu6726684715545454845661 .. 5774
dmu6825424476542354235513 .. 5749
dmu6924534642538454195511 .. 5682
dmu7025184696536554925633 .. 5868
dmu7120295490605060506129 .. 6206
dmu7220615889621662236434 .. 6448
dmu7320715430593559356107 .. 6132
dmu7420175442599360156168 .. 6196
dmu7520875377591560106123 .. 6186
dmu7627295493629763296479 .. 6708
dmu7725425549624763996520 .. 6739
dmu7827275742644765086643 .. 6744
dmu7927175785659365936720 .. 6899
dmu8026425670643564356460 .. 6621
Instancejob lengthmachinemachine + h/tCarlierBKS
ft064743525255
ft10655631796808930
ft203871119116411641165
Instancejob lengthmachinemachine + h/tCarlierBKS
la01413666666666666
la02394635655655655
la03349588588588597
la04369537567567590
la05380593593593593
la06413926926926926
la07376869890890890
la08369863863863863
la09382951951951951
la10443958958958958
la114131222122212221222
la124081039103910391039
la133821150115011501150
la144431292129212921292
la153781207120712071207
la16717660705875945
la17646683730739784
la18663623654770848
la19617685685709842
la20756744780807902
la217179359549951046
la22619830913913927
la236401032103210321032
la24704857872881935
la25723864872894977
la267171218121812181218
la276861188123512351235
la287561216121612161216
la297231105110511141152
la307261355135513551355
la317171784178417841784
la327561850185018501850
la337231719171917191719
la346561721172117211721
la356471888188818881888
la369481028109812241268
la37986980118713551397
la3894387691410771196
la399221012113712211233
la409551027106911701222
Instancejob lengthmachinemachine + h/tCarlierBKS
orb016956439289291059
orb02620671733766888
orb036486248518651005
orb047537598338331005
orb05584630801801887
orb067156599309301010
orb07275286345345397
orb08573585894894899
orb09659661705873934
orb10681652868899944
Instancejob lengthmachinemachine + h/tCarlierBKS
swv017271219136613661407
swv026641259147514751475
swv036471178132813281398
swv046421161136613931464
swv057201235141114111424
swv069741229147715131667
swv079471128139413941541 .. 1594
swv0810581330158615861694 .. 1751
swv099471266159415941655
swv109391159156015601692 .. 1743
swv117392808298329832983
swv127142829294929552972
swv137272977310431043104
swv147282842296829682968
swv156872762288528852885
swv166642924292429242924
swv176832794279427942794
swv186432852285228522852
swv196842843284328432843
swv206842823282328232823
Instancejob lengthmachinemachine + h/tCarlierBKS
ta01js963977100511681231
ta02js94291995311431244
ta03js921900103611091218
ta04js91187097310591175
ta05js94090291411151224
ta06js849889113411341238
ta07js935920110311441227
ta08js96386098010961217
ta09js982966102011361274
ta10js89691194011071241
ta11js9491139125412541357
ta12js10121251126712841367
ta13js9191178124312431342
ta14js9901130132913411345
ta15js8801148116312311339
ta16js9321181121112381360
ta17js9791257130614331462
ta18js9001153131513151396
ta19js9201202120212161332
ta20js9281186121312791348
ta21js12171182118214351642
ta22js12231240131413851600
ta23js11641185124814221557
ta24js11511271128414661644
ta25js11701256125614731595
ta26js12071205124514451643
ta27js12911331140315671680
ta28js12211269138715291603
ta29js12271267135214131625
ta30js12121159127713631562 .. 1584
ta31js9901764176417641764
ta32js9721774177417741774 .. 1783
ta33js10561729173317471791
ta34js9751828182818281828
ta35js9691729175419972007
ta36js9881777177718191819
ta37js10451771177117711771
ta38js9521673167316731673
ta39js9051641176417911795
ta40js9611602160816171658 .. 1669
ta41js12321830185018501926 .. 2005
ta42js11921761176118671900 .. 1937
ta43js12301694171018091809 .. 1846
ta44js12041787182018871961 .. 1978
ta45js12531731178519551997
ta46js12901856194019401976 .. 2002
ta47js13341690175117681827 .. 1889
ta48js12821744177019051921 .. 1937
ta49js11901758175818921938 .. 1960
ta50js12511674167818041848 .. 1923
ta51js9752760276027602760
ta52js10072756275627562756
ta53js9422717271727172717
ta54js11442797281328392839
ta55js9402679267926792679
ta56js9202781278127812781
ta57js11372943294329432943
ta58js10422885288528852885
ta59js9632655265526552655
ta60js10612723272327232723
ta61js12842868286828682868
ta62js13182848284828692869
ta63js12892755275527552755
ta64js12292691269727022702
ta65js12702725272527252725
ta66js12972845284528452845
ta67js12732812281228212825
ta68js13432764276427842784
ta69js14163063307130713071
ta70js12252995299529952995
Instancejob lengthmachinemachine + h/tCarlierBKS
yn1694643689763884
yn2713686732795904
yn3680659733793892
yn4719676818871967


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

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


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

InstanceSizeProblemLBUBTypeSolved by
ft066 x 6jobshop5555toyOptalCP in < 1m
ft1010 x 10jobshop930930toyOptalCP in < 1m
ft2020 x 5jobshop11651165toyOptalCP in < 1m

Lawrence 1984

InstanceSizeProblemLBUBTypeSolved by
la0110 x 5jobshop666666toyOptalCP in < 1m
la0210 x 5jobshop655655toyOptalCP in < 1m
la0310 x 5jobshop597597toyOptalCP in < 1m
la0410 x 5jobshop590590toyOptalCP in < 1m
la0510 x 5jobshop593593toyOptalCP in < 1m
la0615 x 5jobshop926926toyOptalCP in < 1m
la0715 x 5jobshop890890toyOptalCP in < 1m
la0815 x 5jobshop863863toyOptalCP in < 1m
la0915 x 5jobshop951951toyOptalCP in < 1m
la1015 x 5jobshop958958toyOptalCP in < 1m
la1120 x 5jobshop12221222toyOptalCP in < 1m
la1220 x 5jobshop10391039toyOptalCP in < 1m
la1320 x 5jobshop11501150toyOptalCP in < 1m
la1420 x 5jobshop12921292toyOptalCP in < 1m
la1520 x 5jobshop12071207toyOptalCP in < 1m
la1610 x 10jobshop945945toyOptalCP in < 1m
la1710 x 10jobshop784784toyOptalCP in < 1m
la1810 x 10jobshop848848toyOptalCP in < 1m
la1910 x 10jobshop842842toyOptalCP in < 1m
la2010 x 10jobshop902902toyOptalCP in < 1m
la2115 x 10jobshop10461046toyOptalCP in < 1m
la2215 x 10jobshop927927toyOptalCP in < 1m
la2315 x 10jobshop10321032toyOptalCP in < 1m
la2415 x 10jobshop935935toyOptalCP in < 1m
la2515 x 10jobshop977977toyOptalCP in < 1m
la2620 x 10jobshop12181218toyOptalCP in < 1m
la2720 x 10jobshop12351235toyOptalCP in < 1m
la2820 x 10jobshop12161216toyOptalCP in < 1m
la2920 x 10jobshop11521152easyOptalCP in < 5m
la3020 x 10jobshop13551355toyOptalCP in < 1m
la3130 x 10jobshop17841784toyOptalCP in < 1m
la3230 x 10jobshop18501850toyOptalCP in < 1m
la3330 x 10jobshop17191719toyOptalCP in < 1m
la3430 x 10jobshop17211721toyOptalCP in < 1m
la3530 x 10jobshop18881888toyOptalCP in < 1m
la3615 x 15jobshop12681268toyOptalCP in < 1m
la3715 x 15jobshop13971397toyOptalCP in < 1m
la3815 x 15jobshop11961196toyOptalCP in < 1m
la3915 x 15jobshop12331233toyOptalCP in < 1m
la4015 x 15jobshop12221222toyOptalCP in < 1m

Adams, Balas and Zawack 1988

InstanceSizeProblemLBUBTypeSolved by
abz510 x 10jobshop12341234toyOptalCP in < 1m
abz610 x 10jobshop943943toyOptalCP in < 1m
abz720 x 15jobshop656656easyOptalCP in < 10m
abz820 x 15jobshop667667hardOptalCP in < 10h
abz920 x 15jobshop678678mediumOptalCP 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

InstanceSizeProblemLBUBTypeSolved by
orb0110 x 10jobshop10591059toyOptalCP in < 1m
orb0210 x 10jobshop888888toyOptalCP in < 1m
orb0310 x 10jobshop10051005toyOptalCP in < 1m
orb0410 x 10jobshop10051005toyOptalCP in < 1m
orb0510 x 10jobshop887887toyOptalCP in < 1m
orb0610 x 10jobshop10101010toyOptalCP in < 1m
orb0710 x 10jobshop397397toyOptalCP in < 1m
orb0810 x 10jobshop899899toyOptalCP in < 1m
orb0910 x 10jobshop934934toyOptalCP in < 1m
orb1010 x 10jobshop944944toyOptalCP in < 1m

Storer, Wu and Vaccari 1992

InstanceSizeProblemLBUBTypeSolved by
swv0120 x 10jobshop14071407toyOptalCP in < 1m
swv0220 x 10jobshop14751475toyOptalCP in < 1m
swv0320 x 10jobshop13981398easyOptalCP in < 10m
swv0420 x 10jobshop14641464mediumOptalCP in < 1h
swv0520 x 10jobshop14241424easyOptalCP in < 10m
swv0620 x 15jobshop16671667hardOptalCP in < 40h
swv0720 x 15jobshop15411594openlb OptalCP | ub GR2014
swv0820 x 15jobshop16941751openlb OptalCP | ub Mu2015
swv0920 x 15jobshop16551655hardOptalCP in < 15h
swv1020 x 15jobshop16921743openlb OptalCP | ub SS2018
swv1150 x 10jobshop29832983mediumOptalCP in < 1h
swv1250 x 10jobshop29722972mediumOptalCP in < 1h
swv1350 x 10jobshop31043104toyOptalCP in < 1m
swv1450 x 10jobshop29682968toyOptalCP in < 1m
swv1550 x 10jobshop28852885hardOptalCP in < 9h
swv1650 x 10jobshop29242924toyOptalCP in < 1m
swv1750 x 10jobshop27942794toyOptalCP in < 1m
swv1850 x 10jobshop28522852toyOptalCP in < 1m
swv1950 x 10jobshop28432843toyOptalCP in < 1m
swv2050 x 10jobshop28232823toyOptalCP in < 1m

Yamada Nakano 1992

InstanceSizeProblemLBUBTypeSolved by
yn120 x 20jobshop884884hardOptalCP in < 6h
yn220 x 20jobshop904904hardOptalCP in < 40h
yn320 x 20jobshop892892hardOptalCP in < 40h
yn420 x 20jobshop967967hardOptalCP in < 16h

Taillard 1993

We add the suffix js to distinguish the instance from other instances generated by Taillard for other problems

InstanceSizeProblemLBUBTypeSolved by
ta01js15 x 15jobshop12311231toyOptalCP in < 1m
ta02js15 x 15jobshop12441244toyOptalCP in < 1m
ta03js15 x 15jobshop12181218toyOptalCP in < 1m
ta04js15 x 15jobshop11751175toyOptalCP in < 1m
ta05js15 x 15jobshop12241224toyOptalCP in < 1m
ta06js15 x 15jobshop12381238easyOptalCP in < 10m
ta07js15 x 15jobshop12271227toyOptalCP in < 1m
ta08js15 x 15jobshop12171217toyOptalCP in < 1m
ta09js15 x 15jobshop12741274toyOptalCP in < 1m
ta10js15 x 15jobshop12411241toyOptalCP in < 1m
ta11js20 x 15jobshop13571357mediumOptalCP in < 1h
ta12js20 x 15jobshop13671367easyOptalCP in < 10m
ta13js20 x 15jobshop13421342mediumOptalCP in < 1h
ta14js20 x 15jobshop13451345toyOptalCP in < 1m
ta15js20 x 15jobshop13391339mediumOptalCP in < 1h
ta16js20 x 15jobshop13601360mediumOptalCP in < 1h
ta17js20 x 15jobshop14621462toyOptalCP in < 1m
ta18js20 x 15jobshop13961396mediumOptalCP in < 1h
ta19js20 x 15jobshop13321332mediumOptalCP in < 1h
ta20js20 x 15jobshop13481348mediumOptalCP in < 1h
ta21js20 x 20jobshop16421642mediumOptalCP in < 1h
ta22js20 x 20jobshop16001600hardOptalCP in < 2h
ta23js20 x 20jobshop15571557hardOptalCP in < 2h
ta24js20 x 20jobshop16441644easyOptalCP in < 10m
ta25js20 x 20jobshop15951595mediumOptalCP in < 1h
ta26js20 x 20jobshop16431643hardOptalCP in < 7h
ta27js20 x 20jobshop16801680mediumOptalCP in < 1h
ta28js20 x 20jobshop16031603easyOptalCP in < 10m
ta29js20 x 20jobshop16251625hardOptalCP in < 2h
ta30js20 x 20jobshop15621584openlb OptalCP | ub NS2002
ta31js30 x 15jobshop17641764easyOptalCP in < 10m
ta32js30 x 15jobshop17741783openlb CPO2015 | ub QXL2026
ta33js30 x 15jobshop17911791hardOptalCP in < 10h
ta34js30 x 15jobshop18281828mediumOptalCP in < 1h
ta35js30 x 15jobshop20072007toyOptalCP in < 1m
ta36js30 x 15jobshop18191819toyOptalCP in < 1m
ta37js30 x 15jobshop17711771hardOptalCP in < 2h
ta38js30 x 15jobshop16731673hardOptalCP in < 7h
ta39js30 x 15jobshop17951795toyOptalCP in < 1m
ta40js30 x 15jobshop16581669openlb OptalCP | ub GR2014
ta41js30 x 20jobshop19262005openlb OptalCP | ub CPO2015
ta42js30 x 20jobshop19001937openlb OptalCP | ub GR2014
ta43js30 x 20jobshop18091846openlb CPO2015 | ub PLC2015
ta44js30 x 20jobshop19611978openlb OptalCP | ub QXL2026
ta45js30 x 20jobshop19971997easyCP-SAT in < 10m
ta46js30 x 20jobshop19762002openlb OptalCP | ub QXL2026
ta47js30 x 20jobshop18271889openlb OptalCP | ub PLC2015
ta48js30 x 20jobshop19211937openlb OptalCP | ub SS2018
ta49js30 x 20jobshop19381960openlb OptalCP | ub LHW2024
ta50js30 x 20jobshop18481923openlb OptalCP | ub PLC2015
ta51js50 x 15jobshop27602760toyOptalCP in < 1m
ta52js50 x 15jobshop27562756toyOptalCP in < 1m
ta53js50 x 15jobshop27172717toyOptalCP in < 1m
ta54js50 x 15jobshop28392839toyOptalCP in < 1m
ta55js50 x 15jobshop26792679toyOptalCP in < 1m
ta56js50 x 15jobshop27812781toyOptalCP in < 1m
ta57js50 x 15jobshop29432943toyOptalCP in < 1m
ta58js50 x 15jobshop28852885toyOptalCP in < 1m
ta59js50 x 15jobshop26552655toyOptalCP in < 1m
ta60js50 x 15jobshop27232723toyOptalCP in < 1m
ta61js50 x 20jobshop28682868toyOptalCP in < 1m
ta62js50 x 20jobshop28692869mediumOptalCP in < 1h
ta63js50 x 20jobshop27552755toyOptalCP in < 1m
ta64js50 x 20jobshop27022702toyOptalCP in < 1m
ta65js50 x 20jobshop27252725toyOptalCP in < 1m
ta66js50 x 20jobshop28452845toyOptalCP in < 1m
ta67js50 x 20jobshop28252825hardOptalCP in < 4h
ta68js50 x 20jobshop27842784toyOptalCP in < 1m
ta69js50 x 20jobshop30713071toyOptalCP in < 1m
ta70js50 x 20jobshop29952995toyOptalCP in < 1m
ta71js100 x 20jobshop54645464toyOptalCP in < 1m
ta72js100 x 20jobshop51815181toyOptalCP in < 1m
ta73js100 x 20jobshop55685568toyOptalCP in < 1m
ta74js100 x 20jobshop53395339toyOptalCP in < 1m
ta75js100 x 20jobshop53925392toyOptalCP in < 1m
ta76js100 x 20jobshop53425342toyOptalCP in < 1m
ta77js100 x 20jobshop54365436toyOptalCP in < 1m
ta78js100 x 20jobshop53945394toyOptalCP in < 1m
ta79js100 x 20jobshop53585358toyOptalCP in < 1m
ta80js100 x 20jobshop51835183toyOptalCP in < 1m

Demirkol, Mehta and Uzsoy 1998

InstanceSizeProblemLBUBTypeSolved by
dmu0120 x 15jobshop25632563mediumOptalCP in < 1h
dmu0220 x 15jobshop27062706easyOptalCP in < 10m
dmu0320 x 15jobshop27312731easyOptalCP in < 10m
dmu0420 x 15jobshop26692669mediumOptalCP in < 1h
dmu0520 x 15jobshop27492749mediumOptalCP in < 1h
dmu0620 x 20jobshop32443244hardOptalCP in < 2h
dmu0720 x 20jobshop30463046hardOptalCP in < 3h
dmu0820 x 20jobshop31883188easyOptalCP in < 10m
dmu0920 x 20jobshop30923092easyOptalCP in < 10m
dmu1020 x 20jobshop29842984mediumOptalCP in < 1h
dmu1130 x 15jobshop34023430openlb OptalCP | ub PLC2015
dmu1230 x 15jobshop34813492openlb OptalCP | ub SS2018
dmu1330 x 15jobshop36813681hardOptalCP in < 3h
dmu1430 x 15jobshop33943394toyCP-SAT in < 1m
dmu1530 x 15jobshop33433343easyOptalCP in < 10m
dmu1630 x 20jobshop37343750openlb CPO2015 | ub LHW2024
dmu1730 x 20jobshop37333811openlb OptalCP | ub DOFP2026
dmu1830 x 20jobshop38443844hardOptalCP in < 10h
dmu1930 x 20jobshop37073764openlb OptalCP | ub CS2022
dmu2030 x 20jobshop36323699openlb OptalCP | ub LHW2024
dmu2140 x 15jobshop43804380toyOptalCP in < 1m
dmu2240 x 15jobshop47254725toyOptalCP in < 1m
dmu2340 x 15jobshop46684668toyOptalCP in < 1m
dmu2440 x 15jobshop46484648toyOptalCP in < 1m
dmu2540 x 15jobshop41644164toyOptalCP in < 1m
dmu2640 x 20jobshop46474647mediumOptalCP in < 1h
dmu2740 x 20jobshop48484848toyOptalCP in < 1m
dmu2840 x 20jobshop46924692toyOptalCP in < 1m
dmu2940 x 20jobshop46914691toyOptalCP in < 1m
dmu3040 x 20jobshop47324732mediumOptalCP in < 1h
dmu3150 x 15jobshop56405640toyOptalCP in < 1m
dmu3250 x 15jobshop59275927toyOptalCP in < 1m
dmu3350 x 15jobshop57285728toyOptalCP in < 1m
dmu3450 x 15jobshop53855385toyOptalCP in < 1m
dmu3550 x 15jobshop56355635toyOptalCP in < 1m
dmu3650 x 20jobshop56215621toyOptalCP in < 1m
dmu3750 x 20jobshop58515851toyOptalCP in < 1m
dmu3850 x 20jobshop57135713toyOptalCP in < 1m
dmu3950 x 20jobshop57475747toyOptalCP in < 1m
dmu4050 x 20jobshop55775577toyOptalCP in < 1m
dmu4120 x 15jobshop31763248openlb OptalCP | ub PLC2015
dmu4220 x 15jobshop33393390openlb OptalCP | ub SS2018
dmu4320 x 15jobshop34413441hardOptalCP in < 7h
dmu4420 x 15jobshop34143475openlb OptalCP | ub SS2018
dmu4520 x 15jobshop32173266openlb OptalCP | ub CS2022
dmu4620 x 20jobshop37804035openlb OptalCP | ub GR2014
dmu4720 x 20jobshop37143939openlb OptalCP | ub GR2014
dmu4820 x 20jobshop36283763openlb OptalCP | ub SS2018
dmu4920 x 20jobshop35433706openlb OptalCP | ub LHW2024
dmu5020 x 20jobshop36183729openlb OptalCP | ub PLC2015
dmu5130 x 15jobshop40704151openlb OptalCP | ub QXL2026
dmu5230 x 15jobshop42034297openlb OptalCP | ub LHW2024
dmu5330 x 15jobshop42484378openlb OptalCP | ub CS2022
dmu5430 x 15jobshop42774360openlb OptalCP | ub QXL2026
dmu5530 x 15jobshop41914258openlb OptalCP | ub LHW2024
dmu5630 x 20jobshop47554934openlb OptalCP | ub QXL2026
dmu5730 x 20jobshop44624643openlb OptalCP | ub QXL2026
dmu5830 x 20jobshop44844701openlb OptalCP | ub CS2022
dmu5930 x 20jobshop43664607openlb OptalCP | ub LHW2024
dmu6030 x 20jobshop44684721openlb OptalCP | ub CS2022
dmu6140 x 15jobshop50385166openlb OptalCP | ub DOFP2026
dmu6240 x 15jobshop51765244openlb OptalCP | ub QXL2026
dmu6340 x 15jobshop52455296openlb OptalCP | ub QXL2026
dmu6440 x 15jobshop51555225openlb OptalCP | ub QXL2026
dmu6540 x 15jobshop51225158openlb OptalCP | ub DOFP2026
dmu6640 x 20jobshop55265692openlb OptalCP | ub DOFP2026
dmu6740 x 20jobshop56615774openlb OptalCP | ub QXL2026
dmu6840 x 20jobshop55135749openlb OptalCP | ub DOFP2026
dmu6940 x 20jobshop55115682openlb OptalCP | ub DOFP2026
dmu7040 x 20jobshop56335868openlb OptalCP | ub CS2022
dmu7150 x 15jobshop61296206openlb OptalCP | ub QXL2026
dmu7250 x 15jobshop64346448openlb CdGKGC2025 | ub QXL2026
dmu7350 x 15jobshop61076132openlb OptalCP | ub QXL2026
dmu7450 x 15jobshop61686196openlb OptalCP | ub SS2018
dmu7550 x 15jobshop61236186openlb OptalCP | ub DOFP2026
dmu7650 x 20jobshop64796708openlb OptalCP | ub DOFP2026
dmu7750 x 20jobshop65206739openlb OptalCP | ub QXL2026
dmu7850 x 20jobshop66436744openlb OptalCP | ub QXL2026
dmu7950 x 20jobshop67206899openlb OptalCP | ub QXL2026
dmu8050 x 20jobshop64606621openlb OptalCP | ub DOFP2026

Da Col and Teppan 2022 - taillard-like instances

InstanceSizeProblemLBUBTypeSolved by
tai_10_10_110 x 10jobshop82198219toyOptalCP in < 1m
tai_10_10_210 x 10jobshop74167416toyOptalCP in < 1m
tai_10_10_310 x 10jobshop80948094toyOptalCP in < 1m
tai_10_10_410 x 10jobshop86578657toyOptalCP in < 1m
tai_10_10_510 x 10jobshop79367936toyOptalCP in < 1m
tai_10_10_610 x 10jobshop85098509toyOptalCP in < 1m
tai_10_10_710 x 10jobshop82998299toyOptalCP in < 1m
tai_10_10_810 x 10jobshop77887788toyOptalCP in < 1m
tai_10_10_910 x 10jobshop83008300toyOptalCP in < 1m
tai_10_10_1010 x 10jobshop84818481toyOptalCP in < 1m
tai_10_100_110 x 100jobshop5660956609toyOptalCP in < 1m
tai_10_100_210 x 100jobshop5233052330toyOptalCP in < 1m
tai_10_100_310 x 100jobshop5641256412toyOptalCP in < 1m
tai_10_100_410 x 100jobshop5488954889toyOptalCP in < 1m
tai_10_100_510 x 100jobshop5460354603toyOptalCP in < 1m
tai_10_100_610 x 100jobshop5372353723toyOptalCP in < 1m
tai_10_100_710 x 100jobshop5545655456toyOptalCP in < 1m
tai_10_100_810 x 100jobshop5646656466toyOptalCP in < 1m
tai_10_100_910 x 100jobshop5509655096toyOptalCP in < 1m
tai_10_100_1010 x 100jobshop5666156661toyOptalCP in < 1m
tai_10_1000_110 x 1000jobshop515370515370toyOptalCP in < 1m
tai_10_1000_210 x 1000jobshop513525513525toyOptalCP in < 1m
tai_10_1000_310 x 1000jobshop508161508161toyOptalCP in < 1m
tai_10_1000_410 x 1000jobshop513814513814toyOptalCP in < 1m
tai_10_1000_510 x 1000jobshop517020517020toyOptalCP in < 1m
tai_10_1000_610 x 1000jobshop517777517777toyOptalCP in < 1m
tai_10_1000_710 x 1000jobshop514921514921toyOptalCP in < 1m
tai_10_1000_810 x 1000jobshop522277522277toyOptalCP in < 1m
tai_10_1000_910 x 1000jobshop511213511213toyOptalCP in < 1m
tai_10_1000_1010 x 1000jobshop509855509855toyOptalCP in < 1m
tai_100_10_1100 x 10jobshop5495154951toyOptalCP in < 1m
tai_100_10_2100 x 10jobshop5716057160toyOptalCP in < 1m
tai_100_10_3100 x 10jobshop5416654166toyOptalCP in < 1m
tai_100_10_4100 x 10jobshop5437154371toyOptalCP in < 1m
tai_100_10_5100 x 10jobshop5614256142toyOptalCP in < 1m
tai_100_10_6100 x 10jobshop5244752447toyOptalCP in < 1m
tai_100_10_7100 x 10jobshop5405154051toyOptalCP in < 1m
tai_100_10_8100 x 10jobshop5562455624toyOptalCP in < 1m
tai_100_10_9100 x 10jobshop5421054210toyOptalCP in < 1m
tai_100_10_10100 x 10jobshop5546455464toyOptalCP in < 1m
tai_100_100_1100 x 100jobshop6284376926openOptalCP
tai_100_100_2100 x 100jobshop6281477322openOptalCP
tai_100_100_3100 x 100jobshop6153376910openOptalCP
tai_100_100_4100 x 100jobshop6474278604openOptalCP
tai_100_100_5100 x 100jobshop6176678023openOptalCP
tai_100_100_6100 x 100jobshop6136077895openOptalCP
tai_100_100_7100 x 100jobshop6404077670openOptalCP
tai_100_100_8100 x 100jobshop6322478031openOptalCP
tai_100_100_9100 x 100jobshop6263179419openOptalCP
tai_100_100_10100 x 100jobshop6486677837openOptalCP
tai_100_1000_1100 x 1000jobshop522298533080openOptalCP
tai_100_1000_2100 x 1000jobshop530375538067openOptalCP
tai_100_1000_3100 x 1000jobshop530560538757openOptalCP
tai_100_1000_4100 x 1000jobshop527101534746openOptalCP
tai_100_1000_5100 x 1000jobshop517728529580openOptalCP
tai_100_1000_6100 x 1000jobshop522907534969openOptalCP
tai_100_1000_7100 x 1000jobshop522537534974openOptalCP
tai_100_1000_8100 x 1000jobshop526428535757openOptalCP
tai_100_1000_9100 x 1000jobshop528097536993openOptalCP
tai_100_1000_10100 x 1000jobshop521766529918openOptalCP
tai_1000_10_11000 x 10jobshop515334515334toyOptalCP in < 1m
tai_1000_10_21000 x 10jobshop509226509226toyOptalCP in < 1m
tai_1000_10_31000 x 10jobshop517493517493toyOptalCP in < 1m
tai_1000_10_41000 x 10jobshop519369519369toyOptalCP in < 1m
tai_1000_10_51000 x 10jobshop513881513881toyOptalCP in < 1m
tai_1000_10_61000 x 10jobshop511932511932toyOptalCP in < 1m
tai_1000_10_71000 x 10jobshop523900523900toyOptalCP in < 1m
tai_1000_10_81000 x 10jobshop513101513101toyOptalCP in < 1m
tai_1000_10_91000 x 10jobshop508701508701toyOptalCP in < 1m
tai_1000_10_101000 x 10jobshop521360521360toyOptalCP in < 1m
tai_1000_100_11000 x 100jobshop525343525343mediumOptalCP in < 1h
tai_1000_100_21000 x 100jobshop528088528088hardOptalCP in < 2h
tai_1000_100_31000 x 100jobshop522793522793hardOptalCP in < 2h
tai_1000_100_41000 x 100jobshop524271524271hardOptalCP in < 2h
tai_1000_100_51000 x 100jobshop531216531216mediumOptalCP in < 1h
tai_1000_100_61000 x 100jobshop518763518763hardOptalCP in < 3h
tai_1000_100_71000 x 100jobshop527093527093hardOptalCP in < 2h
tai_1000_100_81000 x 100jobshop519524519524hardOptalCP in < 3h
tai_1000_100_91000 x 100jobshop520889520889hardOptalCP in < 3h
tai_1000_100_101000 x 100jobshop529112529112hardOptalCP in < 3h
tai_1000_1000_11000 x 1000jobshop549392811195openOptalCP
tai_1000_1000_21000 x 1000jobshop549043813044openOptalCP
tai_1000_1000_31000 x 1000jobshop552580811269openOptalCP
tai_1000_1000_41000 x 1000jobshop547670809549openOptalCP
tai_1000_1000_51000 x 1000jobshop545193811467openOptalCP
tai_1000_1000_61000 x 1000jobshop547286813117openOptalCP
tai_1000_1000_71000 x 1000jobshop545877809043openOptalCP
tai_1000_1000_81000 x 1000jobshop549220812442openOptalCP
tai_1000_1000_91000 x 1000jobshop543559810111openOptalCP
tai_1000_1000_101000 x 1000jobshop549075809421openlb Hexaly | ub OptalCP

Da Col and Teppan (2022) - reentrant jobshop

InstanceSizeProblemLBUBTypeSolved by
dct-long-100-10000-1103 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-100-10000-2103 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-100-10000-3103 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-100-100000-1109 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-100-100000-2114 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-100-100000-3109 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-1000-10000-11002 x 1000reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-1000-10000-21002 x 1000reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-1000-10000-31002 x 1000reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-1000-100000-11002 x 1000reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-1000-100000-21002 x 1000reentrant jobshop600000600000toyOptalCP in < 1m
dct-long-1000-100000-31003 x 1000reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-100-10000-12162 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-100-10000-22192 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-100-10000-32169 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-100-100000-120685 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-100-100000-220870 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-100-100000-320767 x 100reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-1000-10000-12882 x 1000reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-1000-10000-22863 x 1000reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-1000-10000-32897 x 1000reentrant jobshop600000600000toyOptalCP in < 1m
dct-short-1000-100000-121280 x 1000reentrant jobshop600000600019openOptalCP
dct-short-1000-100000-221349 x 1000reentrant jobshop600000600000mediumOptalCP in < 1h
dct-short-1000-100000-321338 x 1000reentrant jobshop600000600000mediumOptalCP 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

InstanceSizeProblemLBUBTypeSolved by
bel00792 x 48reentrant jobshop766329766329toyOptalCP in < 1m
bel01627 x 52reentrant jobshop428900428900toyOptalCP in < 1m
bel02660 x 59reentrant jobshop270437270437toyOptalCP in < 1m
bel03691 x 52reentrant jobshop670943670943toyOptalCP in < 1m
bel04952 x 63reentrant jobshop408633408633toyOptalCP in < 1m
bel05929 x 59reentrant jobshop620171620171toyOptalCP in < 1m
bel06678 x 57reentrant jobshop502510502510toyOptalCP in < 1m
bel07968 x 55reentrant jobshop750360750360toyOptalCP in < 1m
bel08822 x 65reentrant jobshop484451484451toyOptalCP in < 1m
bel09651 x 53reentrant jobshop534811534811toyOptalCP in < 1m
bel10733 x 61reentrant jobshop468304468304toyOptalCP in < 1m
bel11761 x 66reentrant jobshop509503509503toyOptalCP in < 1m
bel12897 x 64reentrant jobshop388715388715toyOptalCP in < 1m
bel13836 x 54reentrant jobshop420576420576toyOptalCP in < 1m
bel14935 x 57reentrant jobshop11150631115063toyOptalCP in < 1m
bel15818 x 48reentrant jobshop610946610946toyOptalCP in < 1m
bel16855 x 59reentrant jobshop575843575843toyOptalCP in < 1m
bel17662 x 47reentrant jobshop520426520426toyOptalCP in < 1m
bel18677 x 50reentrant jobshop347889347889toyOptalCP in < 1m
bel19806 x 69reentrant jobshop529239529239toyOptalCP in < 1m


Publications (best known solutions)

The upper and lower bounds come from:

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.