Algorithm 2. Modified PSO Algorithm.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

for each cluster do

for i = 1 to P do

pi ←initialize_particle()

li ← pi

if i = 1 or fitness(li) > fitness(g) then

g ← li

for it = 1 to M do

for i = 1 to P do

rp, rg ~ uniform(0.0, 1.0)

pi ← mutation(pi, ω)

if rp < φp then

pi ← crossover(pi, li)

if rg < φg then

pi ← crossover(pi, g)

if fitness(pi) > fitness(li) then

li ← pi

if fitness(pi) > fitness(g) then

g ← pi