-
Notifications
You must be signed in to change notification settings - Fork 32
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Switch testing to use HiGHS.jl #133
Conversation
Cbc cannot be properly silenced (jump-dev/Cbc.jl#168); using HiGHS avoids the need for the workaround in #131 of using `optimize_silent!`.
9d240aa
to
90245b0
Compare
Nice
Do solve times noticeably increase? Or is this some other difference? |
We verified that solve times do increase noticeably, particularly for https://github.com/vtjeng/MIPVerify.jl/blob/c73137e4e8ef2366633768de854b9198ed9576df/test/batch_processing_helpers/integration.jl Our comparison runs:
Each
This is measured via MIPVerify.jl/test/TestHelpers.jl Lines 14 to 23 in c73137e
Line 77 in c73137e
While there is some variability in I/O (we download a dataset as part of the tests), the differences are significant enough to be notable.
Time in
|
Job Name | Cbc.jl / s |
HiGHS.jl / s |
---|---|---|
Julia 1.6 - macos-latest | 39.8 | 133 |
Julia 1.6 - ubuntu-latest | 34.1 | 144 |
Julia 1.6 - windows-latest | 34.0 | 115 |
Julia 1 - macos-latest | 67.0 | 150 |
Julia 1 - ubuntu-latest | 51.8 | 126 |
Julia 1 - windows-latest | 52.6 | 132 |
Additional Stats
Job Time
Job Name | Cbc.jl / s |
HiGHS.jl / s |
---|---|---|
Julia 1.6 - macos-latest | 675 | 752 |
Julia 1.6 - ubuntu-latest | 501 | 726 |
Julia 1.6 - windows-latest | 839 | 763 |
Julia 1 - macos-latest | 661 | 807 |
Julia 1 - ubuntu-latest | 512 | 596 |
Julia 1 - windows-latest | 692 | 1089 |
Time in Test
Job Name | Cbc.jl / s |
HiGHS.jl / s |
---|---|---|
Julia 1.6 - macos-latest | 300 | 417 |
Julia 1.6 - ubuntu-latest | 259 | 415 |
Julia 1.6 - windows-latest | 222 | 344 |
Julia 1 - macos-latest | 305 | 441 |
Julia 1 - ubuntu-latest | 278 | 349 |
Julia 1 - windows-latest | 270 | 348 |
Interesting. Can you dump a MPS file that has a significantly different runtime between Cbc and HiGHS? My guess is that these sorts of models are not part of MIPLIB, and so they don't show up in the benchmarking that the HiGHS team is using to guide performance. |
Regardless, HiGHS is simpler and maintained, so it's worth using over Cbc irrespective of performance. |
Yes, it doesn't increase the absolute test time significantly (both give me enough time to make coffee after running the command). Furthermore, I'm happy to not have to write all the wrapper code to silence Cbc. |
Here's a MPS file showing a significant difference: https://gist.github.com/vtjeng/991f17f1ad375def5951185ce89ab79a (Cbc v1.0.3, HiGHS v1.4.3, JuMP v1.8.1, Julia 1.7.1) On my machine:
That shows a ~order of magnitude difference in solve times (5 vs 50s) One possibility I was wondering about was whether this is a numerical tolerance issue. This package works with neural networks and constraints for my problem are generated by having the solver minimize/maximize the values of intermediate nodes within the neural network; so the constraints to variables look like this:
|
Cbc cannot be properly silenced (jump-dev/Cbc.jl#168); using HiGHS avoids the need for the workaround in #131 of using
optimize_silent!
.Diff excluding #131 for easier comparison: 243ec69...vtjeng/silence-output-w-HiGHS.
This increases test times slightly, but is worth it to avoid the log spam without additional complexity.