OptalCP on the largest job shop benchmarks
People regularly ask how OptalCP does on the big benchmarks. The largest job shop instances around are the ones published by Giacomo Da Col and Erich Teppan: randomly generated by the same generator as the classic Taillard set, in sizes from 100 jobs on 100 machines up to 1,000 jobs on 1,000 machines — one million operations in a single scheduling problem. We recently ran OptalCP on them: all ten 1000×100 instances (100,000 operations each) are now solved to proven optimality, and on the 1000×1000 instances we obtained the best known results.
Real problems look different
Before the numbers, a caveat. Real scheduling problems do not look like these instances: in a real factory the same products are made again and again, there are usually far more jobs than machines, and the difficulty hides in the messy side constraints — setup times, calendars, batching, operators. Problems of that kind are what drives the development of OptalCP. The academic benchmarks are still a useful stress test of scale, and we run them because people are curious — honestly, so were we.
How big is a million operations?
For scale: ft10, the most famous job shop instance of all — the one that
resisted every solution attempt for 26 years after its publication in 1963 —
has 10 jobs on 10 machines, that is 100 operations. The instances in this post
are a thousand to ten thousand times bigger. A schedule for the largest of
them assigns start times to a million operations; printed one operation per
line, it would fill about 20,000 pages.
1,000 jobs × 100 machines
Proving optimality means more than finding a good schedule: it is a certificate that no better schedule exists — and as far as I know, nobody had one for these instances until now. Here are the optimal solutions found by OptalCP 2026.4.0:
| Instance | Optimum |
|---|---|
| 1 | 525,343 |
| 2 | 528,088 |
| 3 | 522,793 |
| 4 | 524,271 |
| 5 | 531,216 |
| 6 | 518,763 |
| 7 | 527,093 |
| 8 | 519,524 |
| 9 | 520,889 |
| 10 | 529,112 |
And this is what one of these optimal schedules looks like — instance 5, all 100,000 operations in a single picture. Each row is one of the 100 machines, time runs from left to right, and every colored speck is one operation, colored by the job it belongs to:

The empty gaps are the rare moments a machine sits idle. It is guaranteed that no schedule of these 100,000 operations finishes sooner.
100 jobs × 1,000 machines
Flip the shape — 100 jobs on 1,000 machines, still 100,000 operations each — and the game changes: OptalCP finds good schedules, but no optimality proofs. These instances remain open. The best makespans we found:
| Instance | Best makespan |
|---|---|
| 1 | 533,080 |
| 2 | 538,067 |
| 3 | 538,757 |
| 4 | 534,746 |
| 5 | 529,580 |
| 6 | 534,969 |
| 7 | 534,974 |
| 8 | 535,757 |
| 9 | 536,993 |
| 10 | 529,918 |
1,000 jobs × 1,000 machines
And then the million-operation ones. For these we used a prototype setup. The makespans we reached:
| Instance | Best makespan |
|---|---|
| 1 | 811,195 |
| 2 | 813,044 |
| 3 | 811,269 |
| 4 | 809,549 |
| 5 | 811,467 |
| 6 | 813,117 |
| 7 | 809,043 |
| 8 | 812,442 |
| 9 | 810,111 |
| 10 | 809,421 |
To the best of my knowledge, these are the best makespans obtained for these instances to date. Making OptalCP solve instances of this size out of the box is work in progress.
That's it
Just the numbers this time. But if your scheduling problem looks less like a random matrix and more like a real factory — the same products week after week, far more jobs than machines, constraints everywhere — that is exactly what OptalCP is built for: get in touch or head to the Quick Start.
