The Quadratic Programming Solver

QP Solver Options

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

The QP solver does not provide an intermediate solution if the solver terminates before reaching optimality.

DUALITYGAP=delta

specifies the desired relative duality gap, delta element-of [1E–9, 1E–4]. This is the relative difference between the primal and dual objective function values and is the primary solution quality parameter. For more information, see the section Interior Point Algorithm: Overview. The default value is 1E–6.

DUALTOL=beta
OPTTOL=beta

specifies the maximum relative dual constraints violation, beta element-of [1E–9, 1E–4]. For more information, see the section Interior Point Algorithm: Overview. The default value is 1E–6.

IIS=FALSE bar TRUE

specifies whether to attempt to identify a set of constraints and variables that form an irreducible infeasible set (IIS). You can specify the following values:

FALSE

disables IIS detection.

TRUE

enables IIS detection.

If an IIS is found, you can find information about the infeasibilities in the .status values of the constraints and variables. For more information about this option, see the section Irreducible Infeasible Set. For more information about the .status suffix, see the section Suffixes. By default, IIS=FALSE.

LOGFREQ=k
PRINTFREQ=k

prints the solution progress to the iteration log after every k iterations, where k is an integer between 0 and the largest four-byte signed integer, which is 2 Superscript 31 Baseline minus 1. The value k = 0 suppresses printing of the progress of the solution. By default, LOGFREQ=1.

LOGLEVEL=NONE bar BASIC bar MODERATE bar AGGRESSIVE

controls the amount of information that the QP solver displays in the SAS log, from a solver summary to details at each iteration. You can specify the following values:

NONE

turns off all solver-related messages in the SAS log.

BASIC

displays a solver summary after stopping.

MODERATE

prints a solver summary and an iteration log by using the value that you specify in the LOGFREQ= option.

AGGRESSIVE

prints a detailed solver summary and an iteration log by using the value that you specify in the LOGFREQ= option.

By default, LOGLEVEL=MODERATE.

MAXITER=k

specifies the maximum number of iterations, where k can be any integer between 1 and the largest four-byte signed integer, which is 2 Superscript 31 Baseline minus 1. If you do not specify this option, the procedure does not stop based on the number of iterations performed.

MAXTIME=t

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.

NTHREADS=k

specifies the number of threads that the QP solver can use, where k can be any integer between 1 and 256, inclusive. The default is the value of the OPTMODEL NTHREADS= option.

Specifying k as a number greater than the actual number of available cores might result in reduced performance. Specifying a high value for k does not guarantee shorter solution time; the actual change in solution time depends on the computing hardware and the scalability of the underlying algorithms in the QP solver. In some circumstances, the QP solver might use fewer than k threads because the solver’s internal algorithms have determined that a smaller number is preferable.

PRESOLVER=AUTOMATIC bar NONE bar BASIC bar MODERATE bar AGGRESSIVE

specifies the presolve level. You can specify the following values:

AUTOMATIC

applies the presolver by using the default setting.

NONE

disables the presolver.

BASIC

applies the basic presolver.

MODERATE

applies the moderate presolver.

AGGRESSIVE

applies the aggressive presolver.

By default, PRESOLVER=AUTOMATIC.

PRIMALTOL=alpha
FEASTOL=alpha

specifies the maximum relative bound and primal constraints violation, alpha element-of [1E–9, 1E–4]. For more information, see the section Interior Point Algorithm: Overview. The default value is 1E–6.

TIMETYPE=CPU bar REAL

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. You can specify the following values:

CPU

specifies that units are in CPU time.

REAL

specifies that units are in 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, Solver Time, and other times (such as Problem Generation Time).

By default, TIMETYPE=REAL.

Last updated: January 26, 2024