OR-Notes are a series of introductory notes on topics that fall under the broad heading of the field of operations research (OR). They were originally used by me in an introductory OR course I give at Imperial College. They are now available for use by any students and teachers interested in OR subject to the following conditions.

A full list of the topics available in OR-Notes can be found here.

The network diagram is shown below.

Using the package the project duration using normal times is 20 days and the critical path B-C-E-G-H, as below.

To crash the project by one day list all the crashable activities on the critical path and their associated incremental cost:

- B incremental cost 400
- C incremental cost 200
- E incremental cost 250
- G incremental cost 300
- H incremental cost 400

The lowest incremental cost is associated with activityC and hence we choose to crash activity C by one day. The new situation after activity C has been crashed is shown below.

Note that we now have two critical paths - which complicates things.

Again we list all the crashable activities on the critical paths and their associated incremental cost:

- B incremental cost 400
- D incremental cost 500
- E incremental cost 250
- G incremental cost 300
- H incremental cost 400

Note that C, although on a critical path, is not listed here. This is because it has already been crashed to its maximum extent.

Examining the critical paths of B-C-E-G-H and B-D-E-G-H it is clear that:

- crashing B, E, G or H would reduce the duration of each critical path and so would reduce the completion time of the entire project;
- crashing D would achieve nothing since the other critical path B-C-E-G-H would still dominate (and C cannot be crashed).

From B, E, G or H the best choice is E with an incremental cost of 250 and so we would choose to crash E by one day.

In order to formulate the problem consider the same network diagram as above, but with a dummy end activity (I) added as below.

Using a similar notation as in the lecture notes let x_{A},
x_{B}, etc be the starting times for each activity and c_{A},
c_{B}, etc be the number of days by which we reduce (crash) each
activity. Taking each precedence relationship in the above network in turn
and making use of the normal times we have the constraints:

x_{C} >= x_{A} + 4 - c_{A
}x_{C} >= x_{B} + 6 - c_{B
}x_{D} >= x_{B} + 6 - c_{B
}x_{E} >= x_{C} + 3 - c_{C
}x_{E} >= x_{D} + 2 - c_{D
}x_{F} >= x_{E} + 5 - c_{E
}x_{G} >= x_{E} + 5 - c_{E
}x_{H} >= x_{G} + 2 - c_{G
}x_{I} >= x_{H} + 4 - c_{H
}x_{I} >= x_{F} + 2 - c_{F}

all x variables >=0

The constraints limiting the crashing for each activity are:

0 < = c_{A} <= 1

0 < = c_{B} <= 3

0 < = c_{C} <= 1

0 < = c_{D} <= 1

0 < = c_{E }<= 2

0 < = c_{F} <= 1

0 <= c_{G} <= 1

0 <= c_{H} <= 2

Introducing a variable d >= 0 to "represent" the number of days we finish past day 14 we have

d >= x_{I }- 14

our objective is:

minimise 250x_{I} + 100d + 100c_{A} + 400c_{B}
+ 200c_{C} +500c_{D} + 250c_{E} + 100c_{F}
+ 300c_{G} + 400c_{H}

and this completes our LP formulation.

If activity B can be crashed by a further day, at an additional cost
of 750, then introduce an additional variable c_{BB} indicating
whether we crash B by this additional day or not, where 0 <= c_{BB}
<=1 and:

- add 750c
_{BB}to the objective given above - modify the constraints involving the completion time of B as:
- x
_{C}>= x_{B}+ 6 - c_{B }becomes x_{C}>= x_{B}+ 6 - c_{B }- c_{BB} - x
_{D}>= x_{B}+ 6 - c_{B }becomes x_{D}>= x_{B}+ 6 - c_{B }- c_{BB}