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 left-parenthesis u comma v right-parenthesis 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