lanl-ansi / Alpine.jl

A Julia/JuMP-based Global Optimization Solver for Non-convex Programs
https://lanl-ansi.github.io/Alpine.jl/latest/
Other
244 stars 39 forks source link

WIP: Add support for Xpress as mip_solver. #119

Closed hellemo closed 4 years ago

hellemo commented 5 years ago

I had a go at adding support for Xpress. Xpress requires time limit as integer, with a suggested fix here, but this might not be the best way to fix it. Open for suggestions.

A change in Xpress.jl to make the XpressSolver struct mutable is necessary for this to work, addressed in this PR: https://github.com/JuliaOpt/Xpress.jl/pull/37

codecov[bot] commented 5 years ago

Codecov Report

Merging #119 into master will increase coverage by 0.33%. The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #119      +/-   ##
==========================================
+ Coverage   77.09%   77.42%   +0.33%     
==========================================
  Files          15       16       +1     
  Lines        3152     3101      -51     
==========================================
- Hits         2430     2401      -29     
+ Misses        722      700      -22     
Impacted Files Coverage Δ
src/Alpine.jl 100.00% <ø> (ø)
src/algorithm.jl 76.19% <ø> (+1.70%) :arrow_up:
src/amp.jl 88.29% <ø> (-0.72%) :arrow_down:
src/bounds.jl 84.43% <ø> (-4.40%) :arrow_down:
src/embedding.jl 94.04% <ø> (-1.14%) :arrow_down:
src/heuristics.jl 36.23% <ø> (-0.70%) :arrow_down:
src/log.jl 90.82% <ø> (-1.60%) :arrow_down:
src/matrix_opt_interface.jl 28.00% <ø> (ø)
src/moi_function2expr.jl 86.20% <ø> (ø)
src/multi.jl 62.98% <ø> (-2.14%) :arrow_down:
... and 16 more

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 5637b75...6e83d6f. Read the comment docs.

harshangrjn commented 4 years ago

@hellemo Sorry for the delay on getting to this PR. Since Alpine just got updated to support JuMP v0.21+ and MOI, can you please update this PR relevant to Alpine v0.2.0. Since I do not have Xpress, if you can ensure it runs fine with the recent version of Xpress.jl, that would be great. Thanks!

hellemo commented 4 years ago

Great news!

I updated the PR and as far as I can tell the only thing holding support for Xpress back it that Xpress demands time limit set as integer, addressed in https://github.com/jump-dev/Xpress.jl/pull/99. I successfully ran all the tests with Xpress in place of Cbc locally with that change applied.

Not quite sure why this PR is now ended up so enormous, comparing from my fork only shows the minor changes from current master.

harshangrjn commented 4 years ago

@hellemo Thanks for your quick update. The reason this commit looks so big is because it is counting changes of all updates we did for supporting MOI, compared to your original PR which was submitted when Alpine was on the older version. Looks like all the tests are passing too. Would you mind sending this as a separate PR w.r.t the current master/v0.2.0 so that your changes will reflect correctly? In which case, I shall just delete this PR and merge your newer one.

hellemo commented 4 years ago

Right. I figured the rebase would take care of that, but nevermind, I'll close thins and start a new one.