I'm runing NEFLOW and am getting flow conservation messages like the one below:
WARNING: Flow conservation cannot be achieved at the following nodes.
NOTE: The amounts after each node are the sum of flows through arcs directed toward that node, plus that nodes supply, minus the
nodes demand, minus the sum of flows through arcs directed from the node.
I am using the "EXCESS=ARCS" option. Shouldn't this prevent the flow conservation error from occuring?
> I'm runing NEFLOW and am getting flow conservation
> messages like the one below:
> WARNING: Flow conservation cannot be achieved at the
> following nodes.
> NOTE: The amounts after each node are the sum of
> flows through arcs directed toward that node, plus
> that nodes supply, minus the
> nodes demand, minus the sum of flows through arcs
> directed from the node.
Jim, I wrote proc netflow.
These messages are produced when flow conservation is not obeyed at a node. This happens when the solution at hand is infeasible. Did you let the optimizer run all that it want?- i.e. you did not stop it by setting a maximum number of iterations it is allowed to do. Please check there is not a message on the SAS log that may indicate optimization stopped prematurely. Sometimes the default max number of iterations may be too small for your problem and you will have to manually set it higher. There are several such options, MAXITS1, MAXITS2, MAXITERB- depends on the chosen optimizer and stage.
If the optimization went as far as it could and at the end indicated flow conservation was not obeyed, the problem is actually infeasible. PM me Trevor.Kearney@sas.com and I'll try to detect why- that can be hard though.
Netflow does do a lot of tests to catch infeasibilities, e.g. when arcs directed to a node have capacities that will prevent enough flow reaching that node to satisfy it's demand- that will be caught- and there are many variations of checks like that one, but most of these tests are on a "per node" basis, and infeasibilities can result when groups of nodes in effect cause flow getting stuck, flow vacuums, flow simply not given the chance to satisfy flow conservation at all nodes.
When netflow issues these flow conservation messages, there should following a list of nodes and the amount by which flow conservation is disobeyed. If all these quantities are small, you can conclude as accurate a solution as possible has been obtained and the solution really is feasible. Write minor flow conservation disobeyance as finite precision computations or, especially if the interior point algorithm was used, optimality and feasibility is approached but not quite reached.
If the infeasibility quantities are small, the messages may be produced because the flows being conveyed through arcs incident to a node are large. I have noticed this crops up sometimes when nodes have really big supplies or demands. The infeasibility tests are for absolute flow conservation disobeyance, not relative disobeyance.
> I am using the "EXCESS=ARCS" option. Shouldn't this
> prevent the flow conservation error from occuring?
No. EXCESS=ARCS/SLACKS/SUPPLY/DEMAND effect only the way the problem is set up before optimization commenses to cater to the difference between total supply and total demand or, for generalised networks, how the flow conservation constraints for supply or demand nodes are set up. The role of EXCESS= depends on whether the network is pure or generalised, whether total supply exceeds total demand or vice-versa, whether the THRUNET option has been specified, whether there are nodes with missing S supply, nodes with missing D demand, or both, and whether the equivalent LP problem to the network problem is set up and the interior point algorithm used to solve it. Please refer to the reference to get the info- but again it effects how the problem is set up and is not an option one would specify to invoke modelling devices to provide flow to nodes, or drain away flow, to prevent infeasibilities when problems are infeasible.
BTW. the EXCESS= option is relatively new and I'm very heartened to see someone giving it a go- Thanks.