Originally posted by: JimDan
Greetings,
I am referring to paper "Enhancements of spanning tree labelling procedures for network optimization" by Barr, Glover and Klingman. This paper provides details of efficient basis update for the primal network simplex method.
The method proceeds by maintaining a tree T rooted at node r with dual value 0. Once an arc (p,q) enters the basis, a cycle if formed and a min ratio test determines the leaving arc (u,v) so that the tree structure is maintained. Rooting a tree T at node r means that node r is the only node at depth/level of 0. All other nodes have a depth/level greater than 0 depending on the number of hops to be taken to reach the root node.
Note that given T, if one removes arc (u,v), the tree splits into two smaller trees, T1 and T2 (say).
One of the steps of the basis exchange is that the dual values of nodes either in T1 (that subtree that contains r) or T2 (that subtree that does not contain r) have to be updated so as to maintain complementary slackness conditions. There are rules that the authors specify to choose T1 or T2 whose duals are to be updated. The basic idea is to choose that subtree for dual update which has the least number of nodes.
Now, suppose T1 (which contains r) is chosen for dual value update. Then, there need not be any node in new basis tree that has dual value 0.
After a series of iterations, this could lead to values of dual variables that increase without bound. Not that this is a problem, but in certain cases, after a large number of simplex iterations, the dual values could exceed the integer limit of variables in Visual C++.
I was wondering if anyone with experience working with primal network simplex codes knows how to handle this issue.
One thought that comes to my mind is that if the value of any dual (assume all duals have nonnegative values) exceeds some large positive integer M, visit each node and reset its dual by subtracting M from each dual value.
Could we do any better than this? How does netopt deal with this issue?
Thanks in advance.
#CPLEXOptimizers#DecisionOptimization