I am trying to use CPXaddusercuts to add cutting planes, which have not been violated yet but are likely to be violated as we go down the branch & bound tree, to the list (pool) of constraints. As per IBM documentation, CPLEX can add those cuts to the LP subproblem during MIP optimization which are violated by the LP relaxation solution. The problem is that even after successfully adding the cuts using CPXaddusercuts and knowing for sure that these cuts are going to be violated, I see no change in the CPLEX log file for branch and bound. Now, I am not sure about the following:

How to know whether CPLEX at all uses some of these user cuts from the provided pool? Am I missing something here? What is the correct approach to make use of my pool of user cuts?

  • $\begingroup$ Did you turn off linear preprocessing reductions? According to the docs for CPXaddusercuts, leaving that parameter turned on can result in some user cuts being discarded during presolve. $\endgroup$
    – prubin
    Commented May 22, 2021 at 19:10
  • $\begingroup$ Yes, I did. But could not find any difference. CPLEX simply add its cuts (if allowed) or continues with the branch and bound as usual. $\endgroup$ Commented May 22, 2021 at 19:31
  • $\begingroup$ How do you know the cuts are not being applied? I don't think absence of a mention of them in the log is necessarily an indication they were skipped, particularly if the log frequency is not set to 1 (log entry at every node). After the solve, do you call CPXgetnumcuts() with CPX_CUT_USER as the type argument? $\endgroup$
    – prubin
    Commented May 23, 2021 at 21:08
  • $\begingroup$ I was printing the node lp files using call back to check for the presence of my user-cuts. Now, I have also added CPXgetnumcuts() to get the numbers (if any) but I am getting 0 here as well. And this is when I have suppressed all CPLEX in-built cuts and provided all those cuts as user-cuts which were separated during pre-branch & bound cutting plane stage. Of course I removed these cuts from the model before submitting to CPLEX. $\endgroup$ Commented May 25, 2021 at 5:56


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.