The OPTMODEL Procedure

PROC OPTMODEL Statement

PROC OPTMODEL $\ms {[}$ options $\ms {]}$ ;

The PROC OPTMODEL statement invokes the OPTMODEL procedure. You can specify options to control how the optimization model is processed and how results are displayed. You can specify the following options (these options can also be specified in the RESET OPTIONS statement).

CDIGITS=number

specifies the expected number of decimal digits of accuracy for nonlinear constraints. The value can be fractional. PROC OPTMODEL uses this option to choose a step length when numeric derivative approximations are required to evaluate the Jacobian of nonlinear constraints. The default value depends on your operating environment. It is assumed that constraint values are accurate to the limits of machine precision.

See the section Automatic Differentiation for more information about numeric derivative approximations.

ERRORLIMIT=number | NONE

specifies the maximum number of error messages that can be displayed. Specifying a value of number in the range 1 to $2^{31} - 1$ sets a specific limit. Specifying ERRORLIMIT=NONE removes any existing limit.

Note: Some errors abort processing immediately.

FD=FORWARD | CENTRAL

selects the method used to approximate numeric derivatives when analytic derivatives are unavailable. Most solvers require the derivatives of the objective and constraints. You can specify the following values:

FORWARD

uses forward differences.

CENTRAL

uses central differences.

By default, FD=FORWARD. For more information about numeric derivative approximations, see the section Automatic Differentiation.

FDIGITS=number

specifies the expected number of decimal digits of accuracy for the objective function. The value can be fractional. PROC OPTMODEL uses the value to choose a step length when numeric derivatives are required. The default value depends on your operating environment. It is assumed that objective function values are accurate to the limits of machine precision.

For more information about numeric derivative approximations, see the section Automatic Differentiation.

FORCEFD=NONE | OBJ | CON | ALL

forces PROC OPTMODEL to use finite differences instead of analytic derivatives for the specified set of nonlinear expressions. This option can be useful with FCMP functions to provide more control over derivative computation. You can specify the following values:

ALL

restricts all derivative computations to use finite differences.

CON

restricts derivative computations for the nonlinear constraint expressions and any IMPVAR expressions they reference to use finite differences.

NONE

requests analytic derivatives where they are available.

OBJ

restricts derivative computations for the objective and any IMPVAR expressions it references to use finite differences.

By default, FORCEFD=NONE.

FORCEPRESOLVE=number | string

specifies whether PROC OPTMODEL can use the OPTMODEL presolver with the LP, MILP, and QP solvers. By default, the OPTMODEL presolver is disabled when PROC OPTMODEL solves linear problems or when the QP solver is specified in the SOLVE statement. Table 5.4 shows the valid values for this option.

Table 5.4: Values for the FORCESOLVE= Option

number

string

Description

0

OFF

Restores the default behavior.

1

ON

Enables PROC OPTMODEL to use the OPTMODEL presolver when PROC OPTMODEL solves linear problems or the QP solver is specified in the SOLVE statement.


By default, FORCEPRESOLVE=0.

INITVAR | NOINITVAR

selects whether or not to pass initial values for variables to the solver when the SOLVE statement is executed. INITVAR enables the current variable values to be passed. NOINITVAR causes the solver to be invoked without any specific initial values for variables. The INITVAR option is the default.

The LP and QP solvers always ignore initial values. The NLP solvers attempt to use specified initial values. The MILP solver uses initial values only if the PRIMALIN option is specified.

INTFUZZ=number

specifies the tolerance for rounding the bounds on integer and binary variables to integer values. Bounds that differ from an integer by at most number are rounded to that integer. Otherwise, lower bounds are rounded up to the next greater integer and upper bounds are rounded down to the next lesser integer. The value of number can range between 0 and 0.5. The default value is 0.00001.

MAXLABLEN=number

specifies the maximum length for MPS row and column labels. The allowed range is 8 to 256. This option can also be used to control the length of row and column names displayed by solvers, such as those found in the LP solver iteration log. See also the description of the .label suffix in the section Suffixes. By default, MAXLABLEN=32.

MISSCHECK | NOMISSCHECK

