Capacity scheduling is an important task for manufacturing companies. It enables them to meet their commitments to their customers in time. Typically, finite capacity scheduling is the glue between master production planning and production execution. It transforms the general plan into an actionable schedule - taking into account concrete restrictions such as finite capacity.
Finite capacity scheduling is particularly important for make-to-order manufacturers who produce against concrete sales orders with hard delivery times. This blog shows how you can achieve finite capacity scheduling with Microsoft Dynamics 365 Business Central.
Finite capacity scheduling with standard Business Central
Finite scheduling is nothing new to Microsoft Dynamics 365 Business Central. With standard Business Central, you can achieve it via a functionality called capacity constrained resources. A term that is as old as time (for those seasoned consultants reading this).
Although it has its own benefits, it also has its own limitations in terms of when a machine or work center is overloaded. You can select your desired work/machine center and enter either a critical load and/or dampener:
- Critical load – Specifies the percentage of available capacity of a work center or machine center to apply load to
- Dampener – specifies the tolerance as a percent that you will allow the critical load percent to be exceeded for this work or machine center
Both these functionalities give you somewhat some flexibility within the capacity constraint resource feature.
According to Microsoft’s website about Set Up Work Centers and Machine Centers:
“Business Central does not support detailed shop floor control. It plans for a feasible utilization of resources by providing a rough-cut schedule, but it does not automatically create and maintain detailed schedules based on priorities or optimization rules… When planning with capacity-constrained resources, the system ensures that no resource is loaded above its defined capacity (critical load). This is done by assigning each operation to the nearest available time slot. If the time slot is not big enough to complete the entire operation, then the operation will be split into two or more parts placed in the nearest available time slots.”
This works fine for some customers but also creates confusion for most.
The biggest issue that we found and received as feedback from our customers, is when it comes to the limitation stated above, “… If the time slot is not big enough to complete the entire operation, then the operation will be split into two or more parts placed in the nearest available time slots”. This happens when a machine/work center is overloaded.
Realistically this does not make sense, as seen in the example below:
Above we see two operations coming from two different production orders (101771 & 101784). We see that the capacity-constrained resource functionality of standard Business Central does a good job in making sure that Drilling #1 is never overloaded.
But in most cases, the way that this is achieved is not what customers would expect.
It doesn’t make sense to start operation 20 from production order 101771, stop, then start operation 10 from production order 101784, then start operation 20 again. This is even more dangerous if there is set-up time involved.
Our approach to finite capacity scheduling
We have taken into consideration how the capacity-constrained resource functionality works and decided to have a different approach to it with our extension Visual Advanced Production Scheduler (VAPS). Like the capacity-constrained resource functionality, our extension also works as a finite capacity scheduler, making sure that each machine or work center is not overloaded at any point in time.
Instead of encountering the issue explained above, we make sure that each operation is finished before the next operation is scheduled. This becomes quite useful when you need to put priority on a single operation and delay other operations with less priority.
In the example shown above, you can see the red operation (production order 101112) that I want to squeeze in between the two blue operations (production order 101059 and 101081). The VAPS will move the red operation into that empty space and move all operations on its right side even more to the right, delaying them slightly, and making enough space to accommodate the red operation. This way, we make sure that each operation is finished before moving on to the next one.
If it so happens that a particular machine center of yours has infinite capacity or you don’t care about keeping an eye on its capacity, then we have the functionality to schedule with infinite capacity for a specific machine center.
How it all ties together in the Visual Advanced Production Scheduler (VAPS)
The VAPS uses its finite capacity scheduling logic to be able to offer several automatic scheduling functionalities and what we call scheduling tools. Those scheduling tools are focus-made to tackle very specific (different) scheduling challenges.
For example, it makes use of alternative machine centers. This combined with finite capacity works well. For example, when machine 1 is occupied at a certain period, but machine 2 has enough capacity (as machine 2 is set up as an alternative machine center to machine 1), then the VAPS is smart enough to suggest the assignment of this operation to machine 2.
The alternative machine centers are seen in the screenshot from the VAPS above. You can already see that as the operation on standby is selected, there are two highlighted areas where I am allowed to drag and drop the operation – either drilling #1 or drilling #2.
In general finite capacity scheduling gives us the possibility to perform a lot of automatic scheduling functionalities. All the functionalities below are only possible because machine centers are not over capacity:
- Apply standard routing – helps you efficiently schedule a single production order to its default machine center
- Apply alternative routing – helps you efficiently schedule a single production order to a machine center, considering the available alternatives
- Add all – is the bulk scheduling functionality, which can be done either by either assigning operations to their default machine centers or considering alternative machine centers also
- Fill idle times – this helps to avoid idle times, by rescheduling operations and even moving them between alternative machine centers
- Tighten queues – this minimizes the gaps between the operations on a specific machine center. This will not change the assignment of the operation nor its sequence
Want to learn more about the VAPS?