The CLP Procedure

The CLP procedure is a finite-domain constraint programming solver for solving constraint satisfaction problems (CSPs) with linear, logical, global, and scheduling constraints. The CLP procedure, including the scheduling constraints, is production in SAS/OR 9.3.

PROC CLP has the following enhancements:

  • enhancements for specifying an objective function:

    • The _TYPE_ variable values MAX and MIN can be used to specify an objective in the Constraint input data set.

    • The experimental OBJ statement enables you to set upper (UB= option) and lower (LB= option) bounds on the value of an objective function that is specified in the Constraint data set. If upper and lower bounds for the objective value are not specified, the CLP procedure tries to derive bounds from the domains of the variables that appear in the objective function.

    • You can also use the OBJ statement to specify the tolerance (TOL= option) used for finding a locally optimal objective value.

  • expanded variable and activity selection strategy options:

    • The ACTSELECT= option in the SCHEDULE statement adds the PRIORITY value, which specifies that activities of highest priority should be selected to break ties between activities with identical start times.

    • The experimental EVALACTSEL option in the SCHEDULE statement evaluates all of the possible activity selection strategies by attempting to find a solution with each.

    • The experimental EVALVARSEL option in the PROC CLP statement evaluates all of the possible variable selection strategies by attempting to find a solution with each.

    • The new macro variables _ORCLPEAS_ and _ORCLPEVS_ record the results of the evaluations requested by the EVALACTSEL and EVALVARSEL options, respectively.