Particle Swarm Optimization
Bacalah tulisan ini pada halaman asli agar persamaan yang tertulis dapat tampil dengan jelas.
Algoritme ini ditemukan oleh James Kenedy dan Russ Eberhart pada tahun 1995. Algoritme ini terinspirasi dari tingkah laku sosial makhluk hidup dalam mengambil keputusan, yaitu dengan mempertimbangkan faktor internal dan faktor sosial.
Algoritma ini dapat digunakan pada masalah yang bersifat kontinyu seperti mencari nilai minimum suatu fungsi, agar algoritme ini dapat digunakan untuk menyelesaikan masalah diskrit seperti Traveling Salesman Problem, ruang pencarian harus dimodelkan menjadi ruang yang kontinyu.
Algoritma ini bekerja dengan cara menginisialisasi sejumlah partikel secara acak dalam sebuah ruang pencarian berdimensi $n$ dari fungsi objektif $f(x)$ yang ingin dioptimasi, sehingga setiap partikel menyatakan calon solusi. Setiap partikel $i$ menempati posisi ${x_i} \in \mathbb{R}^n$ bergerak dengan kecepatan ${v_i} \in \mathbb{R}^n$, nilai vektor ${v_i}$ akan terus diperbarui pada setiap perulangan, nilai ${v_i}$ diperbarui dengan persamaan 10 berikut:
\begin{equation}
{v_{i}} (t+1) = \omega {v_{i}} (t) + \varphi_1 r_1 ({p_{i}} - {x_{i})} + \varphi_2 r_2 ({g} - {x_{i}})
\label{eq:updvelo}
\end{equation}
${v_{i}} (t+1)$ adalah vektor kecepatan partikel $i$ saat perulangan berikutnya, sedangkan $v_{i} (t)$ adalah vektor kecepatan partikel $i$ saat perulangan sebelumnya.
$\omega$ menyatakan nilai kelembaman sebuah partikel untuk bergerak.
$\varphi_1$ adalah konstanta riil yang menyatakan laju belajar individu, semakin besar nilai $\varphi_1$ maka partikel akan cenderung mengikuti posisi terbaik yang pernah ditempati oleh partikel itu sendiri.
$\varphi_2$ adalah nilai konstanta riil yang menyatakan laju belajar sosial, semakin besar nilai $\varphi_2$ maka partikel akan cenderung mengikuti partikel terbaik dalam kawanan.
${p_i} \in \mathbb{R}^n$ adalah vektor posisi terbaik partikel yang pernah dicapai, sedangkan ${g} \in \mathbb{R}^n$ adalah vektor posisi partikel terbaik dalam kawanan.
$r_1$ dan $r_2$ adalah bilangan riil acak yang dibangkitkan pada setiap perulangan.
Setelah nilai kecepatan didapat, posisi partikel yang dinyatakan dengan vektor $x_i$ diperbarui dengan persamaan 11 berikut:
\begin{equation}{x_i}(t+1) = {x}(t) + {v_i} \end{equation}
${x_i}(t+1)$ adalah vektor posisi partikel $i$ pada perulangan selanjutnya, sedangkan ${x_i}(t)$ adalah vektor posisi partikel $i$ pada perulangan sebelumnya.Misal S adalah jumlah partikel dalam suatu kawanan, $b_{min}$ dan $b_{max}$ adalah batas bawah dan batas atas dari ruang pencarian, $U(a,b)$ adalah fungsi yang membangkitkan bilangan acak riil yang terdistribusi secara uniform dengan rentang $[a,b]$, maka algoritme dasar kawanan partikel adalah berikut: