The OPTGRAPH Procedure
Functional Summary
Table 2 summarizes the statements and options available with PROC OPTGRAPH.
Table 2: Functional Summary
| Description | Option |
|---|---|
| PROC OPTGRAPH Options | |
| Input | |
| Specifies the link data set | DATA_LINKS= |
| Specifies the matrix data set | DATA_MATRIX= |
| Specifies the node data set | DATA_NODES= |
| Specifies the node subset data set | DATA_NODES_SUB= |
| Output | |
| Specifies the link output data set | OUT_LINKS= |
| Specifies the node output data set | OUT_NODES= |
| Options | |
| Specifies the subgraph filter level | FILTER_SUBGRAPH= |
| Specifies the graph direction | GRAPH_DIRECTION= |
| Specifies the internal graph format | GRAPH_INTERNAL_FORMAT= |
| Includes self links | INCLUDE_SELFLINK |
| Specifies the overall log level | LOGLEVEL= |
| Specifies whether time units are in CPU time or real time | TIMETYPE= |
| Data Input Statements | |
| DATA_LINKS_VAR Options | |
| Specifies the data set variable name for the from nodes | FROM= |
| Specifies the data set variable name for the link flow lower bounds | LOWER= |
| Specifies the data set variable name for the to nodes | TO= |
| Specifies the data set variable name for the link flow upper bounds | UPPER= |
| Specifies the data set variable name for the link weights | WEIGHT= |
| DATA_MATRIX_VAR | |
| Specifies the data set variable names for the matrix | |
| DATA_NODES_VAR Options | |
| Specifies the data set variable name for cluster identifiers | CLUSTER= |
| Specifies the data set variable name for the nodes | NODE= |
| Specifies the data set variable name for node weights | WEIGHT= |
| Specifies the data set variable name for auxiliary node weights | WEIGHT2= |
| Algorithm Statements | |
| BICONCOMP Option | |
| Specifies the log level for biconnected components | LOGLEVEL= |
| CENTRALITY Options | |
| Calculates authority centrality and specifies the type to process | AUTH= |
| Calculates betweenness centrality and specifies the type to process | BETWEEN= |
| Specifies whether to normalize the betweenness calculation | BETWEEN_NORM= |
| Decomposes the calculations for centrality by cluster (or subgraph) | BY_CLUSTER |
| Calculates closeness centrality and specifies the type to process | CLOSE= |
| Specifies the accounting method for no paths in closeness | CLOSE_NOPATH= |
| Calculates the node clustering coefficients | CLUSTERING_COEF |
| Calculates degree centrality and specifies the type to process | DEGREE= |
| Calculates eigenvector centrality and specifies the type to process | EIGEN= |
| Specifies the algorithm to use for eigenvector calculation | EIGEN_ALGORITHM= |
| Specifies the maximum number of iterations for eigenvector calculation | EIGEN_MAXITER= |
| Calculates hub centrality and specifies the type to process | HUB= |
| Calculates influence centrality and specifies the type to process | INFLUENCE= |
| Specifies the iteration log frequency (nodes) | LOGFREQNODE= |
| Specifies the iteration log frequency (seconds) | LOGFREQTIME= |
| Specifies the log level for centrality | LOGLEVEL= |
| Specifies the subgraph node size to run separately | SUBSIZESWITCH= |
| Specifies the data set variable to use for weight2 in centrality | WEIGHT2= |
| CLIQUE Options | |
| Specifies the log level for clique calculations | LOGLEVEL= |
| Specifies the maximum number of cliques to return during clique calculations | MAXCLIQUES= |
| Specifies the maximum amount of time to spend calculating cliques | MAXTIME= |
| Specifies the output data set for cliques | OUT= |
| COMMUNITY Options | |
| Specifies the community detection algorithm | ALGORITHM= |
| Specifies the percentage of small-weight links to be removed | LINK_REMOVAL_RATIO= |
| Specifies the log level for community detection | LOGLEVEL= |
| Specifies the maximum number of iterations for community detection | MAXITER= |
| Specifies the output data set for inter-community links | OUT_COMM_LINKS= |
| Specifies the output data set for community summary table | OUT_COMMUNITY= |
| Specifies the output data set for community level summary table | OUT_LEVEL= |
| Specifies the output data set for community overlap table | OUT_OVERLAP= |
| Specifies the random factor in the parallel label propagation algorithm | RANDOM_FACTOR= |
| Specifies the random seed for the parallel label propagation algorithm | RANDOM_SEED= |
| Applies the recursive option to break large communities | RECURSIVE |
| Specifies the resolution list for community detection | RESOLUTION_LIST= |
| Specifies the modularity tolerance value for community detection | TOLERANCE= |
| CONCOMP Options | |
| Specifies the algorithm to use for connected components | ALGORITHM= |
| Specifies the log level for connected components | LOGLEVEL= |
| CORE Options | |
| Specifies the type of core to process | LINKS= |
| Specifies the log level for the core algorithm | LOGLEVEL= |
| Specifies the maximum amount of time to spend in the core algorithm | MAXTIME= |
| CYCLE Options | |
| Specifies the log level for the cycle algorithm | LOGLEVEL= |
| Specifies the maximum number of cycles to return during cycle calculations | MAXCYCLES= |
| Specifies the maximum length for the cycles found | MAXLENGTH= |
| Specifies the maximum link weight for the cycles found | MAXLINKWEIGHT= |
| Specifies the maximum node weight for the cycles found | MAXNODEWEIGHT= |
| Specifies the maximum amount of time to spend calculating cycles | MAXTIME= |
| Specifies the minimum length for the cycles found | MINLENGTH= |
| Specifies the minimum link weight for the cycles found | MINLINKWEIGHT= |
| Specifies the minimum node weight for the cycles found | MINNODEWEIGHT= |
| Specifies the mode for the cycle calculations | MODE= |
| Specifies the output data set for cycles | OUT= |
| EIGENVECTOR Options | |
| Specifies the algebraic type of eigenvalues to calculate | EIGENVALUES= |
| Specifies the log level for eigenvector calculations | LOGLEVEL= |
| Specifies the maximum number of iterations for eigenvector calculation | MAXITER= |
| Specifies the number of eigenvectors to calculate | NEIGEN= |
| Specifies the output data set for eigenvectors | OUT= |
| LINEAR_ASSIGNMENT Options | |
| Specifies the data set variable names for the linear assignment identifiers | ID=( ) |
| Specifies the log level for the linear assignment algorithm | LOGLEVEL= |
| Specifies the output data set for linear assignment | OUT= |
| Specifies the data set variable names for costs (or weights) | WEIGHT=( ) |
| MINCOSTFLOW Options | |
| Specifies the iteration log frequency | LOGFREQ= |
| Specifies the log level for the minimum-cost network flow algorithm | LOGLEVEL= |
| Specifies the maximum amount of time to spend calculating the optimal flow | MAXTIME= |
| MINCUT Options | |
| Specifies the log level for the minimum-cut algorithm | LOGLEVEL= |
| Specifies the maximum number of cuts to return | MAXNUMCUTS= |
| Specifies the maximum weight of the cuts to return | MAXWEIGHT= |
| Specifies the output data set for minimum cut | OUT= |
| MINSPANTREE Options | |
| Specifies the log level for the minimum spanning tree algorithm | LOGLEVEL= |
| Specifies the output data set for minimum spanning tree | OUT= |
| REACH Options | |
| Decomposes the calculations for reach by cluster (or subgraph) | BY_CLUSTER |
| Calculates the directed reach counts | DIGRAPH |
| Treats each node as a source in reach calculations | EACH_SOURCE |
| Ignores the source node in reach counts | IGNORE_SELF |
| Specifies the maximum number of links to allow in the reach calculations | MAXREACH= |
| Specifies the iteration log frequency (seconds) | LOGFREQTIME= |
| Specifies the log level for reach calculations | LOGLEVEL= |
| Specifies the output data set for reach counts | OUT_COUNTS= |
| Specifies the output data set for reach counts (limit=1) | OUT_COUNTS1= |
| Specifies the output data set for reach counts (limit=2) | OUT_COUNTS2= |
| Specifies the output data set for reach links | OUT_LINKS= |
| Specifies the output data set for reach nodes | OUT_NODES= |
| SHORTPATH Options | |
| Specifies the iteration log frequency (nodes) | LOGFREQ= |
| Specifies the log level for shortest paths | LOGLEVEL= |
| Specifies the output data set for shortest paths | OUT_PATHS= |
| Specifies the output data set for shortest path summaries | OUT_WEIGHTS= |
| Specifies the type of output for shortest paths results | PATHS= |
| Specifies the sink node for shortest paths calculations | SINK= |
| Specifies the source node for shortest paths calculations | SOURCE= |
| Specifies whether to use weights in calculating shortest paths | USEWEIGHT= |
| Specifies the data set variable name for the auxiliary link weights | WEIGHT2= |
| SUMMARY Options | |
| Calculates information about biconnected components | BICONCOMP |
| Decomposes the calculations for summary by cluster (or subgraph) | BY_CLUSTER |
| Calculates information about connected components | CONCOMP |
| Calculates the approximate diameter and chooses the weight type | DIAMETER_APPROX= |
| Specifies the iteration log frequency (nodes) | LOGFREQNODE= |
| Specifies the iteration log frequency (seconds) | LOGFREQTIME= |
| Specifies the log level for summary calculations | LOGLEVEL= |
| Specifies the output data set for summary results | OUT= |
| Calculates information about shortest paths and chooses the weight type | SHORTPATH= |
| Specifies the subgraph node size to run separately | SUBSIZESWITCH= |
| TRANSITIVE_CLOSURE Options | |
| Specifies the log level for transitive closure | LOGLEVEL= |
| Specifies the output data set for transitive closure results | OUT= |
| TSP Options | |
| Specifies the stopping criterion based on the absolute objective gap | ABSOBJGAP= |
| Specifies the level of conflict search | CONFLICTSEARCH= |
| Specifies the cutoff value for branch-and-bound node removal | CUTOFF= |
| Specifies the overall cut strategy level | CUTSTRATEGY= |
| Emphasizes feasibility or optimality | EMPHASIS= |
| Specifies the initial and primal heuristics level | HEURISTICS= |
| Specifies the frequency of printing the branch-and-bound node log | LOGFREQ= |
| Specifies the log level for the traveling salesman algorithm | LOGLEVEL= |
| Specifies the maximum number of branch-and-bound nodes to be processed | MAXNODES= |
| Specifies the maximum number of solutions to be found | MAXSOLS= |
| Specifies the maximum amount of time to spend in the algorithm | MAXTIME= |
| Specifies whether to use a mixed integer linear programming solver | MILP= |
| Specifies the branch-and-bound node selection strategy | NODESEL= |
| Specifies the output data set for traveling salesman problem | OUT= |
| Specifies the probing level | PROBE= |
| Specifies the stopping criterion based on the relative objective gap | RELOBJGAP= |
| Specifies the number of simplex iterations to be performed on each variable in the strong branching strategy | STRONGITER= |
| Specifies the number of candidates for the strong branching strategy | STRONGLEN= |
| Specifies the stopping criterion based on the target objective value | TARGET= |
| Specifies the rule for selecting branching variable | VARSEL= |
For more information about the options available for the PERFORMANCE statement, see the section PERFORMANCE Statement.
Table 3 lists the valid input formats, GRAPH_DIRECTION= values, and GRAPH_INTERNAL_FORMAT= values for each statement in the OPTGRAPH procedure.
Table 3: Supported Input Formats and Graph Types by Statement
| Input Format | DIRECTION | INTERNAL_FORMAT | ||||
|---|---|---|---|---|---|---|
| Statement | Graph | Matrix | UNDIRECTED | DIRECTED | THIN | FULL |
| BICONCOMP | X | X | X | |||
| CENTRALITY | ||||||
| AUTH=, HUB= | X | X | X | |||
| EIGEN= | X | X | X | |||
| BETWEEN=, CLOSE=, | X | X | X | X | ||
| CLUSTERING_COEF, | ||||||
| DEGREE=, | ||||||
| INFLUENCE=, | ||||||
| CENTRALITY / BY_CLUSTER | ||||||
| AUTH=, HUB= | X | X | X | X | ||
| EIGEN= | X | X | X | X | X | |
| BETWEEN=, CLOSE= | X | X | X | X | X | |
| CLUSTERING_COEF, | ||||||
| DEGREE=, | ||||||
| INFLUENCE=, | ||||||
| CLIQUE | X | X | X | |||
| COMMUNITY | ||||||
| ALGORITHM= | ||||||
| LOUVAIN, LABEL_PROP | X | X | X | X | ||
| PARALLEL_LABEL_PROP | X | X | X | X | X | |
| CONCOMP | ||||||
| ALGORITHM= | ||||||
| DFS | X | X | X | X | ||
| UNION_FIND | X | X | X | X | ||
| CORE | X | X | X | X | ||
| CYCLE | X | X | X | X | ||
| EIGENVECTOR | X | X | X | X | ||
| LINEAR_ASSIGNMENT | X | X | X | X | ||
| MINCOSTFLOW | X | X | X | X | ||
| MINCUT | X | X | X | |||
| MINSPANTREE | X | X | X | X | ||
| REACH | X | X | X | X | ||
| REACH / BY_CLUSTER | X | X | X | X | X | |
| SHORTPATH | X | X | X | X | ||
| SUMMARY | X | X | X | X | ||
| SUMMARY / BY_CLUSTER | X | X | X | X | X | |
| TRANSITIVE_CLOSURE | X | X | X | X | ||
| TSP | X | X | X | X | ||
Table 4 indicates for each algorithm statement in the OPTGRAPH procedure which output data set options you can specify and whether the algorithm populates the data sets specified in the OUT_NODES= and OUT_LINKS= options in the PROC OPTGRAPH statement.
Table 4: Output Options by Statement
| Statement | OUT_NODES | OUT_LINKS | Algorithm Statement Options |
|---|---|---|---|
| BICONCOMP | X | X | |
| CENTRALITY | |||
| AUTH=, CLOSE=, | X | ||
| CLUSTERING_COEF, | |||
| DEGREE=, EIGEN=, HUB=, | |||
| INFLUENCE= | |||
| BETWEEN= | X | X | |
| CLIQUE | OUT= | ||
| COMMUNITY | |||
| ALGORITHM= | |||
| LOUVAIN, LABEL_PROP, | X | OUT_COMM_LINKS=, | |
| PARALLEL_LABEL_PROP | OUT_COMMUNITY=, | ||
| OUT_LEVEL=, | |||
| OUT_OVERLAP= | |||
| CONCOMP | X | ||
| CORE | X | ||
| CYCLE | OUT= | ||
| EIGENVECTOR | OUT= | ||
| LINEAR_ASSIGNMENT | OUT= | ||
| MINCOSTFLOW | X | ||
| MINCUT | X | OUT= | |
| MINSPANTREE | OUT= | ||
| REACH | OUT_COUNTS=, OUT_LINKS=, | ||
| OUT_NODES= | |||
| BY_CLUSTER | OUT_COUNTS=, OUT_NODES= | ||
| BY_CLUSTER and EACH_SOURCE | OUT_COUNTS1=, | ||
| OUT_COUNTS2= | |||
| SHORTPATH | OUT_PATHS=, OUT_WEIGHTS= | ||
| SUMMARY | X | OUT= | |
| TRANSITIVE_CLOSURE | OUT= | ||
| TSP | X | OUT= |