Algorithm (3.
5): ICA based on PSO Algorithm
Input: white-x % whitened vectors
Output: z; % separated vectors (recovered sources)
% Variables Definition
K: number of sources % integer variable
population: population size % integer variable (20 – 100)
vi : velocity of the particles % real variable
xi: position of the particles % real variable
r1,r2: two uniform random numbers % real variables [0-1]
c1,c2: two acceleration coefficients % fixed variables ( ≥0 )
vmax: maximum velocity value of current particle
-vmax: minimum velocity value of current particle
pgmax: maximum global fitness value of particle % real variable
pimax: maximum local fitness value of particle % real variable
fitmax: list of maximum local fitness values % real vector
fgmax: list of maximum global fitness values % real vector
fit: initial fitness values of current positions of particle % real vector.
fitnew: list of next fitness values % real vector
iteration: maximum iteration % fixed variables ( ≥ 8)
Begin
1. Initializing set of diagonal separated matrices.
2. x=rand( K, K, population);
3. Initializing the velocities of the particles
4. v = rand( K, K, population) * vmax; % real vector
5. Calculate initially fitness values of the current positions of particles the objective function
6. For i=1 to population
7. y= x* white-x;
8. Centering and Whitening y;
9. The proposed objective function
10. fit(i) = sum(proposed fun.); % compute current fitness value
11. End_for
12. Set the initialize values of the algorithm parameters.
13. Main loop iteration of the algorithm for each particle.
14. d=1; % iteration index
15. Do
16. for i=1 to population
17. for j=1 to K
18. for s=1 to K
19. vj,s,i=vj,s,i+c1*r1* (pimaxj,s,i – xj,s,i )+c2*r1*(pgmaxj,s - xj,s,i);
20. % Evaluate vj,s,i with the vmax and -vmax parameters
21. xj,s,i= xj,s,i + vj,s,i ;
22. end_for(s)
23. end_for(j)
24. end_for(i)
25. Calculate new fitness values of the positions of particles
26. For m=1 to population
27. y= white-x * x;
28. Centering and Whitening y;
29. The proposed objective function
30. fitnew(m)=sum(proposed fun.); % compute new fitness value
31. End_for(m)
32. Set maximum values of fitnew and pgmax as maximum fitness values and its positions respectively.
33. Get the maximum values of the fitness values.
34. d=d+1; % increment the iteration counter.
35. Until d= iteration; % terminate the loop of PSO algorithm.
36. z = y; % recovered sources
End Algorithm.