I'm a beginner in C++ and want to implement Benders decomposition in C++ using CPLEX. I'm gonna use it for a special case study, so I need to customize the cuts to minimize the optimality gap. However, I don't know much about implementation. I was wondering if anyone can suggest a reference (books, papers, codes) begin with.
I think I just answered this on my blog, but for the record, CPLEX does not (as far as I know) provide access to Benders cuts when the problem is partitioned automatically using annotations. So to merge cuts from subproblems, you would need to employ callbacks.
There are two things to note regarding the idea of taking a linear combination of cuts. First, the combined cut likely would be weaker than the individual cuts, so any reduction in computational time from keeping the number of cuts smaller might well be offset by requiring more iterations in the master problem (and possibly more calls to the callback). Second, CPLEX automatically does some cut management. The cuts are added to a cut pool, and the ones that are nonbinding (for some number of iterations) are held out of the "working set" and only checked when necessary. So adding $K$ cuts does not necessarily mean that the master problem constraint matrix being used for pivoting has $K$ rows more than it started with.