Network Simplex Algorithms

advertisement

Chapter 11

Minimum Cost Flows: Network

Simplex Algorithms

1

Network Simplex Algorithm

Streamlined implementation of the bounded variable simplex method on the network.

(See Application 9.6 for an application of the minimum cost flow problem.)

 Formulation: N is n

 m matrix min cx s.t. Nx = b

0

 x

 u

Optimality conditions of the bounded variable simplex method:

Let

 denote the dual variable associated with the mass balance constraints.

N ij

: a column of N corresponding to arc (i, j) = e reduced cost c ij

= c ij

– ( 

(i) -

(j)) = c ij i

– e j

-

(i) +

(j)

 c ij

.

Network Theory and Applications 2010

2

For nonbasic variables:

If c

If c ij

 ij

0

 x ij

0

 x ij

For basic variables:

= 0

= u ij c ij

= 0

The set of basic variables corresponds to a spanning tree in the network.

How to represent the spanning tree and perform operations on the spanning tree?

Use three arrays pred(i), depth(i), and thread(i) to represent a spanning tree.

Network Theory and Applications 2010

3

1

8

2

6

5

7

3

4

9 i pred(i)

1 2 3 4 5 6 7 8 9

0 1 2 3 2 5 5 6 6 depth(i) 0 1 2 3 2 3 3 4 4 thread(i) 2 5 4 1 6 8 3 9 7

 thread: define a traversal of a tree. obtained by depth-first search of nodes

(follows the contour of the tree ignoring revisited nodes, preorder)) can find all descendants of a node i easily (using depth).

Network Theory and Applications 2010

4

Relationship between basis and spanning tree

Rank of N

(n-1) (sum of rows = 0)

Show than rank(N)

(n-1) by showing (n-1) linearly independent columns of

N (spanning tree)

 Ex) rearrange rows and columns of the submatrix for a spanning tree starting from leaf of the tree using preorder (reverse order)

1

3

2

5 4

Network Theory and Applications 2010

5

3

1

4

2

(2, 4) (1, 2) (3, 5) (3, 1) artif

 

1

1

0

0

0

0

0

0

1

1

0

0

1

0

1

0

0

0

1

1

0

0

0

0

1

 

5

Converse) (n-1) linearly independent columns of N

 spanning tree

Pf) Suppose not a spanning tree, then there exists a cycle W.

Take

(i, j)

W

(

1)N ij

=

 for backward arc in W.)

(i, j)

W

(

1)(e(i) – e(j)) = 0. (Use +1 for forward arc, -1

Hence the columns are linear dependent.

 Thm) (n-1) linearly independent columns of N

 spanning tree.

 2 approaches:

Drop one constraint

 Add an artificial variable to a row of N (take the node as root of the tree)

(can take the dual value

(r) = 0 for the root node from

B = c

B for basis B)

Network Theory and Applications 2010

6

 LP operations:

Computing basic feasible solution and dual solution

: x

B

: Bx

B

= b – Lx

L

Bx

B

= b’,

– Ux

U

, B: lower triangular solve by substitution

(on network, determine flows starting from leaf nodes)

:

B = c

B

, solve by substitution

(on network, determine

 starting from root node using c ij

-

(i) +

(j) = 0 )

Actually, x and

 are updated, rather than computed again from scratch.

Finding an entering nonbasic variable:

 c ij

 c ij

< 0 and x ij

> 0 and x ij

= 0 (x

= u ij ij

(x ij

< u ij

): want to increase flow on arc (i, j)

> 0): want to decrease flow on arc (i, j)

Leaving basic variable: Have x

B

= B -1 b – B -1 Lx

L

– B -1 Ux

U

If increase entering x

If decrease entering x j j

(x

(x j j

 x j

 x j

+ t): x determine largest t satisfying l

B

B

 x

B

(t) = x

 u

B

B

* - td (d: updated column of x

- t): x

B

(t) = x

B

* + td j

)

Update solution

Network Theory and Applications 2010

7

Operations on the network:

Computing

:

 set

(1) = 0 (root)

Following thread(i) index, use c ij

-

(i) +

(j) = 0 i = pred(j)

(i, j)

A

 

(j) =

(i) – c ij

(j, i)

A

 

(j) =

(i) + c ij

Computing x

B

:

For (i, j)

U, set x ij

= u ij

, b’(i) = b(i) – u ij

, b’(j) = b(j) + u ij

.

Then determine tree arc flow starting from leaf node.

if j is leaf node, (i, j)

A

 x ij if j is leaf node, (j, i)

A

 x ij

= -b’(j), b’(i)

= b’(j), b’(i)

 b’(i) – x b’(i) + x ij ij

= b’(i) + b’(j)

= b’(i) + b’(j)

Read thread(i), and put them into a stack. Pop operation chooses leaf nodes always.

Network Theory and Applications 2010

8

(continued)

Finding initial tree: no details here

Choosing an entering arc: some rules possible

Determining leaving arc:

Suppose arc (k, l) entering

 creates a cycle W orientation of cycle: same as (k, l) if x kl

= 0, opposite direction of (k, l) if x kl

= u ij

.

(want to increase flow along the cycle)

 ij

= u ij x ij

,

– x ij

, if (i, j)

W and forward arc if (i, j)

W and backward arc

= min{

 ij

: (i, j)

W}.

Augment

 units of flow on W. A blocking arc leaves tree.

In simplex method, x

B

(t) = x

B

* - td (increase case) d = B -1 N kl or Bd = N kl

(N kl

+

W

(

1)N ij

= 0, +1 for forward, -1 for backward) choose d ij

= -1, if (i, j) is forward arc in W

= +1, if (i, j) is backward arc in W

= 0, otherwise is solution

 corresponds to flow augmentation on W.

Network Theory and Applications 2010

9

(continued)

Identifying the cycle:

Identify apex (join) of the cycle W. Use predecessor, depth index to identify apex.

Also compute

 at the same time.

Updating the tree:

No details here. Refer Chapter 19, Linear Programming, Vasek Chvatal, 1983.

Can use thread to update the representation of the tree easily.

Network Theory and Applications 2010

10

Download