Let me start by describing what I would call "standard" Benders decomposition, and see if it applies to your situation. You start with a MIP model (containing both integer and continuous variables). You pull out the continuous variables and the constraints that involve them and make that the subproblem. The master problem contains the integer variables (plus one continuous variable representing the contribution of the subproblem to the objective function), plus any constraints that involve only the integer variables (and, as the algorithm progresses, the Benders cuts).

If this is what you are doing, the annotation system will do it for you. You give CPLEX the original, full model (containing all variables, integer and continuous), and either use annotations to tell CPLEX which parts go into the subproblem or let CPLEX figure that out automatically. CPLEX takes care of the cut generation process in your flowchart.

On the other hand, in some situations the subproblem does not come from the original, full MIP model, but arises externally. If that is the case, meaning you do not have a MIP model with all the variables and constraints in it to start, you cannot use annotation. So you either need to drop OPL and switch to an API that allows callbacks (C, C++, Java, ...) or you need to stick with OPL, write a script that alternates between master and subproblem, and do this the way Jack Benders originally did. That means you solve the master (either to "optimality" or to some time or solution limit), test the solution in the subproblem and, if the subproblem generates any cuts, add them to the master problem and the solve the master again (starting over each time).

#DecisionOptimization#MathematicalProgramming-General