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"
    • Constructor Detail

      • 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 Detail

      • 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