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

Add option to use starting value as local solution for presolve #218

Closed blegat closed 1 year ago

blegat commented 1 year ago

For some problems, we have good feasible solution to use as locally optimal solution and we want to skip the local optimization step of the presolve.

cc @Shuvomoy

harshangrjn commented 1 year ago

Thanks @blegat ! Had this in mind for some time. Within the lower bounding iterations, the local_solve function is invoked after every iteration. Do we need to deactivate the local_solve calls in the entire algorithm, or just at the presolve step?

codecov[bot] commented 1 year ago

Codecov Report

Merging #218 (ff9e84a) into master (de2b6ca) will decrease coverage by 0.11%. The diff coverage is 73.68%.

@@            Coverage Diff             @@
##           master     #218      +/-   ##
==========================================
- Coverage   87.26%   87.15%   -0.12%     
==========================================
  Files          16       16              
  Lines        2977     2982       +5     
==========================================
+ Hits         2598     2599       +1     
- Misses        379      383       +4     
Impacted Files Coverage Δ
src/nlexpr.jl 91.44% <ø> (-0.03%) :arrow_down:
src/main_algorithm.jl 84.17% <50.00%> (-1.18%) :arrow_down:
src/log.jl 90.16% <75.00%> (ø)
src/MOI_wrapper/MOI_wrapper.jl 84.18% <100.00%> (ø)
src/heuristics.jl 73.07% <100.00%> (ø)
src/solver_options.jl 100.00% <100.00%> (ø)
src/utility.jl 87.79% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

Shuvomoy commented 1 year ago

Hi @harshangrjn , for the application we have in mind, deactivating the local_solve calls just at the presolve step is the right thing to do. @blegat let me know your thoughts.

blegat commented 1 year ago

Yes, we just want to disable it at the presolve step and this is what this PR is doing.