Skip to content
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

Add a layer to Optimization.jl to enable automatic mcmormick relaxations? #6

Open
Vaibhavdixit02 opened this issue Aug 1, 2024 · 1 comment

Comments

@Vaibhavdixit02
Copy link

Hey, this is very cool and something I'd be very interested in supporting in Optimization.jl. I think something like https://github.com/Vaibhavdixit02/SymbolicAnalysis.jl/blob/main/src/canon.jl where the McMormick transformations get applied as rules in a pass during initialization of OptimizationCache from a OptimizationProblem would be really awesome https://github.com/SciML/OptimizationBase.jl/blob/ddbf374206c8f80ce0e6e6fcf31f4841e55cc886/src/cache.jl#L111-L134. Happy to flesh this out myself if you are onboard or if someone wants to do it I can help out. Look forward to your thoughts!

@RXGottlieb
Copy link
Member

Hey, thanks for your interest! Applying the tools in SourceCodeMcCormick during initialization would be a good idea (and it would simplify things from a user perspective). Currently, the ParBB algorithm that uses SCMC-generated functions is built as an extension of the EAGO solver, which relies on JuMP. One potential future direction for SCMC is to automatically interpret the objective and constraints during initialization, as you said.

The main challenge, I think, is that solvers in general won't know how to handle SCMC functions. ParBB, for example, needed a custom parallelized branch-and-bound algorithm to realize any of the GPU benefits of SCMC. If the SCMC utilities were built into something like Optimization.jl during initialization, I imagine they would only be useful if EAGO with the ParBB extension were also incorporated. Without the parallelization aspect, it may be more efficient, currently, to use the McCormick.jl package for generating McCormick-based relaxations for deterministic global optimization purposes. Feel free to reply here or reach out to us via the PSORLab email ([email protected]) if you'd like to discuss further!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants