Originally posted by: SystemAdmin
Hi Paul,
I would like to thank you for your prompt response. Regarding the problem, I can provide the following details to the best of my knowledge.
Q1: First, while it doesn't matter much at this level of discussion, for future reference it will help if you specify what API you are using (C++, Java, Python, ...). You mentioned a macro, which sounds like the C interface (rather than Concert).
Ans: I am using C++. I was trying to use ILOCUTCALLBACKn(...) method to implement the cut callback.
Q2: Second, just to confirm, the master problem is a MILP (not an LP)?
Ans: Yes, the master problem is a MILP.
Q3: Third, do you try to derive new cuts at every node (even if the LP relaxation gives a non-integer solution), or only when an incumbent is found?
Ans: I would like to derive new cuts only when an incumbent is found. I am trying to optimize a problem, the formulation of which contains exponential number of constraints. I thus, want to implement these cuts only when the optimal solution to the MASTER_relaxed(n){master problem with n such cuts added} doesn't satisfy the separation criteria, i.e. not feasible for the actual solution set of the original Master problem.
Q4: Fourth, do you add cuts as local or global cuts in the cut callback? (If they are globally valid, which I suspect to be true, they should be added as global.)
Ans: You're right, I want to add these cuts as global, i.e. valid for the entire search tree.
>>> I've used callbacks on discriminant problems, which I suspect is similar to what you're doing. I generate cuts only when an incumbent is found, so I use both an incumbent callback and a cut callback. The incumbent callback tests new incumbents and, if necessary, uses a subproblem to generate a new cut, which is added to a queue in my code. The cut callback (automatically called at every node) checks the queue and, if a cut is queued, removes it from the queue and adds it to the problem.
This is exactly what I intend to do, however I am not really sure where to start reading about these implementations. Could you please provide me some reference or an example that might help!
Thanks again,
Avinash
#CPLEXOptimizers#DecisionOptimization