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=
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. For more information, see the section Interior Point Algorithm: Overview. The default value is 1E–6.
-
DUALTOL=
OPTTOL= specifies the maximum relative dual constraints violation,
[1E–9, 1E–4]. For more information, see the section Interior Point Algorithm: Overview. The default value is 1E–6.
-
IIS=FALSE
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
.statusvalues of the constraints and variables. For more information about this option, see the section Irreducible Infeasible Set. For more information about the.statussuffix, 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
. The value k = 0 suppresses printing of the progress of the solution. By default, LOGFREQ=1.
-
LOGLEVEL=NONE
BASIC
MODERATE
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
. 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
NONE
BASIC
MODERATE
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=
FEASTOL= specifies the maximum relative bound and primal constraints violation,
[1E–9, 1E–4]. For more information, see the section Interior Point Algorithm: Overview. The default value is 1E–6.
-
TIMETYPE=CPU
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.