Scheduling Logic

Looking for someone to confirm my scheduling knowledge. I believe I fully understand it but would like some validation. :grinning:

What I am trying to confirm is how the engine selects resources for an operation especially when there is no capacity on 1 resource. All of my examples/questions are based on the base module (not advanced).

Epicor will only schedule an operation against a resource that is in the resource group that is on the operation. We set up two resource groups (RG1 & RG2) that each have a brake in it. We set up an operation (Bend) with RG1 as the scheduling requirement. Since the brakes are not in the same resource group, Epicor will schedule everything on the RG1 brake and nothing on the RG2 brake. Correct?

If we set up a resource group called Brake and put both machines in it and then used the Brake resource group as the scheduling requirement then Epicor would balance the load against both brakes. Correct?

If we put a resource as the scheduling requirement on an operation, then no matter what, the engine will always schedule against that resource and not look for capacity on another resource. Correct?

Thanks in advance for the help.

Yes, generally speaking you are correct for all three questions.

Resource groups are used as the scheduling requirement when the group contains all of the like machines, or a group of machines that acts like a single resource (inter-dependencies cannot be altered).

Generally, Resources are used as the scheduling requirement when there is only one of that machine.

It gets a little more complicated when you start trying to also schedule the operators, and consider whether operator<->machine is a 1-to-1 relationship or if your operators can β€˜flex’ between machines/resources.

It gets even more complicated if you add Capabilities, but I think that is in Advanced module.

Thanks for confirming!

no problem!! Glad to help.

One additional comment, the finite or infinite setting can come into play also.

With finite set Epicor will not overload a resource and will move the days and times to open machine time.

It sounds like you are working with the resources set to infinite (finite off) and so a resource can be overloaded and jobs will then need to be dealt with manually to adjust.

Also note that only ONE of the scheduling requirement fields should be filled in, so do not enter both the Resource Group AND Resource in the scheduling requirements on the method or job.


@bboes - Good points sir. There is just so much that affects the scheduling algorithm that they need a huge TechRef just cover the standard scenarios.

Generally, when scheduling finitely, Epicor will select the lowest numbered resource in a group to look for available time. If that does not work, it will look for the second lowest numbered resource in a group to look for available time.

When scheduling infinitely, all the time is allocated against the lowest numbered resource in the group.