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.
Copyright © 2008 by SAS Institute Inc., Cary, NC, USA. All rights reserved.