Skip to content

introduce a stopped_at function for solver states.#599

Merged
kellertuer merged 5 commits into
masterfrom
kellertuer/stopped_at
Apr 24, 2026
Merged

introduce a stopped_at function for solver states.#599
kellertuer merged 5 commits into
masterfrom
kellertuer/stopped_at

Conversation

@kellertuer

Copy link
Copy Markdown
Member

As proposed in #595 this introduces a function to access the iteration when a solver stopped.

@codecov

codecov Bot commented Apr 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (0e7305a) to head (388006b).
⚠️ Report is 1 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff            @@
##            master      #599   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           91        91           
  Lines        10025     10027    +2     
=========================================
+ Hits         10025     10027    +2     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@kellertuer kellertuer added the Ready-for-Review A label for pull requests that are feature-ready label Apr 24, 2026
Comment thread test/plans/test_gradient_plan.jl

@mateuszbaran mateuszbaran left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM up to one more test that I think would be nice to have.

@kellertuer
kellertuer merged commit 571b909 into master Apr 24, 2026
13 of 16 checks passed
mateuszbaran added a commit that referenced this pull request May 13, 2026
* initial code for GCP computation

* formatting

* expand a little

* add a few more methods

* Byrd's way of handling non-positive-definite (s, y) pairs in limited memory quasi-Newton

* start testing GCP

* A few more tests

* fix "typos"

* box tests in a separate file

* start integration of GCP into quasi_Newton

