1

I wonder why if we run several times exactly the same instance in Cbc Coin-or, we get always the same solution, but not in a same solving time. Is it because of random choices during the branch and cut ? Is it because of threads matters ?

If someone have an idea please tell me.

  • 1
    Depends on details. If you write some fibonacci calculator, the same computation will also be slightly different (due to operating system thread scheduling and side-load). Not sure about what kind of granularity you are talking about. The more focused question is probably: is Cbc *deterministic*? In serial mode (no multithreading) it should be. In parallel mode it won't be. There is lots of research into *performance variability* in combinatorial optimization, but one (of many) hypothetical reasons (in multithreading): OS side-load -> sometimes thread A finished before B, sometimes not. – sascha Apr 22 '21 at 22:04
  • 1
    ...A wants to focus search on path X, B want to focus search on path Y. As A was earlier, path X it is (maybe it's good, maybe it's bad). Doing *bad decisions / branchings* early is hard to recover from (in general). So the simple earliness of A vs. B can lead to completely different *searches*. (It's probably important to remark that threads are usually *sharing* information. They are not independent and can interfere with each other: "this path looks good -> follow me") – sascha Apr 22 '21 at 22:05
  • @sascha thank you for your answer, everything you told me is very interesting, but the fact is that I fixed my number of threads on 1, so no multithreading. But there remains this "non-determinism". – albin cintas Apr 23 '21 at 07:27

0 Answers0