JuliaManifolds / Manopt.jl

🏔️Manopt. jl – Optimization on Manifolds in Julia
http://manoptjl.org
Other
314 stars 40 forks source link

Change default stopping criterion in particle swarm #347

Closed mateuszbaran closed 6 months ago

mateuszbaran commented 7 months ago

Currently it is distance between old and new swarm but IMO norm of velocities would make more sense. Ref #345 .

kellertuer commented 7 months ago

That does sounds reasonable, but it would be great to back that up with (Riemannian or Euclidean) literature on that.

mateuszbaran commented 7 months ago

The closest thing I could find is move forcing: https://arxiv.org/pdf/1906.08867.pdf . Do you have any literature that uses the current stopping criterion?

kellertuer commented 7 months ago

No, sadly I do not, I think that came up as a spontaneous idea during the bachelor thesis, this code was part of.

mateuszbaran commented 7 months ago

OK, then it's not any better in this regard :wink:

kellertuer commented 7 months ago

That is exactly where my careful request about the citation comes from. If we improve it then with a reasonable source for that

mateuszbaran commented 7 months ago

It's effectively very similar in the idea, very easy to implement and much faster, I don't see any drawbacks. Standard stopping criteria for PSO are usually more simple, see https://web2.qatar.cmu.edu/~gdicaro/15382/additional/CompIntelligence-Engelbrecht-ch16.pdf . Here is a practical example: https://www.mathworks.com/help/gads/particleswarm.html .

kellertuer commented 7 months ago

I see, then sure, let's go for the one that's easier to compute :)

Compared to your idea of the change of the iterate / global best, Matlab at least has something like “if it has not changed for the last X iterations”, which for me also sounds reasonable.