* integrate GCPFinder into direction update (why doesn't this work right?)

* return d from fill_rho_i!

* fix rho update

* first successful run

* address review, fix bug

* a little bit of docs

* fix extref again?

* StopWhenRelativeAPosterioriChangeCostLessOrEqual

* improve consistency of stepsize limits

* some fixes and tests around max_stepsize, bound_direction_tweak! and hess_val_eb

* fix Base.show for StopWhenRelativeAPosterioriChangeCostLessOrEqual

* more tests and change one name

* formatting

* more testing

* improve coverage

* improve coverage a bit more

* improve coverage; circumvent a Julia documenter bug

* improve coverage

* formatting

* fix a bug

* add max_stepsize function for ProbabilitySimplex and corresponding tests

* improve docs

* Apply suggestions from code review

Co-authored-by: Ronny Bergmann <git@ronnybergmann.net>

* address some review comments

* address more comments

* one more comment

* fix docs

* fixing extref

* don't specify arch

* expand docs

* address more review comments

* update Project.toml

* add some details and fix some links

* forgot an inversion

* optimize segment search by not requiring d_old; fix one test to have consistent, reasonable input

* we only need d_z/Y_tmp in the generic updater, not the limited memory one

* adapt to glossaries

* improve coverage

* streamline GCP direction search a bit

* rename

* refactor segment updater to be more minimal (common logic went to the GCP subsolver)

* more cleanup in GCP

* rearrange arguments to a more logical order

* CMA ES should probably use passed RNG for the initial point?

* move one temporary to the segment propagator that needs it

* improve coverage

* Add test for hitting multiple bounds in Generalized Cauchy Point Finder

* improve naming

* Remove IJulia from the tutorials project. Maybe that helps.

* rename t to stepsize in function names

* fix convergence indication for StopWhenRelativeAPosterioriCostChangeLessOrEqual

* rename GCP to GCD

* GCD in tutorial

* set seed to try avoiding random errors

* add missing page

* fix convergence indication of StopWhenChangeLess

* Update docs/src/solvers/generalized_cauchy_direction_subsolver.md

Co-authored-by: Ronny Bergmann <git@ronnybergmann.net>

* rename a few things, expand docs

* add missing docs entry

* improve names

* remove warning that isn't necessary

* formatting

* improve numerical robustness

* also detect nondescent direction at inner product 0

* Wrong eps was taken there

* fix test

* Update test/plans/test_stopping_criteria.jl

Co-authored-by: Ronny Bergmann <git@ronnybergmann.net>

* support stepsize limiting in LineSearchesStepsize

* fix + test

* skip non-coverable line

* fix a few issues with quasi-Newton

* improve coverage

* allow for larger max stepsizes in post-GCD linesearch when away from boundaries

* Add Hager-Zhang 2006 linesearch

* remove initial stepsize parameters; add some docs

* fix edge case issues of HZ line search; expand docs on GCD; use line search restart in QN; improve coverage; respect stepsize limit in HagerZhangInitialGuess

* test one more edge case

* test initialize_stepsize! for HZ

* improve coverage

* optimize quasi_Newton step

* more docs for HZ, a new test, removed commented out line

* use provided gradient for dphi_0 in HZ

* avoid cost reevaluation for stopping criteria in certain cases

* avoid tangent allocation

* optimize a few things

* improve coverage

* streamline set_stepsize_bound! logic

* generalize to Hyperrectangle at any position

* cleanup

* fix ambiguity, improve test

* address review regarding HZ stepsize

* expand changelog, stepsize initialization

* Update src/plans/stepsize/stepsize.jl

Co-authored-by: Ronny Bergmann <git@ronnybergmann.net>

* Make GCD more type stable

* Add simple directional stepsize limiting for completeness

* fix docs

* add an early termination condition for HZ linesearch; add show methods to two types

* test new printing methods

* improve coverage

* rename Finder to Subsolver, don't store manifold inside

* Apply suggestions from code review

Co-authored-by: Ronny Bergmann <git@ronnybergmann.net>

* address one more issue

* update docs

* address two more review comments (Github doesn't seem to be able to apply those suggestions from the browser interface)

* a bit more comments, a bit more UTF, a bit better name for an internal function

* Handle decorators in `get_cost`

* fix a bug noticed while working on RLM

* Remove and accidentially duplicate method definition.

* adapt one new StoppingCriterion to the new show/repr/status_summary style and fix one further bug.

* add status summary to QuasiNewtonLimitedMemoryBoxDirectionUpdate

* Better support for custom point types in conjugate_gradient_descent (#596)

* Bump crate-ci/typos from 1.45.0 to 1.45.1 (#597)

Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.45.0 to 1.45.1.
- [Release notes](https://github.com/crate-ci/typos/releases)
- [Changelog](https://github.com/crate-ci/typos/blob/master/CHANGELOG.md)
- [Commits](crate-ci/typos@v1.45.0...v1.45.1)

---
updated-dependencies:
- dependency-name: crate-ci/typos
  dependency-version: 1.45.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump julia-actions/setup-julia from 2 to 3 (#598)

* Bump julia-actions/setup-julia from 2 to 3

Bumps [julia-actions/setup-julia](https://github.com/julia-actions/setup-julia) from 2 to 3.
- [Release notes](https://github.com/julia-actions/setup-julia/releases)
- [Commits](julia-actions/setup-julia@v2...v3)

---
updated-dependencies:
- dependency-name: julia-actions/setup-julia
  dependency-version: '3'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* remove arch keyword since by now they all should run on 64 bit and it was too restructive for mac os

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ronny Bergmann <git@ronnybergmann.net>

* introduce a stopped_at function for solver states. (#599)

* introduce a stopped_at function for solver states.
* Add stopped_at to the docs.
* Add the AI section to the initial TOC.
* a bit of code formatting and one test.
* Fix a test.

* Increase GH Action dependabot to only update typos on minor/major and not on patch level (#602)

* Fix some issues with CG and certain coefficient rules when using restart (#604)

* refactor CGRule
* Fix some issues with CG + HZ
* provide a proper test + formatting
* fix CG test
* Refactor CG rules.
* Fix 2 cases where we implicitly relied on storage being updated in case it was not filled and now fill it explicitly.
* bump version.

---------

Co-authored-by: Ronny Bergmann <git@ronnybergmann.net>

* Unify REPL print and add a test.

* unify tests.

* Improve code cov.

* Update ext/ManoptManifoldsExt/manifold_functions.jl

Co-authored-by: Patryk Przybysz <PatrykPrzybysz.tl@interia.pl>

* add citation of the preprint

* add bibliography section

* Add Patryk to the about.

* Fix a typo.

* Fix a typo.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Ronny Bergmann <git@ronnybergmann.net>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Patryk Przybysz <PatrykPrzybysz.tl@interia.pl>
@kellertuer
kellertuer deleted the kellertuer/stopped_at branch June 26, 2026 15:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Ready-for-Review A label for pull requests that are feature-ready

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants