Skip to content

Commit 7cb7d8a

Browse files
committed
Merge branch 'master' into dev-0.6
2 parents dbc1da0 + 0e92b74 commit 7cb7d8a

2 files changed

Lines changed: 26 additions & 6 deletions

File tree

Changelog.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,24 @@ This is a breaking change since the JuMP extension is dropped.
5050

5151
### Changed
5252

53+
* The default restart rule for `conjugate_gradient_descent` is now `RestartOnNonDescent` instead of `NeverRestart`, which makes the algorithm more robust to non-convexity and numerical issues. The old default can still be used by explicitly passing `restart_condition=NeverRestart()`. (#604)
54+
* `HagerZhangCoefficientRule` now has a safeguard against the denominator being too close to zero (the `denom_threshold` field). By default it is set to 1.0e-10. You can set it to a lower positive value (or even zero) to weaken the safeguard, but it is recommended to keep it to avoid numerical issues. (#604)
55+
* introduce for all `Rule`s also a variant without being encapsulated in a memory, where the old values have to be passed as keywords. This is now used by the `ConjugateGradientBealeRestartRule` when evaluating its inner rule. (#604)
56+
57+
## [0.5.36] April 24, 2026
58+
59+
### Added
60+
61+
* a function `stopped_at(state)` to access the number of iterations it took a solver to stop. (#599)
62+
63+
### Fixed
64+
65+
* a small bug where `get_count(sc::StopWhenAny, Val(:Iteration))` wrongly reported it stopped before the first iteration when it actually did not yet stop. (#599)
66+
67+
## [0.5.35] April 16, 2026
68+
69+
### Changed
70+
5371
* `NonlinearLeastSquaresObjective` is now called `ManifoldNonlinearLeastSquaresObjective` (#569).
5472
* This is a breaking release in order to move a few parts to a unified naming and since we
5573
discontinue the `JuMP` extension. (#532)

test/plans/test_conjugate_gradient_plan.jl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,21 @@ Manopt.update_rule_storage_vectors(::DummyCGCoeff) = Tuple{}
1717
p0 = [1.0, 0.0]
1818
pr = DefaultManoptProblem(M, ManifoldGradientObjective(f, grad_f))
1919
cgs2 = ConjugateGradientDescentState(
20-
M;
21-
p = p0, stopping_criterion = StopAfterIteration(2),
22-
stepsize = Manopt.ConstantStepsize(M, 1.0), coefficient = dur2,
20+
M; p = p0,
21+
stopping_criterion = StopAfterIteration(2),
22+
stepsize = Manopt.ConstantStepsize(M, 1.0),
23+
coefficient = dur2,
2324
)
2425
cgs2.X = [0.0, 0.2]
2526
# Fake update history to get a certain old X and old p
2627
cgs2.coefficient(pr, cgs2, 0)
2728
# the inner check is 0.2 which is still less than 0.3
2829
@test cgs2.coefficient(pr, cgs2, 1) != 0
2930
cgs3 = ConjugateGradientDescentState(
30-
M;
31-
p = p0, stopping_criterion = StopAfterIteration(2),
32-
stepsize = Manopt.ConstantStepsize(M, 1.0), coefficient = dur3,
31+
M; p = p0,
32+
stopping_criterion = StopAfterIteration(2),
33+
stepsize = Manopt.ConstantStepsize(M, 1.0),
34+
coefficient = dur3,
3335
)
3436
cgs3.X = [0.0, 0.2]
3537
# Fake update history to get a certain old X and old p

0 commit comments

Comments
 (0)