LP Solver Options

This section describes the options recognized by the LP solver. These options can be specified after a forward slash (/) in the SOLVE statement, provided that the LP solver is explicitly specified using a WITH clause.

If the LP solver terminates before reaching an optimal solution, an intermediate solution is available. You can access this solution by using the .sol variable suffix in the OPTMODEL procedure. See the section Suffixes for details.

Solver Options

IIS=option num

specifies whether the LP solver attempts to identify a set of constraints and variables that form an irreducible infeasible set (IIS). Table 5.2 describes the valid values of the IIS= option.

Table 5.2 Values for IIS= Option

num

option

Description

0

OFF

Disables IIS detection.

1

ON

Enables IIS detection.

If an IIS is found, information about the infeasibilities can be found in the .status values of the constraints and variables. If no IIS is detected, then a solver is called to continue solving the problem. The default value of this option is OFF. The OPTMODEL option PRESOLVER=NONE should be specified when IIS=ON is specified; otherwise, the IIS results can be incomplete. See the section Irreducible Infeasible Set for details about the IIS= option. See Suffixes for details about the .status suffix.

SOLVER=option

specifies one of the following LP solvers:

Option

Description

PRIMAL (PS)

Use primal simplex solver.

DUAL (DS)

Use dual simplex solver.

NETWORK (NS)

Use network simplex solver.

ITERATIVE (II)

Use interior point solver.

The valid abbreviated value for each option is indicated in parentheses. By default, the dual simplex solver is used.

SOLVER2=option

specifies one of the following LP solvers if SOLVER=NS:

Option

Description

PRIMAL (PS)

Use primal simplex solver (after network simplex).

DUAL (DS)

Use dual simplex solver (after network simplex).

The valid abbreviated value for each option is indicated in parentheses. By default, the LP solver decides which algorithm is best to use after calling the network simplex solver on the extracted network.

Presolve Options

PRESOLVER=option | num

specifies one of the following presolve options:

num

option

Description

0

NONE

Disable presolver.

–1

AUTOMATIC

Apply presolver by using default setting.

1

BASIC

Perform basic presolve like removing empty rows,
columns, and fixed variables.

2

MODERATE

Perform basic presolve and apply other inexpensive
presolve techniques.

3

AGGRESSIVE

Perform moderate presolve and apply other
aggressive (but expensive) presolve techniques.

The default option is AUTOMATIC. See the section Presolve for details.

Control Options

FEASTOL=

specifies the feasibility tolerance, [1E–9, 1E–4], for determining the feasibility of a variable. The default value is 1E–6.

MAXITER=

specifies the maximum number of iterations. The value can be any integer between one and the largest four-byte signed integer, which is . If you do not specify this option, the procedure does not stop based on the number of iterations performed. For network simplex, this iteration limit corresponds to the solver called after network simplex (either primal or dual simplex).

MAXTIME=

specifies an upper limit of seconds of time for the optimization process. The timer used by this option is determined by the value of the TIMETYPE= option. If you do not specify this option, the procedure does not stop based on the amount of time elapsed.

OPTTOL=

specifies the optimality tolerance, [1E–9, 1E–4], for declaring optimality. The default value is 1E–6.

PRINTFREQ=

specifies that the printing of the solution progress to the iteration log is to occur after every iterations. The print frequency, , is an integer between zero and the largest four-byte signed integer, which is .

The value disables the printing of the progress of the solution. If the primal or dual simplex algorithms are used, the default value of this option is determined dynamically according to the problem size. If the network simplex algorithm is used, the default value of this option is 10,000. If the interior point algorithm is used, the default value of this option is 1.

PRINTLEVEL2=option | num

controls the amount of information displayed in the SAS log by the LP solver, from a short description of presolve information and summary to details at each iteration. Table 5.3 describes the valid values for this option.

Table 5.3 Values for PRINTLEVEL2= Option

num

option

Description

0

NONE

Turns off all solver-related messages to SAS log.

1

BASIC

Displays a solver summary after stopping.

