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