Details
Scheduling problems are notoriously difficult to solve efficiently with an algorithm, as already problems with only 3 resources and seemingly simple constraints can be impossible to solve to optimality in reasonable time. Additionally, scheduling problems in real life contain various constraints on top of such a rather simple setting which make the problem even more difficult. Therefore, the most promising path in solving scheduling problems is a generic heuristic providing good, but not necessarily optimal solutions in reasonable time. It is important to mention that the scheduling algorithm will always create a schedule, sometimes with not all batches scheduled, in the worst case a completely empty schedule. The user can then use such a solution as the basis for further finetuning in the UI. The message “no feasible answer is possible” is not practical in an operational planning and scheduling environment, for as much as it may be true from a mathematical perspective. The scheduling algorithm covers common requirements like “don’t run two production batches at the same time on the same resource”, “only run production batches on a resource that is capable of doing so” or “don’t produce on a resource while having a downtime”. On top of that, the user can activate and deactivate constraints and objectives to align the scheduling algorithm’s behavior with their business needs.