• Tidak ada hasil yang ditemukan

Algoritma Genetika terhadap Traveling Salesman Problem

METODOLOGI PENELITIAN

3.3. Algoritma Genetika terhadap Traveling Salesman Problem

Prosedur kerja yang dilakukan oleh peneliti dapat dilihat secara keseluruhan pada Gambar 3.1 di bawah ini:

Gambar 3.1. Metode Penelitian

3.3.1. Dasar Algoritma Genetika

Dalam algoritma genetika terdapat beberapa proses atau tahapan yang harus dilakukan. Pada Gambar 3.2. diperlihatkan proses yang terdapat pada algoritma genetika.

Gambar 3.2. Dasar Algoritma Genetika

Pada algoritma genetika terdapat perkawinan silang (crossover) di mana pada proses ini terjadi pertukaran gen antara kromosom parent. Untuk penelitian ini peneliti menganalisis performance atas arithmetic crossover yang terdiri-dari whole arithmetic crossover, simple arithmetic crossover, dan single arithmetic crossover.

Gambar 3.3. Flowchart Whole Arithmetic Crossover

Keterangan:

R(k) = Nilai random K pc = Crossover Rate

Proses kerja whole arithmetic crossover seperti terlihat pada Gambar 3.3. adalah kromosom yang dijadikan induk dipilih secara acak dan jumlah kromosom yang mengalami crossover dipengaruhi parameter crossover_rate (ρc). Langkah pertama yang dilakukan adalah menentukan nilai crossover_rate (ρc). Lalu bangkitkan bilangan acak R untuk tiap kromosom. Jika nilai R[k] < ρc maka kromosom k dipilih sebagai induk. Jika sudah terpilih kromosom parent maka langkah selanjutnya adalah melakukan proses arithmetic crossover terhadap setiap gen yang ada pada kromosom. Proses arithmetic crossover yang dilakukan berupa perkalian α (faktor pengali) dengan gen pada kromosom parent 1 dijumlahkan dengan perkalian perkalian α (faktor pengali) dengan gen pada kromosom parent 1 sehingga menghasilkan kromosom anak (offspring). Proses ini dilakukan terhadap setiap gen pada kromosom parent.

Proses kerja simple arithmetic crossover seperti terlihat pada Gambar 3.4. adalah kromosom yang dijadikan induk dipilih secara acak dan jumlah kromosom yang mengalami crossover dipengaruhi parameter crossover_rate (ρc). Langkah pertama yang dilakukan adalah menentukan nilai crossover_rate (ρc). Lalu bangkitkan bilangan acak R[k] untuk tiap kromosom. Jika nilai R[k] kromosom < ρc

maka kromosom k dipilih sebagai induk. Kemudian, bangkitkan bilangan acak R untuk menentukan gen yang mengalami crossover. Kemudian setiap gen yang berada pada kromosom parent dimulai dari posisi R akan mengalami arithmetic crossover. Proses

arithmetic crossover yang dilakukan berupa perkalian α (faktor pengali) dengan gen pada kromosom parent 1 dijumlahkan dengan perkalian perkalian α (faktor pengali) dengan gen pada kromosom parent 1 sehingga menghasilkan kromosom anak (offspring). Proses ini dilakukan terhadap setiap gen pada kromosom parent dimulai dari posisi R.

Proses kerja single arithmetic crossover seperti terlihat pada Gambar 3.4. adalah kromosom yang dijadikan induk dipilih secara acak dan jumlah kromosom yang mengalami crossover dipengaruhi parameter crossover_rate (ρc). Langkah pertama yang dilakukan adalah menentukan nilai crossover_rate (ρc). Lalu bangkitkan bilangan acak R[k] untuk tiap kromosom. Jika nilai R[k] kromosom < ρc

maka kromosom k dipilih sebagai induk. Kemudian, bangkitkan bilangan acak R untuk menentukan gen yang mengalami crossover. Kemudian gen pada kromosom parent

crossover yang dilakukan berupa perkalian α (faktor pengali) dengan gen pada kromosom parent 1 dijumlahkan dengan perkalian perkalian α (faktor pengali) dengan gen pada kromosom parent 1 sehingga menghasilkan kromosom anak (offspring).

Gambar 3.4. Flowchart Simple Arithmetic Crossover

Keterangan:

Gambar 3.5. Flowchart Single Arithmetic Crossover

Keterangan:

R(k) = Nilai random K pc = Crossover Rate

3.3.2. Mendefinisikan Individu

