The NETFLOW Procedure |
The maximum flow problem (MFP) can be stated as follows: Given a directed graph with capacity on each arc , a source node and a sink node , find the maximum flow that can go from to , while obeying the flow conservation constraints at each node. You can solve such problems using the MAXFLOW option in the call to PROC NETFLOW.
Ordinarily many, if not all, arcs in an MFP network have capacities, and it is common that these arcs have zero costs. However, the NETFLOW procedure enables you to have nonzero costs to influence the optimal solution in cases where multiple maximum flow patterns are known to exist.
The following two subsections explain the role of the EXCESS= option in solving pure and generalized maximum flow problems.
You can specify the value of the INFINITY= option in the procedure statement, or you can use the default value of 99999999. You can also specify the BYPASSDIV= option. The default value for the BYPASSDIV= option is 100.
This scenario is depicted in Figure 5.30. Since the cost of the bypass
arc is unattractive, the optimization process minimizes the flow through it, thereby maximizing the flow through the real network. See the first subsection in Example 5.10 for an illustration.
Figure 5.30: Pure Maximum Flow Problem, EXCESS=ARCS Option Specified
This method of setting up a maximum flow problem does come with a drawback. It is likely to produce incorrect results if the following occur:
Since this network contains a node with a missing S supply value and a node with a missing D demand value, we have a situation similar to the one described in the section "Handling Missing Supply and Demand Simultaneously". Both of these nodes have slack variables. Usually, slack variables have zero objective function coefficients, but because the MAXFLOW option is specified, one of the slack variables must be attractive enough to make it worthwhile for flow to traverse the network. Figure 5.31 presents the scenario clearly.
If you are maximizing, then the objective function coefficient of the slack variable associated with the sink node is -1 if all other arcs have zero costs. Otherwise it is -(INFINITY / BYPASSDIV). If you are minimizing, then the objective function coefficient of the slack variable associated with the sink node is 1 if all arcs have zero costs. Otherwise it is INFINITY / BYPASSDIV. See the second subsection in Example 5.10 for an illustration of the EXCESS=SLACKS option in pure maximum flow problems.
Note: If the MAXFLOW option is not specified, these slack variables assume zero objective function coefficients, and the MFP may not be solved properly.
Figure 5.31: Pure Maximum Flow Problem with
EXCESS=SLACKS Option Specified
When you use the MAXFLOW option, the procedure sets up the problem in such a way that maximum flow traverses the network. This enables you to transform certain types of problems into maximum flow problems. One such instance is when you have a network where the amount of flow that is supplied or demanded falls within a range of values. The following section describes how to solve such problems.
Copyright © 2008 by SAS Institute Inc., Cary, NC, USA. All rights reserved.