The Network Solver (Experimental)

Macro Variable _OROPTMODEL_

The OPTMODEL procedure always creates and initializes a SAS macro variable called _OROPTMODEL_, which contains a character string. After each PROC OROPTMODEL run, you can examine this macro variable by specifying %put &_OROPTMODEL_; and check the execution of the most recently invoked solver from the value of the macro variable. You can also extract each keyword and value pair to obtain details about the solution even if you do not specify an output destination in the OUT= option.

After the solver is called, the various keywords in the variable are interpreted as follows:

STATUS

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

OK

The solver terminated normally.

SYNTAX_ERROR

The use of syntax is incorrect.

DATA_ERROR

The input data is inconsistent.

OUT_OF_MEMORY

Insufficient memory was allocated to the procedure.

IO_ERROR

A problem in reading or writing of data has occurred.

SEMANTIC_ERROR

An evaluation error, such as an invalid operand type, has occurred.

ERROR

The status 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:

ABORT_NOSOL

The solver was stopped by the user and did not find a solution.

ABORT_SOL

The solver was stopped by the user but still found a solution.

BAD_PROBLEM_TYPE

The problem type is not supported by the solver.

CONDITIONAL_OPTIMAL

The optimality of the solution cannot be proven.

ERROR

The algorithm encountered an error.

FAIL_NOSOL

The solver stopped due to errors and did not find a solution.

FAIL_SOL

The solver stopped due to errors but still found a solution.

FAILED

The solver failed to converge, possibly due to numerical issues.

HEURISTIC_NOSOL

The solver used only heuristics and did not find a solution.

HEURISTIC_SOL

The solver used only heuristics and found a solution.

INFEASIBLE

The problem is infeasible.

INFEASIBLE_OR_UNBOUNDED

The problem is infeasible or unbounded.

INTERRUPTED

The solver was interrupted by the system or the user before completing its work.

ITERATION_LIMIT_REACHED

The solver reached the maximum number of iterations that is specified in the MAXITER= option.

NODE_LIM_NOSOL

The solver reached the maximum number of nodes specified in the MAXNODES= option and did not find a solution.

NODE_LIM_SOL

The solver reached the maximum number of nodes specified in the MAXNODES= option and found a solution.

OK

The algorithm terminated normally.

OPTIMAL

The solution is optimal.

OPTIMAL_AGAP

The solution is optimal within the absolute gap that is specified in the ABSOBJGAP= option.

OPTIMAL_COND

The solution is optimal, but some infeasibilities (primal, bound, or integer) exceed tolerances because of scaling.

OPTIMAL_RGAP

The solution is optimal within the relative gap that is specified in the RELOBJGAP= option.

OUTMEM_NOSOL

The solver ran out of memory and either did not find a solution or failed to output the solution due to insufficient memory.

OUTMEM_SOL

The solver ran out of memory but still found a solution.

SOLUTION_LIM

The solver reached the maximum number of solutions specified in the MAXCLIQUES=, MAXCYCLES=, or MAXSOLS= option.

TARGET

The solution is not worse than the target that is specified in the TARGET= option.

TIME_LIM_NOSOL

The solver reached the execution time limit specified in the MAXTIME= option and did not find a solution.

TIME_LIM_SOL

The solver reached the execution time limit specified in the MAXTIME= option and found a solution.

TIME_LIMIT_REACHED

The solver reached its execution time limit.

UNBOUNDED

The problem is unbounded.

PROBLEM_TYPE

indicates the type of problem solved. It can take one of the following values:

BICONCOMP

Biconnected components

CLIQUE

Maximal cliques

CONCOMP

Connected components

CYCLE

Cycle detection

LAP

Linear assignment (matching)

MCF

Minimum-cost network flow

MINCUT

Minimum cut

MST

Minimum spanning tree

SHORTPATH

Shortest path

TRANSCL

Transitive closure

TSP

Traveling salesman

NONE

This value is used when you do not specify an algorithm to run.

OBJECTIVE

indicates the objective value that is obtained by the solver at termination. For problem classes that do not have an explicit objective, such as cycle, the value of this keyword within the _OROPTMODEL_ macro variable is missing (.).

PRESOLVE_TIME

indicates the real time taken for preprocessing (seconds).

SOLUTION_TIME

indicates the real time taken by the interior point algorithm to perform iterations for solving the problem (seconds).

The following keywords within the _OROPTMODEL_ macro variable appear only with certain algorithms. The keywords convey information about the number of solutions each algorithm found:

NUM_ARTICULATION_POINTS

indicates the number of articulation points found. This term appears only for biconnected components.

NUM_CLIQUES

indicates the number of cliques found. This term appears only for clique.

NUM_COMPONENTS

indicates the number of components that match the definitions of the corresponding problem class. This term appears only for connected components and biconnected components.

NUM_CYCLES

indicates the number of cycles found that satisfy the criteria you provide. This term appears only for cycles.