Originally posted by: SystemAdmin
[leo said:]
[quote author=prubin link=topic=366.msg1039#msg1039 date=1214691135]
I believe you have to keep track of added cuts yourself. AFAIK CPLEX does not have a method to get a list of user-added cuts. I think you can use the cbhandle argument to advantage here -- maybe keep copies of all your local cuts in a linked list and pass yourself pointers to the first and last entries in that list enforced at the current node via the cbhandle. I've never done this myself, though, since I use the Java API.
Thank you very much.
Do you mean that I can not get the updated node LP by CPXgetcallbacknodelp although I have added some local cuts at current node?
If CPLEXãâ¬â¬goes to the branched node of current node, I use CPXgetcallbacknodelp to get the node LP. Does this new node LP contain the cuts added at its parent node?
If both cases fail, I have to keep track of added cuts as you mentioned.
Becuase I can not write some constraints explicitly, I have to added the cuts based on the node relaxation solution. Then the cust are added as local cuts. I then solve the updated node lp and check new cuts. The above procedure is repeated until no cut can be found at each node.
So I have to know the updated node LP.
At current node, I can use another way to get the updated node LP indirectly. At first, I clone the node lp to clonelp. Then once new cut is found, I first add this cut to as local cut. At the same time, I can use add a new constraint to clonelp. Based on the updated clonelp, I can slove it again (indirectly solve the updated node lp) and try to get the cuts.
But if the added local cuts can not be shown in the children node LP by CPXgetcallbacknodelp, the problem may become more complicated. At that time, I have to keep track of added cuts at each node as you suggested. And I have to know the exact relation between the parent node and children nodes.
Do you have any suggestions? Thanks.
Leo
#CPLEXOptimizers#DecisionOptimization