The OPTGRAPH Procedure

Macro Variables

The OPTGRAPH procedure defines one summary macro variable that reports the overall status and one detailed macro variable for each completed algorithm.

Macro Variable _OPTGRAPH_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_. This variable contains a character string that indicates the status of the OPTGRAPH procedure upon termination. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the procedure at termination. The STATUS term can take one of the following values:

OK

The procedure terminated normally.

OUT_OF_MEMORY

Insufficient memory was allocated to the procedure.

INTERRUPTED

The procedure was interrupted by the user during the input or setup phase.

ERROR

The procedure encountered an error.

BICONCOMP

indicates the status of the biconnected components algorithm at termination. This algorithm is described in the section Biconnected Components and Articulation Points. The BICONCOMP term can take one of the following values:

OK

The algorithm terminated normally.

ERROR

The algorithm encountered an error.

CENTRALITY

indicates the status of the centrality algorithms at termination. These algorithms are described in the section Centrality. The CENTRALITY term can take one of the following values:

OK

The algorithm terminated normally.

INTERRUPTED

The algorithm was interrupted by the user.

ERROR

The algorithm encountered an error.

CLIQUE

indicates the status of the clique-finding algorithms at termination. These algorithms are described in the section Clique. The CLIQUE term can take one of the following values:

OK

The algorithm terminated normally.

INTERRUPTED

The algorithm was interrupted by the user.

TIMELIMIT

The algorithm reached its execution time limit, which is specified in the MAXTIME= option in the CLIQUE statement.

SOLUTION_LIM

The algorithm reached its limit on the number of cliques found, which is specified in the MAXCLIQUES= option in the CLIQUE statement.

ERROR

The algorithm encountered an error.

COMMUNITY

indicates the status of the community algorithms at termination. These algorithms are described in the section Community. The COMMUNITY term can take one of the following values:

OK

The algorithm terminated normally.

INTERRUPTED

The algorithm was interrupted by the user.

ERROR

The algorithm encountered an error.

CONCOMP

indicates the status of the connected components algorithm at termination. This algorithm is described in the section Connected Components. The CONCOMP term can take one of the following values:

OK

The algorithm terminated normally.

ERROR

The algorithm encountered an error.

CORE

indicates the status of the core decomposition algorithm at termination. This algorithm is described in the section Core Decomposition. The CORE term can take one of the following values:

OK

The algorithm terminated normally.

INTERRUPTED

The algorithm was interrupted by the user.

TIMELIMIT

The algorithm reached its execution time limit, which is specified in the MAXTIME= option in the CORE statement.

ERROR

The algorithm encountered an error.

CYCLE

indicates the status of the cycle detection algorithm at termination. This algorithm is described in the section Cycle. The CYCLE term can take one of the following values:

OK

The algorithm terminated normally.

TIMELIMIT

The algorithm reached its execution time limit, which is specified in the MAXTIME= option in the CYCLE statement.

SOLUTION_LIM

The algorithm reached its limit on the number of cycles found, which is specified in the MAXCYCLES= option in the CYCLE statement.

ERROR

The algorithm encountered an error.

EIGEN

indicates the status of the eigenvector solver at termination. This solver is described in the section Eigenvector Problem. The EIGEN term can take one of the following values:

OK

The solver terminated normally.

ITER_LIMIT_SOL

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

ITER_LIMIT_NOSOL

The solver reached the maximum number of iterations that is specified in the MAXITER= option and did not find a solution.

ERROR

The solver encountered an error.

LAP

indicates the status of the linear assignment solver at termination. This solver is described in the section Linear Assignment (Matching). The LAP term can take one of the following values:

OPTIMAL

The solution is optimal.

INFEASIBLE

The problem is infeasible.

ERROR

The solver encountered an error.

MCF

indicates the status of the minimum-cost network flow solver at termination. This solver is described in the section Minimum-Cost Network Flow. The MCF term can take one of the following values:

OPTIMAL

The solution is optimal.

OPTIMAL_COND

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

INFEASIBLE

The problem is infeasible.

UNBOUNDED

The problem is unbounded.

TIMELIMIT

The solver reached its execution time limit, which is specified in the MAXTIME= option in the MINCOSTFLOW statement.

