Chapter Contents
Chapter Contents
The CPM Procedure


The RESOURCEOUT= data set (referred to as the Usage data set) contains information about the resource usage for the resources specified in the RESOURCE statement. The options ALL, AVPROFILE, ESPROFILE, LSPROFILE, and RCPROFILE (each is discussed earlier in the "RESOURCE Statement" section) control the number of variables that are to be created in this data set. The ROUTINTERVAL= and ROUTINTPER= options control the number of observations that this data set is to contain. Of the options controlling the number of variables, AVPROFILE and RCPROFILE are allowed only if the procedure is used to obtain a resource-constrained schedule. The Usage data set always contains a variable named _TIME_ that specifies the date for which the resource usage or availability in the observation is valid. For each of the variables specified in the RESOURCE statement, one, two, three, or four new variables are created depending on how many of the four possible options (AVPROFILE, ESPROFILE, LSPROFILE, and RCPROFILE) are in effect. If none of these four options is specified, the ALL option is assumed to be in effect. Recall that the ALL option is equivalent to specifying ESPROFILE and LSPROFILE when PROC CPM is used to obtain an unconstrained schedule, and it is equivalent to specifying all four options when PROC CPM is used to obtain a resource-constrained schedule.

The new variables are named according to the following convention:

The suffix is the name of the resource variable if the name is less than the maximum possible variable length (which is dependent on the VALIDVARNAME option). If the length of the name is equal to this maximum length, the suffix is formed by deleting the character following the (n/2)th position. The user must ensure that this naming convention results in unique variable names in the Usage data set.

The ROUTINTERVAL=routinterval and ROUTINTPER=routintper options specify that two successive values of the _TIME_ variable differ by routintper number of routinterval units, measured with respect to a specific calendar. If the routinterval is not specified, PROC CPM chooses a default value depending on the format of the start and finish variables in the Schedule data set. The value of routinterval is indicated in a message written to the SAS log.

The MINDATE=mindate and MAXDATE=maxdate options specify the minimum and maximum values of the _TIME_ variable, respectively. Thus, the Usage data set has observations containing the resource usage information from mindate to maxdate with the time interval between the values of the _TIME_ variable in two successive observations being equal to routintper units of routinterval, measured with respect to a specific calendar. For example, if routinterval is MONTH and routintper is 3, then the time interval between successive observations in the Usage data set is three months. The calendar used for incrementing the _TIME_ variable is specified using the AROUTCAL= or NROUTCAL= options according as the calendars for the project are specified using alphanumeric or numeric values, respectively. In the absence of either of these specifications, the default calendar is used. For example, if the default calendar follows a five-day work week and ROUTINTERVAL=DAY, the Usage data set will not contain observations corresponding to Saturdays and Sundays. You can also use the ROUTNOBREAK option to indicate that there should be no breaks in the _TIME_ values due to breaks or holidays.

Interpretation of Variables

The availability profile indicates the amount of resources available at the beginning of the time interval specified in the _TIME_ variable, after accounting for the resources used through the previous time period.

By default, each observation in the Resource Usage data set indicates the rate of resource usage per unit routinterval at the start of the time interval specified in the _TIME_ variable. Note that replenishable resources are assumed to be tied to an activity during any of the activity's breaks or holidays that fall in the course of the activity's duration. For consumable resources, you can use the CUMUSAGE option to obtain cumulative usage of the resource, instead of daily rate of usage. Often, it is more useful to obtain cumulative usage for consumable resources. You can use the TOTUSAGE option on the RESOURCE statement to get the total resource usage for each resource within each time period. If you wish to obtain both the rate of usage and the total usage for each time period, use the APPEND option on the RESOURCE statement.

The following example illustrates the default interpretation of the new variables.

Suppose that for the data given earlier (see the "Specifying Resource Requirements" section), activities `A' and `B' have S_START equal to 1JUL92 and 5JUL92, respectively. If the RESOURCE statement has the options AVPROFILE and RCPROFILE, the Usage data set has these five variables, _TIME_, RWORKERS, AWORKERS, RBRICKS, and ABRICKS. Suppose further that routinterval is DAY and routintper is 1. The Usage data set contains the following observations:


   1JUL92        0           0         100        1000
   2JUL92        0           0         100         900
   3JUL92        0           0         100         800
   4JUL92        0           0         100         700
   5JUL92        2           2         100         600
   6JUL92        2           2          0          500
   7JUL92        2           2          0          500
   8JUL92        2           2          0          500
   9JUL92        0           4          0         1000

On each day of activity A's duration, the resource BRICKS is consumed at the rate of 100 bricks per day. At the beginning of the first day (July 1, 1992), all 1000 bricks are still available. Note that each day the availability drops by 100 bricks, which is the rate of consumption. On July 5, activity `B' is scheduled to start. On the four days starting with July 5, the value of RWORKERS is `2', indicating that 2 workers are used on each of those days leaving an available supply of 2 workers (AWORKERS is equal to `2' on all 4 days).

If ROUTINTPER is set to 2, and the CUMUSAGE option is used, then the observations would be as follows:


   1JUL92        0           0           0        1000
   3JUL92        0           0         200         800
   5JUL92        2           2         400         600
   7JUL92        2           2         500         500
   9JUL92        0           4         500        1000

Note that the value of RBRICKS indicates the cumulative usage of the resource BRICKS through the beginning of the date specified by the value of the variable _TIME_ in each observation. That is why, for example, RBRICKS = 0 on 1JUL92 and not 200. If the procedure uses supplementary levels of resources, then, on a day when supplementary levels of resources were used through the beginning of the day, the value for the availability profile for the relevant resources would be negative. The absolute magnitude of this value would denote the amount of supplementary resource that was used through the beginning of the day. For instance, if ABRICKS is `-100' on 11JUL92, it would indicate that 100 bricks from the supplementary reservoir were used through the end of July 10, 1992. See Example 2.16, "Using Supplementary Resources," and Example 2.17, "Use of the INFEASDIAGNOSTIC Option." If, for the same data, ROUTINTPER is 2, and the APPEND option is specified, the Usage data set would contain two sets of observations, the first indicating the rate of resource usage per day, and the second set indicating the product of the rate and the time interval between two succesive observations. The observations (five in each set) would be as follows:

           _TIME_    OBS_TYPE    RWORKERS    RBRICKS      
          01JUL92    RES_RATE        0         100        
          03JUL92    RES_RATE        0         100        
          05JUL92    RES_RATE        2         100        
          07JUL92    RES_RATE        2           0        
          09JUL92    RES_RATE        0           0        
          01JUL92    RES_USED        0         200        
          03JUL92    RES_USED        0         200        
          05JUL92    RES_USED        4         100        
          07JUL92    RES_USED        4           0        
          09JUL92    RES_USED        0           0

Chapter Contents
Chapter Contents

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