Originally posted by: EdKlotz
OK, so as Paul said, if you can ensure that the slacks for the rows you want to remove are basic, the resulting smaller basis remains primal feasible. But, unless you know something very specific about your LPs, you probably cannot prove that. So, you either need to pivot the slack into the basis yourself, or call functions do so. If you are using CPLEX's C API, the CPXpivotin routine will do this. However, it does assume that the constraints in question are inequality. If you use the C++ or Java APIs, no function explicitly does this. However, I had a look, and if you get delete the rows in any of the usual ways (e.g. IloModel::remove, IloRange.end(), IloLPMatrix.removeRows in Java), CPLEX internally will call the CPXpivotin routine, so it should work. I don't think this is documented functionality. However, I doubt it will change in future versions.
So, give this a try, and see if it works better.
Regarding some of the other comments on this thread, they all sound on target to me. If you delete constraints without ensuring the slacks of those constraints are basic, the resulting "basis" that CPLEX tries to use could be singular, or infeasible. Based on experience, it would take only a slight change to this advanced "basis" to make it less helpful than starting from scratch.
#CPLEXOptimizers#DecisionOptimization