Chapter Contents
Chapter Contents
Previous
Previous
Next
Next
The CPM Procedure

Example 2.23: Resource Driven Durations and Resource Calendars

This example illustrates the effect of resource driven durations and resource calendars on the schedule of a project involving multiple resources.

In projects that use manpower as a resource, the same activity may require different amounts of work from different people. Also, the work schedules and vacations may differ for each individual person. All of these factors may cause the schedules for the different resources used by the activity to differ from each other.

Consider a software project requiring two resources: a programmer and a tester. A network diagram displaying the activities and their precedence relationships is shown in Figure 2.8.

cpm23g1.gif (3424 bytes)

Figure 2.8: Software Project Network

Some of the activities in this project have a fixed duration, requiring the same length of time from both resources; others require a different number of days from the programmer and the tester. Further, some activities require only a fraction of the resource; for example, `Documentation' requires only 20 percent of the programmer's time for a total of two man-days. The activities in the project, their durations (if fixed) in days, the total work required (if resource-driven) in days, the precedence constraints, and the resource requirements are displayed in Output 2.23.1.

Output 2.23.1: Project Data

Software Development
Activity Data Set SOFTWARE

Activity act s1 s2 dur mandays progrmr tester
Plans & Reqts 1 2 3 2 . 1.0 1.0
Product Design 2 4 5 . 3 1.0 .
Product Design 2 . . . 1 . 1.0
Test Plan 3 6 7 3 . . 1.0
Documentation 4 9 . . 2 0.2 .
Documentation 4 . . . 1 . 0.5
Code 5 8 . 10 . 0.8 .
Test Data 6 8 . 5 . . 0.5
Test Routines 7 8 . 5 . . 0.5
Test Product 8 9 . 6 . 0.5 1.0
Finish 9 . . 0 . . .


The following statements invoke PROC CPM with a WORK= specification on the RESOURCE statement, which identifies (in number of man-days, in this case) the amount of work required from each resource used by an activity. If the WORK variable has a missing value, the activity in that observation is assumed to have a fixed duration. The project is scheduled to start on April 11, 1994, and the activities are assumed to follow a five-day work week. Unlike fixed-duration scheduling, each resource used by an activity could have a different schedule; an activity is assumed to be finished only when all of its resources have finished working on it.

   proc cpm data=software out=sftout ressched=rsftout
            date='11apr94'd interval=weekday resout=rout;
      act act;
      succ s1 s2;
      dur dur;
      res progrmr tester / work=mandays
                           rschedid=Activity;
      id Activity;
   run;

The individual resource schedules, as well as each activity's combined schedule, are saved in a Resource Schedule data set, RSFTOUT, requested by the RESSCHED= option on the CPM statement. This output data set (displayed in Output 2.23.2) is very similar to the Schedule data set and contains the activity variable and all the relevant schedule variables (E_START, E_FINISH, L_START, and so forth).

Output 2.23.2: Resource Schedule Data Set

Software Development
Resource Schedule Data Set RSFTOUT

Activity act RESOURCE DUR_TYPE dur mandays R_RATE E_START E_FINISH L_START L_FINISH
Plans & Reqts 1     2 . . 11APR94 12APR94 11APR94 12APR94
Plans & Reqts 1 progrmr FIXED 2 . 1.0 11APR94 12APR94 11APR94 12APR94
Plans & Reqts 1 tester FIXED 2 . 1.0 11APR94 12APR94 11APR94 12APR94
Product Design 2     3 . . 13APR94 15APR94 13APR94 15APR94
Product Design 2 progrmr RDRIVEN 3 3 1.0 13APR94 15APR94 13APR94 15APR94
Product Design 2 tester RDRIVEN 1 1 1.0 13APR94 13APR94 15APR94 15APR94
Test Plan 3     3 . . 13APR94 15APR94 20APR94 22APR94
Test Plan 3 tester FIXED 3 . 1.0 13APR94 15APR94 20APR94 22APR94
Documentation 4     10 . . 18APR94 29APR94 26APR94 09MAY94
Documentation 4 progrmr RDRIVEN 10 2 0.2 18APR94 29APR94 26APR94 09MAY94
Documentation 4 tester RDRIVEN 2 1 0.5 18APR94 19APR94 06MAY94 09MAY94
Code 5     10 . . 18APR94 29APR94 18APR94 29APR94
Code 5 progrmr FIXED 10 . 0.8 18APR94 29APR94 18APR94 29APR94
Test Data 6     5 . . 18APR94 22APR94 25APR94 29APR94
Test Data 6 tester FIXED 5 . 0.5 18APR94 22APR94 25APR94 29APR94
Test Routines 7     5 . . 18APR94 22APR94 25APR94 29APR94
Test Routines 7 tester FIXED 5 . 0.5 18APR94 22APR94 25APR94 29APR94
Test Product 8     6 . . 02MAY94 09MAY94 02MAY94 09MAY94
Test Product 8 progrmr FIXED 6 . 0.5 02MAY94 09MAY94 02MAY94 09MAY94
Test Product 8 tester FIXED 6 . 1.0 02MAY94 09MAY94 02MAY94 09MAY94
Finish 9     0 . . 10MAY94 10MAY94 10MAY94 10MAY94


For each activity in the project, the Resource Schedule data set contains the schedule for the entire activity as well as the schedule for each resource used by the activity. The variable RESOURCE identifies the name of the resource to which the observation refers and has missing values for observations that refer to the entire activity's schedule. The value of the variable DUR_TYPE indicates whether the resource drives the activity's duration (`RDRIVEN') or not (`FIXED').

