[Cbc] Tie-breaking in the face of numerical instability
rhavar at protonmail.com
rhavar at protonmail.com
Sun Jun 3 10:06:52 EDT 2018
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.coin-or.org/pipermail/cbc/attachments/20180603/3cffedab/attachment.html>
More information about the Cbc
mailing list