[Cbc] Tie-breaking in the face of numerical instability

HAROLDO GAMBINI SANTOS haroldo at ufop.edu.br
Sun Jun 3 17:26:15 EDT 2018


HI,

Handling hierarchical objectives using very large/very small coefficients
is not recomended even if you use the best mip optimizers

this gurobi webminar explain those issues:
http://www.gurobi.com/resources/seminars-and-videos/numerical-issues-webinar

one approach that will work well, but maybe slower is

1. add only the first objective using normal coefficients in the objective
function,  optimize and store the value  f   for this component in the
objective function
2.  fix this component of the objective function in the model,  add the
secondary objective and optimize it

Cheers

Em Dom, 3 de jun de 2018 11:06, <rhavar at protonmail.com> escreveu:

> I'm more of a code-monkey than someone who understands how all this stuff
> works -- so if someone could sanity-check my idea and give feedback it
> would be greatly appreciated.
>
>
> I'm running cbc against problems that have realllly big constants, and it
> tends to lead to a bunch of numerical instability problems (e.g. missing
> solutions and the like ). And one thing that I would like to do is start
> adding "tie-breaking"  but the naive way just causes the instability issues
> to blow up.
>
> By "tie-breaking" I mean telling cbc that "Optimizing against obj1, but if
> multiple solutions have the same value ... then optimize against obj2".
> The naive way to do this is compute the max-possible value that  obj2 can
> be, and then tell cbc to optimize for:
>
> obj1 * (MAX_POSSIBLE_OBJ2+1) + obj2
>
> Which of course would work if it wasn't for the numeric instability
> issues.  However, I have a "smarter" idea, which is to run cbc twice.   The
> first time I optimize for obj1  and figure out what the value is. (Let's
> say = 1099511627768 ), then this time run cbc a second time but this time
> with an additional constraint:
>
> obj1 = 1099511627768
>
> And now optimize for obj2 instead of obj1
>
> --
>
> So my question for the list is, "is this a good idea"? And secondly, could
> something like this be supported natively by cbc, which would save me a
> lottt of plumbing work.
>
>
>
> -Ryan
>
>
> _______________________________________________
> Cbc mailing list
> Cbc at list.coin-or.org
> https://list.coin-or.org/mailman/listinfo/cbc
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20180603/47c5ca03/attachment-0001.html>


More information about the Cbc mailing list