Add callbacks to all solver states and interfaces, and start a developer guide section - #626
Conversation
…e (interfaces / developer guide / design concepts) – and start rambling about Callbacks.
…pt.jl into kellertuer/Callbacks
…ural (debugs.jl), base ones with singular (e.g. debug.jl) ...refactor debug and action into these two parts.
…lbacks to vector bundle newton.
# Conflicts: # Changelog.md
…ding a struct field refactor compared to 29 with.
...also fix the outdated docs of TR where an outdated subsolver was specified still.
|
If this is not so urgent, then I can continue a bit refactoring the docs; I can also do that on a next PR though. Besides looking at the changes once more, we should also properly deprecate the |
...and update the technical details to be folded.
…t_cost specialization
|
I've added a small tutorial for callbacks, fixed coverage regression, and fixed one bug I've encountered while fixing the regression (HZ status summary not working right). |
|
I think we can postpone further rework on the docs a bit and merge this. Reworking the docs will also require a bit of moving function definitions around – I want to get rid of the plan/ folder basically, but that should maybe not delay this PR. |
mateuszbaran
left a comment
There was a problem hiding this comment.
Sure, I think this looks good now (up to that one character 🙂 )
Co-authored-by: Mateusz Baran <mateuszbaran89@gmail.com>
|
Nice. I am just leaving right now, but I could bump version and such tomorrow morning and then merge and register. |
This PR introduces callbacks into the solver interface by adding a field to all solvers.
The documentation is refactored to some extend to split the former
planinto a Developer guid (base/) and the library section of common elements that solvers share (commons) – which is also reflected in the code organisation.Solvers to refactor
adaptive_regularization_with_cubics(AdaptiveRegularizationState)alternating_gradient_descent(AlternatingGradientDescentState)augmented_Lagrangian_method(AugmentedLagrangianMethodState)convex_bundle_method(ConvexBundleMethodState)ChambollePock(ChambollePockState)cma_es(CMAESState) - state is now also exportedconjugate_gradient_descent(ConjugateGradientDescentState)conjugate_residual(ConjugateResidualState)CoordinatesNormalSystemStatenot necessarycyclic_proximal_point(CyclicProximalPointState)difference_of_convex_algorithm(DifferenceOfConvexState)difference_of_convex_proximal_point(DifferenceOfConvexProximalState)DouglasRachford(DouglasRachfordState)exact_penalty_method(ExactPenaltyMethodState)Frank_Wolfe_method(FrankWolfeState)gradient_descent(GradientDescentState)gradient_sampling(GradientSamplingState) state is now also exportedinterior_point_Newton(InteriorPointNewtonState)LanczosStateLevenbergMarquardt(LevenbergMarquardtState)LevenbergMarquardtBoxSubsolvernot necessarymesh_adaptive_direct_search(MeshAdaptiveDirectSearchState)NelderMead(NelderMeadState)particle_swarm(ParticleSwarmState)primal_dual_semismooth_Newton(PrimalDualSemismoothNewtonState)projected_gradient_method(ProjectedGradientMethodState)proximal_bundle_method(ProximalBundleMethodState)proximal_gradient_method(ProximalGradientMethodState)proximal_point(ProximalPointState)quasi_Newton(QuasiNewtonState)StepsizeStatenot necessary, mainly serves as an interims storage.stochastic_gradient_descent(StochasticGradientDescentState)subgradient_method(SubGradientMethodState)truncated_conjugate_gradient_descent(TruncatedConjugateGradientState)trust_regions(TrustRegionsState)vectorbundle_newton(VectorBundleNewtonState)In the end
get_callbacksonce all states have that implemented, cf.Manopt.jl/src/base/state/callback.jl
Lines 48 to 52 in 15e7e54