The Conic Optimization Solver

Conic Solver Options

The conic solver recognizes a number of options. You can specify these options after a forward slash (/) in the SOLVE statement, provided that you explicitly specify the conic solver by using a WITH clause.

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

Presolver Option

PRESOLVER=AUTOMATIC vertical bar NONE vertical bar BASIC vertical bar MODERATE vertical bar AGGRESSIVE

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

AUTOMATIC

applies the presolver by using the default settings. Suitable limits are in place such that the presolver reduces the problem almost as much as when PRESOLVER= AGGRESSIVE, but in a reasonable time.

NONE

disables the presolver. Only the necessary problem transformation steps are performed.

BASIC

performs a basic presolve, such as removing empty rows, columns, and fixed variables. Only some very fast operations are performed.

MODERATE

performs a basic presolve and applies other inexpensive presolve techniques. Suitable limits are in place such that the presolver reduces the problem almost as much as when PRESOLVER=AGGRESSIVE, but in a reasonable time.

AGGRESSIVE

performs a moderate presolve and applies other aggressive (but computationally expensive) presolve techniques. All the presolver techniques are called with no limits. This reduces the problem the most, but it can take a very long time.

By default, PRESOLVER=AUTOMATIC.

Control Options

FEASTOL=epsilon

specifies the maximum allowed relative violation on constraints, including primal constraints, bound constraints, and dual constraints. Cone constraints are considered as part of the primal constraints. Because the conic solver applies primal-dual algorithms, primal feasibility and dual feasibility are controlled by the same option. The allowed range for epsilon is [1E–9, 1E–4]. By default, FEASTOL=1E–6. For more information, see the section Interior Point Algorithm: Overview.

LOGFREQ=k

prints the solution progress to the iteration log after every k iterations. The print frequency, 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 disables the printing of the solution progress. By default, LOGFREQ=1.

LOGLEVEL=NONE vertical bar BASIC vertical bar MODERATE vertical bar AGGRESSIVE

controls the amount of information that the conic 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. The value k can be any integer between 1 and the largest four-byte signed integer, which is 2 Superscript 31 Baseline minus 1. If you omit this option, the procedure does not stop on the basis of 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 that are used. If you omit the MAXTIME= option, the solver does not stop on the basis of 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.

OPTTOL=epsilon

specifies the maximum allowed relative violation on duality gap and complementarity, epsilon element of [1E–9, 1E–4]. By default, OPTTOL=1E–6. For more information, see the section Interior Point Algorithm: Overview.

TIMETYPE=CPU vertical bar REAL

specifies the units of time that are 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 units of CPU time.

REAL

specifies units of real time.

By default, TIMETYPE=REAL.

Parallel Option

NTHREADS=k

specifies the maximum number of threads for the conic solver to use for multithreaded processing. The value of k can be any integer between 1 and 256, inclusive. The default is the value of the NTHREADS= option in PROC OPTMODEL.

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

Last updated: September 09, 2026