lanl-ansi / Alpine.jl

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

Alpine major refactor #215

Closed kaarthiksundar closed 1 year ago

kaarthiksundar commented 1 year ago

@harshangrjn @sujeevraja

This issue is to keep track of the planned refactor and new features for Alpine.jl . To complete this refactor, the following things need to be taken care of. This can be tagged as milestone for v1.0 of Alpine.jl conforming with all other JuMP-based solvers.

sujeevraja commented 1 year ago

Plan looks great.

harshangrjn commented 1 year ago

@kaarthiksundar Thanks for making these decisions independently without having sufficient discussions with relevant folks around. I am not clear on why any of these features need to be moved out of Alpine. Although I agree with a major refactoring for Alpine, in my opinion, cleaning up Alpine and having dedicated modules within Alpine to perform any of these features independently (very much like how PR.jl does) should be ideal. Very much in lines with https://github.com/networkx where all the refactoring of documentation and only redundant functionalities get separated out from Alpine. In fact, now that you think PR.jl is working well, I would suggest we should: 1) Bring in the functionalities of piecewise univariate functions with incremental formulations (like trigonometric functions) into Alpine (w/o additional package dependency) 2) Implement multilinear relaxations with linking constraints (which exists, but needs a clean-up) within Alpine, and be able to invoke of these relaxations independently without any parsing of JuMP model. A function which just takes a JuMP model, set of variables which needs to be partitioned, etc) 3) Apply OBBT only if necessary within Alpine, and invoke all the above and more relaxation models. 4) Apply convexity recognition, potentially as an Alpine model and then invoke the remaining functionalities.

If we concur on the above suggestions, of course I am also open to suggestions for brining more functionalities (which are necessary), I will be happy to discuss with you guys.

kaarthiksundar commented 1 year ago

Great then. Let us keep this issue open, so that we can keep track of progress. This hopefully should be done in a year's time depending on time bandwidth. As things start combining, I will send a Pull Request. We will also modify tasks as we make progress.

harshangrjn commented 1 year ago

Closing it for now, but we can always re-open considering how progress happens.