Example 2.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 2.20.1. As in
Example 2.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 2.20.1: Alternate Resources: Activity Data Set
Approve Plan |
5 |
Drawings |
1 |
1 |
. |
Approve Plan |
5 |
Anal. Market |
1 |
1 |
. |
Approve Plan |
5 |
Write Specs |
1 |
1 |
. |
Drawings |
10 |
Prototype |
1 |
1 |
. |
Anal. 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 2.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 2.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 2.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 |
|
|
Anal. 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 2.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 2.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 2.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 |
|
|
Anal. 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 'Anal. 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 2.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 2.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
'Anal. 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 2.20.6; this
schedule is, in fact, the same as the schedule displayed in Output 2.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 2.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 |
|
|
Anal. Market |
Mkt. Strat. |
5 |
. |
1 |
. |
. |
. |
1 |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
21JAN04 |
27JAN04 |
0 |
|
|
Write Specs |
Prototype |
5 |
1 |
1 |
. |
1 |
1 |
. |
08DEC03 |
12DEC03 |
08DEC03 |
12DEC03 |
15DEC03 |
19DEC03 |
0 |
|
deseng |
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 2.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 |
|
|
Anal. 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 |
|
|
|