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