# How can my PERT diagram take account of my resources?

I want to define the critical path of my project by using a PERT diagram. Let's take a trivial example to show you my problem.

I have 4 tasks defined like this:

• Task A with a duration of 1 day without any antecedent ;
• Task B with a duration of 2 days without any antecedent ;
• Task C with a duration of 2 days with tasks A and B as antecedents ;
• Task D with a duration of 2 days with task C as antecedent.

I get this critical path: B -> C -> D. The problem is: what if the tasks A and B need more than all my resources? The task B will fall behind whatever it happens so the task A have to be present in the critical path, right?

How can I handle it?

• What scheduling software are you using to define the CP? MS Project? Did you run the resource leveler? Mar 17, 2017 at 12:42
• The software I'm using is my brain and my pen. :) How works a resource leveler? Mar 17, 2017 at 13:17
• Sorry I wrote my answer below before seeing your comment. "Brain and pen" is great, though your 4-activity trivial example is about the most mine could manage. I don't know exactly how resource levelers work - they use some pretty complex math - but at the end some tasks are delayed (compared to their CPM early dates) to arrive at a schedule that is achievable with limited resources. Mar 17, 2017 at 13:38

1. The CPM schedule as defined is not achievable due to resource over-allocation. A "critical path" definition for an unrealistic schedule is fiction.
2. Assuming you are using one of the conventional scheduling tools like MSP or P6, you have two ways to relieve the over-allocation and define a realistic schedule: a) Insert a (soft logic) link between A and B to define the preferred sequence, or b) Execute the resource leveler to selectively delay A or B based on some priority rules.
3. Your question implies a preference for the resource-leveling option. In MSP, either A or B (whichever one is delayed by the leveler) will be shown as "Critical" after leveling, depending on your leveling options and priorities. The one that is not delayed will possess "phantom float" and be marked non-critical. Obviously it should be included on the "Resource-Constrained Critical Path," but MSP excludes it.

So, how can you handle it? Either use soft/preferential logic in your schedule or use a scheduling tool (or add-in) that defines the resource-constrained critical path.

This video shows how to organize the problem with a table, and proposes a simple greedy slack based heuristic solution: https://www.youtube.com/watch?v=7AJ73qxZtsI

This page http://www.pmknowledgecenter.com/dynamic_scheduling/baseline/critical-path-or-critical-chain-difference-caused-resources contains an awesome visualization of the problem with a single resource type:

I bet this problem can be reduced to an integer linear programming problem, which is NP-hard and widely studied.

Another consideration is if you can speed up tasks by putting more resources on them or not. If yes, the problem becomes less constrained, and likely easier to solve optimally.

Your critical path is a calculated result. If a work package is not on the critical path, it simply means that package itself has float and that it can move left and right on the calendar and not affect either the start of the next package or the end result of the project.

However, your critical path is not static; it's dynamic. It's constantly changing every time you update the schedule with progress. So a package this week may not be on the path but next week it is. Critical path analysis needs to occur continually so that you can update your schedule risk as you progress. So, as in your example, if a package is not on the critical path but you do not have high confidence that it will progress as planned, i.e., your planning values are known to be too optimistic, you can still highlight it as a schedule risk and mitigate accordingly as you would with a package on the path. As a PM, you're authorized to do such things.