Example 4.19 Activity Splitting
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
Approve Plan |
5 |
Drawings |
1 |
. |
. |
Approve Plan |
5 |
Study Market |
1 |
. |
. |
Approve Plan |
5 |
Write Specs |
1 |
. |
. |
Drawings |
10 |
Prototype |
. |
1 |
1 |
Study Market |
5 |
Mkt. Strat. |
. |
. |
. |
Write Specs |
5 |
Prototype |
. |
. |
. |
Prototype |
15 |
Materials |
1 |
. |
. |
Prototype |
15 |
Facility |
1 |
. |
. |
Mkt. Strat. |
10 |
Test Market |
1 |
. |
1 |
Mkt. Strat. |
10 |
Marketing |
1 |
. |
1 |
Materials |
10 |
Init. Prod. |
. |
. |
. |
Facility |
10 |
Init. Prod. |
. |
. |
. |
Init. Prod. |
10 |
Test Market |
1 |
. |
. |
Init. Prod. |
10 |
Marketing |
1 |
. |
. |
Init. Prod. |
10 |
Evaluate |
1 |
. |
. |
Evaluate |
10 |
Changes |
1 |
. |
. |
Test Market |
15 |
Changes |
. |
. |
. |
Changes |
5 |
Production |
. |
. |
. |
Production |
0 |
|
1 |
. |
. |
Marketing |
0 |
|
. |
. |
. |
Output 4.19.2
Activity Splitting: Resource Availability Data Set
. |
restype |
1 |
1 |
01DEC03 |
reslevel |
1 |
1 |
10DEC03 |
reslevel |
. |
0 |
12DEC03 |
reslevel |
. |
1 |
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
Approve Plan |
Drawings |
5 |
1 |
. |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
0 |
Drawings |
Prototype |
10 |
. |
1 |
12DEC03 |
26DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
0 |
0 |
Study Market |
Mkt. Strat. |
5 |
. |
. |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
21JAN04 |
27JAN04 |
30 |
0 |
Write Specs |
Prototype |
5 |
. |
. |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
15DEC03 |
19DEC03 |
5 |
5 |
Prototype |
Materials |
15 |
1 |
. |
30DEC03 |
20JAN04 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
0 |
0 |
Mkt. Strat. |
Test Market |
10 |
1 |
. |
15DEC03 |
29DEC03 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
30 |
30 |
Materials |
Init. Prod. |
10 |
. |
. |
21JAN04 |
03FEB04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
0 |
Facility |
Init. Prod. |
10 |
. |
. |
21JAN04 |
03FEB04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
0 |
Init. Prod. |
Test Market |
10 |
1 |
. |
04FEB04 |
17FEB04 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
0 |
0 |
Evaluate |
Changes |
10 |
1 |
. |
18FEB04 |
02MAR04 |
11FEB04 |
24FEB04 |
18FEB04 |
02MAR04 |
5 |
5 |
Test Market |
Changes |
15 |
. |
. |
18FEB04 |
09MAR04 |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
0 |
0 |
Changes |
Production |
5 |
. |
. |
10MAR04 |
16MAR04 |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
0 |
0 |
Production |
|
0 |
1 |
. |
17MAR04 |
17MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
0 |
0 |
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
Approve Plan |
Drawings |
. |
5 |
1 |
. |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
Drawings |
Prototype |
. |
10 |
. |
1 |
08DEC03 |
23DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
Drawings |
Prototype |
1 |
2 |
. |
1 |
08DEC03 |
09DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
Drawings |
Prototype |
2 |
8 |
. |
1 |
12DEC03 |
23DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
Study Market |
Mkt. Strat. |
. |
5 |
. |
. |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
21JAN04 |
27JAN04 |
Write Specs |
Prototype |
. |
5 |
. |
. |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
15DEC03 |
19DEC03 |
Prototype |
Materials |
. |
15 |
1 |
. |
24DEC03 |
15JAN04 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
Mkt. Strat. |
Test Market |
. |
10 |
1 |
. |
15DEC03 |
20JAN04 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
Mkt. Strat. |
Test Market |
1 |
7 |
1 |
. |
15DEC03 |
23DEC03 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
Mkt. Strat. |
Test Market |
2 |
3 |
1 |
. |
16JAN04 |
20JAN04 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
Materials |
Init. Prod. |
. |
10 |
. |
. |
16JAN04 |
29JAN04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
Facility |
Init. Prod. |
. |
10 |
. |
. |
16JAN04 |
29JAN04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
Init. Prod. |
Test Market |
. |
10 |
1 |
. |
30JAN04 |
12FEB04 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
Evaluate |
Changes |
. |
10 |
1 |
. |
13FEB04 |
26FEB04 |
11FEB04 |
24FEB04 |
18FEB04 |
02MAR04 |
Test Market |
Changes |
. |
15 |
. |
. |
13FEB04 |
04MAR04 |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
Changes |
Production |
. |
5 |
. |
. |
05MAR04 |
11MAR04 |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
Production |
|
. |
0 |
1 |
. |
12MAR04 |
12MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
Marketing |
|
. |
0 |
. |
. |
13FEB04 |
13FEB04 |
11FEB04 |
11FEB04 |
10MAR04 |
10MAR04 |