The CPM Procedure

 

Example 4.13 Progress Update and Target Schedules

This example shows the use of the ACTUAL and BASELINE statements to track and compare a project’s progress with the original planned schedule. Consider the data in Example 4.1, for the network in AON format. Suppose that the project has started as scheduled on December 1, 2003, and that the current date is December 19, 2003. You may want to enter the actual dates for the activities that are already in progress or have been completed and use the CPM procedure to determine the schedule for activities that remain to be done. In addition to computing an updated schedule, you may want to check the progress of the project by comparing the current schedule with the planned schedule.

The BASELINE statement enables you to save a target schedule in the Schedule data set. In this example, suppose that you want to try to schedule the activities according to the project’s early start schedule. As a first step, schedule the project with PROC CPM, and use the SET= option in the BASELINE statement to save the early start and finish times as the baseline start and finish times. The following program saves the baseline schedule (in the variables B_START and B_FINISH), and Output 4.13.1 displays the resulting output data set.

data holidays;
   format holiday holifin date7.;
   input holiday & date7. holifin & date7. holidur;
   datalines;
24dec03  26dec03  4
01jan04  .        .
;
* store early schedule as the baseline schedule;

proc cpm data=widget holidata=holidays
         out=widgbase date='1dec03'd;
   activity task;
   succ     succ1 succ2 succ3;
   duration days;
   holiday  holiday / holifin=(holifin);
   baseline / set=early;
   run;

Output 4.13.1 Target Schedule
Progress Update and Target Schedules
Set Baseline Schedule

Obs task succ1 succ2 succ3 days E_START E_FINISH L_START L_FINISH T_FLOAT F_FLOAT B_START B_FINISH
1 Approve Plan Drawings Study Market Write Specs 5 01DEC03 05DEC03 01DEC03 05DEC03 0 0 01DEC03 05DEC03
2 Drawings Prototype     10 06DEC03 15DEC03 06DEC03 15DEC03 0 0 06DEC03 15DEC03
3 Study Market Mkt. Strat.     5 06DEC03 10DEC03 09JAN04 13JAN04 30 0 06DEC03 10DEC03
4 Write Specs Prototype     5 06DEC03 10DEC03 11DEC03 15DEC03 5 5 06DEC03 10DEC03
5 Prototype Materials Facility   15 16DEC03 03JAN04 16DEC03 03JAN04 0 0 16DEC03 03JAN04
6 Mkt. Strat. Test Market Marketing   10 11DEC03 20DEC03 14JAN04 23JAN04 30 30 11DEC03 20DEC03
7 Materials Init. Prod.     10 04JAN04 13JAN04 04JAN04 13JAN04 0 0 04JAN04 13JAN04
8 Facility Init. Prod.     10 04JAN04 13JAN04 04JAN04 13JAN04 0 0 04JAN04 13JAN04
9 Init. Prod. Test Market Marketing Evaluate 10 14JAN04 23JAN04 14JAN04 23JAN04 0 0 14JAN04 23JAN04
10 Evaluate Changes     10 24JAN04 02FEB04 29JAN04 07FEB04 5 5 24JAN04 02FEB04
11 Test Market Changes     15 24JAN04 07FEB04 24JAN04 07FEB04 0 0 24JAN04 07FEB04
12 Changes Production     5 08FEB04 12FEB04 08FEB04 12FEB04 0 0 08FEB04 12FEB04
13 Production       0 13FEB04 13FEB04 13FEB04 13FEB04 0 0 13FEB04 13FEB04
14 Marketing       0 24JAN04 24JAN04 13FEB04 13FEB04 20 20 24JAN04 24JAN04

As the project progresses, you have to account for the actual progress of the project and schedule the unfinished activities accordingly. You can do so by specifying actual start or actual finish times (or both) for activities that have already finished or are in progress. Progress information can also be specified using percent complete or remaining duration values. Assume that current information has been incorporated into the ACTUAL data set, shown in Output 4.13.2. The variables sdate and fdate contain the actual start and finish times of the activities, and rdur specifies the number of days of work that are still remaining for the activity to be completed, and pctc specifies the percent of work that has been completed for that activity.

Output 4.13.2 Progress Data Set ACTUAL
Progress Update and Target Schedules
Progress Data

