27  Particle Swarm Optimization

\begin{algorithm} \caption{Particle Swarm Optimization} \begin{algorithmic} \Procedure{PSO}{$n, d, w, c_1, c_2$} \State Initialize population $X$ \While{stopping criterion not met} \For{$i = 1$ to $n$} \State $V_i \gets wV_i + c_1\mathbf{R}^\intercal (\mathbf{p}_i - X_i) + c_2\mathbf{R}^\intercal (\mathbf{g} - X_i)$ \State $X_i \gets X_i + V_i$ \If{$f(X_i) < f(\mathbf{p}_i)$} \State $\mathbf{p}_i \gets X_i$ \If{$f(X_i) < f(\mathbf{g})$} \State $\mathbf{g} \gets X_i$ \EndIf \EndIf \EndFor \EndWhile \State \textbf{return} best individual $\mathbf{g}$ \EndProcedure \end{algorithmic} \end{algorithm}

27.1 Notation

  • n: population size
  • d: dimension of particles
  • X: population of particles, X \in \mathbb{R}^{N \times D}
  • X_i: i-th particle
  • x_{i, j}: j-th dimension of X_i
  • V: velocity of particles
  • V_i: velocity of i-th particle
  • v_{i, j}: j-th dimension of V_i
  • w: inertia weight
  • c_1, c_2: acceleration coefficients
  • \mathbf{R}: random vector in [0, 1]^D
  • \mathbf{p}_i: personal best of particle i
  • \mathbf{g}: global best of particles

27.2 Update Equations

V_i \leftarrow wV_i + c_1\mathbf{R}^\intercal (\mathbf{p}_i - X_i) + c_2\mathbf{R}^\intercal (\mathbf{g} - X_i)

X_i \leftarrow X_i + V_i