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
Approve Plan |
Drawings |
Study Market |
Write Specs |
5 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
0 |
01DEC03 |
05DEC03 |
Drawings |
Prototype |
|
|
10 |
06DEC03 |
15DEC03 |
06DEC03 |
15DEC03 |
0 |
0 |
06DEC03 |
15DEC03 |
Study Market |
Mkt. Strat. |
|
|
5 |
06DEC03 |
10DEC03 |
09JAN04 |
13JAN04 |
30 |
0 |
06DEC03 |
10DEC03 |
Write Specs |
Prototype |
|
|
5 |
06DEC03 |
10DEC03 |
11DEC03 |
15DEC03 |
5 |
5 |
06DEC03 |
10DEC03 |
Prototype |
Materials |
Facility |
|
15 |
16DEC03 |
03JAN04 |
16DEC03 |
03JAN04 |
0 |
0 |
16DEC03 |
03JAN04 |
Mkt. Strat. |
Test Market |
Marketing |
|
10 |
11DEC03 |
20DEC03 |
14JAN04 |
23JAN04 |
30 |
30 |
11DEC03 |
20DEC03 |
Materials |
Init. Prod. |
|
|
10 |
04JAN04 |
13JAN04 |
04JAN04 |
13JAN04 |
0 |
0 |
04JAN04 |
13JAN04 |
Facility |
Init. Prod. |
|
|
10 |
04JAN04 |
13JAN04 |
04JAN04 |
13JAN04 |
0 |
0 |
04JAN04 |
13JAN04 |
Init. Prod. |
Test Market |
Marketing |
Evaluate |
10 |
14JAN04 |
23JAN04 |
14JAN04 |
23JAN04 |
0 |
0 |
14JAN04 |
23JAN04 |
Evaluate |
Changes |
|
|
10 |
24JAN04 |
02FEB04 |
29JAN04 |
07FEB04 |
5 |
5 |
24JAN04 |
02FEB04 |
Test Market |
Changes |
|
|
15 |
24JAN04 |
07FEB04 |
24JAN04 |
07FEB04 |
0 |
0 |
24JAN04 |
07FEB04 |
Changes |
Production |
|
|
5 |
08FEB04 |
12FEB04 |
08FEB04 |
12FEB04 |
0 |
0 |
08FEB04 |
12FEB04 |
Production |
|
|
|
0 |
13FEB04 |
13FEB04 |
13FEB04 |
13FEB04 |
0 |
0 |
13FEB04 |
13FEB04 |
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
Approve Plan |
01DEC2003 |
05DEC2003 |
. |
. |
Drawings |
06DEC2003 |
16DEC2003 |
. |
. |
Study Market |
05DEC2003 |
. |
100 |
. |
Write Specs |
07DEC2003 |
12DEC2003 |
. |
. |
Prototype |
. |
. |
. |
. |
Mkt. Strat. |
10DEC2003 |
. |
. |
3 |
Materials |
. |
. |
. |
. |
Facility |
. |
. |
. |
. |
Init. Prod. |
. |
. |
. |
. |
Evaluate |
. |
. |
. |
. |
Test Market |
. |
. |
. |
. |
Changes |
. |
. |
. |
. |
Production |
. |
. |
. |
. |
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
Approve Plan |
Drawings |
Study Market |
Write Specs |
5 |
Completed |
5 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
0 |
01DEC03 |
05DEC03 |
0 |
0 |
Drawings |
Prototype |
|
|
10 |
Completed |
11 |
06DEC03 |
16DEC03 |
06DEC03 |
16DEC03 |
06DEC03 |
16DEC03 |
0 |
0 |
06DEC03 |
15DEC03 |
0 |
1 |
Study Market |
Mkt. Strat. |
|
|
5 |
Completed |
5 |
05DEC03 |
09DEC03 |
05DEC03 |
09DEC03 |
05DEC03 |
09DEC03 |
0 |
0 |
06DEC03 |
10DEC03 |
-1 |
-1 |
Write Specs |
Prototype |
|
|
5 |
Completed |
6 |
07DEC03 |
12DEC03 |
07DEC03 |
12DEC03 |
07DEC03 |
12DEC03 |
0 |
0 |
06DEC03 |
10DEC03 |
1 |
2 |
Prototype |
Materials |
Facility |
|
15 |
Pending |
. |
. |
. |
19DEC03 |
06JAN04 |
19DEC03 |
06JAN04 |
0 |
0 |
16DEC03 |
03JAN04 |
3 |
3 |
Mkt. Strat. |
Test Market |
Marketing |
|
10 |
In Progress |
. |
10DEC03 |
. |
10DEC03 |
21DEC03 |
10DEC03 |
21DEC03 |
0 |
0 |
11DEC03 |
20DEC03 |
-1 |
1 |
Materials |
Init. Prod. |
|
|
10 |
Pending |
. |
. |
. |
07JAN04 |
16JAN04 |
07JAN04 |
16JAN04 |
0 |
0 |
04JAN04 |
13JAN04 |
3 |
3 |
Facility |
Init. Prod. |
|
|
10 |
Pending |
. |
. |
. |
07JAN04 |
16JAN04 |
07JAN04 |
16JAN04 |
0 |
0 |
04JAN04 |
13JAN04 |
3 |
3 |
Init. Prod. |
Test Market |
Marketing |
Evaluate |
10 |
Pending |
. |
. |
. |
17JAN04 |
26JAN04 |
17JAN04 |
26JAN04 |
0 |
0 |
14JAN04 |
23JAN04 |
3 |
3 |
Evaluate |
Changes |
|
|
10 |
Pending |
. |
. |
. |
27JAN04 |
05FEB04 |
01FEB04 |
10FEB04 |
5 |
5 |
24JAN04 |
02FEB04 |
3 |
3 |
Test Market |
Changes |
|
|
15 |
Pending |
. |
. |
. |
27JAN04 |
10FEB04 |
27JAN04 |
10FEB04 |
0 |
0 |
24JAN04 |
07FEB04 |
3 |
3 |
Changes |
Production |
|
|
5 |
Pending |
. |
. |
. |
11FEB04 |
15FEB04 |
11FEB04 |
15FEB04 |
0 |
0 |
08FEB04 |
12FEB04 |
3 |
3 |
Production |
|
|
|
0 |
Pending |
. |
. |
. |
16FEB04 |
16FEB04 |
16FEB04 |
16FEB04 |
0 |
0 |
13FEB04 |
13FEB04 |
3 |
3 |
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
Approve Plan |
Drawings |
Study Market |
Write Specs |
5 |
Completed |
5 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
-1 |
01DEC03 |
05DEC03 |
0 |
0 |
Drawings |
Prototype |
|
|
10 |
Completed |
11 |
06DEC03 |
16DEC03 |
06DEC03 |
16DEC03 |
06DEC03 |
16DEC03 |
0 |
0 |
06DEC03 |
15DEC03 |
0 |
1 |
Study Market |
Mkt. Strat. |
|
|
5 |
Completed |
5 |
05DEC03 |
09DEC03 |
05DEC03 |
09DEC03 |
08JAN04 |
12JAN04 |
30 |
0 |
06DEC03 |
10DEC03 |
-1 |
-1 |
Write Specs |
Prototype |
|
|
5 |
Completed |
6 |
07DEC03 |
12DEC03 |
07DEC03 |
12DEC03 |
11DEC03 |
16DEC03 |
4 |
4 |
06DEC03 |
10DEC03 |
1 |
2 |
Prototype |
Materials |
Facility |
|
15 |
In Progress |
. |
17DEC03 |
. |
17DEC03 |
04JAN04 |
17DEC03 |
04JAN04 |
0 |
0 |
16DEC03 |
03JAN04 |
1 |
1 |
Mkt. Strat. |
Test Market |
Marketing |
|
10 |
In Progress |
. |
10DEC03 |
. |
10DEC03 |
21DEC03 |
13JAN04 |
24JAN04 |
30 |
30 |
11DEC03 |
20DEC03 |
-1 |
1 |
Materials |
Init. Prod. |
|
|
10 |
Pending |
. |
. |
. |
05JAN04 |
14JAN04 |
05JAN04 |
14JAN04 |
0 |
0 |
04JAN04 |
13JAN04 |
1 |
1 |
Facility |
Init. Prod. |
|
|
10 |
Pending |
. |
. |
. |
05JAN04 |
14JAN04 |
05JAN04 |
14JAN04 |
0 |
0 |
04JAN04 |
13JAN04 |
1 |
1 |
Init. Prod. |
Test Market |
Marketing |
Evaluate |
10 |
Pending |
. |
. |
. |
15JAN04 |
24JAN04 |
15JAN04 |
24JAN04 |
0 |
0 |
14JAN04 |
23JAN04 |
1 |
1 |
Evaluate |
Changes |
|
|
10 |
Pending |
. |
. |
. |
25JAN04 |
03FEB04 |
30JAN04 |
08FEB04 |
5 |
5 |
24JAN04 |
02FEB04 |
1 |
1 |
Test Market |
Changes |
|
|
15 |
Pending |
. |
. |
. |
25JAN04 |
08FEB04 |
25JAN04 |
08FEB04 |
0 |
0 |
24JAN04 |
07FEB04 |
1 |
1 |
Changes |
Production |
|
|
5 |
Pending |
. |
. |
. |
09FEB04 |
13FEB04 |
09FEB04 |
13FEB04 |
0 |
0 |
08FEB04 |
12FEB04 |
1 |
1 |
Production |
|
|
|
0 |
Pending |
. |
. |
. |
14FEB04 |
14FEB04 |
14FEB04 |
14FEB04 |
0 |
0 |
13FEB04 |
13FEB04 |
1 |
1 |
Marketing |
|
|
|
0 |
Pending |
. |
. |
. |
25JAN04 |
25JAN04 |
14FEB04 |
14FEB04 |
20 |
20 |
24JAN04 |
24JAN04 |
1 |
1 |