Previous Page | Next Page

The CLP Procedure

PROC CLP Statement

PROC CLP options ;

The following options can appear in the PROC CLP statement.

ACTDATA= SAS-data-set
ACTIVITY=SAS-data-set

identifies the input data set that defines the activities and temporal constraints. The temporal constraints consist of time-alignment-type constraints and precedence-type constraints. The format of the ACTDATA= data set is similar to that of the Activity data set used by the CPM procedure in SAS/OR software. The activities and time alignment constraints can also be specified directly by using the ACTIVITY statement without the need for a data set. The CLP procedure enables you to define activities by using a combination of the two specifications.

CONDATA= SAS-data-set

identifies the input data set that defines the constraints, variable types, and variable bounds. Currently, the CONDATA data set provides support for linear constraints only.

The linear constraints can also be specified in-line by using the LINCON statement. The CLP procedure enables you to define constraints by using a combination of the two specifications. When defining constraints, you must define the variables by using a VARIABLE statement or implicitly define them by specifying the USECONDATAVARS= option when using the CONDATA= data set. Note that variable bounds can be defined by using the VARIABLE statement, and any such definitions override those defined in the CONDATA= data set.

DM= m

specifies the dead-end multiplier for the scheduling CSP. The dead-end multiplier is used to determine the number of dead-ends that are permitted before triggering a complete restart of the search technique in a scheduling environment. The number of dead-ends is the product of the dead-end multiplier, , and the number of unassigned activities. The default value is 0.15. This option is valid only with the SCHEDULE= option.

DOMAIN= [lb, ub]
DOM=[lb, ub]

specifies the global domain of all variables to be the closed interval [lb, ub]. You can override the global domain for a variable with a VARIABLE statement or the CONDATA= data set. The default domain is [0,].

DPR= n

specifies an upper bound on the number of dead-ends that are permitted before PROC CLP restarts or terminates the search, depending on whether or not a randomized search strategy is used. In the case of a nonrandomized strategy, n is an upper bound on the number of allowable dead-ends before terminating. In the case of a randomized strategy, n is an upper bound on the number of allowable dead-ends before restarting the search. The DPR= option has priority over the DM= option.

FINDALLSOLNS
ALLSOLNS
FINDALL

attempts to find all possible solutions to the CSP. When a randomized search strategy is used, it is possible to rediscover the same solution and end up with multiple instances of the same solution. This is currently the case when you are solving a scheduling CSP. Therefore, this option is ignored when you are solving a scheduling CSP.

MAXSOLNS= n

specifies the number of solution attempts to be generated for the CSP. The default value is 1. It is important to note, especially in the context of randomized strategies, that an attempt could result in no solution, given the current controls on the search mechanism, such as the number of restarts and the number of dead-ends permitted. As a result, the total number of solutions found might not match the MAXSOLNS= parameter.

MAXTIME= n

specifies an upper bound on the number of seconds that are allocated for solving the problem. The type of time, either CPU time or real time, is determined by the value of the TIMETYPE= option. The default type is CPU time. The time specified by the MAXTIME= option is checked only once at the end of each iteration. Therefore, the actual running time can be longer than that specified by the MAXTIME= option. The difference depends on how long the last iteration takes. The default value of MAXTIME= is . If you do not specify this option the procedure does not stop based on the amount of time elapsed.

NOPREPROCESS

suppresses any preprocessing that would typically be performed for the problem.

OUT= SAS-data-set

identifies the output data set that contains one or more solutions to a standard CSP, if one exists. Each observation in the OUT= data set corresponds to a solution of the CSP. The number of solutions that are generated can be controlled using the MAXSOLNS= option in the PROC CLP statement.

PREPROCESS

permits any preprocessing that would typically be performed for the problem.

RESDATA= SAS-data-set
RESIN=SAS-data-set

identifies the input data set that defines the resources and their attributes such as capacity and resource pool membership. This information can be used in lieu of, or in combination with, the RESOURCE statement.

RESTARTS= n

specifies the number of restarts of the randomized search technique before terminating the procedure. The default value is 3.

SCHEDRES= SAS-data-set (Experimental)

identifies the output data set that contains the solutions to scheduling CSPs. This data set contains the resource assignments of activities.

SCHEDTIME= SAS-data-set (Experimental)

identifies the output data set that contains the solutions to scheduling CSPs. This data set contains the time assignments of activities.

SCHEDULE= SAS-data-set (Experimental)
SCHEDOUT=SAS-data-set (Experimental)

identifies the output data set that contains the solutions to a scheduling CSP, if any exist. This data set contains both the time and resource assignment information. There are two types of observations identified by the value of the OBSTYPE variable. Observation with OBSTYPE= "TIME" corresponds to time assignment, and observation with OBSTYPE= "RESOURCE" corresponds to resource assignment. The maximum number of solutions can be controlled by using the MAXSOLNS= option in the PROC CLP statement.

SHOWPROGRESS

prints a message to the log whenever a solution has been found. When a randomized strategy is used, the number of restarts and dead-ends that were required are also printed to the log.

TIMETYPE= CPU REAL

specifies the units for the value of the MAXTIME= option. The value of this option determines whether such time is CPU time or real time. The default value of this option is CPU.

USECONDATAVARS= 0 1

specifies whether the numeric variables in the CONDATA= data set, with the exception of any reserved variables, are implicitly defined or not. A value of 1 indicates they are implicitly defined, in which case a VARIABLE statement is not necessary to define the variables in the data set. The default value is 0. Currently, _RHS_ is the only reserved numeric variable.

VARASSIGN= keyword

specifies the value selection strategy. Currently, there is only one value selection strategy. The MIN strategy selects the minimum value from the domain of the selected variable. To assign activities, use the ACTASSIGN= option in the SCHEDULE statement.

VARSELECT= keyword

specifies the variable selection strategy. Both static and dynamic strategies are available.

Static strategies are as follows:

  • FIFO, which uses the first-in-first-out ordering of the variables as encountered by the procedure

  • MAXCS, which selects the variable with the maximum number of constraints

Dynamic strategies are as follows:

  • MINR, which selects the variable with the smallest range (that is, the minimum value of upper bound minus lower bound)

  • MAXC, which selects the variable with the largest number of active constraints

  • MINRMAXC, which selects the variable with the smallest range, breaking ties by selecting one with the largest number of active constraints

The dynamic strategies embody the "fail first principle" (FFP) of Haralick and Elliot (1980), which suggests that "To succeed, try first where you are most likely to fail." The default activity selection strategy is MINR. To set the strategy for selecting activities, use the ACTSELECT= option in the SCHEDULE statement.

Previous Page | Next Page | Top of Page