The OPTQP Procedure
PROC OPTQP Statement
The following options can be specified in the PROC OPTQP statement.
- DATA=CAS-libref.data-table
specifies the input data table. This data table can also be created from a QPS-format flat file by using the SAS macro %MPS2SASD. For more information, see Chapter 8, The MPS-Format Data Table. If the DATA= option is not specified, PROC OPTQP uses the most recently created data table.
- 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.
-
DUALOUT=CAS-libref.data-table
DOUT=CAS-libref.data-table specifies the output data table to contain the dual solution. For more information, see the section Output Data Tables.
-
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, information about infeasible constraints or variable bounds is written to the data tables that are specified in the DUALOUT= and PRIMALOUT= options. For more information, see the section Irreducible Infeasible Set. 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
PRINTLEVEL2=NONE BASIC MODERATE AGGRESSIVE controls the amount of information displayed in the SAS log. 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 interval specified in the LOGFREQ= option.
- AGGRESSIVE
prints a detailed solver summary and an iteration log by using the interval specified in the LOGFREQ= option.
By default, LOGLEVEL=MODERATE.
- MAXITER=k
specifies the maximum number of predictor-corrector iterations performed by the interior point algorithm (see the section Interior Point Algorithm: Overview). The value k is an 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 seconds of time for reading in the data and performing the optimization process. The value of the TIMETYPE= option determines the type of units used. If you do not specify this option, the procedure 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 PROC OPTQP can use, where k can be any integer between 1 and 256, inclusive. This option overrides the THREADS | NOTHREADS SAS system option. The default value of this option is the value of the CPUCOUNT= SAS system 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 PROC OPTQP. In some circumstances, PROC OPTQP might use fewer than k threads because the procedure’s internal algorithms have determined that a smaller number is preferable.
-
OBJCONSTANT=number
OBJECTIVECONSTANT=number specifies the constant part of the objective, where number can be any number. By default, OBJCONSTANT=0.
- OBJSENSE=MIN MAX
specifies whether the QP model is a minimization or maximization problem. You can specify the following values:
- MIN
treat the QP model as a minimization problem.
- MAX
treat the QP model as a maximization problem.
Alternatively, you can specify the objective sense in the input data table; for more information, see the section ROWS Section. This option supersedes any objective sense that is specified in the input data table. If the objective sense is not specified anywhere, then PROC OPTQP interprets and solves the quadratic program as a minimization problem.
-
PRESOLVER=AUTOMATIC NONE BASIC MODERATE AGGRESSIVE
PRESOL=AUTOMATIC NONE BASIC MODERATE AGGRESSIVE specifies the presolve level. You can specify the following values:
- AUTOMATIC
applies the presolver by using 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.
-
PRIMALOUT=CAS-libref.data-table
POUT=CAS-libref.data-table specifies the output data table to contain the primal solution. For more information, see the section Output Data Tables.
-
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.
- PRINTLEVEL=0 1 2
specifies whether to print summary Output Delivery System (ODS) tables of the problem and solution. You can specify the following values:
- 0
does not produce or print any ODS tables.
- 1
produces and prints the following ODS tables: ProblemSummary, SolutionSummary, and optional OutputCasTables.
- 2
produces and prints the following ODS tables: ProblemSummary, SolutionSummary, ProblemStatistics, Timing, and optional OutputCasTables.
For more information about the ODS tables that PROC OPTQP creates, see the section ODS Tables. By default, PRINTLEVEL=1.
- TIMETYPE=CPU REAL
specifies whether CPU time or real time is used for the MAXTIME= option and the _OROPTQP_ macro variable in a PROC OPTQP call. You can specify the following values:
- CPU
specifies that units are in CPU time.
- REAL
specifies that units are in real time.
By default, TIMETYPE=REAL.