enables detailed checking of missing values in expressions. MISSCHECK requests that PROC OPTMODEL produce a message each time it evaluates an arithmetic operation or function that has missing value operands (except when the operation or function specifically supports missing values). The MISSCHECK option can increase processing time. NOMISSCHECK turns off this detailed reporting. NOMISSCHECK is the default.

MSGLIMIT=number | NONE

specifies the maximum number of non-error messages that can be displayed, including notes and warnings. Specifying a value of number in the range 0 to $2^{31} - 1$ sets a specific limit. Specifying MSGLIMIT=NONE removes any existing limit.

PDIGITS=number

requests that the PRINT statement display number significant digitsfor numeric columns for which no format is specified. The value can range from 1 to 9. By default, PDIGITS=5.

PMATRIX=number

adjusts the density evaluation of a two-dimensional array to affect how it is displayed. The value number scales the total number of nonempty array elements and is used by the PRINT statement to evaluate whether a two-dimensional array is sparse or dense. Tables that contain a single two-dimensional array are printed in list form if they are sparse and in matrix form if they are dense. Any nonnegative value can be assigned to number. Specifying a value for the PMATRIX= option that is less than 1 causes the list form to be used in more cases, whereas specifying a value greater than 1 causes the matrix form to be used in more cases. If the value is 0, then the list form is always used. For more information, see the section PRINT Statement. By default, PMATRIX=1.

PRESOLVER=number | string

specifies the type of presolve that the OPTMODEL presolver performs. Table 5.5 shows the valid values of this option.

Table 5.5: Values for the PRESOLVER= Option

number

string

Description

–1

AUTOMATIC

Applies presolver using default setting.

0

NONE

Disables presolver.

1

BASIC

Performs minimal processing, only substituting fixed variables and removing empty feasible constraints.

2

MODERATE

Applies a higher level of presolve processing.

3

AGGRESSIVE

Applies the highest level of presolve processing.


The OPTMODEL presolver tightens variable bounds and eliminates redundant constraints. In general, this tightening improves the performance of any solver. Higher levels of presolve processing allow more tightening and substitution passes, but might take more time to execute. The AUTOMATIC option is intermediate between the MODERATE and AGGRESSIVE levels.

Note: The OPTMODEL presolver is normally bypassed when PROC OPTMODEL uses the LP, QP, MILP, or network solvers and when the SAVE MPS and SAVE QPS statements execute. The FORCEPRESOLVE= option enables the OPTMODEL presolver to be used with the LP, QP, or MILP solvers. PROC OPTMODEL always bypasses the OPTMODEL presolver when you specify certain solver options. For more information, see the chapter for the relevant solver in this book

PRESTOL=number

provides a tolerance so that slightly infeasible constraints can be eliminated by the OPTMODEL presolver. If the magnitude of the infeasibility is no greater than $ \mbox{num} (\left| \mbox{X} \right| + 1)$, where X is the value of the original bound, then the empty constraint is removed from the presolved problem. OPTMODEL’s presolver does not print messages about infeasible constraints and variable bounds when the infeasibility is within the PRESTOL tolerance. The value of PRESTOL can range between 0 and 0.1; the default value is 1E$-$12.

PRINTLEVEL=number

controls the level of listing output during a SOLVE command. The Output Delivery System (ODS) tables printed at each level are listed in Table 5.6. Some solvers can produce additional tables; see the individual solver chapters for more information.

Table 5.6: Values for the PRINTLEVEL= Option

number

Description

0

Disables all tables.

1

Prints Problem Summary, Performance Information, and Solution Summary.

2

Prints Problem Summary, Performance Information, Solution Summary, Methods of Derivative Computation (for NLP solvers), Solver Options, Optimization Statistics, and solver-specific ODS tables.


For more information about the ODS tables produced by PROC OPTMODEL, see the section ODS Table and Variable Names.

PWIDTH=number

sets the width used by the PRINT statement to display numeric columns when no format is specified. The smallest value number can take is the value of the PDIGITS= option plus 7; the largest value number can take is 16. The default value is equal to the value of the PDIGITS= option plus 7.

VARFUZZ=number

specifies the smallest difference that is permitted by the OPTMODEL presolver between the upper and lower bounds of an unfixed variable. If the difference is smaller than number, then the variable isfixed to the average of the upper and lower bounds before it is presented to the solver. Any nonnegative value can be assigned to number; the default value is 0.