Example 2.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 2.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 2.19.2,
indicates that both resources are replenishable, there is one
production manager available from December 2, and the hardware is
unavailable on the 11th and 12th of December (perhaps it is scheduled
for maintenance or has been reserved for some other project).
Output 2.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 |
Anal. Market |
1 |
. |
. |
3 |
Approve Plan |
5 |
Write Specs |
1 |
. |
. |
4 |
Drawings |
10 |
Prototype |
. |
1 |
1 |
5 |
Anal. 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 2.19.2: Activity Splitting: Resource Availability Data Set
Activity Splitting |
Resource Availability Data Set |
Obs |
per |
otype |
prodman |
hrdware |
1 |
. |
restype |
1 |
1 |
2 |
02DEC91 |
reslevel |
1 |
1 |
3 |
11DEC91 |
reslevel |
. |
0 |
4 |
13DEC91 |
reslevel |
. |
1 |
|
The project is first scheduled without allowing any of the activities to
be split. The Schedule data set SCHED, displayed in Output 2.19.3,
indicates
that the project has been delayed by one week (five working days, since
maximum S_FINISH = `18MAR9'1 while maximum E_FINISH =
`11MAR92').
Note that
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='02dec91'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 2.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 |
. |
02DEC91 |
06DEC91 |
02DEC91 |
06DEC91 |
02DEC91 |
06DEC91 |
0 |
0 |
2 |
Drawings |
Prototype |
10 |
. |
1 |
13DEC91 |
27DEC91 |
09DEC91 |
20DEC91 |
09DEC91 |
20DEC91 |
0 |
0 |
3 |
Anal. Market |
Mkt. Strat. |
5 |
. |
. |
09DEC91 |
13DEC91 |
09DEC91 |
13DEC91 |
22JAN92 |
28JAN92 |
30 |
0 |
4 |
Write Specs |
Prototype |
5 |
. |
. |
09DEC91 |
13DEC91 |
09DEC91 |
13DEC91 |
16DEC91 |
20DEC91 |
5 |
5 |
5 |
Prototype |
Materials |
15 |
1 |
. |
31DEC91 |
21JAN92 |
23DEC91 |
14JAN92 |
23DEC91 |
14JAN92 |
0 |
0 |
6 |
Mkt. Strat. |
Test Market |
10 |
1 |
. |
16DEC91 |
30DEC91 |
16DEC91 |
30DEC91 |
29JAN92 |
11FEB92 |
30 |
30 |
7 |
Materials |
Init. Prod. |
10 |
. |
. |
22JAN92 |
04FEB92 |
15JAN92 |
28JAN92 |
15JAN92 |
28JAN92 |
0 |
0 |
8 |
Facility |
Init. Prod. |
10 |
. |
. |
22JAN92 |
04FEB92 |
15JAN92 |
28JAN92 |
15JAN92 |
28JAN92 |
0 |
0 |
9 |
Init. Prod. |
Test Market |
10 |
1 |
. |
05FEB92 |
18FEB92 |
29JAN92 |
11FEB92 |
29JAN92 |
11FEB92 |
0 |
0 |
10 |
Evaluate |
Changes |
10 |
1 |
. |
19FEB92 |
03MAR92 |
12FEB92 |
25FEB92 |
19FEB92 |
03MAR92 |
5 |
5 |
11 |
Test Market |
Changes |
15 |
. |
. |
19FEB92 |
10MAR92 |
12FEB92 |
03MAR92 |
12FEB92 |
03MAR92 |
0 |
0 |
12 |
Changes |
Production |
5 |
. |
. |
11MAR92 |
17MAR92 |
04MAR92 |
10MAR92 |
04MAR92 |
10MAR92 |
0 |
0 |
13 |
Production |
|
0 |
1 |
. |
18MAR92 |
18MAR92 |
11MAR92 |
11MAR92 |
11MAR92 |
11MAR92 |
0 |
0 |
14 |
Marketing |
|
0 |
. |
. |
19FEB92 |
19FEB92 |
12FEB92 |
12FEB92 |
11MAR92 |
11MAR92 |
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 allows the algorithm to split the `Drawings' activity so that
some of it is done before December 11, 1991, and the rest is scheduled
to start on December 13, 1991. Likewise, the production manager is
allocated to the activity `Mkt. Strat.' on December 16, 1991. On the
26th 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 17th of January after the
completion of `Prototype' on the 16th of January. The Schedule
data set, displayed in Output 2.19.4, contains
separate observations for each segment of the split activities as
indicated by the variable SEGMT_NO. Note that the project duration has
been reduced by three working days,
by allowing appropriate activities to be split.
proc cpm date='02dec91'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 2.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 |
. |
02DEC91 |
06DEC91 |
02DEC91 |
06DEC91 |
02DEC91 |
06DEC91 |
2 |
Drawings |
Prototype |
. |
10 |
. |
1 |
09DEC91 |
24DEC91 |
09DEC91 |
20DEC91 |
09DEC91 |
20DEC91 |
3 |
Drawings |
Prototype |
1 |
2 |
. |
1 |
09DEC91 |
10DEC91 |
09DEC91 |
20DEC91 |
09DEC91 |
20DEC91 |
4 |
Drawings |
Prototype |
2 |
8 |
. |
1 |
13DEC91 |
24DEC91 |
09DEC91 |
20DEC91 |
09DEC91 |
20DEC91 |
5 |
Anal. Market |
Mkt. Strat. |
. |
5 |
. |
. |
09DEC91 |
13DEC91 |
09DEC91 |
13DEC91 |
22JAN92 |
28JAN92 |
6 |
Write Specs |
Prototype |
. |
5 |
. |
. |
09DEC91 |
13DEC91 |
09DEC91 |
13DEC91 |
16DEC91 |
20DEC91 |
7 |
Prototype |
Materials |
. |
15 |
1 |
. |
26DEC91 |
16JAN92 |
23DEC91 |
14JAN92 |
23DEC91 |
14JAN92 |
8 |
Mkt. Strat. |
Test Market |
. |
10 |
1 |
. |
16DEC91 |
21JAN92 |
16DEC91 |
30DEC91 |
29JAN92 |
11FEB92 |
9 |
Mkt. Strat. |
Test Market |
1 |
7 |
1 |
. |
16DEC91 |
24DEC91 |
16DEC91 |
30DEC91 |
29JAN92 |
11FEB92 |
10 |
Mkt. Strat. |
Test Market |
2 |
3 |
1 |
. |
17JAN92 |
21JAN92 |
16DEC91 |
30DEC91 |
29JAN92 |
11FEB92 |
11 |
Materials |
Init. Prod. |
. |
10 |
. |
. |
17JAN92 |
30JAN92 |
15JAN92 |
28JAN92 |
15JAN92 |
28JAN92 |
12 |
Facility |
Init. Prod. |
. |
10 |
. |
. |
17JAN92 |
30JAN92 |
15JAN92 |
28JAN92 |
15JAN92 |
28JAN92 |
13 |
Init. Prod. |
Test Market |
. |
10 |
1 |
. |
31JAN92 |
13FEB92 |
29JAN92 |
11FEB92 |
29JAN92 |
11FEB92 |
14 |
Evaluate |
Changes |
. |
10 |
1 |
. |
14FEB92 |
27FEB92 |
12FEB92 |
25FEB92 |
19FEB92 |
03MAR92 |
15 |
Test Market |
Changes |
. |
15 |
. |
. |
14FEB92 |
05MAR92 |
12FEB92 |
03MAR92 |
12FEB92 |
03MAR92 |
16 |
Changes |
Production |
. |
5 |
. |
. |
06MAR92 |
12MAR92 |
04MAR92 |
10MAR92 |
04MAR92 |
10MAR92 |
17 |
Production |
|
. |
0 |
1 |
. |
13MAR92 |
13MAR92 |
11MAR92 |
11MAR92 |
11MAR92 |
11MAR92 |
18 |
Marketing |
|
. |
0 |
. |
. |
14FEB92 |
14FEB92 |
12FEB92 |
12FEB92 |
11MAR92 |
11MAR92 |
|
Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.