I am investigating using maxflow to calculate the max flow from multiple

sources based upon network constraints. Is there a way to insure that all

nodes upstream of a constraint are reduced proportionately instead of having

the constraint being honored by reducing the flow on just the minimum number

of nodes needed to meet the constraint value.

Consider the following directed graph:

<http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/file/n4025881/Network-01.png>

When I calculate the maxflow with the attached program gt-test001.py

<http://main-discussion-list-for-the-graph-tool-project.982480.n3.nabble.com/file/n4025881/gt-test001.py>

, I receive the following results (minus the super nodes and reformatted for

clarity).

max flow = 39.0

E6 = 8.0

E7 = 8.0

E8 = 11.0

E9 = 12.0

E10 = 16.0

E11 = 21.0

E12 = 39.0

However, the treatment that I am looking for results in:

max flow = 39.0

E6 = 7.53

E7 = 8.47

E8 = 11.0

E9 = 12.0

E10 = 16.0

E11 = 21.0

E12 = 39.0

In this case V1 and V2 can deliver 17 but is restricted to 16 by E10 on the

outbound side of V3. I want to reduce V1 & V2 proportionately to their

capacity such that

E6 = (Capacity of E10) * (Capacity of E6)/((Capacity of E6) + (Capacity of

E7))

E6 = 16 * (8/(8+9)) = 7.53

And similarly:

E7 = (Capacity of E10) * (Capacity of E7)/((Capacity of E6) + (Capacity of

E7))

E7 = 16 * (9/(8+9)) = 8.47

I can implement this using a Linear Programming solver like glpk by adding

explicit constraints that enforce the proportionality between E6 & E7.

How should I model this when using a graph model?

Thanks in advance for your help and your tolerance of my ignorance

lbe