# 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

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.