2

MODERATE

Prints a solver summary and an iteration log by using the interval dictated by the PRINTFREQ= option.

3

AGGRESSIVE

Prints a detailed solver summary and an iteration log by using the interval dictated by the PRINTFREQ= option.

The default value is MODERATE.

TIMETYPE=option num

specifies the units of time used by the MAXTIME= option and reported by the PRESOLVE_TIME and SOLUTION_TIME terms in the _OROPTMODEL_ macro variable. Table 5.4 describes the valid values of the TIMETYPE= option.

Table 5.4 Values for TIMETYPE= Option

num

option

Description

0

CPU

Specifies units of CPU time.

1

REAL

Specifies units of real time.

The "Optimization Statistics" table, an output of PROC OPTMODEL if option PRINTLEVEL=2 is specified in the PROC OPTMODEL statement, also includes the same time units for "Presolver Time" and "Solver Time." The other times (such as "Problem Generation Time") in the "Optimization Statistics" table are always CPU times. The default value of the TIMETYPE= option is CPU.

Simplex Algorithm Options

BASIS=option | num

specifies the following options for generating an initial basis:

num

option

Description

0

CRASH

Generate an initial basis by using crash
techniques (Maros; 2003). The procedure creates a
triangular basic matrix consisting of both decision
variables and slack variables.

1

SLACK

Generate an initial basis by using all slack variables.

2

WARMSTART

Start the primal and dual simplex solvers with available basis.

The default option for the primal simplex solver is CRASH (0). The default option for the dual simplex solver is SLACK(1). For network simplex, this option has no effect.

PRICETYPE=option | num

specifies one of the following pricing strategies for the primal and dual simplex solvers:

num

option

Description

0

HYBRID

Use hybrid Devex and steepest-edge pricing
strategies. Available for primal simplex solver only.

1

PARTIAL

Use partial pricing strategy. Optionally, you can
specify QUEUESIZE=. Available for primal
simplex solver only.

2

FULL

Use the most negative reduced cost pricing strategy.

3

DEVEX

Use Devex pricing strategy.

4

STEEPESTEDGE

Use steepest-edge pricing strategy.

The default pricing strategy for the primal simplex solver is HYBRID and that for the dual simplex solver is STEEPESTEDGE. For the network simplex solver, this option applies only to the solver specified by the SOLVER2= option. See the section Pricing Strategies for the Primal and Dual Simplex Solvers for details.

QUEUESIZE=

specifies the queue size, , where is the number of decision variables. This queue is used for finding an entering variable in the simplex iteration. The default value is chosen adaptively based on the number of decision variables. This option is used only when PRICETYPE=PARTIAL.

SCALE=option | num

specifies one of the following scaling options:

num

option

Description

0

NONE

Disable scaling.

–1

AUTOMATIC

Automatically apply scaling procedure if necessary.

The default option is AUTOMATIC.

Interior Point Algorithm Options

CROSSOVER=option | num Experimental

specifies whether to convert the interior point solution to a basic simplex solution. The values of this option are:

num

option

Description

0

OFF

Disable crossover.

1

ON

Apply the crossover algorithm to the interior point solution.

If the interior point algorithm terminates with a solution, the crossover algorithm uses the interior point solution to create an initial basic solution. After performing primal fixing and dual fixing, the crossover algorithm calls a simplex algorithm to locate an optimal basic solution. The default value of the CROSSOVER= option is OFF.

STOP_DG=

specifies the desired relative duality gap, [1E–9, 1E–4]. This is the relative difference between the primal and dual objective function values and is the primary solution quality parameter. The default value is 1E–6. See the section The Interior Point Algorithm for details.

STOP_DI=

specifies the maximum allowed relative dual constraints violation, [1E–9, 1E–4]. The default value is 1E–6. See the section The Interior Point Algorithm for details.

STOP_PI=

specifies the maximum allowed relative bound and primal constraints violation, [1E–9, 1E–4]. The default value is 1E–6. See the section The Interior Point Algorithm for details.