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
Scheduling with Alternate Resources |
Data Set WIDGR20 |
Obs | task | days | succ | deseng | prodeng | engpool |
---|---|---|---|---|---|---|
1 | Approve Plan | 5 | Drawings | 1 | 1 | . |
2 | Approve Plan | 5 | Study Market | 1 | 1 | . |
3 | Approve Plan | 5 | Write Specs | 1 | 1 | . |
4 | Drawings | 10 | Prototype | 1 | 1 | . |
5 | Study Market | 5 | Mkt. Strat. | . | 1 | . |
6 | Write Specs | 5 | Prototype | 1 | 1 | . |
7 | Prototype | 15 | Materials | 1 | 1 | 1 |
8 | Prototype | 15 | Facility | 1 | 1 | 1 |
9 | Mkt. Strat. | 10 | Test Market | . | . | . |
10 | Mkt. Strat. | 10 | Marketing | . | . | . |
11 | Materials | 10 | Init. Prod. | . | . | . |
12 | Facility | 10 | Init. Prod. | . | 1 | 2 |
13 | Init. Prod. | 10 | Test Market | . | . | 2 |
14 | Init. Prod. | 10 | Marketing | . | . | 2 |
15 | Init. Prod. | 10 | Evaluate | . | . | 2 |
16 | Evaluate | 10 | Changes | 1 | . | . |
17 | Test Market | 15 | Changes | . | . | . |
18 | Changes | 5 | Production | 1 | 1 | . |
19 | Production | 0 | . | . | . | |
20 | Marketing | 0 | . | . | . |
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
Scheduling with Alternate Resources |
Alternate Resources not used |
Obs | task | succ | days | deseng | prodeng | engpool | S_START | S_FINISH | E_START | E_FINISH | L_START | L_FINISH | R_DELAY | DELAY_R | SUPPL_R |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Approve Plan | Drawings | 5 | 1 | 1 | . | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 0 | ||
2 | Drawings | Prototype | 10 | 1 | 1 | . | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 | 0 | ||
3 | Study Market | Mkt. Strat. | 5 | . | 1 | . | 04FEB04 | 10FEB04 | 08DEC03 | 12DEC03 | 21JAN04 | 27JAN04 | 40 | prodeng | |
4 | Write Specs | Prototype | 5 | 1 | 1 | . | 22DEC03 | 29DEC03 | 08DEC03 | 12DEC03 | 15DEC03 | 19DEC03 | 10 | deseng | |
5 | Prototype | Materials | 15 | 1 | 1 | 1 | 30DEC03 | 20JAN04 | 22DEC03 | 13JAN04 | 22DEC03 | 13JAN04 | 0 | ||
6 | Mkt. Strat. | Test Market | 10 | . | . | . | 11FEB04 | 24FEB04 | 15DEC03 | 29DEC03 | 28JAN04 | 10FEB04 | 0 | ||
7 | Materials | Init. Prod. | 10 | . | . | . | 21JAN04 | 03FEB04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | ||
8 | Facility | Init. Prod. | 10 | . | 1 | 2 | 21JAN04 | 03FEB04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | ||
9 | Init. Prod. | Test Market | 10 | . | . | 2 | 04FEB04 | 17FEB04 | 28JAN04 | 10FEB04 | 28JAN04 | 10FEB04 | 0 | ||
10 | Evaluate | Changes | 10 | 1 | . | . | 18FEB04 | 02MAR04 | 11FEB04 | 24FEB04 | 18FEB04 | 02MAR04 | 0 | ||
11 | Test Market | Changes | 15 | . | . | . | 25FEB04 | 16MAR04 | 11FEB04 | 02MAR04 | 11FEB04 | 02MAR04 | 0 | ||
12 | Changes | Production | 5 | 1 | 1 | . | 17MAR04 | 23MAR04 | 03MAR04 | 09MAR04 | 03MAR04 | 09MAR04 | 0 | ||
13 | Production | 0 | . | . | . | 24MAR04 | 24MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 0 | |||
14 | 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
Scheduling with Alternate Resources |
Alternate Resources Reduce Project Completion Time |
Obs | task | succ | days | deseng | prodeng | engpool | Udeseng | Uprodeng | Uengpool | S_START | S_FINISH | E_START | E_FINISH | L_START | L_FINISH | R_DELAY | DELAY_R | SUPPL_R |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Approve Plan | Drawings | 5 | 1 | 1 | . | 1 | 1 | . | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 0 | ||
2 | Drawings | Prototype | 10 | 1 | 1 | . | 1 | 1 | . | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 | 0 | ||
3 | Study Market | Mkt. Strat. | 5 | . | 1 | . | . | . | 1 | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 21JAN04 | 27JAN04 | 0 | ||
4 | Write Specs | Prototype | 5 | 1 | 1 | . | . | . | 2 | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 15DEC03 | 19DEC03 | 0 | ||
5 | Prototype | Materials | 15 | 1 | 1 | 1 | 1 | 1 | 1 | 22DEC03 | 13JAN04 | 22DEC03 | 13JAN04 | 22DEC03 | 13JAN04 | 0 | ||
6 | Mkt. Strat. | Test Market | 10 | . | . | . | . | . | . | 15DEC03 | 29DEC03 | 15DEC03 | 29DEC03 | 28JAN04 | 10FEB04 | 0 | ||
7 | Materials | Init. Prod. | 10 | . | . | . | . | . | . | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | ||
8 | Facility | Init. Prod. | 10 | . | 1 | 2 | . | 1 | 2 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | ||
9 | Init. Prod. | Test Market | 10 | . | . | 2 | . | . | 2 | 28JAN04 | 10FEB04 | 28JAN04 | 10FEB04 | 28JAN04 | 10FEB04 | 0 | ||
10 | Evaluate | Changes | 10 | 1 | . | . | 1 | . | . | 11FEB04 | 24FEB04 | 11FEB04 | 24FEB04 | 18FEB04 | 02MAR04 | 0 | ||
11 | Test Market | Changes | 15 | . | . | . | . | . | . | 11FEB04 | 02MAR04 | 11FEB04 | 02MAR04 | 11FEB04 | 02MAR04 | 0 | ||
12 | Changes | Production | 5 | 1 | 1 | . | 1 | 1 | . | 03MAR04 | 09MAR04 | 03MAR04 | 09MAR04 | 03MAR04 | 09MAR04 | 0 | ||
13 | Production | 0 | . | . | . | . | . | . | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 0 | |||
14 | 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
Scheduling with Alternate Resources |
DELAY=0, Supplementary Resources Used instead of Alternate |
Obs | task | succ | days | deseng | prodeng | engpool | Udeseng | Uprodeng | Uengpool | S_START | S_FINISH | E_START | E_FINISH | L_START | L_FINISH | R_DELAY | DELAY_R | SUPPL_R |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Approve Plan | Drawings | 5 | 1 | 1 | . | 1 | 1 | . | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 0 | ||
2 | Drawings | Prototype | 10 | 1 | 1 | . | 1 | 1 | . | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 | 0 | ||
3 | Study Market | Mkt. Strat. | 5 | . | 1 | . | . | . | 1 | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 21JAN04 | 27JAN04 | 0 | ||
4 | Write Specs | Prototype | 5 | 1 | 1 | . | . | . | 2 | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 15DEC03 | 19DEC03 | 0 | ||
5 | Prototype | Materials | 15 | 1 | 1 | 1 | 1 | 1 | 1 | 22DEC03 | 13JAN04 | 22DEC03 | 13JAN04 | 22DEC03 | 13JAN04 | 0 | ||
6 | Mkt. Strat. | Test Market | 10 | . | . | . | . | . | . | 15DEC03 | 29DEC03 | 15DEC03 | 29DEC03 | 28JAN04 | 10FEB04 | 0 | ||
7 | Materials | Init. Prod. | 10 | . | . | . | . | . | . | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | ||
8 | Facility | Init. Prod. | 10 | . | 1 | 2 | . | 1 | 2 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | ||
9 | Init. Prod. | Test Market | 10 | . | . | 2 | . | . | 2 | 28JAN04 | 10FEB04 | 28JAN04 | 10FEB04 | 28JAN04 | 10FEB04 | 0 | ||
10 | Evaluate | Changes | 10 | 1 | . | . | 1 | . | . | 11FEB04 | 24FEB04 | 11FEB04 | 24FEB04 | 18FEB04 | 02MAR04 | 0 | ||
11 | Test Market | Changes | 15 | . | . | . | . | . | . | 11FEB04 | 02MAR04 | 11FEB04 | 02MAR04 | 11FEB04 | 02MAR04 | 0 | ||
12 | Changes | Production | 5 | 1 | 1 | . | 1 | 1 | . | 03MAR04 | 09MAR04 | 03MAR04 | 09MAR04 | 03MAR04 | 09MAR04 | 0 | ||
13 | Production | 0 | . | . | . | . | . | . | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 0 | |||
14 | Marketing | 0 | . | . | . | . | . | . | 11FEB04 | 11FEB04 | 11FEB04 | 11FEB04 | 10MAR04 | 10MAR04 | 0 |
Output 4.20.6: Alternate Resources Used Before Supplementary Resources
Scheduling with Alternate Resources |
DELAY=0, Alternate Resources Used instead of Supplementary |
Obs | task | succ | days | deseng | prodeng | engpool | Udeseng | Uprodeng | Uengpool | S_START | S_FINISH | E_START | E_FINISH | L_START | L_FINISH | R_DELAY | DELAY_R | SUPPL_R |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | Approve Plan | Drawings | 5 | 1 | 1 | . | 1 | 1 | . | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 01DEC03 | 05DEC03 | 0 | ||
2 | Drawings | Prototype | 10 | 1 | 1 | . | 1 | 1 | . | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 | 08DEC03 | 19DEC03 | 0 | ||
3 | Study Market | Mkt. Strat. | 5 | . | 1 | . | . | . | 1 | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 21JAN04 | 27JAN04 | 0 | ||
4 | Write Specs | Prototype | 5 | 1 | 1 | . | . | . | 2 | 08DEC03 | 12DEC03 | 08DEC03 | 12DEC03 | 15DEC03 | 19DEC03 | 0 | ||
5 | Prototype | Materials | 15 | 1 | 1 | 1 | 1 | 1 | 1 | 22DEC03 | 13JAN04 | 22DEC03 | 13JAN04 | 22DEC03 | 13JAN04 | 0 | ||
6 | Mkt. Strat. | Test Market | 10 | . | . | . | . | . | . | 15DEC03 | 29DEC03 | 15DEC03 | 29DEC03 | 28JAN04 | 10FEB04 | 0 | ||
7 | Materials | Init. Prod. | 10 | . | . | . | . | . | . | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | ||
8 | Facility | Init. Prod. | 10 | . | 1 | 2 | . | 1 | 2 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 14JAN04 | 27JAN04 | 0 | ||
9 | Init. Prod. | Test Market | 10 | . | . | 2 | . | . | 2 | 28JAN04 | 10FEB04 | 28JAN04 | 10FEB04 | 28JAN04 | 10FEB04 | 0 | ||
10 | Evaluate | Changes | 10 | 1 | . | . | 1 | . | . | 11FEB04 | 24FEB04 | 11FEB04 | 24FEB04 | 18FEB04 | 02MAR04 | 0 | ||
11 | Test Market | Changes | 15 | . | . | . | . | . | . | 11FEB04 | 02MAR04 | 11FEB04 | 02MAR04 | 11FEB04 | 02MAR04 | 0 | ||
12 | Changes | Production | 5 | 1 | 1 | . | 1 | 1 | . | 03MAR04 | 09MAR04 | 03MAR04 | 09MAR04 | 03MAR04 | 09MAR04 | 0 | ||
13 | Production | 0 | . | . | . | . | . | . | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 10MAR04 | 0 | |||
14 | Marketing | 0 | . | . | . | . | . | . | 11FEB04 | 11FEB04 | 11FEB04 | 11FEB04 | 10MAR04 | 10MAR04 | 0 |