Previous Page | Next Page

The Linear Programming Solver

Macro Variable _OROPTMODEL_

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

STATUS

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

OK

solver terminated normally

SYNTAX_ERROR

incorrect use of syntax

DATA_ERROR

inconsistent input data

OUT_OF_MEMORY

insufficient memory allocated to the procedure

IO_ERROR

problem in reading or writing of data

SEMANTIC_ERROR

evaluation error, such as an invalid operand type

ERROR

status that cannot be classified into any of the preceding categories

SOLUTION_STATUS

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

OPTIMAL

solution is optimal

CONDITIONAL_OPTIMAL

solution is optimal, but some infeasibilities (primal, dual or bound) exceed tolerances due to scaling or preprocessing

INFEASIBLE

problem is infeasible

UNBOUNDED

problem is unbounded

INFEASIBLE_OR_UNBOUNDED

problem is infeasible or unbounded

BAD_PROBLEM_TYPE

problem type is unsupported by solver

ITERATION_LIMIT_REACHED

maximum allowable iterations reached

TIME_LIMIT_REACHED

solver reached its execution time limit

FUNCTION_CALL_LIMIT_REACHED

solver reached its limit on function evaluations

FAILED

solver failed to converge, possibly due to numerical issues

When SOLUTION_STATUS has a value of OPTIMAL, CONDITIONAL_OPTIMAL, ITERATION_LIMIT_REACHED, or TIME_LIMIT_REACHED, all terms of the _OROPTMODEL_ macro variable are present; for other values of SOLUTION_STATUS, some terms do not appear.

OBJECTIVE

indicates the objective value obtained by the solver at termination.

PRIMAL_INFEASIBILITY

indicates the maximum (absolute) violation of the primal constraints by the primal solution.

DUAL_INFEASIBILITY

indicates the maximum (absolute) violation of the dual constraints by the dual solution.

BOUND_INFEASIBILITY

indicates the maximum (absolute) violation of the lower and/or upper bounds by the primal solution.

DUALITY_GAP

indicates the (relative) duality gap. This term appears only if the option SOLVER= ITERATIVE_INTERIOR is specified in the SOLVE statement.

ITERATIONS

indicates the number of iterations taken to solve the problem.

PRESOLVE_TIME

indicates the time for preprocessing (seconds).

SOLUTION_TIME

indicates the time taken to solve the problem (seconds).

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

When SOLUTION_STATUS has a value of OPTIMAL, CONDITIONAL_OPTIMAL, ITERATION_LIMIT_REACHED, or TIME_LIMIT_REACHED, all terms of the _OROPTMODEL_ macro variable are present; for other values of SOLUTION_STATUS, some terms do not appear.

Previous Page | Next Page | Top of Page