Resolved to Solve Production Scheduling? (Don’t hurt yourself trying)

This is the time of the year where we spend a few minutes looking back and reviewing our performance asking ourselves what we’d like to improve most. In our personal lives, it’s typically staying with the diet, getting to the gym more, or resolving to take more time to smell the roses.

What We’d Like To Improve Most

In a Manufacturing company, it’s those things that effect the performance of the company most. What makes the company happy? Better quality, higher on-time delivery percentage, more revenue and higher profitability often are the list leaders.

Better Production Scheduling promises to positively contribute to all of these; most directly, on-time delivery, and then of course Lead-time reduction. So, even if you’re already at 95%+ on-time with your commitments to your customers, your marketplace may be telling you that you need to get faster, and reduce those lead times even further.

Many companies are scheduling production on a white board or in spreadsheets using data downloaded from their ERP system. There are some pretty elaborate ones out there, but at the end of the day, once you’re out of the system, you’re scheduling manually and someone is spending hours, maybe days, each week keeping that spreadsheet or whiteboard up to date so the shop floor folks will have some idea of knowing what to work on next. Forget about future visibility, this is a day to day effort.

If your ERP does have Scheduling in it, whether just “rough-cut” (infinite capacity) loading, or finite capacity scheduling, or even a bolt-on Advanced Planning & Scheduling tool, none are designed to give you an optimal plan.

The Elusive Optimal Schedule

The fact is, Production Scheduling is an unsolvable problem. Taking a mix of work orders or jobs, each consisting of a “path” (routing or operation steps) that each needs to follow, is related to the Traveling Salesman Problem. That is, given a list of cities the salesperson needs to visit, and the distances between each pair of cities, what is the shortest path that traverses all cities returning to the point of origin? In advanced computer science classes, they teach you that there exists a set of problems that are unsolvable regardless of the computing power you throw at it. And that if you show that one problem that is known to be unsolvable is related to another, it is also of that set – and unsolvable. There is no computer program that can provide an optimal “Schedule” for all your operations across all your work orders and resources.

Then what are today’s Scheduling programs doing? They use “heuristics” – algorithms that approximate how and when it might make sense to initiate and stop jobs. In a typical Finite Scheduling program, you’ll find what is essentially a capacity loading algorithm that takes one order at a time and lays out the operations onto available capacity in a forward or backward direction, assuming limited (finite) or unlimited (infinite) capacity for each resource.

The “Load vs. Capacity” Picture

Assuming we have fairly accurate setup and run times, routings, calendar and resource definitions, what we end up with is a pretty good “Load vs Capacity” picture. Unfortunately, what we then assume is that the resulting order of operations in the “schedule” is the optimal way to run them right now out in the shop. So we print out a ‘dispatch list’, walk it out to the folks on the shop floor, and their return looks remind us: What did we just say about the possibility of an “optimal schedule”?

If manual whiteboards and spreadsheets are too limited and time-consuming, and the hope for scheduling programs has been to tell me what I should really work on next, then where should I look?