Chapter 5 Network Flow Programming Methods
The focus of this chapter is on the development of algorithms for solving network flow problems. We begin with a discussion of the most prominent special cases, including the transportation problem, the shortest path problem, the maximum flow problem and their variants, and conclude with a presentation of the primal simplex algorithm for the pure minimum cost flow problem. Although virtually all of the special cases are instances of the minimum cost flow problem, a great deal can be learned by studying them separately. The individual algorithms provide insight into different ways of solving problems, and have the benefit of being extremely efficient. In addition, many applications of the minimum cost flow problem embody features of the special cases. From a modeling perspective, it is helpful to know how these features can be incorporated in broader formulations.
The transportation problem is concerned with finding an optimal distribution plan for a single commodity. A given supply of the commodity is available at a number of sources, there is a specified demand for the commodity at each of a number of destinations, and the transportation cost between each source-destination pair is known. In the simplest case, the unit transportation cost is constant. The problem is to find the optimal distribution plan for shipments from sources to destinations that minimizes the total transportation cost. Matrix Model The traditional way to describe a transportation problem is with a matrix or tableau as in Fig. 1. The m sources at which the commodity is available are identified by name at the left side of the matrix, and the n destinations to which the commodity is to be shipped are arrayed along the top. The quantities available at the sources are shown as numbers at the right of the matrix with si the supply at source i. The quantities required by the destinations are shown as numbers along the bottom with the demand dj required at destination j. The numbers in the body of the matrix are the unit costs of shipping from sources to destinations with cij the cost from source i to destination j. If it is not possible to ship between a given source and destination, a large cost of M is entered in the appropriate cell. A requirement of most solution algorithms is that total supply equal total demand; i.e., Σ i si = Σ j dj. This is known as the feasibility property. All instances of the traditional transportation problem can be modified so that this requirement is satisfied by simply adding either a dummy source if demand exceeds supply, or a dummy destination if supply exceeds demand.
Network Flow Programming Methods Destinations d2 … … c12 … c22 : … cm2 … d2
s1 s2 : sm
d1 c11 c21 : cm1 d1
dn c1n c2n : cmn dn
Supplies s1 s2 : sm
Figure 1. Matrix model of the transportation problem A solution to this model is an assignment of flows to the cells of the matrix. In general, we call x ij the flow in the cell representing shipments from source s i to destination dj. For a feasible solution, the sum of the flows across a row of the matrix must equal the supply at the associated source, and the sum of the flows down a column of the matrix must equal the demand at the associated destination. A numerical example is given in Fig. 2a. The optimal solution is displayed in Fig. 2b. a. Transportation model b. d1 d2 d3 Supply s1 9 12 10 15 s1 s2 8 15 12 15 s2 s3 13 17 19 15 s3 20 15 Demand 10 Received Optimal solution d1 d2 d3 0 5 10 10 0 5 0 15 0 10 20 15
Shipped 15 15 15
Figure 2. Instance of transportation problem in matrix format The transportation problem is a linear program so it can be solved using the simplex method described in earlier chapters. Because of its special structure, however, the simplex method can be considerably simplified. In the following, we assume that total supply equals total demand. Example Throughout this section we use the example presented in Fig. 3 in matrix or tableau format. The example has three sources and five destinations. The supplies at the sources are shown in the right column of the table, and the demands at the destinations are shown along the bottom.
Simplex Method for the Transportation Problem D1 S1 S2 S3 Demand 15 5 13 8 5 11 0 12 10 11 0 15 15 10 15 15 7 5 5 8 10 10 15 9 6 15 D2 16 D3 11 D4 11 15 D5 Supply
Figure 3. Example problem A cell is identified for each supply-demand combination, and the unit cost of shipping is the boxed number in the upper left corner of the cell. The bold number in the lower right is the flow assigned to the cell. Because the total supply equals the total demand, the flows in each row sum to the supply at the corresponding source. The flows in each column sum to the demand at the corresponding destination. The flows shown in Fig. 3 are feasible but not optimal. The goal of this section is to describe an algorithm to find the optimal flow, that is, the flow that minimizes total cost. Theory Primal Linear Programming Model Let x ij be the flow from source i to destination j. The transportation problem has a linear programming model. Minimize the total shipping cost: Minimize Z =
∑ ∑c x
i =1 j =1
subject to (i) the supply at each source must be used:
j =1 m
= si for i = 1,...,m.
(ii) the demand at each destination must be met:
= dj for j = 1, ...,n.
(iii) nonnegativity: x ij ≥ 0 for i = 1,...,m and j = 1,...,n. Although we have an equality constraint for every source and destination, one of the equality constraints of the model is redundant.
Network Flow Programming Methods This can be seen by separately adding the m supply constraints and the n demand constraints and observing from the feasibility property that the two sums are equal. Thus the m+ n equations are linearly dependent. As we will see, the transportation algorithm exploits this redundancy. Basic Solutions The primal problem has n + m constraints with one redundant constraint. A basic solution for this problem is determined by a selection of n + m - 1 independent variables. The basic variables assume values to satisfy the supplies and demands, while the nonbasic variables are zero. For the example problem, m = 3 and n = 5, so the number of basic variables is 7. Figure 3 shows a basic solution. The flows in the seven basic cells, identified with bold-faced numbers, uniquely satisfy the supplies and demands. The fact that some of the basic flows are zero indicates that this basic solution is degenerate. Cells are said to be dependent and do not form a basis if one can trace a closed path through the cells in the tableau. The path consists of a series of horizontal and vertical moves turning only at the selected cells. Figure 4 depicts a selection of dependent cells and the closed path that connects them. D1 S1 S2 S3 Demand 15 13 8 5 15 n 11 12 10
↓ ↓ ↓
Supply 15 15 15
Figure 4. Dependent cells A basis is any collection of n + m – 1 cells that does not include a dependent subset. The basic solution is the assignment of flows to the basic cells that satisfies the supply and demand constraints. The solution is feasible if all the flows are nonnegative. From the theory of linear programming we know that there is an optimal solution that is a basic feasible solution. Dual Linear Programming Model The dual of the primal linear programming model has a dual variable for each constraint of the primal. Let ui be the dual variable corresponding to the constraint PS(i). Let v j be the dual variable corresponding to the constraint PD(j). Then using the procedures of Section 4.4, the dual problem is constructed as below.
Simplex Method for the Transportation Problem
Maximize y 0 = subject to ui + v j ≤ cij
∑ djv j .
for i = 1,...,m , j = 1,...,n.
The values of ui and v j are unrestricted in sign for all i and j. Conditions for Optimality From duality theory we know that a complementary pair of primal and dual feasible solutions are optimal to their respective problems. To simplify our discussion, define the slack variable for the general dual constraint to be w ij , where w ij = cij – ui – v j. (1) The complementary slackness property states that for every basic primal variable the corresponding dual constraint must be satisfied as an equality; i.e., ui + v j = cij or w ij = 0 for every basic variable x ij (2)
Because of the redundant primal constraint, one of the dual variables can be arbitrarily set to zero. The others can be determined with Eq. (2). By construction we assure that the primal solution is feasible. If all the dual constraints are satisfied for the dual solution, both the primal and dual solutions are optimal. The condition for dual feasibility is as follows: ui + v j ≤ cij or w ij ≥ 0 for all nonbasic cells (3) This result is the foundation for the solution algorithm described below. In numerical examples, we use the graphical construction of Fig. 5 to show the dual variables and the corresponding dual slack variables. The dual variables ui are shown along the right margin and the variables v j are shown along the bottom. The dual slacks are shown in the nonbasic cells in the upper right corner. These values are zero for the basic cells and are not shown. D1 S1 S2 S3 Deman d vj 7 15 13 8 5 2 1 5 7 15 10 11 12 0 5 10 11 15 15 11 0 15 7 7 5 5 8 8 10 10 15 9 -2 6 -6 15 0 D2 16 D3 –3 11 D4 -4 11 D5 -5 15 4 Supply ui 8
Figure 5. Dual variables shown on the matrix
Network Flow Programming Methods
The tableau is constructed for any basic solution by arbitrarily assigning zero to one of the ui or v j variables. In the examples, we always assign the zero value to the row or column with the most basic cells. This simplifies the process of determining the other dual values. Given the basic cells, it is a simple matter to compute the values of the remaining n + m – 1 dual variables. This is done by solving the n + m – 1 simultaneous equations given by Eq. (2) using back substitution. Note that there is no requirement that ui or v j be nonnegative. Once the dual variables are determined, the values of w ij for the nonbasic cells are computed using Eq. (1). Figure 5 shows the complete tableau that we use for transportation problems. Given the basic cells, there is a unique assignment of flows to satisfy the supplies and demands. Once one of the dual variables is assigned arbitrarily to zero, the others are uniquely determined. The value of w ij is, in fact, the marginal benefit of allowing x ij to enter the basis. Evidently the basis picked for Fig. 5 is not optimal because some of the w ij are negative. The value of w 25 = -6 indicates that the objective value will be reduced by 6 for every unit increase in x 25. The primal simplex algorithm proceeds by allowing x 25 to enter the basis as described presently. The Simplex Algorithm Step 1.Construct the initial tableau. Prepare the initial tableau showing problem parameters. Start with some selection of independent basic cells for which the primal solution is feasible. Determine the unique values of the basic variables (cell flows) for this basis and place them in the cells. Step 2.Compute the dual variables for the current basis and check for optimality. a. Assign the value of zero for the dual variable of the row or column with the most basic cells. Determine the values of the others so that the complementary slackness condition (w ij = 0 for basic cells) is satisfied. Place these values at the boundaries of the tableau. b. For each nonbasic cell compute the dual slack variable w ij and place it in the body of the cell. c. If all the values of w ij are nonnegative, stop with the optimal solution; otherwise go to Step 3. Step 3.Change the basis a. (Find the cell to enter the basis) Select the entering cell as the one with the most negative value of w ij . b. (Find the cell to leave the basis). Construct the cycle that starts with the entering cell, passes through only basic cells, and
Simplex Method for the Transportation Problem
returns to the entering cell. Show the cycle in the tableau as a sequence of alternating vertical and horizontal lines connecting pairs of cells on the cycle. Mark the entering cell with a plus (+). Mark the first basic cell on the cycle with a minus (–). Alternately mark each basic cell on the cycle with (+) or (–) until the entering cell is reached. Find the basic cell marked with a minus having the smallest value of flow. This is the cell that is to leave the basis. If there is a tie, select any one of the tied cells arbitrarily. Let δ be the value of the basic variable for the leaving cell. c. (Change the basic solution). For every cycle cell marked with a plus, increase the basic variable by δ. For every cycle cell marked with a minus, decrease the basic variable by δ. Remove the leaving cell from the basis. Add the entering cell to the basis with flow equal to δ. d. Return to Step 2. Solution to the Example Problem We illustrate how the algorithm works with the example problem starting from the basic solution shown in Fig. 5. A step of the algorithm is completely described with a tableau similar to that shown in Fig. 6. The basic cells are identified by the cells with the flow indicated in the lower right. The dual slack variables are computed for the nonbasic cells and shown in the upper right. A cell with a negative w ij is selected to enter the basis as indicated by a + sign. We find the unique cycle formed by this cell and some of the cells of the current basis. The small arrows indicate the cells on the cycle. The signs with the arrows indicate the direction in which the basic flows will change. Note that the signs alternate in the cells of the cycle. Figure 6 shows these steps for the first iteration of the algorithm. D1 S1 S2 S3 Demand vj 7 15 13 8 5 2 1 5 7 15 10 11 12 0 5 10 11 15
D3 –3 15 7 0 15 7 11 9
D4 -4 -2 5 5 11 6
Supply 15 -6 15 10 10 15
ui 8 4 0
Figure 6. First iteration for example; x 25 enters the basis and x 35 leaves with δ = 10 The cells that have negative signs determine the maximum flow change in the cycle and hence the variable to leave the basis. In the example, cells (2, 3) and (3, 5) experience a decrease in flow. The
Network Flow Programming Methods minimum flow in these two cells determines the flow change, δ = 10. The basis change will have cell (2, 5) entering the basis and cell (3, 5) leaving. Figure 7 shows the tableau of the second iteration. D1 S1 S2 S3 Demand vj 11 15 13 8 5 2 1 5 11 15
D2 16 10 15 0 5 10 15
D3 –3 5 7 10 15 11 ↓+ 9
D4 -4 -2 5 5 6 11 6 8
ui 4 0
11 ↑+ 12
10 6 10
15 –4 15
Figure 7. Second iteration for example; x 14 enters the basis and x 23 leaves with δ = 5 The second iteration selects cell (1, 4) to enter the basis. The cycle formed is shown by the arrows, with the direction of flow change indicated by the signs of the cycle cells. The minimum flow in the cells containing negative signs is the value of the flow change, δ = 5. Both cells (2, 3) and (3, 4) have this value, and we select (2, 3) arbitrarily. Because of the tie for the leaving variable, the flow x 34 will be zero in the next tableau, a degenerate solution. The remaining iterations are shown in Figs. 8 – 10. All the values of w ij are nonnegative in the final figure, indicating that the optimum has been found. D1 S1 S2 S3 Demand vj 15 15
D2 15 5 2 -3 5 15 5 11 12 5 1 10 15 15 11 16
D3 1 4 15 15 11 ↓+ 9 7
D4 11 5 2 0 5 10 6 8
ui 0 –4
10 2 10
15 –4 15
Figure 8. Third iteration; x 31 enters the basis and x 34 leaves with δ = 0
Simplex Method for the Transportation Problem D1 S1 S2 S3 Demand vj 15 15
9 Supply 1 15 10 5 10 15 –7 15 ui 0 –4
D2 15 5 2 0 5 15 5 11 12 5 4 10 18 16 ↓+ 15 11
D3 -2 1 15 15 11 11 9 7
D4 11 5 2 3 5 10 6 8
Figure 9. Fourth iteration; x 13 enters the basis and x 11 leaves with δ = 5 D1 S1 S2 S3 Demand vj 13 15 13 8 5 5 15 10 16 2 4 15 5 11 12 5 2 15 11 10 15 11 5 10 10 D2 16 5 3 D3 11 9 7 5 2 1 D4 11 6 8 10 3 15 –5 15 D5 1 15 –4 Supply ui 0
Figure 10. Optimal solution Finding an Initial Basic Feasible Solution Algorithm The simplex algorithm starts from any feasible basic solution. When first encountering a problem, though, some procedure must be used to find this solution. A general algorithm follows based on the process of crossing out rows and columns until all the supply is exhausted and all the demand is met. Once again, we assume that the feasibility property holds. Initialization Step Draw a tableau showing all problem parameters. None of the rows or columns is crossed out. Iterative Step According to some criterion, select a cell that has not been crossed out. Let that cell be basic. Assign a value to the basic variable for the cell that will use up either the remaining supply in the row or the remaining demand in the column (i.e., pick the smaller of the two). Reduce the remaining supply for the row and the remaining demand for the column by the amount assigned. Cross out the row or column whose supply or demand goes to zero. If both go to zero, cross out only one.
Network Flow Programming Methods Stopping Rule If only one row or column remains, let all the cells not yet crossed out be basic and assign them all the remaining supply or demand. Stop with a basic solution defined by the selected cells. If more than one row and more than one column remain, go to iterative step. There are alternative possibilities for the selection rule in the iterative step. They differ with respect to the work required to carry them out and the quality of the initial solution they generate. Generally, methods requiring greater effort will yield better solutions. For hand calculations the effort may be justified. For computer implementations it is often true that the simpler methods are more effective because the iterative step of the transportation simplex algorithm is so efficient. Several alternatives are described below. Northwest Corner Rule The upper left-hand corner of the tableau is called the northwest corner. The rule is to select the uncrossed cell closest to the northwest corner. This is the simplest rule to apply. The initial solution used in the example, as seen in Figs. 5 and 6, was obtained by the northwest corner rule. Vogel's Method This method looks ahead one step and constructs a penalty for not being able to assign a flow to the remaining cells in a row or column whose cost is smallest, but instead having to pick the cell with the second smallest cost. In economic terms, the idea is to determine the opportunity cost associated with each possible assignment and then pick the cell with the greatest opportunity cost. To begin, compute for each uncrossed row the difference between the smallest cost in the row and the second smallest cost. Do the same for uncrossed columns. Select the row or column with the greatest of the differences. The rule is to choose the uncrossed cell in the selected row or column with the smallest cost. When done by hand, Vogel's method is usually performed directly on the tableau. The selection of basic variables in each iteration is accompanied by the crossing out of a row or column and the recomputation of differences as well as supplies and demands. The tableau becomes so messy, however, that we suggest using the format shown in Table 1 together with the transportation matrix. Each row of the table lists the row and column differences, the basic variable assigned, the adjustment of demands and supplies, and the row or column crossed out. Vogel's method on the example problem yields the optimal solution shown in Fig. 10 without additional iterations.
Simplex Method for the Transportation Problem Table 1. Format for Vogel computations Iteration no. 1 2 3 4 5 6 7 Row differences 1 2 3 0 3 1 0 0 4 1 3 3 2 4 1 –– –– –– Column differences 2 3 4 1 4 2 1 4 4 4 4 1 1 1 2 2 2 –– Basic variable 5 2 2 5 –– –– x 31 = 5 x 33 = 10 x 25 = 10 x 14 = 5 x 22 = 5 x 12 = 5 x 13 = 5 Action
1 5 –– –– –– ––
Only row 1 remains Only row 1 remains Russell's Method
d1 = 0, s3 = 10 Cross out column 1 d3 = 5, s3 = 0 Cross out row 3 d5 = 0, s2 = 5 Cross out column 5 d4 = 0, s1 = 10 Cross out column 4 d2 = 5, s2 = 0 Cross out row 2 d2 = 0, s1 = 5 d3 = 0, s1 = 0
This method makes use of the reduced costs associated with cells not yet assigned. At each iteration, compute for the uncrossed rows and columns ui = value of the largest uncrossed cost in row i. v j = value of the largest uncrossed cost in column j For each uncrossed cell compute w ij = cij – ui – v j. The rule is to choose the uncrossed cell with the largest negative value of w ij . Illustrating Russell's method for the example problem we obtain the results in Table 2. As can be seen, the basic feasible solution identified by this method is also optimal.
Network Flow Programming Methods Table 2. Computations for Russell’s method
Iteration no. 1 2 3 4 5 6 7
Rows (ui) 1 16 16 16 16 2 15 15 –– –– 3 12 12 12 12 1 15 15 15 ––
Columns (v j) 2 15 15 15 15 3 16 16 16 16 4 11 11 11 11 5 11 –– –– ––
Basic variable x 25 = 10 x 22 = 5 x 31 = 5 x 33 = 10 x 12 = 5 x 13 = 5 x 14 = 5
Action d5 = 0, s2 = 5 Cross out column 5 d2 = 5, s2 = 0 Cross out row 2 d1 = 0, s3 = 10 Cross out column 1 d3 = 5, s3 = 0 Cross out row 3 d2 = 0, s1 = 10 d3 = 0, s1 = 5 d4 = 0, s1 = 0
Only row 1 remains Only row 1 remains Only row 1 remains