FAIL_NOSOL

The solver stopped because of errors and did not find a solution.

ERROR

The solver encountered an error.

MINCUT

indicates the status of the minimum-cut solver at termination. This solver is described in the section Minimum Cut. The MINCUT term can take one of the following values:

OPTIMAL

The solution is optimal.

INFEASIBLE

The problem is infeasible.

INTERRUPTED

The solver was interrupted by the user.

ERROR

The solver encountered an error.

MST

indicates the status of the minimum spanning tree solver at termination. This solver is described in the section Minimum Spanning Tree. The MST term can take one of the following values:

OPTIMAL

The solution is optimal.

INTERRUPTED

The algorithm was interrupted by the user.

ERROR

The solver encountered an error.

REACH

indicates the status of the reach algorithms at termination. These algorithms are described in the section Reach (Ego) Network. The REACH term can take one of the following values:

OK

The algorithm terminated normally.

INTERRUPTED

The algorithm was interrupted by the user.

ERROR

The algorithm encountered an error.

SHORTPATH

indicates the status of the shortest path algorithms at termination. These algorithms are described in the section Shortest Path. The SHORTPATH term can take one of the following values:

OK

The algorithm terminated normally.

INTERRUPTED

The algorithm was interrupted by the user.

ERROR

The algorithm encountered an error.

SUMMARY

indicates the status of the summary algorithms at termination. These algorithms are described in the section Summary. The SUMMARY term can take one of the following values:

OK

The algorithm terminated normally.

INTERRUPTED

The algorithm was interrupted by the user.

ERROR

The algorithm encountered an error.

TRANSCL

indicates the status of the transitive closure algorithm at termination. This algorithm is described in the section Transitive Closure. The TRANSCL term can take one of the following values:

OK

The algorithm terminated normally.

INTERRUPTED

The algorithm was interrupted by the user.

ERROR

The algorithm encountered an error.

TSP

indicates the status of the traveling salesman problem solver at termination. This algorithm is described in the section Traveling Salesman Problem. The TSP term can take one of the following values:

OPTIMAL

The solution is optimal.

OPTIMAL_AGAP

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

OPTIMAL_RGAP

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

OPTIMAL_COND

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

TARGET

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

INFEASIBLE

The problem is infeasible.

UNBOUNDED

The problem is unbounded.

INFEASIBLE_OR_UNBOUNDED

The problem is infeasible or unbounded.

SOLUTION_LIM

The solver reached the maximum number of solutions specified in the MAXSOLS= option.

NODE_LIM_SOL

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

NODE_LIM_NOSOL

The solver reached the maximum number of nodes specified in the MAXNODES= 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_LIM_NOSOL

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

HEURISTIC_SOL

The solver used only heuristics and found a solution.

HEURISTIC_NOSOL

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

ABORT_SOL

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

ABORT_NOSOL

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

OUTMEM_SOL

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

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.

FAIL_SOL

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

FAIL_NOSOL

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

Each algorithm reports its own status information in an additional macro variable. The following sections provide more information about these macro variables.

Macro Variable _OPTGRAPH_BICONCOMP_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_BICONCOMP_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate biconnected components. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term BICONCOMP in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

NUM_COMPONENTS

indicates the number of biconnected components found by the algorithm.

NUM_ARTICULATION_POINTS

indicates the number of articulation points found by the algorithm.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_CENTRALITY_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_CENTRALITY_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate centrality. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term CENTRALITY in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_CLIQUE_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_CLIQUE_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate cliques. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term CLIQUE in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

NUM_CLIQUES

indicates the number of cliques found by the algorithm.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_COMMUNITY_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_COMMUNITY_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate communities. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term COMMUNITY in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

RESOLUTION

indicates the list of resolution levels specified in the RESOLUTION_LIST= option.

NUM_COMMUNITIES

indicates the number of communities found by the algorithm at each resolution level.

MODULARITY

indicates the final modularity found by the algorithm at each resolution level.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_CONCOMP_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_CONCOMP_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate connected components. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term CONCOMP in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

NUM_COMPONENTS

