# Algorithm to schedule tasks according to resource availability

Is there an algorithm to schedule tasks according to the resource availability? i.e. Andrew can only work on Tasks A, B, C; Betty only Tasks D, E and Cathy only Tasks F, G, H, I. All tasks A to I have different duration and dependency relationships with each other. The objective of the algorithm is to minimize the total project duration given these constraints.

I have tried to search for resource-based scheduling and all of them are basically resource-leveling classroom examples i.e. the objective is to keep the number of resources consistent throughout the project, assuming all resources are homogeneous/equal/inter-changeable, which is definitely not the case in reality.

If there is such an algorithm, can you please point me to the correct search terms or names of existing applications that can already do this?

• Constraint programming or planners seem two different approaches that could work for you. I suggest you make the question at Cross validated or computer science websites that are also part of stack exchange Aug 13, 2017 at 4:46

## 1 Answer

In the examples (as you mention also), interchangeable resources with some total availability are expected. However, you can treat schedule as multiple networks of single schedule. In the algorithms, there is a step where you select next eligible activity: here you can decide not only on resource availability, but also dependencies (to activities of different resources).

As you ask for keywords, try "Parallel schedule generation scheme".

To quote the resource linked below, giving the gist of the method:

"A parallel schedule generation scheme iterates over the time horizon of the project (i.e. a time incrementation) instead of iterating over the priority list (i.e. an activity incrementation) and adds activities that are eligible to be scheduled. More precisely, the scheme starts at time point t = 0 and schedules activities before the time pointer is increased. It selects at each decision point t the eligible activities E and assigns a scheduling sequence of these eligible activities according to the priority list. At each decision point, the eligible activities are scheduled with a starting time equal to the decision point (on the condition that there is no resource conflict). Activities that cannot be scheduled due to a resource conflict are skipped and become eligible to schedule at the next decision point t’ > t, which equals the earliest completion time of all activities active at the current decision point t."

Check the PM Knowledge Center page on Resource Scheduling, it lists couple resource-based scheduling approaches.

• Link-only answer are not welcome on PMSE. Could you add a relevant extract from the referenced link into your answer? Sep 13, 2017 at 12:17
• Hi Tom, welcome to PMSE! As other users highlighted, it's not advised to have answers as links - best case scenario, the link may become not accessible and your valuable answer is lost; worst case you're just spamming a specific external site (which doesn't seem to be your intention as your other answers on the community have no links whatsoever). Could you please then restructure your answer to make it independent of external links? Sep 13, 2017 at 17:43
• Hi all, thanks for correcting me, I was not aware of the approach. I have tried to update my response as much as possible without just completely copy-pasting the linked page.
– TomM
Sep 14, 2017 at 7:43