Class MOPSO

All Implemented Interfaces:
Optimizer

public class MOPSO extends AbstractOptimizer
The MOPSO is an implementation of a multi-objective particle swarm optimizer. This implementation is based on the OMOPSO. Thus, this MOPSO is restricted to problems that are based on the DoubleGenotype.
See Also:
  • "Improving PSO-based Multi-Objective Optimization using Crowding, Mutation and e-Dominance, M. Reyes Sierra and C. A. Coello Coello, In Proceedings of Evolutionary Multi-Criterion Optimization, 2005"
  • Field Details

  • Constructor Details

    • MOPSO

      @Inject public MOPSO(Population population, Archive archive, IndividualFactory individualFactory, IndividualCompleter completer, Control control, Rand random, MutateDoubleUniform uniform, MutateDoubleNonUniform nonUniform, MutationRate mutationRate, Iteration iteration, int size, int archiveSize)
      Constructs a MOPSO.
      Parameters:
      population - the population
      archive - the archive
      individualFactory - the individual (particle) factory
      completer - the completer
      control - the control
      random - the random number generator
      uniform - the uniform mutation
      nonUniform - the non-uniform mutation
      mutationRate - the mutation rate
      iteration - the iteration counter
      size - the number of particles
      archiveSize - the size of the archive for the global leaders
  • Method Details

    • optimize

      public void optimize() throws StopException, TerminationException
      Description copied from interface: Optimizer
      Starts the optimization process.
      Throws:
      StopException - if the optimization is stopped
      TerminationException - if the optimization is terminated
    • move

      protected Map<Particle,Particle> move(Population population, Map<Particle,Particle> leaders)
      Determine the new positions for the Particles in the Population.
      Parameters:
      population - the population
      leaders - the map for the global leaders
      Returns:
      the map of the old to the new particle
    • initPopulation

      protected void initPopulation()
      Initialize the Population.
    • updateLeaders

      protected void updateLeaders(Archive leaders, Population population)
      Update the global leaders Archive.
      Parameters:
      leaders - the archive
      population - the population
    • updatePersonalBest

      protected void updatePersonalBest(Map<Particle,Particle> next)
      Update the personal best of each Particle.
      Parameters:
      next - the old and new positions
    • dominates

      protected boolean dominates(Particle old, Particle current)
      Returns true if the old particle position dominates the new one.
      Parameters:
      old - the old particle
      current - the new particle
      Returns:
      true if the old particle position dominates the new one
    • getLeaders

      protected Map<Particle,Particle> getLeaders(Archive leaders, Population population)
      Assigns each Particle a leader.
      Parameters:
      leaders - the archive of available leader
      population - the population
      Returns:
      the map of each particle to its leader