Originally posted by: SystemAdmin
>
> My LP has:
> 2,980 columns, 884,000 rows and 1,023,936 nonzeros.
> The reduced LP has:
> 1,694 columns, 8374 rows and 16,166 nonzeros.
I may be a bit lost here. Is the "reduced LP" the first LP after CPLEX is done presolving it, or are we talking about two distinct LPs here? If it is the presolved LP, then somewhere near 90% of your constraints are redundant, and a reasonable place to start would be trying to figure out if there is an easy way to recognize the redundant ones and not include them in the first place. If these are two distinct LPs, never mind.
How do you remove constraints? Are you using IloMPModeler.remove()?
In the C++ API, model (IloModel) and solver object (IloCplex) are separate objects, and IIRC removing model objects goes faster if you first kill the extracted solver object. In the Java, API, model and solver are essentially one object (IloCplex), and I'm not sure whether that makes model changes slower in Java than in C++ (or whether CPLEX automatically kills and reextracts the solver instance when it sees the model being tweaked).
My impression is that when a significant portion of a model is being changed, it seems to be faster to delete the model entirely and rebuild from scratch.
Paul
Mathematicians are like Frenchmen: whenever you say something to them, they translate it into their own language, and at once it is something entirely different. (Goethe)
#CPLEXOptimizers#DecisionOptimization