[Clp] large int (int64_t) overflow?

Michael Hennebry hennebry at web.cs.ndsu.nodak.edu
Sun Jul 19 12:42:54 EDT 2015


On Sat, 18 Jul 2015, Emerson wrote:

> Since I use bps as the unit of demand, a typical value is at the magnitude
> of 100,000,000,000, I use int64_t as its value type. But when the value is
> at this order, Clp seems can't handle too many inequalities like this. Is
> that because Clp uses type *double*? Or it will give up calculation and
> return 0(if it's feasible) if the number is too large?
> It's OK to lose some accuracy in my solution, *double* has 1.7e+308 range,
> so it shouldn't be a problem, right?

ClpSimplex uses some constants related to how accurate
its authors expect from a long series of calculations.
One such number is considerably larger than DBL_EPS,
probably 2**-53 .

> Any way to tune the solver to manipulate larger number or I have to
> decrease the number order when solving and enlarge it in the solution?

I think that there are options to handle just that,
but do not remember what they are.
If all else fails, you can alter the code.

Since you seem to be using a generic simplex solver on a network problem,
claiming more precision will probably work.

-- 
Michael   hennebry at web.cs.ndsu.NoDak.edu
"SCSI is NOT magic. There are *fundamental technical
reasons* why it is necessary to sacrifice a young
goat to your SCSI chain now and then."   --   John Woods


More information about the Clp mailing list