The DURATION variable,dur, indicates the duration of the activity for the resource identified in that observation. For resources that are of the driving type, the WORK variable, mandays, shows the total amount of work (in units of the INTERVAL parameter) required by the resource for the activity in that observation. The variable R_RATE shows the rate of usage of the resource for the relevant activity. Note that for driving resources, the variable dur is computed as (mandays / R_RATE).

A Gantt chart of the schedules for each resource is plotted in Output 2.23.3.

Output 2.23.3: Software Project Schedule
cpm23g2.gif (6627 bytes)

The daily utilization of the resources is also saved in a data set, ROUT, displayed in Output 2.23.4. The resource usage data set indicates that you need more than one tester on some days with both the early schedule (on the 13th, 18th, and 19th of April) and the late schedule (on the 6th and 9th of May).

Output 2.23.4: Resource Usage Data

Software Development
Resource Usage Data Set ROUT

Obs _TIME_ Eprogrmr Lprogrmr Etester Ltester
1 11APR94 1.0 1.0 1.0 1.0
2 12APR94 1.0 1.0 1.0 1.0
3 13APR94 1.0 1.0 2.0 0.0
4 14APR94 1.0 1.0 1.0 0.0
5 15APR94 1.0 1.0 1.0 1.0
6 18APR94 1.0 0.8 1.5 0.0
7 19APR94 1.0 0.8 1.5 0.0
8 20APR94 1.0 0.8 1.0 1.0
9 21APR94 1.0 0.8 1.0 1.0
10 22APR94 1.0 0.8 1.0 1.0
11 25APR94 1.0 0.8 0.0 1.0
12 26APR94 1.0 1.0 0.0 1.0
13 27APR94 1.0 1.0 0.0 1.0
14 28APR94 1.0 1.0 0.0 1.0
15 29APR94 1.0 1.0 0.0 1.0
16 02MAY94 0.5 0.7 1.0 1.0
17 03MAY94 0.5 0.7 1.0 1.0
18 04MAY94 0.5 0.7 1.0 1.0
19 05MAY94 0.5 0.7 1.0 1.0
20 06MAY94 0.5 0.7 1.0 1.5
21 09MAY94 0.5 0.7 1.0 1.5
22 10MAY94 0.0 0.0 0.0 0.0


Suppose now that you have only one tester and one programmer. You can determine a resource-constrained schedule using PROC CPM (as in the fixed duration case) by specifying a resource availability data set, RESIN (Output 2.23.5).

Output 2.23.5: Resource Availability Data

Software Development
Resource Availability Data Set

Obs per otype progrmr tester
1 11APR94 reslevel 1 1


