Example 4.20 Alternate Resources
Some projects may have two or more resource types that are interchangeable; if one resource is insufficient, the other one can be used in its place. To illustrate the use of alternate resources, consider the widget manufacturing example with the data in AON format as shown in Output 4.20.1. As in Example 4.17, suppose there are two types of engineers, a design engineer and a production engineer. In addition, there is a generic pool of engineers, denoted by the variable engpool. The resource requirements for each category are specified in the data set WIDGR20.
Output 4.20.1
Alternate Resources: Activity Data Set
Approve Plan |
5 |
Drawings |
1 |
1 |
. |
Approve Plan |
5 |
Study Market |
1 |
1 |
. |
Approve Plan |
5 |
Write Specs |
1 |
1 |
. |
Drawings |
10 |
Prototype |
1 |
1 |
. |
Study Market |
5 |
Mkt. Strat. |
. |
1 |
. |
Write Specs |
5 |
Prototype |
1 |
1 |
. |
Prototype |
15 |
Materials |
1 |
1 |
1 |
Prototype |
15 |
Facility |
1 |
1 |
1 |
Mkt. Strat. |
10 |
Test Market |
. |
. |
. |
Mkt. Strat. |
10 |
Marketing |
. |
. |
. |
Materials |
10 |
Init. Prod. |
. |
. |
. |
Facility |
10 |
Init. Prod. |
. |
1 |
2 |
Init. Prod. |
10 |
Test Market |
. |
. |
2 |
Init. Prod. |
10 |
Marketing |
. |
. |
2 |
Init. Prod. |
10 |
Evaluate |
. |
. |
2 |
Evaluate |
10 |
Changes |
1 |
. |
. |
Test Market |
15 |
Changes |
. |
. |
. |
Changes |
5 |
Production |
1 |
1 |
. |
Production |
0 |
|
. |
. |
. |
Marketing |
0 |
|
. |
. |
. |
Output 4.20.2
Alternate Resources: RESOURCEIN Data Set
. |
restype |
|
1 |
1 |
1 |
. |
altprty |
deseng |
. |
1 |
2 |
. |
altprty |
prodeng |
. |
. |
1 |
. |
suplevel |
|
1 |
1 |
. |
01DEC03 |
reslevel |
|
1 |
1 |
4 |
The resource availability data set RESIN20, displayed in Output 4.20.2, identifies all three resources as replenishable resources and indicates a primary as well as a supplementary level of availability. A new variable resid in the data set is used to identify resources in observations 2 and 3 that can be substituted for deseng and prodeng, respectively. These observations have the value 'altprty' for the OBSTYPE variable and indicate a priority for the substitution. For example, observation number 2 indicates that if deseng is unavailable, the procedure can use prodeng, and if even that is insufficient, it can draw from the engineering resource pool engpool. To trigger the substitution of resources, use the RESID= option in the RESOURCE statement.
Output 4.20.3
Alternate Resources Not Used
Approve Plan |
Drawings |
5 |
1 |
1 |
. |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
|
|
Drawings |
Prototype |
10 |
1 |
1 |
. |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
0 |
|
|
Study Market |
Mkt. Strat. |
5 |
. |
1 |
. |
04FEB04 |
10FEB04 |
08DEC03 |
12DEC03 |
21JAN04 |
27JAN04 |
40 |
prodeng |
|
Write Specs |
Prototype |
5 |
1 |
1 |
. |
22DEC03 |
29DEC03 |
08DEC03 |
12DEC03 |
15DEC03 |
19DEC03 |
10 |
deseng |
|
Prototype |
Materials |
15 |
1 |
1 |
1 |
30DEC03 |
20JAN04 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
0 |
|
|
Mkt. Strat. |
Test Market |
10 |
. |
. |
. |
11FEB04 |
24FEB04 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
0 |
|
|
Materials |
Init. Prod. |
10 |
. |
. |
. |
21JAN04 |
03FEB04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
Facility |
Init. Prod. |
10 |
. |
1 |
2 |
21JAN04 |
03FEB04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
Init. Prod. |
Test Market |
10 |
. |
. |
2 |
04FEB04 |
17FEB04 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
0 |
|
|
Evaluate |
Changes |
10 |
1 |
. |
. |
18FEB04 |
02MAR04 |
11FEB04 |
24FEB04 |
18FEB04 |
02MAR04 |
0 |
|
|
Test Market |
Changes |
15 |
. |
. |
. |
25FEB04 |
16MAR04 |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
0 |
|
|
Changes |
Production |
5 |
1 |
1 |
. |
17MAR04 |
23MAR04 |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
0 |
|
|
Production |
|
0 |
. |
. |
. |
24MAR04 |
24MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
0 |
|
|
Marketing |
|
0 |
. |
. |
. |
25FEB04 |
25FEB04 |
11FEB04 |
11FEB04 |
10MAR04 |
10MAR04 |
0 |
|
|
First, PROC CPM is invoked without reference to the RESID variable. The procedure ignores observations 2 and 3 in the RESOURCEIN data set (a message is written to the log), and the project is scheduled using the available resources; the supplementary level is not used because the project can be scheduled using only the primary resources by delaying it a few days. The project completion time is March 24, 2004 (see the schedule displayed in Output 4.20.3). The following program shows the invocation of PROC CPM.
proc cpm date='01dec03'd
interval=weekday collapse
data=widgr20 resin=resin20 holidata=holdata
out=widgo20 resout=widgro20;
activity task;
duration days;
successor succ;
holiday hol;
resource deseng prodeng engpool / period=per
obstype=otype
delayanalysis
rcs avl;
run;
Next, PROC CPM is invoked with the RESID= option, and the resulting Schedule data set is displayed in Output 4.20.4. The new schedule shows that the project completion time (10MAR04) has been reduced by two weeks as a result of using alternate resources.
Output 4.20.4
Alternate Resources Used
Approve Plan |
Drawings |
5 |
1 |
1 |
. |
1 |
1 |
. |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
|
|
Drawings |
Prototype |
10 |
1 |
1 |
. |
1 |
1 |
. |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
0 |
|
|
Study Market |
Mkt. Strat. |
5 |
. |
1 |
. |
. |
. |
1 |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
21JAN04 |
27JAN04 |
0 |
|
|
Write Specs |
Prototype |
5 |
1 |
1 |
. |
. |
. |
2 |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
15DEC03 |
19DEC03 |
0 |
|
|
Prototype |
Materials |
15 |
1 |
1 |
1 |
1 |
1 |
1 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
0 |
|
|
Mkt. Strat. |
Test Market |
10 |
. |
. |
. |
. |
. |
. |
15DEC03 |
29DEC03 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
0 |
|
|
Materials |
Init. Prod. |
10 |
. |
. |
. |
. |
. |
. |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
Facility |
Init. Prod. |
10 |
. |
1 |
2 |
. |
1 |
2 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
Init. Prod. |
Test Market |
10 |
. |
. |
2 |
. |
. |
2 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
0 |
|
|
Evaluate |
Changes |
10 |
1 |
. |
. |
1 |
. |
. |
11FEB04 |
24FEB04 |
11FEB04 |
24FEB04 |
18FEB04 |
02MAR04 |
0 |
|
|
Test Market |
Changes |
15 |
. |
. |
. |
. |
. |
. |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
0 |
|
|
Changes |
Production |
5 |
1 |
1 |
. |
1 |
1 |
. |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
0 |
|
|
Production |
|
0 |
. |
. |
. |
. |
. |
. |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
0 |
|
|
Marketing |
|
0 |
. |
. |
. |
. |
. |
. |
11FEB04 |
11FEB04 |
11FEB04 |
11FEB04 |
10MAR04 |
10MAR04 |
0 |
|
|
When resource substitution is allowed, the procedure adds a new variable prefixed by a 'U' for each resource variable; this new variable specifies the actual resources used for each activity (as opposed to the resource required). The activity 'Study Market' requires one production engineer who is tied up with the activity 'Drawings' on the 8th of December. Since resource substitution is allowed, the procedure uses an engineer from engpool as indicated by a missing value for Uprodeng and a '1' for Uengpool in the third observation. Likewise, the activity 'Write Specs' is scheduled by substituting one engineer from engpool for a design engineer and one for a production engineer to obtain Udeseng='.', Uprodeng='.', and Uengpool=2 in observation number 4. It is evident from the project finish date (S_FINISH=L_FINISH='10MAR04') that resource substitution has enabled the project to be completed without any delay. In fact, the DELAYANALYSIS variables indicate that there is no delay in any of the activities (R_DELAY=0 and DELAY_R=' ' for all activities). Note also that supplementary levels are not used (SUPPL_R=' ') for any of the resources (recall that use of supplementary levels is triggered by the specification of a finite value for DELAY).
The following program produced Output 4.20.4:
proc cpm date='01dec03'd
interval=weekday collapse
data=widgr20 resin=resin20 holidata=holdata
out=widgalt resout=widralt;
activity task;
duration days;
successor succ;
holiday hol;
resource deseng prodeng engpool / period=per
obstype=otype
delayanalysis
resid=resid
rcs avl;
run;
The next two invocations of PROC CPM illustrate the use of both supplementary as well as alternate resources. Note from the output data set, displayed in Output 4.20.5, that once again the project is completed without any delay. Note also that the activity 'Write Specs' has used a supplementary resource whereas 'Study Market' has used an alternate resource. By default, when the DELAY= option is used, it forces the procedure to use supplementary resources before alternate resources. To invert this order so that alternate resources are used before supplementary resources, use the ALTBEFORESUP option in the RESOURCE statement, as illustrated in the second invocation of CPM in the following code. The resulting schedule is displayed in Output 4.20.6; this schedule is, in fact, the same as the schedule displayed in Output 4.20.4, obtained without the DELAY=0 and the ALTBEFORESUP options.
/* Invoke CPM with the DELAY=0 option */
proc cpm date='01dec03'd
interval=weekday collapse
data=widgr20 resin=resin20 holidata=holdata
out=widgdsup resout=widrdsup;
activity task;
duration days;
successor succ;
holiday hol;
resource deseng prodeng engpool / period=per
obstype=otype
delayanalysis
delay=0
resid=resid
rcs avl;
run;
/* Invoke CPM with the DELAY=0 and ALTBEFORESUP options */
proc cpm date='01dec03'd
interval=weekday collapse
data=widgr20 resin=resin20 holidata=holdata
out=widgdsup resout=widrdsup;
activity task;
duration days;
successor succ;
holiday hol;
resource deseng prodeng engpool / period=per
obstype=otype
delayanalysis
delay=0
resid=resid altbeforesup
rcs avl;
run;
Output 4.20.5
Supplementary Resources Used Before Alternate Resources
Approve Plan |
Drawings |
5 |
1 |
1 |
. |
1 |
1 |
. |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
|
|
Drawings |
Prototype |
10 |
1 |
1 |
. |
1 |
1 |
. |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
0 |
|
|
Study Market |
Mkt. Strat. |
5 |
. |
1 |
. |
. |
. |
1 |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
21JAN04 |
27JAN04 |
0 |
|
|
Write Specs |
Prototype |
5 |
1 |
1 |
. |
. |
. |
2 |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
15DEC03 |
19DEC03 |
0 |
|
|
Prototype |
Materials |
15 |
1 |
1 |
1 |
1 |
1 |
1 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
0 |
|
|
Mkt. Strat. |
Test Market |
10 |
. |
. |
. |
. |
. |
. |
15DEC03 |
29DEC03 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
0 |
|
|
Materials |
Init. Prod. |
10 |
. |
. |
. |
. |
. |
. |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
Facility |
Init. Prod. |
10 |
. |
1 |
2 |
. |
1 |
2 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
Init. Prod. |
Test Market |
10 |
. |
. |
2 |
. |
. |
2 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
0 |
|
|
Evaluate |
Changes |
10 |
1 |
. |
. |
1 |
. |
. |
11FEB04 |
24FEB04 |
11FEB04 |
24FEB04 |
18FEB04 |
02MAR04 |
0 |
|
|
Test Market |
Changes |
15 |
. |
. |
. |
. |
. |
. |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
0 |
|
|
Changes |
Production |
5 |
1 |
1 |
. |
1 |
1 |
. |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
0 |
|
|
Production |
|
0 |
. |
. |
. |
. |
. |
. |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
0 |
|
|
Marketing |
|
0 |
. |
. |
. |
. |
. |
. |
11FEB04 |
11FEB04 |
11FEB04 |
11FEB04 |
10MAR04 |
10MAR04 |
0 |
|
|
Output 4.20.6
Alternate Resources Used Before Supplementary Resources
Approve Plan |
Drawings |
5 |
1 |
1 |
. |
1 |
1 |
. |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
01DEC03 |
05DEC03 |
0 |
|
|
Drawings |
Prototype |
10 |
1 |
1 |
. |
1 |
1 |
. |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
08DEC03 |
19DEC03 |
0 |
|
|
Study Market |
Mkt. Strat. |
5 |
. |
1 |
. |
. |
. |
1 |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
21JAN04 |
27JAN04 |
0 |
|
|
Write Specs |
Prototype |
5 |
1 |
1 |
. |
. |
. |
2 |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
15DEC03 |
19DEC03 |
0 |
|
|
Prototype |
Materials |
15 |
1 |
1 |
1 |
1 |
1 |
1 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
22DEC03 |
13JAN04 |
0 |
|
|
Mkt. Strat. |
Test Market |
10 |
. |
. |
. |
. |
. |
. |
15DEC03 |
29DEC03 |
15DEC03 |
29DEC03 |
28JAN04 |
10FEB04 |
0 |
|
|
Materials |
Init. Prod. |
10 |
. |
. |
. |
. |
. |
. |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
Facility |
Init. Prod. |
10 |
. |
1 |
2 |
. |
1 |
2 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
14JAN04 |
27JAN04 |
0 |
|
|
Init. Prod. |
Test Market |
10 |
. |
. |
2 |
. |
. |
2 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
28JAN04 |
10FEB04 |
0 |
|
|
Evaluate |
Changes |
10 |
1 |
. |
. |
1 |
. |
. |
11FEB04 |
24FEB04 |
11FEB04 |
24FEB04 |
18FEB04 |
02MAR04 |
0 |
|
|
Test Market |
Changes |
15 |
. |
. |
. |
. |
. |
. |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
11FEB04 |
02MAR04 |
0 |
|
|
Changes |
Production |
5 |
1 |
1 |
. |
1 |
1 |
. |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
03MAR04 |
09MAR04 |
0 |
|
|
Production |
|
0 |
. |
. |
. |
. |
. |
. |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
10MAR04 |
0 |
|
|
Marketing |
|
0 |
. |
. |
. |
. |
. |
. |
11FEB04 |
11FEB04 |
11FEB04 |
11FEB04 |
10MAR04 |
10MAR04 |
0 |
|
|