Pada pendefinisian individu yang akan dilakukan adalah teknik penyandian gen dan kromosom. Gen merupakan bagian dari kromosom. Satu gen diwakili dengan satu variabel. Kromosom-kromosom/individu-individu adalah kumpulan angka yang mewakili posisi kota dalam sebuah rangkaian (urutan). Dengan kata lain, sebuah kromosom/individu itu mewakili sebuah urutan kota yang dikunjungi salesman. Jadi apabila satu kromosom berbentuk: K1= (X1, X2, X3,..., Xn) artinya salesman bergerak

dari kota 1, 2, 3, dan seterusnya hingga kota ke-n.

3.3.3. Pembangkitan Populasi Awal

Proses inisialisasi populasi awal dilakukan dengan cara memberikan nilai awal gen- gen dengan nilai acak sesuai batasan yang telah ditentukan. Misalkan kita tentukan jumlah populasi adalah 6 di mana dalam 1 kromosom terdapat 4 gen yang mewakili urutan kota yang akan dikunjungi oleh seorang salesman. Di mana posisi dan jarak tiap kota akan diberikan pada ilustrasi pada Gambar 3.6.

Gambar 3.6. Jarak Tiap Kota yang Akan Dikunjungi Adapun keterangan dari Gambar 3.6. adalah sebagai berikut.

Jarak dari kota A ke kota B = 10 Jarak dari kota A ke kota C = 8 Jarak dari kota A ke kota D = 15 Jarak dari kota A ke kota E = 16 Jarak dari kota B ke kota C = 13

Jarak dari kota B ke kota D = 8 Jarak dari kota B ke kota E = 14 Jarak dari kota C ke kota D = 13 Jarak dari kota C ke kota E = 6 Jarak dari kota D ke kota E = 9

Tabel 3.1. Pembentukan Populasi Awal

Kromosom Gen Total Jarak Fitness Kromosom[1] [B;D;C;E] A-B-D-C-E = 37 0.027 Kromosom[2] [C;B;E;D] A-C-B-E-D = 44 0.022 Kromosom[3] [B;D;E;C] A-B-D-E-C = 33 0.03 Kromosom[4] [D;C;E;B] A-D-C-E-B = 48 0.02 Kromosom[5] [E;D;C;B] A-E-D-C-B = 51 0.019 Kromosom[6] [B;E;D;C] A-B-E-D-C = 46 0.021

3.3.4. Seleksi

Proses seleksi dilakukan dengan cara membuat kromosom yang mempunyai fungsi objektif kecil mempunyai kemungkinan terpilih yang besar atau mempunyai nilai probabilitas yang tinggi. Metode seleksi yang digunakan adalah roulette wheel selection. Persamaan untuk menghitung nilai fitness dapat dilihat pada Persamaan 3.2.

Fitness = !"#$%!

 !"#"$ ...(3.2)

Semakin besar jarak maka semakin kecil nilai fitness dan sebaliknya jika semakin kecil jarak maka semakin besar nilai fitness.

Seleksi Roulette Wheel

1. Hitung Total Fitness

Total fitness dihitung dengan menggunakan persamaan 3.3.

Total fitness= ∑ Fk ...(3.3) Dimana: k = 1, 2, 3, ...., ukuran populasi

Total fitness = 0.027+0.022+0.03+0.02+0.019+0.021 = 0.139

2. Hitung fitness relatif tiap individu

Untuk menghitung fitness tiap individu digunakan persamaan 3.4

Pk = !"

!"#$% !"#$%&&... (3.4)

Dimana:

Pk = Fitness relatif tiap-tiap kromosom Fk = Fitness tiap kromosom

Individu ke-1 = 0.027/ 0.139 = 0.194 Individu ke-2 = 0.022/ 0.139 = 0.158 Individu ke-3 = 0.03/ 0.139 = 0.215 Individu ke-4 = 0.02/ 0.139 = 0.144 Individu ke-5 = 0.019/ 0.139 = 0.137 Individu ke-6 = 0.021/ 0.139 = 0.151 3. Hitung fitness kumulatif

q1 = 0.194 q2 = 0.194 + 0.158 = 0.352 q3 = 0.194 + 0.158 + 0.215 = 0.567 q4 = 0.14 + 0.262 + 0.215 + 0.144 = 0.711 q5 = 0.14 + 0.262 + 0.215 + 0.144 + 0.137 = 0.848 q6 = 0.14 + 0.262 + 0.215 + 0.144 + 0.137 + 0.151 = 0.999 3.3.5. Crossover

