Set up parameters and initialize the number of iterations to zero. Generate a random population of particles: Evaluate the fitness of the particles and set the local best location for each particle equal to its current location. Form the Pareto front and make a list of particles belonging to the front. Build the singular point. Find the closest particle to the singular point and establish it as swarm leader. While not in termination-condition, do the following: (a) Execute from i = 1 to number of particles. Start (i) Change the position of the particle: Determine the inertia parameter , according to (3.8). Calculate the new velocity, , for particle according to (3.4) or (3.5). Set a new position, , for particle according to (3.7). (ii) Calculate the new fitness function vector for particle in its new position. (iii) If the new fitness function vector for particle dominates the fitness function vector that the particle had before moving to the new position; then set the new position as the best position currently found by particle i. (iv) If particle is in the list of particles belonging to the Pareto front then: if the new fitness function vector may also be a point on the Pareto front and this new position has at least one of its neighbors located further than the minimal permissible distance from any of the objectives, then add a new particle j (a clone of i) with and located at the current position of i; else try to add (if possible) the particle i (at its new position) to the Pareto front; if the particle is added, remove from the list any dominated solution; dominated clones are eliminated from the swarm. (v) If particle is closer to the singular point than any other particle in the swarm, then set particle as the leader of the swarm with regard to the singular point. (vi) If particle is not currently the leader of the swarm, but coincides in position with the leader, then re-generate particle randomly. End (b) Increase the iteration number. Show the Pareto front and related results.
Pseudocode 1: