The CPM Procedure

Example 4.16 Using Supplementary Resources

In this example, the same project as in Example 4.15 is scheduled with a specification of DELAY=0. This indicates to PROC CPM that a supplementary level of resources is to be used if an activity cannot be scheduled to start on or before its latest start time (as computed in the unconstrained case). The schedule data and resource usage data are saved in the data sets WIDGO16 and WIDGRO16, respectively. They are displayed in Output 4.16.1 and Output 4.16.2, respectively.

title 'Using Supplementary Resources';
proc cpm date='01dec03'd interval=weekday
         data=widgres holidata=holdata resin=widgrin
         out=widgo16 resout=widgro16;
   tailnode tail;
   duration days;
   headnode head;
   holiday hol;
   resource engineer engcost / period=per obstype=otype
                               cumusage
                               delay=0
                               delayanalysis
                               routnobreak;
   id task;
   run;

To analyze the results of the resource constrained scheduling, you must examine both output data sets, WIDGRO16 and WIDGO16. The negative values for Aengineer in observation numbers 22 through 25 of the Usage data set WIDGRO16 indicate the amount of supplementary resource that is needed on December 22, 23, 24, and 25, to complete the project without delaying any activity beyond its latest start time. Examination of the SUPPL_R variable in the Schedule data set WIDGO16 indicates that the activity, 'Prototype', is scheduled to start on December 22 by using a supplementary level of the resource engineer.

The supplementary level is used only if the activity would otherwise get delayed beyond L_START + DELAY. Thus, the activity 'Study Market' is delayed by five days (S_START = '15DEC03') and scheduled later than its early start time (E_START = '08DEC03'), even though a supplementary level of the resource could have been used to start the activity earlier, because the activity’s L_START time is equal to '21JAN04' and DELAY = 0.

Further, note the use of the option CUMUSAGE in the RESOURCE statement, requesting that cumulative resource usage be saved in the Usage data set for consumable resources. Thus, for the consumable resource engcost, the procedure saves the cumulative resource usage in the variables Eengcost, Lengcost, and Rengcost, respectively. For instance, Eengcost in a given observation specifies the cumulative value of engcost for the early start schedule through the end of the previous day.

Output 4.16.1: Resource-Constrained Schedule: Supplementary Resource

Using Supplementary Resources
Resource Constrained Schedule

Obs tail head days task engineer engcost S_START S_FINISH E_START E_FINISH L_START L_FINISH R_DELAY DELAY_R SUPPL_R
1 1 2 5 Approve Plan 2 400 01DEC03 05DEC03 01DEC03 05DEC03 01DEC03 05DEC03 0    
2 2 3 10 Drawings 1 200 08DEC03 19DEC03 08DEC03 19DEC03 08DEC03 19DEC03 0    
3 2 4 5 Study Market 1 200 15DEC03 19DEC03 08DEC03 12DEC03 21JAN04 27JAN04 5 engineer  
4 2 3 5 Write Specs 2 400 08DEC03 12DEC03 08DEC03 12DEC03 15DEC03 19DEC03 0    
5 3 5 15 Prototype 4 800 22DEC03 13JAN04 22DEC03 13JAN04 22DEC03 13JAN04 0   engineer
6 4 6 10 Mkt. Strat. . . 22DEC03 06JAN04 15DEC03 29DEC03 28JAN04 10FEB04 0    
7 5 7 10 Materials . . 14JAN04 27JAN04 14JAN04 27JAN04 14JAN04 27JAN04 0    
8 5 7 10 Facility 2 400 14JAN04 27JAN04 14JAN04 27JAN04 14JAN04 27JAN04 0    
9 7 8 10 Init. Prod. 4 800 28JAN04 10FEB04 28JAN04 10FEB04 28JAN04 10FEB04 0    
10 8 9 10 Evaluate 1 200 11FEB04 24FEB04 11FEB04 24FEB04 18FEB04 02MAR04 0    
11 6 9 15 Test Market . . 11FEB04 02MAR04 11FEB04 02MAR04 11FEB04 02MAR04 0    
12 9 10 5 Changes 2 400 03MAR04 09MAR04 03MAR04 09MAR04 03MAR04 09MAR04 0    
13 10 11 0 Production 4 800 10MAR04 10MAR04 10MAR04 10MAR04 10MAR04 10MAR04 0    
14 6 12 0 Marketing . . 11FEB04 11FEB04 11FEB04 11FEB04 10MAR04 10MAR04 0    
15 8 6 0 Dummy . . 11FEB04 11FEB04 11FEB04 11FEB04 11FEB04 11FEB04 0    



