The OPTMODEL procedure defines a macro variable named _OROPTMODEL_. This variable contains a character string that indicates the status of the solver upon termination. The contents of the macro variable depend on which solver was invoked. For the MILP solver, the various terms of _OROPTMODEL_ are interpreted as follows.
indicates the solver status at termination. It can take one of the following values:
The solver terminated normally.
Syntax was used incorrectly.
The input data was inconsistent.
Insufficient memory was allocated to the solver.
A problem occurred in reading or writing data.
An evaluation error, such as an invalid operand type, was found.
The status cannot be classified into any of the preceding categories.
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:
The branch-and-cut algorithm produced the solution data.
The decomposition algorithm produced the solution data.
indicates the solution status at termination. It can take one of the following values:
The solution is optimal.
The solution is optimal within the absolute gap specified by the ABSOBJGAP= option.
The solution is optimal within the relative gap specified by the RELOBJGAP= option.
The solution is optimal, but some infeasibilities (primal, bound, or integer) exceed tolerances due to scaling or choice of small INTTOL= value.
The solution is not worse than the target specified by the TARGET= option.
The problem is infeasible.
The problem is unbounded.
The problem is infeasible or unbounded.
The problem type is unsupported by solver.
The solver reached the maximum number of solutions specified by the MAXSOLS= option.
The solver reached the maximum number of nodes specified by the MAXNODES= option and found a solution.
The solver reached the maximum number of nodes specified by the MAXNODES= option and did not find a solution.
The solver reached the execution time limit specified by the MAXTIME= option and found a solution.
The solver reached the execution time limit specified by the MAXTIME= option and did not find a solution.
The solver was stopped by user but still found a solution.
The solver was stopped by user and did not find a solution.
The solver ran out of memory but still found a solution.
The solver ran out of memory and either did not find a solution or failed to output the solution due to insufficient memory.
The solver stopped due to errors but still found a solution.
The solver stopped due to errors and did not find a solution.
indicates the objective value obtained by the solver at termination.
specifies the relative gap between the best integer objective (BestInteger) and the objective of the best remaining node (BestBound) upon termination of the MILP solver. The relative gap is equal to
specifies the absolute gap between the best integer objective (BestInteger) and the objective of the best remaining node (BestBound) upon termination of the MILP solver. The absolute gap is equal to .
indicates the maximum (absolute) violation of the primal constraints by the solution.
indicates the maximum (absolute) violation by the solution of the lower or upper bounds (or both).
indicates the maximum (absolute) violation of the integrality of integer variables returned by the MILP solver.
specifies the best LP objective value of all unprocessed nodes on the branch-and-bound tree at the end of execution. A missing value indicates that the MILP solver has processed either all or none of the nodes on the branch-and-bound tree.
specifies the number of nodes enumerated by the MILP solver by using the branch-and-bound algorithm.
indicates the number of simplex iterations taken to solve the problem.
indicates the time (in seconds) used in preprocessing.
indicates the time (in seconds) taken to solve the problem, including preprocessing time.
Note: The time reported in PRESOLVE_TIME and SOLUTION_TIME is either CPU time 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.