| 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. |