The CLP Procedure

Resource Data Set

The Resource data set is used in conjunction with the ACTDATA= data set to define resources, resource capacities, and alternate resources. The Resource data set contains at most four variables: _RESOURCE_, _CAPACITY_, _POOL_, and _SUBQTY_. The Resource data set is specified by using the RESDATA= option in the PROC CLP statement.

The _RESOURCE_ variable is a required character variable that defines resources. The _CAPACITY_ variable is a numeric variable that defines the capacity of the resource; it takes only nonnegative integer values. In the absence of alternate resources, the _RESOURCE_ and _CAPACITY_ variables are the only variables that you need in a data set to define resources and their capacities.

The following Resource data set defines resource R1 with capacity 2 and resource R2 with capacity 4:

 _RESOURCE_    _CAPACITY_

     R1             2
     R2             4

Now suppose that you have an activity whose resource requirements can be satisfied by any one of a given set of resources. The Activity data set does not directly allow for a disjunctive specification. In order to provide a disjunctive specification, you need to specify an abstract resource, referred to as a resource pool, in the _RESOURCE_ variable and use the _POOL_ and _SUBQTY_ variables in the Resource data set to identify the resources that can be substituted for this resource pool. The _POOL_ variable is a character variable that identifies a resource pool to which the _RESOURCE_ variable belongs. The _SUBQTY_ variable is a numeric variable that identifies the number of units of _RESOURCE_ that can substitute for one unit of the resource pool. The _SUBQTY_ variable takes only nonnegative integer values. Each resource pool corresponds to as many observations in the Resource data set as there are members in the pool. A _RESOURCE_ can have membership in more than one resource pool. The resource and resource pool are distinct entities in the Resource data set; that is, a _RESOURCE_ cannot have the same name as a _POOL_ in the Resource data set and vice versa.

For example, consider the following Activity data set:

Obs    _ACTIVITY_    _DURATION_    _RESOURCE_

 1          A             1          R1
 2          B             2          RP1
 3          C             1          RP2

and Resource data set:

Obs    _RESOURCE_    _CAPACITY_    _POOL_    _SUBQTY_

 1         R1            2          RP1         1
 2         R2            1          RP1         1
 3         R1            2          RP2         2
 4         R2            1          RP2         1

Activity A requires the resource R1. Activity B requires the resource RP1, which is identified as a resource pool in the Resource data set with members R1 and R2. Since the value of _SUBQTY_ is 1 for both resources, activity B can be satisfied with one unit of R1 or one unit of R2. Observations 3 and 4 in the Resource data set define resource pool RP2. Activity C requires resource pool RP2, which translates to requiring two units of R1 or one unit of R2 (since the value of _SUBQTY_ is 2 in observation 3 of the Resource data set). Resource substitution is not a sharable substitution; it is all or nothing. For example, if activity A requires two units of RP1 instead, the substitution is two units of R1 or two units of R2. The requirement cannot be satisfied using one unit of R1 and one unit of R2.

Variables in the RESDATA= Data Set

Table 3.7 lists all the variables that are associated with the RESDATA= data set and their interpretations by the CLP procedure. For each variable, the table also lists its type (C for character, N for numeric), its possible values, and its default value.

Table 3.7: Resource Data Set Variables

Name

Type

Description

Allowed Values

Default

_RESOURCE_

C

Resource name

   

_CAPACITY_

N

Resource capacity

Nonnegative integers

1

_POOL_

C

Resource pool name

   

_SUBQTY_

N

Number of units of resource that can substitute for one unit of the resource pool

Nonnegative integers

1