The minimum cost flow problem
Solving the minimum cost flow problem
Simplifying assumptions Network is connected (as an undirected graph). – We can consider each connected component separately. Network is uncapacitated (no arc constraints). – We can transform any network to an equivalent uncapacitated network. – Alternatively: The network simplex algorithm can be extended to handle upper and lower bounds. The network has no 2-cycles – Only simplifies the exposition. The algorithm works also with 2-cycles.
LP formulation Minimize Subject to Following the book we negate both sides of equality constraints – this is done to change the sign of the dual variables.
LP formulation and the dual Minimize Subject to Primal: Dual: Maximize Subject to
Introducing dual slack variables Minimize Subject to Primal: Dual: Maximize Subject to
Complementary slackness
Primal and dual network simplex Both algorithms work with both a primal and a dual solution. The (primal) network simplex algorithm is used when we have a feasible primal solution. The dual network simplex algorithm is used when we have a feasible dual solution.
Spanning trees and bases
The primal solution T Start at the leaves of T working towards root, assign flow to satisfy balance constraints. T – The edges in T are basic variables. T Assign flow 0 to edges not in T. T – The edges not in T are non-basic variables.
The dual solution
Understanding dual solution
Minimize Subject to Primal: Dual: Maximize Subject to
Observation
(Primal) network simplex algorithm
Updating the dual solution T Removing leaving arc splits T into two trees. Updating dual variables: – If entering arc point to root-containing tree then increase all dual variables in non-root-containing tree by old dual slack of entering arc. – Otherwise, decrease all dual variables in non-root- containing tree by old dual slack of entering arc.
Updating the dual solution Updating dual slack variables: Subtract old dual slack of entering arc to arcs bridging in same direction as entering arc, and add old dual slack of entering arc to arcs bridging in the opposite direction of entering arc.
The dual network simplex algorithm
Finding the entering arc T Removing leaving arc splits T into two trees. Consider all arcs that bridge the two trees in opposite direction as leaving arc. When such an arc enters the basis all these gets decreased by the dual slack of the chosen arc. Hence we must select one with minimum dual slack.
Initialization We can use the dual network simplex algorithm to find the first feasible solution for the (primal) network simplex algorithm. Temporarily set all costs to 0. Then the the dual solution is automatically feasible. Running the dual network simplex algorithm results in a feasible primal solution (i.e. a feasible flow). We can then revert to the original costs and proceed with the (primal) network simplex algorithm.
Termination As with the normal simplex algorithm we may have degenerate pivot operations and cycling. We can apply the usual anti-cycling rules. We can still have stalling: long sequences of pivot operations that do not improve the solutions. Specialized pivot operations exists that prevent stalling as well.
Complexity In practice the general simplex algorithm very efficient. In practice the network simplex algorithm is much faster than the general simplex algorithm. In worst case the network simplex algorithm can still make exponentially many pivot operations.