-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Rework high level interfaces #392
Conversation
…and make them typed." This reverts commit 2484fae.
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #392 +/- ##
==========================================
+ Coverage 99.76% 99.90% +0.13%
==========================================
Files 77 77
Lines 8256 8220 -36
==========================================
- Hits 8237 8212 -25
+ Misses 19 8 -11 ☔ View full report in Codecov by Sentry. |
…JuliaManifolds/Manopt.jl into kellertuer/rework-high-level-interfaces
The TCG has some strange ambiguities, that I still have to look at. but all other high-level interfaces do not have ambiguities any longer. |
Small update: For now any single of the remaining 6 ambiguities, when trying to fix them, the number only goes further up. I am a bit los on this by now, since trying to reduce ambiguities only increases them (with my limited knowledge). Some are also due to a deprecated signature so we can maybe leave these out in the end. Maybe the reasonable solution is to make a breaking release that sets the Hessian to be mandatory, then the user would have to pass the approxHessian themselves. |
…st; Aqua now works.
The code with mandatory Hessian is so much cleaner. So this will be part of 0.5.0 – so nothing urgent and I will wait for a few other issues to be resolved and check whether we have other breaking changes we should consider / include then. |
Oh tests might be a bit tricky, because we first have to bump version on ManoptExamples.jl it seems for the tests. |
This is mainly waiting for JuliaManifolds/ManoptExamples.jl#16 and is (again) not urgent. So we can also think a bit about what else “to break” to improve. |
Oh ManoptExamples only works with Julia 1.8, so I would either have to raise the Julia version here as well or run the tests with manoptExamples only on Julia 1.8 but not on 1.6 |
…1.7 and with 0.1.7 weakly later).
# Conflicts: # Changelog.md # Project.toml # src/solvers/augmented_Lagrangian_method.jl # src/solvers/exact_penalty_method.jl # test/test_aqua.jl # test/test_deprecated.jl
@mateuszbaran I do not seem able here to get RecursiveArrayTools (now a weak dependency here as well) to work fine with Statistics. Any ideas? Today was rally not my day. My progress over several hours can bee strictly upper bounded by zero; and locally all works fine. edit: and now I do not know why it works now. Well,... |
…g like this maybe? Locally all works fine. This seems to be the setup from Manifolds where this works?
Ah, I see you've figured it out already. |
My main problem is, I neither know what I actually did wrong nor how I fixed it (in basically total confusion). But it works now and for this PR I am even only 2 stepsize rules aways from finishing all rework. |
I think this is good to go (was a bit more work than I thought) – and turned out quite nice I think @bvdmitri could you maybe check whether the new docs that provide the new interface are understandable? These are
If you have time, maybe give this new version a test run – if not, that is of course also fine @mateuszbaran if you have time – the high level interfaces have now been reworked, so there are no warnings from Aqua any longer, especially no ambiguities, start points I would like to merge this maybe towards the end of the week, so if you have time to comment on these changes, that would be great – I think this still works as intended; I hope I have documented all breaking changes. Overall this breaking change is mainly unification of documentation and keyword names and improvements on Usability, since |
Ah, the info box is a function (with that type as a variable, exactly because I want to just fix the English in one place ;) and maybe I set that in copy. paste not correctly. Will check – also your other findings; thanks for checking! edit: And thanks again for the nice feedback – that does still not excuse me being unconcentrated when doing all this copy-pase-work – I should probably read the docs one more time myself as well. The typos you found are already fixed :) |
Co-authored-by: Mateusz Baran <[email protected]>
I might consider in a later PR to also introduce the factory at least to some stopping criteria ( thanks again for all the ideas and contributions! |
This is an approach to fix #381
🛣️ Roadmap
get/set_manopt_paramater
to justget/set_parameter
since it is no longer exported – and it makes the code a bit more readablestaibilize=
keyword in Quasi newton to aproject!=
keyword as in the other solvers.update_stopping_criterion!
set_parameter
, since the dispatch by the first type should be good enough.an idea could be to put the semantic explanation with the “easy to use” part (like
AverageGradient()
) and put the details like fields of the structs as well as a reference to the interface into theAverageGradientState
docs.StopWhenChangeLess
StopWhenGradientChangeLess
StopWhenAny
as factories and “producing” them before is a bit too tough, so I will leave this as is for now.inequality_constrains
andequality_constrains
keyword arguments toinequality_constraints
andequality_constraints
respectively. This ensures they are correctly passed to theConstrainedManifoldObjective
constructor