[Symphony] Change epsilon?

Michael Hennebry hennebry at web.cs.ndsu.nodak.edu
Fri Jun 24 13:03:43 EDT 2011


On Fri, 24 Jun 2011, Terry wrote:

> In one solution, SYMPHONY finds an integer variable is 2.00000989. How can I take the precision out a few more decimal places?
>
> What controls how close to an integer a variable must be? Is that epsilon? Can I change epsilon? It looks to be hard-coded. I tried changing granularity, but that's not it.

You can.  I don't remember how.
It might be a good idea sometimes.
Not this time.
Floating point computation is not exact.
Demanding six decimal places is already pushing it.
A better choice might be to use a callback to
see whether rounding produces a feasible solution.
If not, declare infeasiblilty and add a cut.

Suppose
x1 + x2 + x3 + x4 <= 3
0 <= x <= 1
If all x's are outside [.5, .8],
then rounding x will not violate
x1 + x2 + x3 + x4 <= 3

In the case of all binary variables, the range [1/(n+1), 1-1/(n+1)]
can be useful.
It guarantees that if rounding fails to produce a feasible solution,
a cut is readily found.

-- 
Michael   hennebry at web.cs.ndsu.NoDak.edu
"Pessimist: The glass is half empty.
Optimist:   The glass is half full.
Engineer:   The glass is twice as big as it needs to be."




More information about the Symphony mailing list