Linear Programming has many applications in Project Management. I present you one such application. Once you get the idea, you can apply it in so many different scenarios.
One of the major requirement of any Project Manager is to be able to complete the project early. There can be many reason why one may need to complete the Project early. Some of the reasons could be
- Early realisation of revenues
- Reduction in Direct and Indirect Costs
- It may be due to Customer Requirement
- It may be due to Contract Commitments (There are usually bonus associated with early completion of projects).
- Time to Market Pressures
- Pressure to move the resources to other Projects
- etc.
However, trying to complete the Project Early comes with a cost. Typical examples of cost associated with trying to complete the Project early are
- Cost due to added resources to the Project
- Cost due to Overtime spent on the Project
- etc.
- adding additional resources for some activities
- scheduling overtime
- outsourcing some project work
- forming a competent, dedicated, and focused core project team
- adopting a Critical-Chain approach to project management
- etc.
Consider the following Project Schedule.


With normal duration for each task, the project completion time is 11 weeks. The critical part is shown in red in the diagram.

The table shows the normal time and the associated normal direct cost, as well as the crash time and the associated crash cost. From this, we can calculate, as shown in the table, for each task, the maximum possible reduction from the normal duration and the slope of the assumed linear relationship.
First, let us try to solve this problem manually.
We want to determine the least incremental cost for reducing the project completion time by one week at a time.

We still have the same two critical paths.
The above approach to reduce the product duration is conceptually sound. But for large problems, it becomes very cumbersome and difficult to implement. A Linear Programming approach to solving this problem would be most appropriate.
- We need the durations to remain non-negative as a solution. So, we add one constraint for each duration referring to the Cell Address > 0. For example, if we have store the duration for Task A in Cell C4, then one constraint becomes C4 > 0.
- We need the durations to remain an Integer. So, we add one constraint for each duration variable. For example, if we have stored the duration for Task A in Cell C4, then one constraint becomes C4 is Integer.
- We need the Precedences to remain honoured in the solution. If the start date of Task A is in Cell D4 and the start date of Task B is in Cell D5, then one constraint would be D5 – D4 >= 2. However, we cannot enter a formula in the Constraints area of Solver. So, we need to add a new column where we can store the differences like D5 – D4. Say this Cell is E5. Then we can add the constraint E5 >= 2.
- We also need to add constraints to indicate that certain task durations cannot be altered. This can be done by fixing the duration of these tasks as per the current duration. For example, the duration of Task A cannot be crashed. So, we add a constraint as C4 = 2, where we assume that Cell C4 stores the duration for Task A and the duration for Task A is 2.
You must be logged in to post a comment.