JuliaManifolds / Manopt.jl

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

Change default stopping criterion in particle swarm #347

Closed mateuszbaran closed 8 months ago

mateuszbaran commented 10 months ago

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

kellertuer commented 10 months ago

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

mateuszbaran commented 10 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 10 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 10 months ago

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

kellertuer commented 10 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 10 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 10 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.