The Network Solver
Functional Summary
Table 2 summarizes the options and suboptions available in the SOLVE WITH NETWORK statement.
Table 2: Functional Summary of SOLVE WITH NETWORK Options
| Description | Option | ||
|---|---|---|---|
| Suboption | |||
| General Options | |||
| Specifies directed or undirected graphs | GRAPH_DIRECTION= | ||
| Includes self links in the graph definition | INCLUDE_SELFLINK= | ||
| Specifies the iteration log frequency | LOGFREQ= | ||
| Controls the amount of information that is displayed in the SAS log | LOGLEVEL= | ||
| Specifies the maximum time spent calculating results | MAXTIME= | ||
| Specifies the number for threads to use for threaded processing | NTHREADS= | ||
| Specifies whether time units are in CPU time or real time | TIMETYPE= | ||
| Input and Output Options | |||
| Groups link-indexed data | LINKS=() | ||
| Names a set of links to include in the graph definition even if no weights or bounds are available for them | INCLUDE= | ||
| Specifies the flow lower bound for each link | LOWER= | ||
| Specifies the flow upper bound for each link | UPPER= | ||
| Specifies link weights | WEIGHT= | ||
| Groups node-indexed data | NODES=() | ||
| Names a set of nodes to include in the graph definition even if no weights are available for them | INCLUDE= | ||
| Specifies node supply lower bounds in the minimum-cost network flow problem | LOWER= | ||
| Specifies node supply upper bounds in the minimum-cost network flow problem | UPPER= | ||
| Specifies node weights | WEIGHT= | ||
| Specifies the input sets that enable you to solve a problem over a subgraph | SUBGRAPH=() | ||
| Specifies the subset of links to use | LINKS= | ||
| Specifies the subset of nodes to use | NODES= | ||
| Specifies the output sets or arrays for each algorithm (see Table 4 for which OUT= suboptions you can specify for each algorithm) | OUT=() | ||
| Specifies the output set for articulation points | ARTPOINTS= | ||
| Specifies the output set for linear assignment | ASSIGNMENTS= | ||
| Specifies the array to contain the biconnected component of each link | BICONCOMP= | ||
| Specifies the output set for cliques | CLIQUES= | ||
| Specifies the set to contain the pairs of nodes where v is reachable from u | CLOSURE= | ||
| Specifies the output array for connected components | CONCOMP= | ||
| Specifies the output set for the cut sets for minimum cuts | CUTSETS= | ||
| Specifies the output set for cycles | CYCLES= | ||
| Specifies the output array for the dual values of node constraints | DUAL= | ||
| Specifies the output array for the flow on each link | FLOW= | ||
| Specifies the output set for the minimum spanning tree (forest) | FOREST= | ||
| Specifies the output set for the links that remain after the SUBGRAPH= option is applied | LINKS= | ||
| Specifies the output set for the nodes that remain after the SUBGRAPH= option is applied | NODES= | ||
| Specifies the output array for the node order in the traveling salesman problem | ORDER= | ||
| Specifies the output set for the partitions for minimum cuts | PARTITIONS= | ||
| Specifies the output set for path link sequences | PATHSLINKS= | ||
| Specifies the output set for path node sequences | PATHSNODES= | ||
| Specifies the output array for the reduced costs of link flow variables | RC= | ||
| Specifies the set to contain the link sequence for each path | SPPATHS= | ||
| Specifies the numeric array to contain the path weight for each source and sink node pair | SPWEIGHTS= | ||
| Specifies the output set for the tour in the traveling salesman problem | TOUR= | ||
| Algorithm Options and Suboptions | |||
| Finds biconnected components and articulation points of an undirected input graph | BICONNECTEDCOMPONENTS | ||
| Finds maximal cliques in the input graph | CLIQUE= | ||
| Specifies the maximum number of cliques to return | MAXCLIQUES= | ||
| Specifies the maximum link weight for the cliques found | MAXLINKWEIGHT= | ||
| Specifies the maximum node weight for the cliques found | MAXNODEWEIGHT= | ||
| Specifies the maximum size for the cliques found | MAXSIZE= | ||
| Specifies the minimum link weight for the cliques found | MINLINKWEIGHT= | ||
| Specifies the minimum node weight for the cliques found | MINNODEWEIGHT= | ||
| Specifies the minimum size for the cliques found | MINSIZE= | ||
| Finds the connected components of the input graph | CONNECTEDCOMPONENTS= | ||
| Specifies the algorithm to use for calculating connected components | ALGORITHM= | ||
| Finds the cycles (or the existence of a cycle) in the input graph | CYCLE= | ||
| Specifies the algorithm to use in enumerating cycles | ALGORITHM= | ||
| Specifies the maximum number of cycles to return | MAXCYCLES= | ||
| Specifies the maximum link count to allow in a cycle | MAXLENGTH= | ||
| Specifies the maximum sum of link weights to allow in a cycle | MAXLINKWEIGHT= | ||
| Specifies the maximum sum of node weights to allow in a cycle | MAXNODEWEIGHT= | ||
| Specifies the minimum link count to allow in a cycle | MINLENGTH= | ||
| Specifies the minimum sum of link weights to allow in a cycle | MINLINKWEIGHT= | ||
| Specifies the minimum sum of node weights to allow in a cycle | MINNODEWEIGHT= | ||
| Solves the minimal-cost linear assignment problem | LINEARASSIGNMENT | ||
| Solves the minimum-cost network flow problem | MINCOSTFLOW | ||
| Finds the minimum link-weighted cut of an input graph | MINCUT= | ||
| Specifies the maximum number of cuts to return from the algorithm | MAXCUTS= | ||
| Specifies the maximum weight of each cut to return from the algorithm | MAXWEIGHT= | ||
| Solves the minimum link-weighted spanning tree problem on an input graph | MINSPANTREE | ||
| Finds the paths between sets of nodes on the input graph | PATH= | ||
| Specifies the maximum link count to allow in a path | MAXLENGTH= | ||
| Specifies the maximum sum of link weights to allow in a path | MAXLINKWEIGHT= | ||
| Specifies the maximum sum of node weights to allow in a path | MAXNODEWEIGHT= | ||
| Specifies the minimum link count to allow in a path | MINLENGTH= | ||
| Specifies the minimum sum of link weights to allow in a path | MINLINKWEIGHT= | ||
| Specifies the minimum sum of node weights to allow in a path | MINNODEWEIGHT= | ||
| Specifies the set of sink nodes | SINK= | ||
| Specifies the set of source nodes | SOURCE= | ||
| Calculates shortest paths between sets of nodes on the input graph | SHORTESTPATH= | ||
| Specifies the maximum path weight | MAXPATHWEIGHT= | ||
| Specifies the set of sink nodes | SINK= | ||
| Specifies the set of source nodes | SOURCE= | ||
| Calculates the transitive closure of an input graph | TRANSITIVECLOSURE | ||
| Solves the traveling salesman problem | TSP= | ||
| Requests that the stopping criterion be based on the absolute objective gap | ABSOBJGAP= | ||
| Specifies the cutoff value for branch-and-bound node removal | CUTOFF= | ||
| Specifies the level of cutting planes to be generated by the network solver | CUTSTRATEGY= | ||
| Specifies the initial and primal heuristics level | HEURISTICS= | ||
| Specifies the maximum number of branch-and-bound nodes to be processed | MAXNODES= | ||
| Specifies the maximum number of feasible tours to be identified | MAXSOLS= | ||
| Specifies whether to use a mixed integer linear programming solver | MILP= | ||
| Requests that the stopping criterion be based on relative objective gap | RELOBJGAP= | ||
| Requests that the stopping criterion be based on the target objective value | TARGET= | ||
Table 3 lists the valid GRAPH_DIRECTION= values for each algorithm option in the SOLVE WITH NETWORK statement.
Table 3: Supported Graph Directions by Algorithm
| Direction | ||
|---|---|---|
| Algorithm | Undirected | Directed |
| BICONNECTEDCOMPONENTS | x | |
| CLIQUE | x | |
| CONNECTEDCOMPONENTS | ||
| DFS | x | x |
| UNIONFIND | x | |
| CYCLE | x | x |
| LINEARASSIGNMENT | x | |
| MINCOSTFLOW | x | |
| MINCUT | x | |
| MINSPANTREE | x | |
| PATH | x | x |
| SHORTESTPATH | x | x |
| TRANSITIVECLOSURE | x | x |
| TSP | x | x |
Table 4 indicates, for each algorithm option in the SOLVE WITH NETWORK statement, which output options you can specify, and what their types can be. The types vary depending on whether nodes are of type STRING or NUMBER.
Table 4: Output Suboptions and Types by Algorithm
| Algorithm Option | ||
|---|---|---|
| OUT= Suboption | OPTMODEL Type | |
| BICONNECTEDCOMPONENTS | ||
| ARTPOINTS= | SET<STRING> or SET<NUMBER> | |
| BICONCOMP= | NUMBER indexed over links (<NUMBER,NUMBER> or <STRING,STRING>) | |
| CLIQUE= | ||
| CLIQUES= | SET<NUMBER,NUMBER> or SET<NUMBER,STRING> | |
| CONNECTEDCOMPONENTS= | ||
| CONCOMP= | NUMBER indexed over nodes (NUMBER or STRING) | |
| CYCLE= | ||
| CYCLES= | SET<NUMBER,NUMBER,NUMBER> or SET<NUMBER,NUMBER,STRING> | |
| LINEARASSIGNMENT | ||
| ASSIGNMENTS= | SET<NUMBER,NUMBER> or SET<STRING,STRING> | |
| MINCOSTFLOW | ||
| DUAL= | NUMBER indexed over nodes (NUMBER or STRING) | |
| FLOW= | NUMBER indexed over links (<NUMBER,NUMBER> or <STRING,STRING>) | |
| RC= | NUMBER indexed over links (<NUMBER,NUMBER> or <STRING,STRING>) | |
| MINCUT= | ||
| CUTSETS= | SET<NUMBER,NUMBER,NUMBER> or SET<NUMBER,STRING,STRING> | |
| PARTITIONS= | SET<NUMBER,NUMBER> or SET<NUMBER,STRING> | |
| MINSPANTREE | ||
| FOREST= | SET<NUMBER,NUMBER> or SET<STRING,STRING> | |
| PATH= | ||
| PATHSLINKS= | SET<NUMBER,NUMBER,NUMBER,NUMBER,NUMBER,NUMBER> or SET<STRING,STRING,NUMBER,NUMBER,STRING,STRING> | |
| PATHSNODES= | SET<NUMBER,NUMBER,NUMBER,NUMBER,NUMBER> or SET<STRING,STRING,NUMBER,NUMBER,STRING> | |
| SHORTESTPATH= | ||
| SPPATHS= | SET<NUMBER,NUMBER,NUMBER,NUMBER,NUMBER> or SET<STRING,STRING,NUMBER,STRING,STRING> | |
| SPWEIGHTS= | NUMBER indexed over sink and source node pairs (<NUMBER,NUMBER> or <STRING,STRING>) | |
| TRANSITIVECLOSURE | ||
| CLOSURE= | SET<NUMBER,NUMBER> or SET<STRING,STRING> | |
| TSP= | ||
| ORDER= | NUMBER indexed over nodes (NUMBER or STRING) | |
| TOUR= | SET<NUMBER,NUMBER> or SET<STRING,STRING> | |
Last updated: April 14, 2021