Originally posted by: SystemAdmin
DanielJunglas
trying to summarize ->1.You have a node that has an integral optimal solution to its LP relaxation.
Yes.
->2.CPLEX does not find that integral optimal solution. Instead it finds another solution (which is fractional) with the same objective function value.
Yes, CPLEX chose another fractional soluiton with same obj value.
->3.For this solution CPLEX invokes the cut callback.
Yes the cut callback is invoked to find violiated cuts.
->4. The cut callback returns eventually.
Yes, plese look at iteration information at node 4 in the attached file. x
->5. After the cut callback returns the branch callback is not invoked for that node.
Yes, CPLEX did not invoke branchcallback after the cutcallback at node 4. Plese refer to the attached file.
Questions: ->1. What is the sense of your objective function (min or max)?
I solved a minimization problem.
->2. What is the last objective function value you observe in the cut callback of the node in question? I.e., what does CPXgetcallbacknodeinfo(env, cbdata, wherefrom, 0, CPX_CALLBACK_INFO_NODE_OBJVAL, &obj) return in 'obj' right before you return from the callback?
Please refer to the attached file. The last objective value in the cutcallback is 2247350000 returned by CPXgetcallbacknodeobjval. CPXgetcallbacknodeinfo(env, cbdata, wherefrom, 0, CPX_CALLBACK_INFO_NODE_OBJVAL, &obj) return 'obj' with 2050748782.215820 right before I returned from the cut callback. CPXgetcallbacknodeobjval and CPXgetcallbacknodeinfo returned different node obj values. Actually CPXgetcallbacknodeinfo got same values of 2050748782.21582 at the beginning and end of the cutcallback.
At this node, I output the node file and solved it. The obj value was 2247350000.
->3.Does the cut callback add any cut?
At that node (say node 4), no cut was found.
->4.What is the optimal objective function value for your problem?
The optimal soluiton value is 2247350000.
->5.What is the value that CPLEX claims to be the optimal solution?
CPLEX calimed 2689650000 to the optimal soluiotn.
->6. How do you check that the branch callback is not invoked for the node in question? Do you track the sequence number of nodes in the cut and branch callback?
Yes, I tracked the course of soluiton. You may see from the attached file, I output some information when CPLEX invoked a callback.
#CPLEXOptimizers#DecisionOptimization