The following statements invoke PROC CPM, and the resulting Resource Schedule data set is displayed in Output 2.23.6. Note that the project still finishes on May 10, but some of the activities (3, 4, 6, and 7) are delayed. The resource-constrained schedule is plotted on a Gantt chart in Output 2.23.7; both resources follow the same weekday calendar.

   proc cpm data=software resin=resin
            out=sftout1 resout=rout1 
            rsched=rsftout1
            date='11apr94'd interval=weekday;
      act act;
      succ s1 s2;
      dur dur;
      res progrmr tester / work=mandays
                           obstype=otype
                           period=per
                           rschedid=Activity;
      id Activity;
   run;

Output 2.23.6: Resource-Constrained Schedule: Common Calendar

Software Development
Resource Constrained Schedule: Common Resource Calendar

Activity act _CAL_ RESOURCE DUR_TYPE dur mandays R_RATE S_START S_FINISH E_START E_FINISH L_START L_FINISH
Plans & Reqts 1 0     2 . . 11APR94 12APR94 11APR94 12APR94 11APR94 12APR94
Plans & Reqts 1 0 progrmr FIXED 2 . 1.0 11APR94 12APR94 11APR94 12APR94 11APR94 12APR94
Plans & Reqts 1 0 tester FIXED 2 . 1.0 11APR94 12APR94 11APR94 12APR94 11APR94 12APR94
Product Design 2 0     3 . . 13APR94 15APR94 13APR94 15APR94 13APR94 15APR94
Product Design 2 0 progrmr RDRIVEN 3 3 1.0 13APR94 15APR94 13APR94 15APR94 13APR94 15APR94
Product Design 2 0 tester RDRIVEN 1 1 1.0 13APR94 13APR94 13APR94 13APR94 15APR94 15APR94
Test Plan 3 0     3 . . 14APR94 18APR94 13APR94 15APR94 20APR94 22APR94
Test Plan 3 0 tester FIXED 3 . 1.0 14APR94 18APR94 13APR94 15APR94 20APR94 22APR94
Documentation 4 0     10 . . 26APR94 09MAY94 18APR94 29APR94 26APR94 09MAY94
Documentation 4 0 progrmr RDRIVEN 10 2 0.2 26APR94 09MAY94 18APR94 29APR94 26APR94 09MAY94
Documentation 4 0 tester RDRIVEN 2 1 0.5 26APR94 27APR94 18APR94 19APR94 06MAY94 09MAY94
Code 5 0     10 . . 18APR94 29APR94 18APR94 29APR94 18APR94 29APR94
Code 5 0 progrmr FIXED 10 . 0.8 18APR94 29APR94 18APR94 29APR94 18APR94 29APR94
Test Data 6 0     5 . . 19APR94 25APR94 18APR94 22APR94 25APR94 29APR94
Test Data 6 0 tester FIXED 5 . 0.5 19APR94 25APR94 18APR94 22APR94 25APR94 29APR94
Test Routines 7 0     5 . . 19APR94 25APR94 18APR94 22APR94 25APR94 29APR94
Test Routines 7 0 tester FIXED 5 . 0.5 19APR94 25APR94 18APR94 22APR94 25APR94 29APR94
Test Product 8 0     6 . . 02MAY94 09MAY94 02MAY94 09MAY94 02MAY94 09MAY94
Test Product 8 0 progrmr FIXED 6 . 0.5 02MAY94 09MAY94 02MAY94 09MAY94 02MAY94 09MAY94
Test Product 8 0 tester FIXED 6 . 1.0 02MAY94 09MAY94 02MAY94 09MAY94 02MAY94 09MAY94
Finish 9 0     0 . . 10MAY94 10MAY94 10MAY94 10MAY94 10MAY94 10MAY94

Output 2.23.7: Resource-Constrained Schedule
cpm23g3.gif (6378 bytes)

