top of page

# Suboptimal resource-constrained CPM Scheduling - Part I

Manually planning and scheduling sub-sets of repetable activities, that could be done in parallel or in series, depending on the availability of resources, can lead to the paradox where optimal individual decisions on each activity lead to a suboptimal overall project plan.

The cause of this is threefold: manual planning (which requires the user to input all information), pre-defining resource availability and CPM scheduling. Again, neither of these elements are negative or non-ideal, but combining them can lead to suboptimal results as we will see in this article.

#### Typical project plan

To illustrate the point we will look into the details of a road construction project. Within this fairly big project schedule, we will focus on a sub-set of activities: illumination & electrical works.

Like all roads, this one goes from point A to B, and the schedule breaks down illumination & electrical works in 9 road sections based on distance. The scope within sections varies: from a few activities in some to more complex scopes involving not only illumination & electrical cabling work but housing, buildings, etc.

The common ground between all these activities is that the work is carried out by the same resource. In this example lets assume there is a specific subcontractor doing all electrical & illumination work. If we had infinite resources we could work on all 9 sections in parallel. If the contractor only had 1 crew, then there is really only 1 option. In between both extremes, there are millions of combinations. The next question is how do we plan this?

To solve this puzzle using commonly used scheduling software we would need to take a series of steps:

• First we would need to make a practical decision. Whether to extract this sub-set of illumination & electrical work activities into another file to play around with potentially facing some integration issues once we try to merge back these activities or do it directly on the master file with the potential to screw up something else without noticing.

• Lets assume we extract the subset, the next thing would be to load resources to each of the activities. Adding 1 unit of resource for the duration of each activity shouldn't take too long, a couple of minutes doing copy & paste or using excel import.

• Next we look into the most extreme case: assuming we can work on all 9 sections at the same time. What is the resourcing required to execute this? In our example, simply checking the resource histogram on our scheduling software, the peak demand is of 11 crews:

• Bringing in 11 crews for the first week of december, then reduce these gradually until mid-month were work stabilizes at ~2/3 crews per day is far from optimal from a resource stand-point. The sub-contractor would only be happy about this if we are willing to pay top dollar for it. This is where the "fun" starts.

• From here onwards we would only have one option and an almost guaranteed outcome:

• Consider a max resource value i.e. "5 crews"

• Click on the resource levelling option

• Identify the days where the constraint isn't met (limited by CPM logic)

• Manually adjust tens or hundreds of tasks in order to comply with the constraint & modify the Finish-Start logics

• Find a viable option

• Note down the project duration, start and end dates of this option

• Repeat with a diferent constraint value...

Each of these iterations would take in the order of hours thus sooner than later we would settle for a "satisfactory" option. This is what we meant with optimal individual decisions leading to a suboptimal overall plan:

Manual planning + pre-defining resource availability + CPM scheduling

The example has been simplified making a set of assumptions:

• Resource allocation to activities is equal on all activities

• Resource quantity allocated to each activity can't be changed, thus there is no change to individual activity durations

One can appreciate the complexity of the challenge as well as the potential amount of money that is being left on the table by making suboptimal resourcing decissions based on optimal sub-decisions!

#### A complex multi-variable optimization problem that can be solved

The advances of Artificial Intelligence and Cloud Computing have made it possible to solve this problem within seconds and in an easy way for any planner that faces such a problem.

Using Frontline, the process would be simplified to this:

• Upload the schedule to Frontline

• Select the options "Assign default resources for all tasks" & "Adjust task-task lag". The first option will assign 1 unit of resource to each activity eliminating the need to do this manually on the scheduling software. The second option will ensure that the constraints are met modifying the start & end dates of activities based on resource availability, but not the duration of each individual activity.

• Click run... Frontline will generate in seconds the best options considering multivariable optimization criteria: reduce duration, minimize resource, minimize cost, level resources, etc.

• Each dot is an alternative the user can select, but still, how to make an informed decision? By identifying Illumination & Electrical crews as a constraint, Frontline will study the best options within the range of the constraint, in this case 1 to 11 crews:

• Within each of the options we can look into the details on the schedule & resource histogram. Looking at the details for the best option with 7 crews, we can see that reducing from 11 to 7 doesn't affect the completion date and that the resource distribution is significantly improved vs the initial plan.

#### Great but what about cost? Cost always plays into any decision

Its true, we still don't have the complete picture to make a decision. Costs plays a significant role in determining resourcing for a proyect. Both from the GC perspective as well as for the subcontractor. Lets look at some of the doors that AI-powered optimization can open to planners trying to integrate (or hammer?) cost into their schedule.

With Frontline the user can easily input a unit cost per resource and define the period of measure: daily, weekly, monthly. This way not only can the schedule be optimized for duration and resources but also cost.

In our example we considered the weekly and monthly periods to evaluate the cost implications of resourcing. Ideally a project manager would be able to bring the exact number of resources required each day regardless of the fluctuations; Monday 5 plumbers, Tuesday 1, Wednesday 3 plumbers, etc. The reality of a project is more challenging as there are logistics involved thus weekly or monthly periods seem more reasonable.

Frontline takes the crews required each week or month to evaluate the cost of each decision. In this example we have considered a daily cost of \$100, a weekly cost of \$500 and a monthly cost of \$2000 per crew.

The graph above aids in making a decision. The optimal trajectory for duration, resources & cost finds a minimum between 6 and 7 crews. Considering weekly cost, the decision is reduced to:

• Option A: 32 days, 6 crews & \$17408

• Option B: 30 days, 7 crews & \$17408

B being the clear winner in our example! 🎉

#### Now what?

Really nothing more... just kidding. The last step is downloading this optimized project schedule back to the scheduling software that is being used:

The exported file will contain the sequence modification introduced by Frontline. In this exercise activity duration & resource allocation remains unchanged, only start and end dates are modified. To comply with CPM scheduling Frontline adds lags to those activities which had their start date changed due to resource availability.

Within 10 minutes, aided by Artificial Intelligence and construction simulation and optimization software, we have an optimal solution to the challenge.

Next step is change 1 key assumption we have made to simplify this exercise. That is: resource allocation to each activity can't change. But in a construction project environment, there are numerous activities that can be done faster or slower depending on resource productivity or quantity of resource allocated to such activity.

We leave this for the next post...stay tunned! 📻

bottom of page