Add atol to ConstrainedManifoldObjective#545
Conversation
kellertuer
left a comment
There was a problem hiding this comment.
Here is a few comments.
Currently also the tests fail, in short, because one function accessing atol is not careful about that the objective (similar to a state= might be wrapped . and the wrapped variant does not have the field atol of course.
I can try to take a look, but first I have some other duties to follow up on
Thanks for this contribution; numerically that is quite useful to have.
Ah, I see: |
|
Sure the doc string could be updated. The “lazy” solution is to directly document that is works on arbitrary decorators, I.e. for https://manoptjl.org/stable/plans/objective/#Manopt.AbstractDecoratedManifoldObjective s, |
|
Ah, |
|
Ok, I unwrap the |
|
Nearly, I would have added a second line of the function signature, the first one with |
Makes sense. Like 61630cd? |
|
We are getting close. One small thing that is now formally breaking (but I think no one used it probably) is that removing the keyword atol is breaking. We could maybe keep it (but no longer document it), default to nan, and if it is not nan we add a warning stating that that is deprecated and for now ignored. That way it does not affect code cov, we could document that as well and then it is nice and nonbreaking. |
|
Ok, I added that in the last commit. |
|
We then also do no longer have to store atol ;) For the rest, I would just have to check the changelog, the rest looks good |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #545 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 90 90
Lines 9967 9970 +3
=========================================
+ Hits 9967 9970 +3 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
…551) Updates the requirements on [ManifoldsBase](https://github.com/JuliaManifolds/ManifoldsBase.jl) and [Manopt](https://github.com/JuliaManifolds/Manopt.jl) to permit the latest version. Updates `ManifoldsBase` to 2.2.1 - [Release notes](https://github.com/JuliaManifolds/ManifoldsBase.jl/releases) - [Changelog](https://github.com/JuliaManifolds/ManifoldsBase.jl/blob/master/NEWS.md) - [Commits](JuliaManifolds/ManifoldsBase.jl@v0.1.0...v2.2.1) Updates `Manopt` to 0.5.28 - [Release notes](https://github.com/JuliaManifolds/Manopt.jl/releases) - [Changelog](https://github.com/JuliaManifolds/Manopt.jl/blob/master/Changelog.md) - [Commits](v0.1.0...v0.5.28) --- updated-dependencies: - dependency-name: ManifoldsBase dependency-version: 2.2.1 dependency-type: direct:production dependency-group: all-julia-packages - dependency-name: Manopt dependency-version: 0.5.28 dependency-type: direct:production dependency-group: all-julia-packages ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
As discussed in #540, this adds a field
atoltoConstrainedManifoldObjective, which is used inis_feasibleto test if the constraints are satisfied. Before, the code tested for floating point equality, which is usually very prone. I used 1e-13 as defaultatolbecause this is what is used inDebugFeasibility:Manopt.jl/src/plans/debug.jl
Line 461 in c10dec8