[Clp] Accumulating rounding errors cause solution to become infeasible

Sebastian Theophil stheophil at think-cell.com
Wed Sep 23 13:15:08 EDT 2009


Hi,

in our application we solve a linear constraint system many times with
little changes. Very roughly, it looks like this:

OsiClpSolverInterface solver;

AddConstraints(solver);

while( something ) {
	AddMoreConstraints( solver );
	solver.initialSolve() / resolve();
	...

	RemoveConstraints( solver ); // undo all changes performed
_inside_ loop
}

Now I have a reproducible scenario in which the problem becomes
infeasible during the second run of the while loop but not in the first.
I've seen that some primal solution values have nudged below the lower
bound by just a little bit more than the tolerance (about 10e-7). 

The problem disappears if I save the problem to an mps file after
AddConstraints(solver) and if I reinitialize the solver at the beginning
of each while loop.

How can I debug the problem? The sequence of solver operations during
the first loop is very long, so it isn't practical to create a complete
driver for the problem. Is there some magic setting that forces the
solver to set variables to their precise lower bounds?

Of course, I hesitate to just increase the feasibility tolerance unless
someone recommends to do that for a reason :-) 

Thanks for the help
Sebastian

--
Sebastian Theophil . stheophil at think-cell.com
Software Engineer
 
think-cell Software GmbH . Invalidenstr. 34 . 10115 Berlin, Germany 
http://www.think-cell.com . phone +49-30-666473-10 . toll-free (US) +1-800-891-8091
Directors: Dr. Markus Hannebauer, Dr. Arno Schoedl . Amtsgericht Berlin-Charlottenburg, HRB 85229





More information about the Clp mailing list