This example illustrates the use of activity splitting to help reduce project duration. By default, PROC CPM assumes that an activity cannot be interrupted once it is started (except for holidays and weekends). During resource-constrained scheduling, it is possible for a noncritical activity to be scheduled first, and at a later time a critical activity may be held waiting for a resource to be freed by this less critical activity. In such situations, you way want to allow noncritical activities to be preempted by critical ones. PROC CPM enables you to specify, selectively, the activities that can be split into segments, the minimum length of each segment, and the maximum number of segments per activity.
The data set WIDGR19
, displayed in Output 4.19.1, contains the widget network in AON format with two resources: prodman
and hrdware
. Suppose the production manager is required to oversee certain activities, as indicated by a '1' in the prodman
column. hrdware
denotes some piece of equipment that is required by the activity 'Drawings' (perhaps a plotter to produce the engineering
drawings). The variable minseg
denotes the minimum length of the split segments for each activity. Missing values for this variable are set to default values
(one-fifth of the activity’s duration). The Resource data set WIDGRIN
, displayed in Output 4.19.2, indicates that both resources are replenishable, there is one production manager available from December 1, and the hardware
is unavailable on the 10th and 11th of December (perhaps it is scheduled for maintenance or has been reserved for some other
project).
Output 4.19.1: Activity Splitting: Activity Data Set
Activity Splitting |
Project Data |
Obs | task | days | succ | prodman | hrdware | minseg |
---|---|---|---|---|---|---|
1 | Approve Plan | 5 | Drawings | 1 | . | . |
2 | Approve Plan | 5 | Study Market | 1 | . | . |
3 | Approve Plan | 5 | Write Specs | 1 | . | . |
4 | Drawings | 10 | Prototype | . | 1 | 1 |
5 | Study Market | 5 | Mkt. Strat. | . | . | . |
6 | Write Specs | 5 | Prototype | . | . | . |
7 | Prototype | 15 | Materials | 1 | . | . |
8 | Prototype | 15 | Facility | 1 | . | . |
9 | Mkt. Strat. | 10 | Test Market | 1 | . | 1 |
10 | Mkt. Strat. | 10 | Marketing | 1 | . | 1 |
11 | Materials | 10 | Init. Prod. | . | . | . |
12 | Facility | 10 | Init. Prod. | . | . | . |
13 | Init. Prod. | 10 | Test Market | 1 | . | . |
14 | Init. Prod. | 10 | Marketing | 1 | . | . |
15 | Init. Prod. | 10 | Evaluate | 1 | . | . |
16 | Evaluate | 10 | Changes | 1 | . | . |
17 | Test Market | 15 | Changes | . | . | . |
18 | Changes | 5 | Production | . | . | . |
19 | Production | 0 | 1 | . | . | |
20 | Marketing | 0 | . | . | . |
Output 4.19.2: Activity Splitting: Resource Availability Data Set
The project is first scheduled without allowing any of the activities to be split. The Schedule data set SCHED
, displayed in Output 4.19.3, indicates that the project has been delayed by one week (five working days, since maximum S_FINISH
= '17MAR04' while maximum E_FINISH
= '10MAR04'). The activity 'Drawings' has been postponed to start after the equipment has been serviced (or used by the other
project), and the activity 'Prototype' (which is actually a critical activity) cannot start on schedule because the production
manager is tied up with the noncritical activity 'Mkt. Strat.'.
proc cpm date='01dec03'd data=widgr19 resin=widgrin holidata=holdata out=sched resout=rout interval=weekday collapse; activity task; duration days; successor succ; holiday hol; resource prodman hrdware / period=per obstype=otype t_float f_float rcs avl; run;
Output 4.19.3: Project Schedule: Splitting Not Allowed
Activity Splitting |
Project Schedule: Splitting not Allowed |
Obs | task | succ | days | prodman | hrdware | S_START | S_FINISH | E_START | E_FINISH | L_START | L_FINISH | T_FLOAT | F_FLOAT |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Approve Plan | Drawings | 5 | 1 | . | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 0 | 0 |
2 | Drawings | Prototype | 10 | . | 1 | 12DEC03 | 26DEC03 | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 | 0 | 0 |
3 | Study Market | Mkt. Strat. | 5 | . | . | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 21JAN04 | 27JAN04 | 30 | 0 |
4 | Write Specs | Prototype | 5 | . | . | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 15DEC03 | 19DEC03 | 5 | 5 |
5 | Prototype | Materials | 15 | 1 | . | 30DEC03 | 20JAN04 | 22DEC03 | 13JAN04 | 22DEC03 | 13JAN04 | 0 | 0 |
6 | Mkt. Strat. | Test Market | 10 | 1 | . | 15DEC03 | 29DEC03 | 15DEC03 | 29DEC03 | 28JAN04 | 10FEB04 | 30 | 30 |
7 | Materials | Init. Prod. | 10 | . | . | 21JAN04 | 03FEB04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | 0 |
8 | Facility | Init. Prod. | 10 | . | . | 21JAN04 | 03FEB04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | 0 |
9 | Init. Prod. | Test Market | 10 | 1 | . | 04FEB04 | 17FEB04 | 28JAN04 | 10FEB04 | 28JAN04 | 10FEB04 | 0 | 0 |
10 | Evaluate | Changes | 10 | 1 | . | 18FEB04 | 02MAR04 | 11FEB04 | 24FEB04 | 18FEB04 | 02MAR04 | 5 | 5 |
11 | Test Market | Changes | 15 | . | . | 18FEB04 | 09MAR04 | 11FEB04 | 02MAR04 | 11FEB04 | 02MAR04 | 0 | 0 |
12 | Changes | Production | 5 | . | . | 10MAR04 | 16MAR04 | 03MAR04 | 09MAR04 | 03MAR04 | 09MAR04 | 0 | 0 |
13 | Production | 0 | 1 | . | 17MAR04 | 17MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 0 | 0 | |
14 | Marketing | 0 | . | . | 18FEB04 | 18FEB04 | 11FEB04 | 11FEB04 | 10MAR04 | 10MAR04 | 20 | 20 |
In the second invocation of PROC CPM, the MINSEGMTDUR= option is used in the RESOURCE statement to identify the variable minseg
to the procedure. This enables the algorithm to split the 'Drawings' activity so that some of it is done before December
10, 2003, and the rest is scheduled to start on December 12, 2003. Likewise, the production manager is allocated to the activity
'Mkt. Strat.' on December 15, 2003. On the 24th of December the activity 'Prototype' demands the production manager, and since
preemption is allowed, the earlier activity 'Mkt. Strat.', which is less critical than 'Prototype', is temporarily halted
and is resumed on the 16th of January after the completion of 'Prototype' on the 15th of January. The Schedule data set, displayed
in Output 4.19.4, contains separate observations for each segment of the split activities as indicated by the variable SEGMT_NO
. The project duration has been reduced by three working days, by allowing appropriate activities to be split.
proc cpm date='01dec03'd data=widgr19 holidata=holdata resin=widgrin out=spltschd resout=spltrout interval=weekday collapse; activity task; duration days; successor succ; holiday hol; resource prodman hrdware / period=per obstype=otype minsegmtdur=minseg rcs avl; id task; run;
Output 4.19.4: Project Schedule: Splitting Allowed
Activity Splitting |
Project Schedule: Splitting Allowed |
Obs | task | succ | SEGMT_NO | days | prodman | hrdware | S_START | S_FINISH | E_START | E_FINISH | L_START | L_FINISH |
---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Approve Plan | Drawings | . | 5 | 1 | . | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 |
2 | Drawings | Prototype | . | 10 | . | 1 | 08DEC03 | 23DEC03 | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 |
3 | Drawings | Prototype | 1 | 2 | . | 1 | 08DEC03 | 09DEC03 | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 |
4 | Drawings | Prototype | 2 | 8 | . | 1 | 12DEC03 | 23DEC03 | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 |
5 | Study Market | Mkt. Strat. | . | 5 | . | . | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 21JAN04 | 27JAN04 |
6 | Write Specs | Prototype | . | 5 | . | . | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 15DEC03 | 19DEC03 |
7 | Prototype | Materials | . | 15 | 1 | . | 24DEC03 | 15JAN04 | 22DEC03 | 13JAN04 | 22DEC03 | 13JAN04 |
8 | Mkt. Strat. | Test Market | . | 10 | 1 | . | 15DEC03 | 20JAN04 | 15DEC03 | 29DEC03 | 28JAN04 | 10FEB04 |
9 | Mkt. Strat. | Test Market | 1 | 7 | 1 | . | 15DEC03 | 23DEC03 | 15DEC03 | 29DEC03 | 28JAN04 | 10FEB04 |
10 | Mkt. Strat. | Test Market | 2 | 3 | 1 | . | 16JAN04 | 20JAN04 | 15DEC03 | 29DEC03 | 28JAN04 | 10FEB04 |
11 | Materials | Init. Prod. | . | 10 | . | . | 16JAN04 | 29JAN04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 |
12 | Facility | Init. Prod. | . | 10 | . | . | 16JAN04 | 29JAN04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 |
13 | Init. Prod. | Test Market | . | 10 | 1 | . | 30JAN04 | 12FEB04 | 28JAN04 | 10FEB04 | 28JAN04 | 10FEB04 |
14 | Evaluate | Changes | . | 10 | 1 | . | 13FEB04 | 26FEB04 | 11FEB04 | 24FEB04 | 18FEB04 | 02MAR04 |
15 | Test Market | Changes | . | 15 | . | . | 13FEB04 | 04MAR04 | 11FEB04 | 02MAR04 | 11FEB04 | 02MAR04 |
16 | Changes | Production | . | 5 | . | . | 05MAR04 | 11MAR04 | 03MAR04 | 09MAR04 | 03MAR04 | 09MAR04 |
17 | Production | . | 0 | 1 | . | 12MAR04 | 12MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | |
18 | Marketing | . | 0 | . | . | 13FEB04 | 13FEB04 | 11FEB04 | 11FEB04 | 10MAR04 | 10MAR04 |