JuliaFirstOrder / ProximalAlgorithms.jl

Proximal algorithms for nonsmooth optimization in Julia
Other
130 stars 21 forks source link

Stronger stop criterion for PANOC+ #60

Closed aldma closed 2 years ago

aldma commented 2 years ago

Hi there again! Thanks for your tips.

This fix enforces a stronger stop criterion in PANOC+, in order to give stationarity guarantees for problems with locally Lipschitz gradient. This requires some more (gradient) evaluations though. When not used in adaptive mode (eg, if the Lipschitz constant is known), the previous criterion would work fine too.

Removed idle allocations.

codecov[bot] commented 2 years ago

Codecov Report

Merging #60 (8747a47) into master (b34a049) will increase coverage by 0.06%. The diff coverage is 100.00%.

:exclamation: Current head 8747a47 differs from pull request most recent head 558c075. Consider uploading reports for the commit 558c075 to get more accurate results Impacted file tree graph

@@            Coverage Diff             @@
##           master      #60      +/-   ##
==========================================
+ Coverage   89.66%   89.73%   +0.06%     
==========================================
  Files          22       22              
  Lines         939      945       +6     
==========================================
+ Hits          842      848       +6     
  Misses         97       97              
Impacted Files Coverage Δ
src/algorithms/panocplus.jl 94.25% <100.00%> (+0.42%) :arrow_up:

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 b34a049...558c075. Read the comment docs.

lostella commented 2 years ago

Looks good to me! It’s a little weird to have additional operations in the non-adaptive case, only for the sake of the stopping criterion (they could be performed in the stopping criterion itself, but then again they are not needed in the adaptive case). But I guess the adaptive mode is really the primary mode of operation, for this algorithm but really for all the forward-backward based ones.

We can revisit the code later here, if we find a better way to decouple algorithm from stopping condition.