coin-or / python-mip

Python-MIP: collection of Python tools for the modeling and solution of Mixed-Integer Linear programs
Eclipse Public License 2.0
513 stars 88 forks source link

Explicitly provide supported versions of Cbc #351

Open chrissype opened 1 year ago

chrissype commented 1 year ago

The packaged Cbc binaries are quite old (2 years). So I've built my own more modern version of Cbc using coinbrew, which sort of works. But Cbc behaves variously in strange ways, some of which are documented in other issues here. Would it be possible perhaps to provide explicitly supported versions (or even just commits on master) of Cbc, so that we can be sure the binaries we build are compatible?

chrissype commented 10 months ago

anyone?

tkralphs commented 10 months ago

What do you mean by "compatible"? And what do you mean by a "more modern version of Cbc"? Do you mean the tip of the master branch? Since two years ago (actually, since quite a few years ago), not very much has changed in master that would affect performance, other than refactoring, which was not supposed to have affected anything algorithmic at all. As it turned out, it did in fact affect execution is some subtle ways because of unintended changes in the way default parameters are set.

Can you give an example of what you mean by Cbc behaving "variously in strange ways." @h-g-s can correct me, but I believe python-mip was developed natively for Cbc master, which at the time had the same API as 2.10. There were some bugs introduced when the refactor branch was merged in master, but I think those have been fixed. If the weirdness you're referring to is about performance, you could try the latest release, which may exhibit less performance variability.

In any case, if you provide more details, I/we can probably advise. Someone else (@h-g-s ?) can jump in and correct me, but I don't think the master version of Cbc has been particularly well-tuned across a wide variety of problems. My impression is that the added methodological elements were tuned to work well on specific classes of difficult problems, so performance may be more variable than the releases.