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.
specifies whether the LP solver attempts to identify a set of constraints and variables that form an irreducible infeasible set (IIS). Table 6.2 describes the valid values of the IIS= option.
Table 6.2: Values for IIS= Option
number |
string |
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.
The default value of this option is OFF. See the section Irreducible Infeasible Set for details about the IIS= option. See Suffixes for details about the .status
suffix.
specifies one of the following LP solvers:
Option |
Description |
---|---|
PRIMAL (PS) |
Uses primal simplex solver. |
DUAL (DS) |
Uses dual simplex solver. |
NETWORK (NS) |
Uses network simplex solver. |
INTERIORPOINT (IP) |
Uses interior point solver. |
CONCURRENT (CON) |
Uses several different algorithms in parallel. |
The valid abbreviated value for each option is indicated in parentheses. By default, the dual simplex solver is used.
specifies one of the following LP solvers if ALGORITHM=NS:
Option |
Description |
---|---|
PRIMAL (PS) |
Uses primal simplex solver (after network simplex). |
DUAL (DS) |
Uses 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.
specifies one of the following presolve options:
number |
string |
Description |
---|---|---|
–1 |
AUTOMATIC |
Applies presolver by using default settings. |
0 |
NONE |
Disables the presolver. |
1 |
BASIC |
Performs basic presolve such as removing empty rows, |
2 |
MODERATE |
Performs basic presolve and applies other inexpensive |
3 |
AGGRESSIVE |
Performs moderate presolve and applies other |
The default option is AUTOMATIC. See the section Presolve for details.
controls the dualization of the problem:
number |
string |
Description |
---|---|---|
–1 |
AUTOMATIC |
The presolver uses a heuristic to decide whether to dualize the problem or not. |
0 |
OFF |
Disables dualization. The optimization problem is solved in the form that you specify. |
1 |
ON |
The presolver formulates the dual of the linear optimization problem. |
Dualization is usually helpful for problems that have many more constraints than variables. You can use this option with all simplex algorithms in the SOLVE WITH LP statement, but it is most effective with the primal and dual simplex algorithms.
The default option is AUTOMATIC.
specifies the feasibility tolerance, [1E–9, 1E–4], for determining the feasibility of a variable. The default value is 1E–6.
specifies that the printing of the solution progress to the iteration log is to occur after every k iterations. The print frequency, k, is an integer between zero and the largest four-byte signed integer, which is .
The value k = 0 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.
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 6.3 describes the valid values for this option.
Table 6.3: Values for LOGLEVEL= Option
number |
string |
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 LOGFREQ= option. |
3 |
AGGRESSIVE |
Prints a detailed solver summary and an iteration log by using the interval dictated by the LOGFREQ= option. |
The default value is MODERATE.
specifies the maximum number of iterations. The value k 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).
specifies an upper limit of t units of time for the optimization process, including problem generation time and solution time. The value of the TIMETYPE= option determines the type of units used. If you do not specify the MAXTIME= option, the solver does not stop based on the amount of time elapsed. The value of t can be any positive number; the default value is the positive number that has the largest absolute value that can be represented in your operating environment.
specifies the optimality tolerance, [1E–9, 1E–4], for declaring optimality. The default value is 1E–6.
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 6.4 describes the valid values of the TIMETYPE= option.
Table 6.4: Values for TIMETYPE= Option
number |
string |
Description |
---|---|---|
0 |
CPU |
Specifies units of CPU time. |
1 |
REAL |
Specifies units of real time. |
The “Optimization Statistics” table, an output of the OPTMODEL procedure if you specify PRINTLEVEL=2 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 also in the same units.
The default value of the TIMETYPE= option depends on the algorithm used and on various options. When the solver is used with distributed or multithreaded processing, then by default TIMETYPE= REAL. Otherwise, by default TIMETYPE= CPU. Table 6.5 describes the detailed logic for determining the default; the first context in the table that applies determines the default value. The NTHREADS= and NODES= options are specified in the PERFORMANCE statement of the OPTMODEL procedure. For more information about the NTHREADS= and NODES= options, see the section PERFORMANCE Statement in Chapter 4: Shared Concepts and Topics.
Table 6.5: Default Value for TIMETYPE= Option
Context |
Default |
---|---|
Solver is invoked in an OPTMODEL COFOR loop |
REAL |
NODES= value is nonzero for the decomposition algorithm |
REAL |
NTHREADS= value is greater than 1 and NODES=0 for the decomposition algorithm |
REAL |
NTHREADS= value is greater than 1 and ALGORITHM=IP or ALGORITHM=CON |
REAL |
Otherwise CPU |
specifies the following options for generating an initial basis:
number |
string |
Description |
---|---|---|
0 |
CRASH |
Generate an initial basis by using crash |
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 is determined automatically based on the problem structure. For network simplex, this option has no effect.
specifies one of the following pricing strategies for the primal and dual simplex solvers:
number |
string |
Description |
---|---|---|
0 |
HYBRID |
Use hybrid Devex and steepest-edge pricing |
1 |
PARTIAL |
Use partial pricing strategy. Optionally, you can |
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 option is determined automatically based on the problem structure. For the network simplex solver, this option applies only to the solver specified by the ALGORITHM2= option. See the section Pricing Strategies for the Primal and Dual Simplex Solvers for details.
specifies the queue size, , where n 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.
specifies one of the following scaling options:
number |
string |
Description |
---|---|---|
0 |
NONE |
Disable scaling. |
–1 |
AUTOMATIC |
Automatically apply scaling procedure if necessary. |
The default option is AUTOMATIC.
specifies the initial seed for the random number generator. Because the seed affects the perturbation in the simplex algorithms, the result might be a different optimal solution and a different solver path, but the effect is usually negligible. The value of number can be any positive integer up to the largest four-byte signed integer, which is . By default, SEED=100.
specifies whether to convert the interior point solution to a basic simplex solution. The values of this option are:
number |
string |
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.
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.
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.
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.
The following options are available for the decomposition algorithm in the LP solver. For information about the decomposition algorithm, see Chapter 14: The Decomposition Algorithm.
enables the decomposition algorithm and specifies overall control options for the algorithm. For more information about this option, see Chapter 14: The Decomposition Algorithm.
specifies options for the master problem. For more information about this option, see Chapter 14: The Decomposition Algorithm.
specifies option for the subproblem. For more information about this option, see Chapter 14: The Decomposition Algorithm.