This example also illustrates the use of the ROUTNOBREAK option to produce a resource usage output data set that does not have any breaks for holidays. Thus, the output data set WIDGRO16 has observations corresponding to holidays and weekends, unlike the corresponding resource output data sets in Example 4.15. Note that for consumable resources with cumulative usage there is no accumulation of the resource on holidays; thus, the cumulative value of engcost at the beginning of the 7th and 8th of December equals the value for the beginning of the 6th of December. For the resource engineer, however, the resource is assumed to be tied to the activity in progress even across holidays or weekends that are spanned by the activity’s duration. For example, both activities 'Drawings' and 'Write Specs' start on December 8, 2003, requiring one and two engineers, respectively. The 'Write Specs' activity finishes on the 12th, freeing up two engineers, whereas 'Drawings' finishes only on the 19th of December. Thus, the data set WIDGRO16 has Rengineer equal to '3' from 8DEC03 to 12DEC03 and then equal to '1' on the 13th and 14th of December. Another engineer is required by the activity 'Study Market' from December 15, 2003; thus, the total usage from 15DEC03 to 19DEC03 is '2'.

Output 4.16.2: Resource Usage: Supplementary Resources

Using Supplementary Resources
Usage Profiles for Constrained Schedule

O
b
s
_
T
I
M
E
_
E
e
n
g
i
n
e
e
r
L
e
n
g
i
n
e
e
r
R
e
n
g
i
n
e
e
r
A
e
n
g
i
n
e
e
r
E
e
n
g
c
o
s
t
L
e
n
g
c
o
s
t
R
e
n
g
c
o
s
t
A
e
n
g
c
o
s
t
1 01DEC03 2 2 2 1 0 0 0 40000
2 02DEC03 2 2 2 1 400 400 400 39600
3 03DEC03 2 2 2 1 800 800 800 39200
4 04DEC03 2 2 2 1 1200 1200 1200 38800
5 05DEC03 2 2 2 1 1600 1600 1600 38400
6 06DEC03 0 0 0 3 2000 2000 2000 38000
7 07DEC03 0 0 0 3 2000 2000 2000 38000
8 08DEC03 4 1 3 0 2000 2000 2000 38000
9 09DEC03 4 1 3 0 2800 2200 2600 37400
10 10DEC03 4 1 3 0 3600 2400 3200 36800
11 11DEC03 4 1 3 0 4400 2600 3800 36200
12 12DEC03 4 1 3 0 5200 2800 4400 35600
13 13DEC03 1 1 1 2 6000 3000 5000 35000
14 14DEC03 1 1 1 2 6000 3000 5000 35000
15 15DEC03 1 3 2 1 6000 3000 5000 35000
16 16DEC03 1 3 2 1 6200 3600 5400 34600
17 17DEC03 1 3 2 1 6400 4200 5800 34200
18 18DEC03 1 3 2 1 6600 4800 6200 33800
19 19DEC03 1 3 2 1 6800 5400 6600 33400
20 20DEC03 0 0 0 3 7000 6000 7000 33000
21 21DEC03 0 0 0 3 7000 6000 7000 33000
22 22DEC03 4 4 4 -1 7000 6000 7000 33000
23 23DEC03 4 4 4 -1 7800 6800 7800 32200
24 24DEC03 4 4 4 -1 8600 7600 8600 31400
25 25DEC03 4 4 4 -1 9400 8400 9400 30600
26 26DEC03 4 4 4 0 9400 8400 9400 30600
27 27DEC03 4 4 4 0 10200 9200 10200 29800
28 28DEC03 4 4 4 0 10200 9200 10200 29800
29 29DEC03 4 4 4 0 10200 9200 10200 29800
30 30DEC03 4 4 4 0 11000 10000 11000 29000
31 31DEC03 4 4 4 0 11800 10800 11800 28200
32 01JAN04 4 4 4 0 12600 11600 12600 27400
33 02JAN04 4 4 4 0 12600 11600 12600 27400
34 03JAN04 4 4 4 0 13400 12400 13400 26600
35 04JAN04 4 4 4 0 13400 12400 13400 26600
36 05JAN04 4 4 4 0 13400 12400 13400 26600
37 06JAN04 4 4 4 0 14200 13200 14200 25800
38 07JAN04 4 4 4 0 15000 14000 15000 25000
39 08JAN04 4 4 4 0 15800 14800 15800 24200
40 09JAN04 4 4 4 0 16600 15600 16600 23400
41 10JAN04 4 4 4 0 17400 16400 17400 22600
42 11JAN04 4 4 4 0 17400 16400 17400 22600
43 12JAN04 4 4 4 0 17400 16400 17400 22600
44 13JAN04 4 4 4 0 18200 17200 18200 21800
45 14JAN04 2 2 2 2 19000 18000 19000 21000
46 15JAN04 2 2 2 2 19400 18400 19400 20600
47 16JAN04 2 2 2 2 19800 18800 19800 20200
48 17JAN04 2 2 2 2 20200 19200 20200 19800
49 18JAN04 2 2 2 2 20200 19200 20200 19800
50 19JAN04 2 2 2 2 20200 19200 20200 19800
51 20JAN04 2 2 2 2 20600 19600 20600 19400
52 21JAN04 2 3 2 2 21000 20000 21000 19000
53 22JAN04 2 3 2 2 21400 20600 21400 18600
54 23JAN04 2 3 2 2 21800 21200 21800 18200
55 24JAN04 2 3 2 2 22200 21800 22200 17800
56 25JAN04 2 3 2 2 22200 21800 22200 17800
57 26JAN04 2 3 2 2 22200 21800 22200 17800
58 27JAN04 2 3 2 2 22600 22400 22600 17400
59 28JAN04 4 4 4 0 23000 23000 23000 17000
60 29JAN04 4 4 4 0 23800 23800 23800 16200
61 30JAN04 4 4 4 0 24600 24600 24600 15400
62 31JAN04 4 4 4 0 25400 25400 25400 14600
63 01FEB04 4 4 4 0 25400 25400 25400 14600
64 02FEB04 4 4 4 0 25400 25400 25400 14600
65 03FEB04 4 4 4 0 26200 26200 26200 13800
66 04FEB04 4 4 4 0 27000 27000 27000 13000
67 05FEB04 4 4 4 0 27800 27800 27800 12200
68 06FEB04 4 4 4 0 28600 28600 28600 11400
69 07FEB04 4 4 4 0 29400 29400 29400 10600
70 08FEB04 4 4 4 0 29400 29400 29400 10600
71 09FEB04 4 4 4 0 29400 29400 29400 10600
72 10FEB04 4 4 4 0 30200 30200 30200 9800
73 11FEB04 1 0 1 3 31000 31000 31000 9000
74 12FEB04 1 0 1 3 31200 31000 31200 8800
75 13FEB04 1 0 1 3 31400 31000 31400 8600
76 14FEB04 1 0 1 3 31600 31000 31600 8400
77 15FEB04 1 0 1 3 31600 31000 31600 8400
78 16FEB04 1 0 1 3 31600 31000 31600 8400
79 17FEB04 1 0 1 3 31800 31000 31800 8200
80 18FEB04 1 1 1 3 32000 31000 32000 8000
81 19FEB04 1 1 1 3 32200 31200 32200 7800
82 20FEB04 1 1 1 3 32400 31400 32400 7600
83 21FEB04 1 1 1 3 32600 31600 32600 7400
84 22FEB04 1 1 1 3 32600 31600 32600 7400
85 23FEB04 1 1 1 3 32600 31600 32600 7400
86 24FEB04 1 1 1 3 32800 31800 32800 7200
87 25FEB04 0 1 0 4 33000 32000 33000 7000
88 26FEB04 0 1 0 4 33000 32200 33000 7000
89 27FEB04 0 1 0 4 33000 32400 33000 7000
90 28FEB04 0 1 0 4 33000 32600 33000 7000
91 29FEB04 0 1 0 4 33000 32600 33000 7000
92 01MAR04 0 1 0 4 33000 32600 33000 7000
93 02MAR04 0 1 0 4 33000 32800 33000 7000
94 03MAR04 2 2 2 2 33000 33000 33000 7000
95 04MAR04 2 2 2 2 33400 33400 33400 6600
96 05MAR04 2 2 2 2 33800 33800 33800 6200
97 06MAR04 2 2 2 2 34200 34200 34200 5800
98 07MAR04 2 2 2 2 34200 34200 34200 5800
99 08MAR04 2 2 2 2 34200 34200 34200 5800
100 09MAR04 2 2 2 2 34600 34600 34600 5400
101 10MAR04 0 0 0 4 35000 35000 35000 5000