Originally posted by: EdKlotz
CPLEX does not offer any such functionality. Nor does it have internal functionality to do this. So, the issue here goes beyond just making some currently internal functionality available to our users. That said, CPLEX's APIs are reasonably well suited to writing an application to do this. But, you would need to write the routine that creates the linear program that needs to be solved to generate the associated disjunctive cut. If you truly needed two different polyhedra (rather than two polyhedra that were actually the same except for one disjunctive constraint, the most common use of disjunctive cuts), you would need descriptions of them in separate CPXLP pointers or IloModel objects. You would then need to build the LP subproblem to generate the disjunctive cuts from these two objects, solve the LP, and return the cut. Definitely not trivial to do, but CPLEX does offer the functionality.
I can't speak for any other MIP solvers, but I suspect they have both the same functionality and limitations in this regard.
Integer Programming by Wolsey contains a useful description of disjunctive cuts.
#CPLEXOptimizers#DecisionOptimization