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.
indicates the solver status at termination. It can take one of the following values:
The solver terminated normally.
Incorrect syntax was used.
The input data were inconsistent.
Insufficient memory was allocated to the procedure.
A problem occurred in reading or writing data.
An evaluation error, such as an invalid operand type, occurred.
The status cannot be classified into any of the preceding categories.
indicates the solution status at termination. It can take one of the following values:
The solution is optimal.
The solution is optimal, but some infeasibilities (primal, dual or bound) exceed tolerances due to scaling or preprocessing.
The problem is infeasible.
The problem is unbounded.
The problem is infeasible or unbounded.
The problem type is unsupported by the solver.
The maximum allowable number of iterations was reached.
The solver reached its execution time limit.
The solver reached its limit on function evaluations.
The 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.
indicates the objective value obtained by the solver at termination.
indicates, for the primal simplex and dual simplex solvers, the maximum (absolute) violation of the primal constraints by the primal solution. For the interior point solver, this term indicates the relative violation of the primal constraints by the primal solution.
indicates, for the primal simplex and dual simplex solvers, the maximum (absolute) violation of the dual constraints by the dual solution. For the interior point solver, this term indicates the relative violation of the dual constraints by the dual solution.
indicates, for the primal simplex and dual simplex solvers, the maximum (absolute) violation of the lower or upper bounds by the primal solution. For the interior point solver, this term indicates the relative violation of the lower or upper bounds by the primal solution.
indicates the (relative) duality gap. This term appears only if the option SOLVER= ITERATIVE is specified in the SOLVE statement.
indicates the (absolute) complementarity. This term appears only if the option SOLVER= ITERATIVE is specified in the SOLVE statement.
indicates the number of iterations taken to solve the problem. When the network simplex solver is used, this term indicates the number of network simplex iterations taken to solve the network relaxation. When crossover is enabled, this term indicates the number of interior point iterations taken to solve the problem.
indicates the number of simplex iterations performed by the secondary solver. The network simplex solver selects the secondary solver automatically unless a value has been specified for the SOLVER2= option. When crossover is enabled, the secondary solver is selected automatically. This term appears only if the network simplex solver is used or if crossover is enabled.
indicates the time (in seconds) used in preprocessing.
indicates the time (in seconds) taken to solve the problem, including preprocessing time.
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.