Open azev77 opened 1 year ago
Thanks for the good suggestion. In fact I did compare SpeedMapping.jl with FixedPointAcceleration.jl for many problems. But I didn't know about FixedPoint.jl. Here are my impressions so far: In terms of implementation, SpeedMapping seems more lightweight than FixedPointAcceleration.jl and it has useful features like box constraints and the ability to do optimization. It is also quite stable as an algorithm. But in terms of number of iterations, Anderson Acceleration provides faster acceleration in several cases. Plus I find his implementation generally very good for numerical stability. So my advice for now would be: if your maps can be computed easily or you may benefit from bound checks (if some parameters can't be zero for instance), then SpeedMapping is a good option. But if your maps take a long time to compute such that the matrix inversion and the general overhead is not as taxing in comparison, then FixedPointAcceleration.jl with Anderson is probably the way to go. I'll check out FixedPoint.jl when I have the chance (sadly quite busy at the moment).
Sounds good. Would be nice if (at some point) you can post code for a comparison. Maybe w/ brief note: this algorithm is better for this type of problem, that alg is better for that type of prob...
We have wrapped it in NonlinearSolve.jl and we have started adding it to the SciMLBenchmarks. Here's one with it in there: https://docs.sciml.ai/SciMLBenchmarksOutput/dev/NonlinearProblem/quadratic_nonlinear/ . It seems to be pretty good stuff. FixedPointAcceleration.jl should be added to that shortly.
@s-baumann have https://github.com/s-baumann/FixedPointAcceleration.jl 8 acceleration algorithms:
@francescoalemanno has https://github.com/francescoalemanno/FixedPoint.jl