Swarm Intelligence
Bird 5
Food: 400
Bird 2
Food: 100
Studi Kasus: Maksimasi Fungsi Sederhana
Untuk menjelaskan siklus PSO maka diberikan contoh sederhana
masalah maksimasi (mencari nilai maksimum) dari sebuah fungsi
sebagai berikut:
max, y = f(x) = -x2 + 14x – 13, 0 ≤ x ≤ 15
Grafik dari fungsi tersebut :
40
30
20
10
y
0
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
-10
x
-20
v
v1(0) [0000]
t 0
i 1, j 1 v10, 2 v10,3 v10, 4
v2(0) [0000]
atau dapat
v3(0) [0000] ditulis dengan
v4(0) [0000] v
i 1, j 1 t 0 v1, 2 0 v1,3 0 v1, 4 0
Studi Kasus: Maksimasi Fungsi Sederhana
1. Inisialisasi Posisi awal Partikel (part. 3 of 4)
Nilai x ditentukan antara 0 sampai 15 dan bilangan biner dengan
panjang 4 sudah dapat menjangkau nilai x (ingat 11112 = 15). Jadi
stringLen=4.
(1 x 24-1) + (1 x 24-2) + (1 x 24-3) + (1 x 24-4) = 8 + 4 + 2 + 1 = 15
Misalkan dari hasil random didapatkan populasi inisial pada iterasi
ke-0 (t=0) dan konversi partikelnya menjadi x sebagai berikut:
popSize=4, y = f(x) = -x2 + 14x – 13, 0 ≤ x ≤ 15
[0011]
partikel x y=f(x)
x
x1(0) [0011] 3 20 t 0
i 1, j 1 x10, 2 x10,3 x10, 4
x2(0) [0100] 4 27
atau dapat
x3(0) [1001] 9 32 ditulis dengan
x4(0) [0101] 5 32 xi 1, j 1 t 0 x1, 2 0 x1,3 0 x1, 4 0
Studi Kasus: Maksimasi Fungsi Sederhana
1. Inisialisasi Pbest dan Gbest (part. 4 of 4)
Pbest, karena masih iterasi ke-0 (t=0), maka nilai Pbest akan
disamakan dengan nilai posisi awal partikel, yaitu (Pbesti,j(t)=xi,j(t))
dan konversi partikelnya menjadi x sebagai berikut:
popSize=4, y = f(x) = -x2 + 14x – 13, 0 ≤ x ≤ 15 [0011]
Pbest x y=f(x)
[0011]
Pbest1(0) 3 20
Pbest t 0
i 1, j 1 Pbest10, 2 Pbest10,3 Pbest10, 4
Pbest2(0) [0100] 4 27
atau dapat
Pbest3(0) [1001] 9 32 ditulis dengan
Pbest4(0) [0101] 5 32 Pbest
i 1, j 1 t 0 Pbest1, 2 0 Pbest1,3 0 Pbest1, 4 0
Gbest, dicari dengan memilih satu Pbest yang fitness-nya tertinggi
(yang nilai y nya paling tinggi), (k=argMaxi { fitnessPbesti,j(t) } ),
karena ada 2 nilai y yang tertinggi, maka cukup diambil salah satu,
misal Gbestg=1,j(t=0)=Pbestk=3,j(t=0).
Studi Kasus: Maksimasi Fungsi Sederhana
Masuk pada iterasi ke-1, (t = t +1 = 0 + 1 = 1)
0 0 1
2. Update Kecepatan vi , j vi , j
Update Kecepatan dilakukan untuk menentukan arah perpindahan
posisi partikel yang ada di populasi.
Batasan lower dan upper kecepatan yang digunakan dalam proses
ini berdasarkan nilai maksimum dari posisi partikel (xmax).
Diketahui nilai lower dan upper untuk xi,j=[xmin, xmax]=[0,1],
karena memang nilai xi,j tersebut biner, dan untuk vi,j=[vmin,vmax],
dimana vmin=-vmax dan vmax=60%*xmax.
Dalam menentukan interval ini, baik untuk posisi maupun
kecepatan partikel, sebaiknya dilakukan pada proses inisialisai.
Cara untuk menghitung interval kecepatan adalah sebagai berikut:
vmax = 60%*xmax = 60%*1=0.6 dan vmin = -vmax = -0.6
sehingga vi,j=[-0.6,0.6]
Studi Kasus: Maksimasi Fungsi Sederhana
2. Update Kecepatan
Jika diketahui xi,j= [0,1], vi,j=[-0.6,0.6], dan misalkan diketahui
w=0.5, c1=1, c2=1, r1=rand[0,1], dan r2=rand[0,1]. Dimana r1 dan r2
adalah bilangan acak dalam interval [0, 1].
Maka untuk mendapatkan hasil update kecepatannya dihitung
sebagai berikut, misal menghitung v1,1(1).
vit,j1 w.vit, j c1.r1 Pbestit, j xit, j c2 .r2 Gbestgt , j xit, j
Pbest x y=f(x) kecepatan
Pbest1(0) [ 0 0 1 1 ] 3 20 v1(1) [ 0.4 0.0 -0.4 0.0 ]
4 27 v10,11
Pbest2(0) [ 0 1 0 0 ] t
v2(1) [ 0.4 -0.4 0.0 0.4 ]
Gbest g, j
Pbest3(0) [ 1 0 0 1 ] 9 32 v3(1) [ 0.0 0.0 0.0 0.0 ]
v10,11 w.v10,1 c1.r1 Pbest10,1 x10,1 c2 .r2 Gbest10,1 x10,1
0.50 10.10 0 10.41 0 0 0 0.4 0.4
Studi Kasus: Maksimasi Fungsi Sederhana
0 0 1
3. Update Posisi xi , j xi , j
Setelah menghitung kecepatan, kemudian hitung Sig(vi,j(t)).
Berikut cara menghitungnya.
v t 1
i, j w.v t
i, j
c1.r1 Pbest x t
i, j
t
i, j c .r Gbest
2 2
t
g, j x
t
i, j Misal hanya diambil 1
angka dibelakang titik
desimal
sig vit, j
1
vit , j
, j 1,2,....d
1 e
kecepatan Sig(kecepatan)
v1(1) [ 0.4 0.0 -0.4 0.0 ] Sig(v1(1)) [ 0.6 0.5 0.4 0.5 ]
v2(1) [ 0.4 -0.4 0.0 0.4 ] Sig(v2(1)) [ 0.6 0.4 0.5 0.6 ]
v3(1) [ 0.0 0.0 0.0 0.0 ] Sig(v3(1)) [ 0.5 0.5 0.5 0.5 ]
v4(1) [ 0.4 -0.4 0.0 0.0 ] Sig(v4(1)) [ 0.6 0.4 0.5 0.5 ]
[ 0.3
rand[0,1]
0.8 0.1 0.7 ] x t 1 1, if rand[0,1] sig vit,j1
partikel
[1010]
x y=f(x)
i, j x1(1) 10 27
0, otherwise
[ 0.5 0.6 0.3 0.8 ] x2(1) [1010] 10 27
[ 0.8 0.6 0.3 0.6 ] x3(1) [0010] 2 11
[ 0.9 0.1 0.5 0.8 ] x4(1) [0110] 6 35
Studi Kasus: Maksimasi Fungsi Sederhana
0 0 1
4. Update Pbest Pbesti , j Pbesti , j dan Gbest
Update Pbest, disini kita harus membandingkan antara Pbest pada
iterasi sebelumnya dengan hasil dari Update Posisi.
Pbest jika fitness x fitness Pbest
t t 1 t
t 1
Pbest i, j i, j i, j
Terimakasih
Imam Cholissodin | imam.cholissodin@gmail.com