The CPM Procedure |
RESOURCEOUT= Usage Data Set |
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 section RESOURCE Statement) 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 prefix A is used for the variable describing the resource availability profile.
The prefix E is used for the variable denoting the early start usage.
The prefix L is used for the variable denoting the late start usage.
The prefix R is used for the variable denoting the resource-constrained usage.
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 selects 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 depending on whether 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.
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 section Specifying Resource Requirements), activities 'A' and 'B' have S_START equal to 1JUL04 and 5JUL04, 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:
_TIME_ RWORKERS AWORKERS RBRICKS ABRICKS 1JUL04 0 0 100 1000 2JUL04 0 0 100 900 3JUL04 0 0 100 800 4JUL04 0 0 100 700 5JUL04 2 2 100 600 6JUL04 2 2 0 500 7JUL04 2 2 0 500 8JUL04 2 2 0 500 9JUL04 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, 2004), all 1000 bricks are still available. 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:
_TIME_ RWORKERS AWORKERS RBRICKS ABRICKS 1JUL04 0 0 0 1000 3JUL04 0 0 200 800 5JUL04 2 2 400 600 7JUL04 2 2 500 500 9JUL04 0 4 500 1000
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 1JUL04 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 11JUL04, it would indicate that 100 bricks from the supplementary reservoir were used through the end of July 10, 2004. See Example 4.16, "Using Supplementary Resources," and Example 4.17, "INFEASDIAGNOSTIC Option and Aggregate Resource Type."
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 successive observations. The observations (five in each set) would be as follows:
_TIME_ OBS_TYPE RWORKERS RBRICKS 01JUL04 RES_RATE 0 100 03JUL04 RES_RATE 0 100 05JUL04 RES_RATE 2 100 07JUL04 RES_RATE 2 0 09JUL04 RES_RATE 0 0 01JUL04 RES_USED 0 200 03JUL04 RES_USED 0 200 05JUL04 RES_USED 4 100 07JUL04 RES_USED 4 0 09JUL04 RES_USED 0 0
For consumable resources that have a variable usage profile (as indicated by the values 1 or 2 for observations of type RESUSAGE in the Resource data set), the values of the usage variables indicate the amount of the resource consumed by an activity at the beginning or end of the activity. For example, consider the resources PAYMENT and ADVANCE specified in the following Resource data set:
OBS OBSTYPE DATE WORKERS BRICKS PAYMENT ADVANCE 1 RESTYPE . 1 2 2 2 2 RESUSAGE . . . 2 1 3 RESLEVEL 1JUL2004 4 1000 2000 500
Suppose the activity 'Task 1', specified in the following observation, is scheduled to start on July 1, 2004:
OBS ACTIVITY DUR WORKERS BRICKS PAYMENT ADVANCE 1 Task 1 5 1 100 1000 200
For these data, the resource usage profile for the resources will be as indicated in the following output:
_TIME_ RWORKERS RBRICKS RPAYMENT RADVANCE 1JUL04 1 100 0 200 2JUL04 1 100 0 0 3JUL04 1 100 0 0 4JUL04 1 100 0 0 5JUL04 1 100 0 0 6JUL04 0 0 1000 0
Copyright © SAS Institute, Inc. All Rights Reserved.