cms-patatrack / The-Optimizer

Mozilla Public License 2.0
3 stars 4 forks source link

Make particles move toward points on the pareto front instead of a single global best #4

Closed bucket420 closed 1 year ago

bucket420 commented 1 year ago

Right now, a particle's velocity is updated based on the global best. However, since we have multiple equally good solutions, the global best is just the first one that appears, which is a bit arbitrary. This can cause particles to cluster in a particular region.

I'd suggest that we choose multiple particles on the pareto front as "swarm leaders" instead of a single one. In this PR, I just pick a random point on pareto front for each particle to follow, but there can be heuristic approaches to choose swarm leaders, which we can explore later.

For comparison, here are the results from running pixel track optimization:

With multiple swarm leaders, the particles converge more nicely to a curve, and particles are more evenly distributed on the pareto front.

This PR is dependent on #3.

rsreds commented 1 year ago

Removed dependency from PR #3. Check if still works as intended.

bucket420 commented 1 year ago

Removed dependency from PR #3. Check if still works as intended.

yep, it's still working

rsreds commented 1 year ago

I want to keep this but as a different optimizer, or as an optional setting for the MOPSO. Since it's different than the "regular" definition of the MOPSO. We should maybe discuss different implementation for the selection of the leaders. Maybe check some literature.