Setelah proses seleksi maka proses selanjutnya adalah proses crossover. Adapun metode crossover yang digunakan di dalam penelitian ini sebagai dasar perbandingan

performance adalah metode arithmetic crossover yang terdiri dari whole arithmetic crossover, simple arithmetic crossover, dan single arithmetic crossover dengan nilai α yang telah ditentukan sebesar 0.5.

Procedure Crossover (inputpopulasi: integer, pc: real) Deklarasi

k: Integer

R[]: array of integer

Function random (input a-b: integer): integer Algoritma begin k= 0; while(k<=populasi) do R[k] = random(0-1) if (R[k] < pc ) then

pilih Chromosome[k] sebagai induk end if

k = k + 1; end while end.

Adapun keterangan dari pseudocode prosedur crossover di atas adalah kromosom yang dijadikan induk dipilih secara acak dan jumlah kromosom yang mengalami

crossover dipengaruhi oleh parameter crossover_rate (ρc). Langkah pertama yang dilakukan adalah menentukan nilai crossover_rate (ρc). Kemudian dibangkitkan bilangan acak R untuk tiap kromosom. Jika nilai R[k] kromosom lebih kecil dari ρc

maka kromosom k dipilih sebagai induk.

Procedure WholeArithmeticCrossover (inputpopulasi: integer, pc: real) begin

k= 0;

while(k<populasi) do R[k] = random(0-1) if (R[k] < pc ) then

pilih Chromosome[k] sebagai induk parent1=kromosom[k+1]

parent2=kromosom[k+2]

for i=1 to 51

offspring[k+1]=α*mid(parent1,i,1) + α*mid(parent2,i,1)

end if end while k = k + 1; end.

Adapun keterangan dari pseudocode prosedur whole arithmetic crossover di atas adalah kromosom yang dijadikan induk dipilih secara acak dan jumlah kromosom yang mengalami crossover dipengaruhi oleh parameter crossover_rate (ρc). Langkah pertama yang dilakukan adalah menentukan nilai crossover_rate (ρc). Kemudian dibangkitkan bilangan acak R untuk tiap kromosom. Jika nilai R[k] kromosom lebih kecil dari ρc maka kromosom k dipilih sebagai induk. Jika sudah terpilih kromosom

parent maka langkah selanjutnya adalah melakukan proses arithmetic crossover

terhadap setiap gen yang ada pada kromosom. Proses arithmetic crossover yang dilakukan adalah berupa perkalian α (faktor pengali) dengan gen pada kromosom

parent 1 dijumlahkan dengan perkalian perkalian α (faktor pengali) dengan gen pada kromosom parent 1 sehingga menghasilkan kromosom anak (offspring). Proses ini akan dilakukan terhadp setiap gen pada kromosom parent.

Procedure SimpleArithmeticCrossover (inputpopulasi: integer, pc:

real) begin k= 0; while(k<populasi) do R[k] = random(0-1) if (R[k] < pc ) then

pilih Chromosome[k] sebagai induk parent1=kromosom[k+1] parent2=kromosom[k+2] for i=1 to 51 R = Random (0..1) If i<= R then Offspring[k+1]= mid(parent1,i,1) Offspring[k+2]= mid(parent2,i,1) Else Offspring[k+1]=α*mid(parent1,i,1)+ α*mid(parent2,i,1) Offspring[k+2]=α*mid(parent1,i,1)+ α*mid(parent2,i,1) End if end if end while k = k + 1; end.

Adapun keterangan dari pseudocode prosedur simple arithmetic crossover di atas adalah kromosom yang dijadikan induk dipilih secara acak dan jumlah kromosom yang mengalami crossover dipengaruhi oleh parameter crossover_rate (ρc). Langkah pertama yang dilakukan adalah menentukan nilai crossover_rate (ρc). Kemudian membangkitkan bilangan acak R[k] untuk tiap kromosom. Jika nilai R[k] kromosom lebih kecil dari ρc maka kromosom k dipilih sebagai induk. Kemudian setelah itu, dibangkitkan bilangan acak R untuk menentukan gen yang mengalami crossover. Kemudian setiap gen yang berada pada kromosom parent dimulai dari posisi R akan mengalami arithmetic crossover. Proses arithmetic crossover yang dilakukan adalah

dengan perkalian perkalian α (faktor pengali) dengan gen pada kromosom parent 1

sehingga menghasilkan kromosom anak (offspring). Proses ini akan dilakukan terhadap setiap gen pada kromosom parent dimulai dari posisi R.