indicates the number of connected components found by the algorithm.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_CORE_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_CORE_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate the core decomposition. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term CORE in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_CYCLE_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_CYCLE_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate cycles. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term CYCLE in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

NUM_CYCLES

indicates the number of cycles found by the algorithm.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_EIGEN_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_EIGEN_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate eigenvectors. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term EIGEN in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_LAP_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_LAP_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to solve the linear assignment problem. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the solver at termination. The STATUS term takes the same value as the term LAP in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

OBJECTIVE

indicates the total weight of the minimum linear assignment.

CPU_TIME

indicates the CPU time (in seconds) taken by the solver.

REAL_TIME

indicates the real time (in seconds) taken by the solver.

Macro Variable _OPTGRAPH_MCF_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_MCF_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to solve the minimum-cost network flow problem. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the solver at termination. The STATUS term takes the same value as the term MCF in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

OBJECTIVE

indicates the total link weight of the minimum-cost network flow.

CPU_TIME

indicates the CPU time (in seconds) taken by the solver.

REAL_TIME

indicates the real time (in seconds) taken by the solver.

Macro Variable _OPTGRAPH_MINCUT_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_MINCUT_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to find the minimum cut. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term MINCUT in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

OBJECTIVE

indicates the total link weight of the minimum cut.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_MST_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_MST_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to solve the minimum spanning tree problem. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the solver at termination. The STATUS term takes the same value as the term MST in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

OBJECTIVE

indicates the total link weight of the minimum spanning tree.

CPU_TIME

indicates the CPU time (in seconds) taken by the solver.

REAL_TIME

indicates the real time (in seconds) taken by the solver.

Macro Variable _OPTGRAPH_REACH_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_REACH_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate reach networks. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term REACH in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_SHORTPATH_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_SHORTPATH_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate shortest paths. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term SHORTPATH in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

NUM_PATHS

indicates the number of shortest paths that the algorithm finds.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_SUMMARY_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_SUMMARY_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate summary statistics. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term SUMMARY in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_TRANSCL_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_TRANSCL_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to calculate transitive closure. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the algorithm at termination. The STATUS term takes the same value as the term TRANSCL in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

Macro Variable _OPTGRAPH_TSP_

The OPTGRAPH procedure defines a macro variable named _OPTGRAPH_TSP_. This variable contains a character string that indicates the status and some basic statistics about the results of the algorithm that PROC OPTGRAPH uses to solve the traveling salesman problem. The various terms of the variable are interpreted as follows:

STATUS

indicates the status of the solver at termination. The STATUS term takes the same value as the term TSP in the _OPTGRAPH_ macro as defined in the section Macro Variable _OPTGRAPH_.

OBJECTIVE

indicates the objective value that the solver obtains at termination.

RELATIVE_GAP

specifies the relative gap between the best integer objective (BestInteger) and the objective of the best remaining node (BestBound) upon termination of the solver. The relative gap is equal to

\[ \mid \mbox{BestInteger} - \mbox{BestBound}\mid / \left(\mbox{1E$-$10}~  + \mid \mbox{BestBound}\mid \right) \]
ABSOLUTE_GAP

specifies the absolute gap between the best integer objective (BestInteger) and the objective of the best remaining node (BestBound) upon termination of the solver. The absolute gap is equal to

\[ \mid \mbox{BestInteger} - \mbox{BestBound}\mid  \]
PRIMAL_INFEASIBILITY

indicates the maximum (absolute) violation of the primal constraints by the solution.

BOUND_INFEASIBILITY

indicates the maximum (absolute) violation by the solution of the lower or upper bounds (or both).

INTEGER_INFEASIBILITY

indicates the maximum (absolute) violation of the integrality of integer variables that are returned by the solver.

BEST_BOUND

specifies the best linear programming objective value of all unprocessed nodes in the branch-and-bound tree at the end of execution. A missing value indicates that the solver has processed either all or none of the nodes in the branch-and-bound tree.

NODES

specifies the number of nodes enumerated by the solver by using the branch-and-bound algorithm.

ITERATIONS

indicates the number of simplex iterations taken to solve the problem.

CPU_TIME

indicates the CPU time (in seconds) taken by the algorithm.

REAL_TIME

indicates the real time (in seconds) taken by the algorithm.

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.