Obs task sdate fdate pctc rdur
1 Approve Plan 01DEC2003 05DEC2003 . .
2 Drawings 06DEC2003 16DEC2003 . .
3 Study Market 05DEC2003 . 100 .
4 Write Specs 07DEC2003 12DEC2003 . .
5 Prototype . . . .
6 Mkt. Strat. 10DEC2003 . . 3
7 Materials . . . .
8 Facility . . . .
9 Init. Prod. . . . .
10 Evaluate . . . .
11 Test Market . . . .
12 Changes . . . .
13 Production . . . .
14 Marketing . . . .

The following statements invoke PROC CPM after merging the progress data with the Schedule data set. The NOAUTOUPDT option is specified so that only those activities that have explicit progress information are assumed to have started. The resulting Schedule data set contains the new variables A_START, A_FINISH, A_DUR, and STATUS; this data set is displayed in Output 4.13.3. The activity 'Mkt. Strat.', which has rdur='3' in Output 4.13.2, has an early finish time (December 21, 2003) that is three days after TIMENOW. The S_VAR and F_VAR variables show the amount of slippage in the start and finish times (predicted on the basis of the current schedule) as compared to the baseline schedule.

* merge the baseline information with progress update;
data widgact;
   merge  actual widgbase;
   run;
proc cpm data=widgact holidata=holidays
         out=widgnupd date='1dec03'd;
   activity task;
   succ     succ1 succ2 succ3;
   duration days;
   holiday  holiday / holifin=(holifin);
   baseline / compare=early;
   actual / a_start=sdate a_finish=fdate timenow='19dec03'd
            remdur=rdur pctcomp=pctc noautoupdt;
   run;

Output 4.13.3 Comparison of Schedules: NOAUTOUPDT
Progress Update and Target Schedules
Updated Schedule vs. Target Schedule: NOAUTOUPDT

Obs task succ1 succ2 succ3 days STATUS A_DUR A_START A_FINISH E_START E_FINISH L_START L_FINISH T_FLOAT F_FLOAT B_START B_FINISH S_VAR F_VAR
1 Approve Plan Drawings Study Market Write Specs 5 Completed 5 01DEC03 05DEC03 01DEC03 05DEC03 01DEC03 05DEC03 0 0 01DEC03 05DEC03 0 0
2 Drawings Prototype     10 Completed 11 06DEC03 16DEC03 06DEC03 16DEC03 06DEC03 16DEC03 0 0 06DEC03 15DEC03 0 1
3 Study Market Mkt. Strat.     5 Completed 5 05DEC03 09DEC03 05DEC03 09DEC03 05DEC03 09DEC03 0 0 06DEC03 10DEC03 -1 -1
4 Write Specs Prototype     5 Completed 6 07DEC03 12DEC03 07DEC03 12DEC03 07DEC03 12DEC03 0 0 06DEC03 10DEC03 1 2
5 Prototype Materials Facility   15 Pending . . . 19DEC03 06JAN04 19DEC03 06JAN04 0 0 16DEC03 03JAN04 3 3
6 Mkt. Strat. Test Market Marketing   10 In Progress . 10DEC03 . 10DEC03 21DEC03 10DEC03 21DEC03 0 0 11DEC03 20DEC03 -1 1
7 Materials Init. Prod.     10 Pending . . . 07JAN04 16JAN04 07JAN04 16JAN04 0 0 04JAN04 13JAN04 3 3
8 Facility Init. Prod.     10 Pending . . . 07JAN04 16JAN04 07JAN04 16JAN04 0 0 04JAN04 13JAN04 3 3
9 Init. Prod. Test Market Marketing Evaluate 10 Pending . . . 17JAN04 26JAN04 17JAN04 26JAN04 0 0 14JAN04 23JAN04 3 3
10 Evaluate Changes     10 Pending . . . 27JAN04 05FEB04 01FEB04 10FEB04 5 5 24JAN04 02FEB04 3 3
11 Test Market Changes     15 Pending . . . 27JAN04 10FEB04 27JAN04 10FEB04 0 0 24JAN04 07FEB04 3 3
12 Changes Production     5 Pending . . . 11FEB04 15FEB04 11FEB04 15FEB04 0 0 08FEB04 12FEB04 3 3
13 Production       0 Pending . . . 16FEB04 16FEB04 16FEB04 16FEB04 0 0 13FEB04 13FEB04 3 3
14 Marketing       0 Pending . . . 27JAN04 27JAN04 16FEB04 16FEB04 20 20 24JAN04 24JAN04 3 3

