BAB 2 LANDASAN KEPUSTAKAAN
2.6 Non-dominated Sorting Genetic Algorithm II
Non-dominated Sorting Genetic Algorithm II (NSGA-II) merupakan salah satu Multiobjective Evolutionary Algorithm yang mampu menemukan solusi Pareto-optimal sebanyak mungkin. NSGA-II merupakan algoritma genetika dengan pendekatan dominasi yang dikembangkan oleh Deb dkk. NSGA-II memiliki algoritma pengurutan yang lebih baik, menyertakan elitism, dan tidak membutuhkan parameter sharing (σshare), yang tidak dimiliki oleh versi sebelumnya (NSGA) (Deb et al., 2002).
Tahapan penyelesaian permasalahan optimasi menggunakan NSGA-II adalah sebagai berikut (Deb, 2011b; Deb et al., 2002; Mahbub, 2015):
1. Pembangkitan populasi awal. Prosedur NSGA-II dimulai dengan membangkitkan populasi awal/induk (P0) secara acak sejumlah N.
2. Evaluasi fungsi tujuan. Mengevaluasi nilai fungsi tujuan (dan fungsi kendala jika ada) setiap individu dalam populasi awal.
3. Reproduksi. Menerapkan proses seleksi induk, simulated binary crossover, dan polymonial mutation hingga diperoleh N offspring.
4. Evaluasi fungsi tujuan. Mengevaluasi nilai fungsi tujuan (dan fungsi kendala jika ada) setiap individu dalam populasi offspring.
5. Kombinasi populasi. Menggabungkan populasi generasi saat ini/induk (Pt) dengan populasi offspring (Qt). Populasi gabungan ini bisa juga disebut populasi intermediate (Rt)
6. Non-domination sorting. Setiap individu dalam populasi intermediate diurut berdasarkan non-domination. Pseudocode pengurutan individu berdasarkan dominasi dapat dilihat pada Gambar 2.7.
7. Crowding distance assignment. Menghitung jarak antara individu dengan individu tetangga. Pseudocode penghitungan crowding distance dapat dilihat pada Gambar 2.9.
8. Penggantian populasi. Memilih N individu terbaik dari populasi intermediate untuk menggantikan populasi induk. Selama proses pemilihan N individu terbaik, setiap individu diberi nilai crowding distance menggunakan prosedur crowding distance assignment sebagaimana dideskripsikan pada Gambar 2.9. Individu yang berada dalam front 1 lebih diutamakan dari pada individu lainnya yang berada dalam front lain. Jika ukuran front 1 kurang dari N, maka semua individu dalam front 1 dipilih sebagai anggota populasi baru (Pt+1). Sisa anggota populasi Pt+1 dipilih dari anggota front selanjutnya berdasarkan peringkatnya. Sehingga individu dari front 2 dipilih, diikuti oleh front 3, dst. Prosedur ini dilanjutkan hingga tidak ada lagi himpunan individu bisa ditampung. Misal front l adalah himpunan non-domination terakhir yang bisa ditampung. Secara umum, jumlah individu di front 1 hingga front l akan lebih besar dari ukuran populasi. Untuk memilih N anggota populasi secara tepat, maka perlu mengurut front terakhir l menggunakan operator
crowded-comparison (≺n) secara descending dan pilih individu terbaik yang dibutuhkan untuk mengisi slot populasi. Operator crowded-comparison dapat dilihat pada Persamaan (2.13). Populasi baru (Pt+1) digunakan dalam generasi berikutnya dan diproses untuk membentuk offspring Qt+1. Proses NSGA-II untuk generasi-generasi selanjutnya dapat dilihat pada Gambar 2.6.
9. Pemeriksaan kondisi berhenti. Melanjutkan iterasi ke tahap reproduksi selama tidak memenuhi kondisi berhenti.
10. Solusi Pareto-optimal. Himpunan individu dalam front 1 merupakan himpunan solusi terbaik yang bisa digunakan dalam proses selanjutnya untuk memilih satu solusi terbaik.
Rt = Pt Q∪ t F = fast-non-dominated-sort(Rt) Pt+1 = Ø and i = 1 until |Pt+1|+|Fi| ≤ N crowding-distance-assignment(Fi) Pt+1 = Pt+1 F∪ i i = i + 1 sort(Fi ≺n) Pt+1 = Pt+1 F∪ i[1:(N−|Pt+1|)] Qt+1 = make-new-pop(Pt+1) t = t + 1
Gambar 2.6 Pseudocode NSGA-II untuk Selain Generasi Awal
Sumber: (Deb et al., 2002)
Perlu diperhatikan bahwa operator seleksi yang digunakan dalam NSGA-II adalah binary tournament selection, namun setelah tahap reproduksi populasi awal, kriteria penyeleksian yang digunakan dalam tahap reproduksi generasi selajutnya adalah operator crowded-comparison. Karena operator ini membutuhan atribut peringkat (front) dan crowding distance masing-masing individu dalam populasi, maka atribut ini dihitung selagi membentuk populasi Pt+1, sebagaimana disebutkan di atas.
NSGA-II menggunakan pendekatan fast (elitist) non-domination sort untuk mengurutkan solusi (individu) ke dalam front (Deb et al., 2002). Gambar 2.7 merupakan pseudocode fast non-domination sort. Dalam fast non-domination sort, setiap solusi p akan diberi dua entitas, yaitu np (jumlah solusi yang mendominasi p) dan Sp (himpunan solusi yang didominasi oleh p). Semua solusi dalam front 1 memiliki np nol. Untuk setiap solusi p dengan np = 0, nilai nq setiap solusi q dalam himpunan Sp dikurangi 1. Dengan melakukan ini, jika nq menjadi nol, maka solusi q dimasukkan ke dalam himpunan Q. Anggota himpunan Q berada dalam front selajutnya. Proses ini diulang hingga semua front diketahui.
Dalam masalah optimasi berkendala, definisi dominasi dalam NSGA-II dimodifikasi. Solusi i dikatakan mendominasi (constrained-dominate) j jika salah satu dari kondisi berikut benar (Deb et al., 2002):
1. Solusi i feasible dan j tidak.
3. Solusi i dan j feasible dan solusi i mendominasi solusi j.
Selain itu menggunakan pendekatan fast (elitist) non-domination sort, NSGA-II menggunakan pendekatan crowded-comparison sebagai pengganti fungsi sharing untuk menghasilkan persebaran solusi yang baik dalam himpunan solusi (Deb et al., 2002). Pendekatan ini tidak membutuhkan parameter dari pengguna untuk memelihara keragaman solusi antar anggota populasi dan memiliki kompleksitas komputasi yang lebih baik.
input: P ← populasi
output: F (I1, I2,…, IN) ← himpunan non-dominated set begin for each p P ∈ Sp = Ø np = 0 for each q P ∈ if(p q) then ≺ Sp = Sp {q} ∪ else if(q p) then ≺
np = np + 1 end if end for if(np = 0) then prank = 1 F1 = F1 {p} ∪ end if end for i = 1 while Fi ≠ Ø Q = Ø for each p F∈ i for each q S∈ p nq = nq – 1 if nq = 0 then qrank = i + 1 Q = Q {q} ∪ end if end for end for i = i + 1 Fi = Q end while return F end
Gambar 2.7 Pseudocode Fast Non-dominated Sort
Sumber: Diadaptasi dari Deb et al. (2002)
Pendekatan crowded-comparison membutuhkan metrik kepadatan solusi yang melingkupi solusi tertentu dalam populasi. Untuk mendapatkan kepadatan solusi yang melingkupi solusi tertentu dalam populasi, perlu dihitung jarak rata-rata dua titik lainnya di kedua sisi titik ini untuk setiap fungsi tujuan (Deb et al., 2002). Pada Gambar 2.8, titik hitam adalah solusi-solusi yang berada pada front yang sama. Crowding distance solusi ke-i dalam front-nya adalah rata-rata panjang sisi cuboid. Dalam komputasi crowding distance, populasi diurut
berdasarkan masing-masing nilai fungsi tujuan secara ascending. Setelah itu, untuk setiap fungsi tujuan, solusi dengan nilai fungsi terkecil dan solusi dengan nilai fungsi terbesar diberi jarak tanpa batas (∞). Jarak solusi lainnya dihitung menggunakan Persamaan (2.12).
Gambar 2.8 Perhitungan Crowding Distance
Sumber: Diadaptasi dari Deb et al. (2002)
I [i]distance=I [i+1]. m−I [i−1]. m fmmax
−fmmin (2.12)
Pada Persamaan (2.12), parameter I[i].m adalah nilai fungsi tujuan ke-m dari solusi ke-i dalam himpunan I. Sedangkan parameter fmmax dan fmmin nilai maksimum dan minimum fungsi tujuan ke-m. Perhitungan ini dilanjutkan dengan fungsi tujuan lainnya. Nilai crowding distance total adalah jumlah jarak solusi untuk masing-masing fungsi tujuan. Algoritma perhitungan crowding distance dapat dilihat pada Gambar 2.9.
Dengan semua anggota populasi dalam himpunan I memiliki metrik jarak, pengguna dapat membandingkan dua solusi berdasarkan tingkat kedekatannya dengan solusi lainnya. Sebuah solusi dengan nilai jarak yang lebih kecil, dalam arti tertentu, lebih dekat terhadap solusi lain. Inilah yang sebenarnya dibandingkan dalam pendekatan crowded-comparison. Operator crowded-comparison (≺n) memandu proses seleksi dalam berbagai tahapan algoritma menuju front Pareto-optimal yang menyebar secara seragam. Misal setiap individu i dalam populasi memiliki atribut fitness/non-domination rank (irank) dan crowding distance (idistance), maka definisi ≺n dapat dilihat pada Persamaan (2.13) (Deb et al., 2002).
input: I ← non-dominated set
output:Idist ← non-dominated set dengan atribut crowding distance begin
l = |I|
for each i, set I[i]distance = 0 for each objective m
I = sort(I,m)
I[1]distance = I[l]distance = ∞ for i = 2 to (l – 1)
I[i]distance = I[i]distance + (I[i+1].m – I[i-1].m) /(fmmax – fmmin) end for end for end for return Idist end
Gambar 2.9 Pseudocode Crowding Distance Assignment
Sumber: Diadaptasi dari Deb et al. (2002)
2.6.1 Operator Genetika
Operator genetika yang digunakan dalam NSGA-II untuk pemetaan kromosom riil adalah binary tournament selection, simulated binary crossover, dan polynomial mutation (Deb et al., 2002; Saini dan Saraswat, 2012).
Binary tournament selection merupakan jenis seleksi yang memiliki jumlah tournament 2. Tournament adalah himpunan individu yang akan dibandingkan dalam proses seleksi. Individu-individu ini akan dibandingkan sehingga hanya satu individu yang terpilih. Algoritma binary tournament selection dapat dilihat pada Gambar 2.10.
input: P ← populasi , k ← ukuran tournament (2, untuk binary) output:p ← individu setelah proses seleksi
begin
p ← null , N ← |P| for i ← 1 to k do
individu ← pop[random(1, N)]
if (p = null) or fitness(individu) > fitness(p) then p = individu
end if end for return p end
Gambar 2.10 Pseudocode Binary Tournament Selection
Sumber: Diadaptasi dari (Blickle dan Thiele, 1995; Deong, 2012)
Penggunaan fitness sebagai pembanding dalam proses seleksi diganti dengan konsep dominasi dalam NSGA-II. Dalam proses seleksi, jika kedua individu p dan q tidak saling mendominasi, maka individu bisa dipilih secara acak (Deb, 2011b; Mahbub, 2015). Pemilihan individu secara acak dapat dilakukan dengan bangkitkan bilangan acak (r) antara 0 dan 1; jika r ≤ 0,5 maka p terpilih sebagai
induk; jika r > 0,5 maka q terpilih sebagai induk (Deb, 2011b).
Simulated binary crossover (SBX) diajukan oleh Deb dan Agrawal (1995). SBX didesain dengan mengadopsi properti yang dimiliki one-point crossover dalam algoritma genetika binary-coded. Operator SBX menghasilkan offspring y(1) dan y(2)
dari dua induk x(1) dan x(2). Prosedur SBX berikut ini digunakan untuk variabel yang memiliki batasan. Operator SBX diterapkan pada individu, variabel demi variabel. Prosedur crossover dilakukan jika random[0,1] ≤ pc. random[0,1] adalah nilai antara 0 dan 1 yang dibangkitkan secara acak. Berikut ini adalah prosedur SBX (Deb, 2000).
1. Membangkitkan nilai acak u antara 0 dan 1.
2. Menghitung nilai parameter β menggunakan Persamaan (2.14). ̄ β=
{
(αu) 1 nc+1 ,(
1 2−α u)
nc+11 , jika u⩽ 1 α jika u>1 α (2.14) dengan α=2−β−(nc+1) β=1+ 2 y(2)−y(1)min [(x (1) −xl),(xu−x(2))]x1 dan xu adalah batas bawah dan batas atas variabel. Operator SBX menggunakan indek distribusi crossover (nc) bernilai nonnegatif. Semakin kecil nilai nc maka solusi yang dihasilkan akan semakin berbeda dengan induk. Semakin besar nilai nc maka solusi yang dihasilkan akan semakin sama dengan induk.
3. Menghitung variabel offspring y(1) dan y(2) menggunakan Persamaan (2.15) dan Persamaan (2.16). y(1)=0,5[(x(1 )+x(2))−¯β|x(2)−x(1)|] (2.15) y(2)=0,5[(x(1 ) +x(2) )+¯β|x(2) −x(1) |] (2.16)
Untuk menangani banyak variabel keputusan, setiap variabel dipilih dengan probabilitas 0,5. Dengan begini, setengah variabel keputusan di-crossover. Pada operator SBX ini diasumsikan bahwa x(1) < x(2) (Deb, 2000, 2011b).
Polynomial mutation digunakan untuk membuat offspring y yang mendekati induk x (Deb dan Goyal, 1996). Prosedur polynomial mutation berikut ini digunakan untuk variabel yang memiliki batas bawah (xl) dan batas atas (xu), diterapkan pada individu, variabel demi variabel. Berikut ini adalah prosedur polynomial mutation (Deb, 2000).
1. Membangkitkan nilai acak u antara 0 dan 1.
2. Menghitung nilai parameter δ menggunakan distribusi probabilitas polinomial dengan nm (indeks distribusi mutasi), sebagaimana ditunjukkan pada
Persamaan (2.17). ¯ δ=