The Nonlinear Programming Solver

Macro Variable _OROPTMODEL_

The OPTMODEL procedure always creates and initializes a SAS macro variable called _OROPTMODEL_, which contains a character string. After each PROC OPTMODEL run, you can examine this macro variable by specifying %put &_OROPTMODEL_; and check the execution of the most recently invoked solver from the value of the macro variable. After the NLP solver is called, the various terms of the variable are interpreted as follows:

STATUS

indicates the solver status at termination. It can take one of the following values:

OK

The solver terminated normally.

SYNTAX_ERROR

The use of syntax is incorrect.

DATA_ERROR

The input data are inconsistent.

OUT_OF_MEMORY

Insufficient memory was allocated to the procedure.

IO_ERROR

A problem in reading or writing of data has occurred.

SEMANTIC_ERROR

An evaluation error, such as an invalid operand type, has occurred.

ERROR

The status cannot be classified into any of the preceding categories.

ALGORITHM

indicates the algorithm that produced the solution data in the macro variable. This term only appears when STATUS=OK. It can take one of the following values:

IP

The interior point algorithm produced the solution data.

AS

The active-set algorithm produced the solution data.

When running algorithms concurrently (ALGORITHM=CONCURRENT), this term indicates which algorithm was the first to terminate.

SOLUTION_STATUS

indicates the solution status at termination. It can take one of the following values:

OPTIMAL

The solution is optimal.

CONDITIONAL_OPTIMAL

The optimality of the solution cannot be proven.

BEST_FEASIBLE

The solution returned is the best feasible solution. This solution status indicates that the algorithm has converged to a local optimum but a feasible (not locally optimal) solution with a better objective value has been found and hence is returned.

INFEASIBLE

The problem is infeasible.

UNBOUNDED

The problem might be unbounded.

INFEASIBLE_OR_UNBOUNDED

The problem is infeasible or unbounded.

BAD_PROBLEM_TYPE

The problem type is not supported by the solver.

ITERATION_LIMIT_REACHED

The maximum allowable number of iterations has been reached.

TIME_LIMIT_REACHED

The solver reached its execution time limit.

FAILED

The solver failed to converge, possibly due to numerical issues.

OBJECTIVE

indicates the objective value that is obtained by the solver at termination.

NUMSTARTS

indicates the number of starting points. This term appears only in multistart mode.

SAMPLE_POINTS

indicates the number of points that are evaluated in the sampling phase. This term appears only in multistart mode.

DISTINCT_OPTIMA

indicates the number of distinct local optima that the solver finds. This term appears only in multistart mode.

SEED

indicates the seed value that is used to initialize the solver. This term appears only in multistart mode.

INFEASIBILITY

indicates the level of infeasibility of the constraints at the solution.

OPTIMALITY_ERROR

indicates the norm of the optimality conditions at the solution. See the section Solver Termination Criterion for details.

ITERATIONS

indicates the number of iterations required to solve the problem.

PRESOLVE_TIME

indicates the real time taken for preprocessing (seconds).

SOLUTION_TIME

indicates the real time taken by the solver to perform iterations for solving the problem (seconds).

Note: The time that is reported in PRESOLVE_TIME and SOLUTION_TIME is either CPU time or real time. The type is determined by the TIMETYPE= option.