In order for you to see the effect of the AUTOUPDT option, the same project information is used with the AUTOUPDT option in the ACTUAL statement. Output 4.13.4 displays the resulting schedule. With the AUTOUPDT option (which is, in fact, the default option), PROC CPM uses the progress information and the precedence information to automatically fill in the actual start and finish information for activities that should have finished or started before TIMENOW. The activity 'Prototype' has no progress information in WIDGACT, but it is assumed to have an actual start date of December 17, 2003. This option is useful when there are several activities that take place according to the plan and only a few occur out of sequence; then it is sufficient to enter progress information only for the activities that did not follow the plan. The SHOWFLOAT option, also used in this invocation of PROC CPM, enables activities that are completed or in progress to have float; in other words, the late start schedule for activities in progress is not fixed by the progress information. Thus, the activity 'Study Market' has L_START='08JAN04' instead of '05DEC03', as in the earlier invocation of PROC CPM (without the SHOWFLOAT option). The following invocation of PROC CPM produces Output 4.13.4:

proc cpm data=widgact holidata=holidays
         out=widgupdt date='1dec03'd;
   activity task;
   succ     succ1 succ2 succ3;
   duration days;
   holiday  holiday / holifin=(holifin);
   baseline / compare=early;
   actual / as=sdate af=fdate timenow='19dec03'd
            remdur=rdur pctcomp=pctc
            autoupdt showfloat;
   run;

Output 4.13.4 Comparison of Schedules: AUTOUPDT
Progress Update and Target Schedules
Updated Schedule vs. Target Schedule: AUTOUPDT

Obs task succ1 succ2 succ3 days STATUS A_DUR A_START A_FINISH E_START E_FINISH L_START L_FINISH T_FLOAT F_FLOAT B_START B_FINISH S_VAR F_VAR
1 Approve Plan Drawings Study Market Write Specs 5 Completed 5 01DEC03 05DEC03 01DEC03 05DEC03 01DEC03 05DEC03 0 -1 01DEC03 05DEC03 0 0
2 Drawings Prototype     10 Completed 11 06DEC03 16DEC03 06DEC03 16DEC03 06DEC03 16DEC03 0 0 06DEC03 15DEC03 0 1
3 Study Market Mkt. Strat.     5 Completed 5 05DEC03 09DEC03 05DEC03 09DEC03 08JAN04 12JAN04 30 0 06DEC03 10DEC03 -1 -1
4 Write Specs Prototype     5 Completed 6 07DEC03 12DEC03 07DEC03 12DEC03 11DEC03 16DEC03 4 4 06DEC03 10DEC03 1 2
5 Prototype Materials Facility   15 In Progress . 17DEC03 . 17DEC03 04JAN04 17DEC03 04JAN04 0 0 16DEC03 03JAN04 1 1
6 Mkt. Strat. Test Market Marketing   10 In Progress . 10DEC03 . 10DEC03 21DEC03 13JAN04 24JAN04 30 30 11DEC03 20DEC03 -1 1
7 Materials Init. Prod.     10 Pending . . . 05JAN04 14JAN04 05JAN04 14JAN04 0 0 04JAN04 13JAN04 1 1
8 Facility Init. Prod.     10 Pending . . . 05JAN04 14JAN04 05JAN04 14JAN04 0 0 04JAN04 13JAN04 1 1
9 Init. Prod. Test Market Marketing Evaluate 10 Pending . . . 15JAN04 24JAN04 15JAN04 24JAN04 0 0 14JAN04 23JAN04 1 1
10 Evaluate Changes     10 Pending . . . 25JAN04 03FEB04 30JAN04 08FEB04 5 5 24JAN04 02FEB04 1 1
11 Test Market Changes     15 Pending . . . 25JAN04 08FEB04 25JAN04 08FEB04 0 0 24JAN04 07FEB04 1 1
12 Changes Production     5 Pending . . . 09FEB04 13FEB04 09FEB04 13FEB04 0 0 08FEB04 12FEB04 1 1
13 Production       0 Pending . . . 14FEB04 14FEB04 14FEB04 14FEB04 0 0 13FEB04 13FEB04 1 1
14 Marketing       0 Pending . . . 25JAN04 25JAN04 14FEB04 14FEB04 20 20 24JAN04 24JAN04 1 1