Procedure SingleArithmeticCrossover (inputpopulasi: integer, pc:

real) begin k= 0; while(k<populasi) do R[k] = random(0-1) if (R[k] < pc ) then

pilih Chromosome[k] sebagai induk parent1=kromosom[k+1] parent2=kromosom[k+2] for i=1 to 51 R = Random (0..1) If i<> R then Offspring[k+1]= mid(parent1,i,1) Offspring[k+2]= mid(parent2,i,1) Else Offspring[k+1]=α*mid(parent1,i,1)+ α*mid(parent2,i,1) Offspring[k+2]=α*mid(parent1,i,1)+ α*mid(parent2,i,1) End if end if end while k = k + 1; end.

Adapun keterangan dari pseudocode prosedur single arithmetic crossover di atas adalah kromosom yang dijadikan induk dipilih secara acak dan jumlah kromosom yang mengalami crossover dipengaruhi oleh parameter crossover_rate (ρc). Langkah pertama yang dilakukan adalah menentukan nilai crossover_rate (ρc). Kemudian dibangkitkan bilangan acak R[k] untuk tiap kromosom. Jika nilai R[k] kromosom lebih kecil dari ρc maka kromosom k dipilih sebagai induk. Kemudian setelah itu, bangkitkan bilangan acak R untuk menentukan gen yang mengalami crossover. Kemudian gen pada kromosom parent yang berada pada posisi R akan mengalami

arithmetic crossover. Proses arithmetic crossover yang dilakukan adalah berupa perkalian α (faktor pengali) dengan gen pada kromosom parent 1 dijumlahkan dengan perkalian perkalian α (faktor pengali) dengan gen pada kromosom parent 1 sehingga menghasilkan kromosom anak (offspring).

3.3.6. Mutasi

Mutasi yang akan dilakukan pada penelitian ini adalah swapping mutation. Swapping mutation adalah mutasi yang dilakukan dengan menukar satu atau beberapa nilai gen dalam kromosom.

Jumlah chromosome yang mengalami mutasi dalam satu populasi ditentukan oleh parameter mutation rate. Proses mutasi dilakukan dengan cara mengganti satu gen yang terpilih secara acak dengan suatu nilai baru yang didapat secara acak. Prosesnya adalah sebagai berikut.

Pertama kita hitung dahulu panjang total gen yang ada dalam satu populasi. Panjang total gen = jumlah total gen dalam kromosom * jumlah populasi...(3.4) Panjang total gen = 4 * 6 = 24

Untuk memilih posisi gen yang mengalami mutasi dilakukan dengan cara membangkitkan bilangan integer acak antara 1 sampai total gen, yaitu 1 sampai 24. Jika bilangan acak yang kita bangkitkan lebih kecil daripada variabel mutation rate

(ρm) maka pilih posisi tersebut sebagai sub-kromosom yang mengalami mutasi. Misal ρm kita tentukan 10% maka diharapkan ada 10% dari total gen yang mengalami populasi:

Jumlah mutasi = 0.1 * 24 = 2.4 = 2

Misalkan setelah kita bangkitkan bilangan acak terpilih posisi gen 12 dan 18 yang mengalami mutasi. Dengan demikian yang akan mengalami mutasi adalah

kromosom ke-3 gen nomor 4 dan kromosom ke-5 gen nomor 2. Maka nilai gen pada posisi tersebut kita ganti dengan bilangan acak 0-30.

Misalkan bilangan acak yang terbangkitkan adalah 2 dan 5. Maka populasi kromosom setelah mengalami proses mutasi adalah:

Misalkan Kromosom Awal Kromosom[1] = [12;05;03;08]

Kromosom[2] = [02;01;08;03]

Kromosom[3] = [10;04;03;04]

Kromosom[4] = [20;01;10;06]

Maka kromosom hasil mutasi adalah sebagai berikut: Kromosom[1] = [12;05;03;08] Kromosom[2] = [02;01;08;03] Kromosom[3] = [10;04;03;02] Kromosom[4] = [20;01;10;06] Kromosom[5] = [01;05;03;09] Kromosom[6] = [20;05;07;01]

Setelah proses mutasi selesai, maka akan dilakukan penghitungan nilai fitness untuk menentukan solusi yang optimal lalu dilakukan seleksi, crossover, mutasi terus menerus hingga ditemukan solusi yang optimal atau kondisi berhenti yang telah ditentukan sebelumnya.

BAB 4

Dokumen terkait