Now suppose that the tester switches to part-time employment, working only four days a week. Thus, the two resources have different calendars. To determine the effect this change has on the project schedule, define a calendar data set identifying calendar `1' as having a holiday on Friday (see Output 2.23.8). In a new resource availability data set (also displayed in Output 2.23.8), associate calendar `1' with the resource tester and calendar `0' with the resource progrmr. Note that `0' refers to the default calendar, which is the weekday calendar for this project (since INTERVAL = WEEKDAY).

Output 2.23.8: Resource and Calendar Data

Software Development
Calendar Data Set CALENDAR

Obs _cal_ _fri_
1 1 holiday


Resource Data Set RESIN2

Obs per otype progrmr tester
1 . calendar 0 1
2 11APR94 reslevel 1 1


Next, invoke PROC CPM, as shown in the following statements, with the Activity, Resource, and Calendar data sets to obtain the revised schedule, plotted in Output 2.23.9. Note that the project is delayed by two days because of the TESTER's shorter work week, which is illustrated by the longer holiday breaks in the TESTER's schedule bars. The new resource constrained schedule is displayed in Output 2.23.10.

   proc cpm data=software resin=resin2
            caledata=calendar
            out=sftout2 rsched=rsftout2
            resout=rout2
            date='11apr94'd interval=weekday;
      act act;
      succ s1 s2;
      dur dur;
      res progrmr tester / work=mandays
                           obstype=otype
                           period=per
                           rschedid=Activity;
      id Activity;
   run;

Output 2.23.9: Resource-Constrained Schedule
cpm23g4.gif (6443 bytes)

Output 2.23.10: Resource-Constrained Schedule: Multiple Calendars

Software Development
Resource Constrained Schedule: Multiple Resource Calendars

Activity act _CAL_ RESOURCE DUR_TYPE dur mandays R_RATE S_START S_FINISH E_START E_FINISH L_START L_FINISH
Plans & Reqts 1 0     2 . . 11APR94 12APR94 11APR94 12APR94 11APR94 12APR94
Plans & Reqts 1 0 progrmr FIXED 2 . 1.0 11APR94 12APR94 11APR94 12APR94 11APR94 12APR94
Plans & Reqts 1 1 tester FIXED 2 . 1.0 11APR94 12APR94 11APR94 12APR94 11APR94 12APR94
Product Design 2 0     3 . . 13APR94 15APR94 13APR94 15APR94 13APR94 15APR94
Product Design 2 0 progrmr RDRIVEN 3 3 1.0 13APR94 15APR94 13APR94 15APR94 13APR94 15APR94
Product Design 2 1 tester RDRIVEN 1 1 1.0 13APR94 13APR94 13APR94 13APR94 14APR94 14APR94
Test Plan 3 0     3 . . 14APR94 19APR94 13APR94 18APR94 18APR94 20APR94
Test Plan 3 1 tester FIXED 3 . 1.0 14APR94 19APR94 13APR94 18APR94 18APR94 20APR94
Documentation 4 0     10 . . 28APR94 11MAY94 18APR94 29APR94 27APR94 10MAY94
Documentation 4 0 progrmr RDRIVEN 10 2 0.2 28APR94 11MAY94 18APR94 29APR94 27APR94 10MAY94
Documentation 4 1 tester RDRIVEN 2 1 0.5 28APR94 02MAY94 18APR94 19APR94 09MAY94 10MAY94
Code 5 0     10 . . 18APR94 29APR94 18APR94 29APR94 18APR94 29APR94
Code 5 0 progrmr FIXED 10 . 0.8 18APR94 29APR94 18APR94 29APR94 18APR94 29APR94
Test Data 6 0     5 . . 20APR94 27APR94 19APR94 26APR94 21APR94 29APR94
Test Data 6 1 tester FIXED 5 . 0.5 20APR94 27APR94 19APR94 26APR94 21APR94 28APR94
Test Routines 7 0     5 . . 20APR94 27APR94 19APR94 26APR94 21APR94 29APR94
Test Routines 7 1 tester FIXED 5 . 0.5 20APR94 27APR94 19APR94 26APR94 21APR94 28APR94
Test Product 8 0     6 . . 03MAY94 11MAY94 02MAY94 10MAY94 02MAY94 10MAY94
Test Product 8 0 progrmr FIXED 6 . 0.5 03MAY94 10MAY94 02MAY94 09MAY94 03MAY94 10MAY94
Test Product 8 1 tester FIXED 6 . 1.0 03MAY94 11MAY94 02MAY94 10MAY94 02MAY94 10MAY94
Finish 9 0     0 . . 12MAY94 12MAY94 11MAY94 11MAY94 11MAY94 11MAY94

Chapter Contents
Chapter Contents
Previous
Previous
Next
Next
Top
Top

Copyright © 1999 by SAS Institute Inc., Cary, NC, USA. All rights reserved.