The CPM Procedure

Example 4.27 Auxiliary Resources and Alternate Resources

This example illustrates the use of Auxiliary resources. In the earlier examples, the use of alternate resources enabled the allocation of either John or Chris to the programming tasks. Now, suppose that each of the programmers has a different tester, and whenever a particular programmer is scheduled for a given task, his tester also needs to allocate some part of his or her time, say 50 percent, to the same task. To model such a scenario, specify Tester1 and Tester2 as auxiliary resources for Chris and John, respectively. The Activity and Resource data sets are printed in Output 4.27.1. Unlike the earlier examples, all the activities are of fixed-duration.

data software;
     input Activity & $15. dur act s1 s2 Programmer;
datalines;
Plans & Reqts    2  1   2  3  1
Product Design   3  2   4  5  1
Test Plan        3  3   6  7  .
Documentation    3  4   9  .  1
Code             10 5   8  .  1
Test Data        5  6   8  .  .
Test Routines    5  7   8  .  .
Test Product     6  8   9  .  1
Finish           0  9   .  .  .
;
data softaux;
   set software;
   Chris = .;
   John  = .;
   Tester1 = .;
   Tester2 = .;
   run;

data resaux;
   input per date7. otype $ resid $ 18-27 Programmer Chris John
         Tester1 Tester2;
   format per date7.;
   datalines;
.       altrate  Programmer  .  1  1  .  .
.       auxres   Chris       .  .  .  .5 .
.       auxres   John        .  .  .  .  .5
12apr04 reslevel .           .  1  1  1  1
;

Output 4.27.1: Auxiliary Resources: Input Data Sets

Software Development
Alternate and Auxiliary Resources
Activity Data Set

Obs Activity dur act s1 s2 Programmer Chris John Tester1 Tester2
1 Plans & Reqts 2 1 2 3 1 . . . .
2 Product Design 3 2 4 5 1 . . . .
3 Test Plan 3 3 6 7 . . . . .
4 Documentation 3 4 9 . 1 . . . .
5 Code 10 5 8 . 1 . . . .
6 Test Data 5 6 8 . . . . . .
7 Test Routines 5 7 8 . . . . . .
8 Test Product 6 8 9 . 1 . . . .
9 Finish 0 9 . . . . . . .

Software Development
Alternate and Auxiliary Resources
Resource Data Set

Obs per otype resid Programmer Chris John Tester1 Tester2
1 . altrate Programmer . 1 1 . .
2 . auxres Chris . . . 0.5 .
3 . auxres John . . . . 0.5
4 12APR04 reslevel   . 1 1 1.0 1.0



The following statements invoke PROC CPM with the appropriate data sets and resource variables. The resulting schedule is printed in Output 4.27.2. Note the auxiliary resources that have been included in the schedule corresponding to each primary resource: Tester1 whenever Chris is used, and Tester2 whenever John is allocated.

proc cpm data=softaux out=sftaux rsched=rsftaux resin=resaux
         date='12apr04'd interval=weekday resout=raux;
   act act;
   succ s1 s2;
   dur dur;
   res Programmer Chris John Tester1 Tester2 /
                             obstype=otype
                             period=per resid=resid
                             multalt rschedid=Activity;
   id Activity;
   run;

Output 4.27.2: Auxiliary Resources: Resource Schedule Data Set

Software Development: Alternate and Auxiliary Resources
 
Resource Schedule Data Set

Activity act RESOURCE DUR_TYPE dur _WORK_ R_RATE S_START S_FINISH E_START E_FINISH L_START L_FINISH
Plans & Reqts 1     2 . . 12APR04 13APR04 12APR04 13APR04 12APR04 13APR04
Plans & Reqts 1 Programmer FIXED 2 . 1.0 . . 12APR04 13APR04 12APR04 13APR04
Plans & Reqts 1 Tester1 FIXED 2 . 0.5 12APR04 13APR04 . . . .
Plans & Reqts 1 Chris FIXED 2 . 1.0 12APR04 13APR04 . . . .
Product Design 2     3 . . 14APR04 16APR04 14APR04 16APR04 14APR04 16APR04
Product Design 2 Programmer FIXED 3 . 1.0 . . 14APR04 16APR04 14APR04 16APR04
Product Design 2 Tester1 FIXED 3 . 0.5 14APR04 16APR04 . . . .
Product Design 2 Chris FIXED 3 . 1.0 14APR04 16APR04 . . . .
Test Plan 3     3 . . 14APR04 16APR04 14APR04 16APR04 21APR04 23APR04
Documentation 4     3 . . 19APR04 21APR04 19APR04 21APR04 06MAY04 10MAY04
Documentation 4 Programmer FIXED 3 . 1.0 . . 19APR04 21APR04 06MAY04 10MAY04
Documentation 4 Tester2 FIXED 3 . 0.5 19APR04 21APR04 . . . .
Documentation 4 John FIXED 3 . 1.0 19APR04 21APR04 . . . .
Code 5     10 . . 19APR04 30APR04 19APR04 30APR04 19APR04 30APR04
Code 5 Programmer FIXED 10 . 1.0 . . 19APR04 30APR04 19APR04 30APR04
Code 5 Tester1 FIXED 10 . 0.5 19APR04 30APR04 . . . .
Code 5 Chris FIXED 10 . 1.0 19APR04 30APR04 . . . .
Test Data 6     5 . . 19APR04 23APR04 19APR04 23APR04 26APR04 30APR04
Test Routines 7     5 . . 19APR04 23APR04 19APR04 23APR04 26APR04 30APR04
Test Product 8     6 . . 03MAY04 10MAY04 03MAY04 10MAY04 03MAY04 10MAY04
Test Product 8 Programmer FIXED 6 . 1.0 . . 03MAY04 10MAY04 03MAY04 10MAY04
Test Product 8 Tester1 FIXED 6 . 0.5 03MAY04 10MAY04 . . . .
Test Product 8 Chris FIXED 6 . 1.0 03MAY04 10MAY04 . . . .
Finish 9     0 . . 11MAY04 11MAY04 11MAY04 11MAY04 11MAY04 11MAY04