Originally posted by: SystemAdmin
If you are solving a MIP, then there is no way to resume the solving process after having changed the model. CPLEX will always start from scratch; only the feasible solutions from the previous solve will be tried as a MIP start in the subsequent solve.
A very common (heuristic) approach for solving very big MIPs is the so-called branch-and-generate framework. Here, you would solve the LP relaxation using column generation (you would need to disable dual presolve reductions and remove the integrality constraints, then solve the model as LP, repeatedly add/activate columns with negative reduced costs, and resolve, typically with primal simplex). Then, you could fix one or many of the variables with fractional value to some integer (simulating branching), and resolve the LP, again using column generation to activate even more variables. Repeat this process until you have generated a reasonable number of variables, then turn the problem into a MIP and let CPLEX solve it (enable dual presolve reductions again!).
The final solution of this process is not necessarily optimal, since you have not generated all columns of the problem. If you like, you could now solve the fixed LP to get reduced cost values and duals and generate/activate additional columns, then solve the problem again as a MIP.
As you can see, the LP based branch-and-generate process is basically a procedure to quickly generate a bunch of useful columns. So it is a kind of preprocessing step to the main MIP based procedure (which you described in your post).
In the MIP based procedure I would not stop immediately after every new incumbent solution. I would let CPLEX continue to collect more solutions, and then inspect all of them (using the solution pool feature) to generate new columns for all of those solutions. In this way, you are generating many more useful columns per iteration of your algorithm.
Tobias
#CPLEXOptimizers#DecisionOptimization