Violated BCH-generated cuts
Posted: Wed May 22, 2019 5:06 pm
I'm using the BCH cutting planes call (userCutCall ...) in cplex.opt to implement a branch-and-cut algorithm (i.e., trying to reduce the number of variables, but some constraints should be generated on-the-fly).
I can also print the generated cuts into the solution log through GAMS Embedded Python. Only fully integer solutions are used to generate cuts (userCutNewInt 1).
What I'm currently observing is that the cuts generated by BCH during the solution process are neglected at the optimum returned by GAMS/CPLEX.
I can see this because the cuts are printed for small test instances, and sometimes even the cuts stored in the most recent version of bchin.gdx are violated at the final solution.
The BCH cuts are certainly not completely ignored, as changing the sense of the BCH cuts (i.e., the sense_c parameter) changes the final solution.
Can such behavior be expected? It looks as the BCH-generated cuts do not become permanent in CPLEX and their use is to guide/accelerate the solution process, but not to add mandatory/fixed constraints to the model.
Adding new cuts is possible by solving the model multiple times and iteratively constraining it, but this seems to be less favorable, as each new model solve will start its branch-and-bound tree from scratch.
The used version of GAMS is 26.1.0
I can also print the generated cuts into the solution log through GAMS Embedded Python. Only fully integer solutions are used to generate cuts (userCutNewInt 1).
What I'm currently observing is that the cuts generated by BCH during the solution process are neglected at the optimum returned by GAMS/CPLEX.
I can see this because the cuts are printed for small test instances, and sometimes even the cuts stored in the most recent version of bchin.gdx are violated at the final solution.
The BCH cuts are certainly not completely ignored, as changing the sense of the BCH cuts (i.e., the sense_c parameter) changes the final solution.
Can such behavior be expected? It looks as the BCH-generated cuts do not become permanent in CPLEX and their use is to guide/accelerate the solution process, but not to add mandatory/fixed constraints to the model.
Adding new cuts is possible by solving the model multiple times and iteratively constraining it, but this seems to be less favorable, as each new model solve will start its branch-and-bound tree from scratch.
The used version of GAMS is 26.1.0