Algoritma genetik adalah suatu algoritma pencarian yang berbasis pada mekanisme seleksi alam dan genetika. Algoritma generika merupakan salah satu algoritma yang sangat tepat digunakan dalam menyelesaikan masalah optimisasi kompleks, yang sulit dilakukan oleh metode konvensional.
Adapun kelebihan algoritma genetik ebagai metode optimasi (Mahmudy, 2013), yaitu:
1. GAs merupakan algoritma yang berbasis populasi yang memungkinkan digu-nakan pada optimasi masalah dengan ruang pencarian (search space) yang sangat luas dan kompleks. Properti ini juga memungkinkan GAs untuk melompat keluar dari daerah optimum lokal.
2. Individu yang ada pada populasi bisa diletakkan pada beberapa sub-populasi yang diproses pada sejumlah komputer secara paralel. Hal ini bisa mengu-rangi waktu komputasi pada masalah yang sangat kompleks. Penggunaan sub-populasi juga bisa dilakukan pada hanya satu komputer untuk menjaga keragaman populasi dan meningkatkan kualitas hasil pencarian.
3. GAs menghasilkan himpunan solusi optimal yang sangat berguna pada penye-lesaian masalah dengan banyak obyektif.
4. GAs dapat digunakan untuk menyelesaikan masalah yang kompleks dengan banyak variabel. Variabel tersebut bisa kontinyu, diskrit atau campuran keduanya.
5. GAs menggunakan chromosome untuk mengkodean solusi sehingga bisa melakukan pencarian tanpa memperhatikan informasi derivatif yang spesifik dari masalah yang diselesaikan.
6. GAs bisa diimplementasikan pada berbagai macam data seperti data yang dibangkitkan secara numerik atau menggunakan dungsi analitis.
7. GAs bisa diimplementasikan pada berbagai macam data seperti data yang dibangkitkan secara numerik atau menggunakan fungsi analitis.
20
21
8. GAs cukup fleksibel untuk dihibridisasi dengan algoritma lainnya. Beberapa penelitian membuktikan bahwa hybrid GAs (HGAS) sangat efektif untuk menghasilkan solusi yang lebih baik.
9. GAs bersifat ergodic, sembarang solusi bisa diperoleh dari solusi yang lain dengan hanya beberapa langkah. Hal ini memungkinkan eksplorasi pada daerah pencarian yang sangat luas dilakukan dengan lebih cepat dan mudah.
3.1 Istilah dalam Algoritma Genetik
Terdapat beberapa definisi penting dalam algoritma genetik yang perlu diperhatikan, yaitu:
1. Genotype (Gen) merupakan sebuah nilai yang menyatakan satuan dasar yang membentuk suatu arti tertentu dalam satu kesatuan gen yang dina-makan kromosom. Dalam algoritma genetika, gen ini bisa berupa biner, float, integermaupun karakter atau kombinatorial.
2. Allele merupakan nilai dari gen.
3. Locus merupakan posisi dari gen.
4. Kromosom merupakan gabungan gen-gen yang membentuk nilai tertentu.
5. Individu merupakan satu nilai atau keadaan yang menyatakan salah satu solusi yang memungkinkan dari permasalahan yang diangkat. Individu bisa juga dikatakan sama dengan kromosom.
6. Populasi merupakan sekumpulan individu yang diproses bersama dalam satu siklus proses evaluasi.
7. Generasi menyatakan satu silkus proses evolusi atau satu iterasi di dalam algoritma genetika.
Istilah-istilah tersebut dapat diilustrasikan pada gambar 3.1 sebagai berikut
Gambar 3.1 Ilustrasi representasi penyelesaian permasalahan dalam algoritma genetik
Alele merupaka bagian dari gen. Kumpulan-kumpulan gen merupakan kro-mosom. Kumpulan beberapa kromosom merupakan individu. Kumpulan individu-individu merupakan populasi.
3.2 Komponen-komponen Algoritma Genetik
Terdapat beberapa komponen dalam algoritma genetik, yaitu:
1. Skema pengkodean
Teknik pengkodean adalah bagaimana mengkodekan gen dari kromosom, gen merupakan bagian dari kromosom. Satu gen akan mewakili satu va-riabel. Masing-masing kromosom berisi sejumlah gen yang mengkodekan informasi yang disimpan didalam individu atau kromosom.
23
2. Membangkitkan populasi awal
Membangkitkan populasi awal adalah proses mebangkitkan sejumlah indi-vidu atau kromosom secara acak memalui prosedur tertentu. Ukuran untuk populasi tergantung pada masalah yang akan diselesaikan dan jenis operator genetik yang akan diimplementasikan. Setelah ukuran populasi ditentukan, kemudian dilakukan pembangkitan populasi awal.
Teknik dalam pembangkitan populasi awal pada penelitian ini menggunakan random search, pencarian solusi dimulai dari suatu titik uji tertentu secara acak. Titik uji tersebut dianggap ssebagai alternatif solusi yang disebut sebagai populasi.
3. Nilaif itness
Suatu individu dievaluasi berdasarkan suatu fungsi tertentu sebagai ukuran performasinya. Fungsi f itness bertujuan untuk mengetahui baik tidaknya solusi yang ada pada suatu individu dan setiap individu pada populasi harus memiliki nilai perbandingannya. Selanjutnya, nilaif itnessdigunakan untuk solusi terbaik dengan cara pengurutan nilai fitness dari individu-individu.
Setelah kromosom terbentuk, maka selanjutnya dilakukan proses perhitung-anf itness.
f = 1
1 + (Cost)
Cost merupakan total jarak yang ditempuh yang dilewati dari titik awal
sampai titik akhir. Nilaif itnessakan berbanding terbalik dengan nilaicost.
F itnessterbaik yaituf itnessterbesar yang dapat dicapai dengan nilaicost
terkecil. (Widodo dan Mahmudy, 2010). Individu yang bernilai f itness besar akan bertahan hidup. Sedangkan individu yang bernilai f itnesskecil akan mati.
4. Seleksi
Pembentukan susunan kromosom pada satu populasi baru biasanya dilakukan secara proporsional sesuai dengan nilai f itnessnya. Cara kerja metode ini adalah sebagai berikut:
(a) Hitung total f itnesssemua individu
(b) Hitung probabilitas seleksi masing-masing individu
(c) Dari probabilitas tersebut, dihitung jatah interval masing-masing indi-vidu pada angka 0 sampai 1
(d) Bangkitkan bilangan random antara 0 sampai 1
(e) Dari bilangan random yang dihasilkan, tentukan urutan untuk populasi baru hasil proses seleksi
5. Pindah silang (Crossover)
Salah satu komponen yang paling penting dalam algoritma genetik adalah pindah silang atau crossover. Sebuah kromosom yang mengarah pada so-lusi yang baik dapat diperoleh dari proses memindah-silangkan dua buah kromosom. Pindah silang juga dapat berakibat buruk jika ukuran popu-lasinya sangat kecil. Dalam suatu populasi yang sangat kecil, suatu kromo-som dengan gen-gen yang mengarah pada solusi terbaik akan sangat cepat menyebar ke kromosom-kromosom lainnya. Untuk mengatasi masalah ini digunakan suatu aturan bahwa pindah silang hanya bisa dilakukan dengan suatu probabilitas tertentu, artinya pindah silang bisa dilakukan hanya jika suatu bilanganrandomyang membangkitkan kurang dari probabilitas yang ditentukan tersebut.
Pada umumnya probabilitas tersebut diset mendekati 1. Pindah silang yang paling sederhana adalah pindah silang satu titik potong (one-point crossover). Suatu titik potong dipilih secara acak (random), kemudian bagian pertama dari orangtua 1 digabungkan dengan bagian kedua dari orangtua 2.
6. Mutasi
BAB 4
PEMBAHASAN PENGEMBANGAN ALGORITMA
4.1 Algoritma Genetik
Dengan menirukan proses genetik dan seleksi alam maka algoritma genetik akan menghasilkan chromosome’terbaik’ setelah melewati sekian generasi. Kro-mosom terbaik ini harus diuraikan (decoding) menjadi sebuah solusi yang diha-rapkan menjadi optimum. Apabila P(t) dan C(t) merupakan poplasi (parents) dan of f spring pada generasi ke-t, maka struktur umum algoritma genetik dapat dideskripsikan sebagai berikut (Mahmudy, 2013):
Gambar 4.1 Algoritma genetik
4.2 Ilustrasi Numerik
Misalkan diketahui node S menuju T yang melalui kota (node) 1 sampai 8 dimana p adalah panjang lintasan dan w merupakan waktu tempuh dengan notasi (p,w).
25
Gambar 4.2 10 node dan 19 edge dengan 2 fungsi tujuan
Pada contoh kasus gambar 4.2, terdapat 10 node dengan panjang lintasan (jarak) dan waktu tempuh yang telah diketahui. Adapun matriks adjacencynya adalah
Menyelesaikan ilustrasi numerik yang ada dengan menggunakanhill climbing sebagai berikut:
Terlebih dahulu ditentukan keadaan awal sebagai langkah awal untuk menye-lesaikan persoalan yang ada. Penentuan keadaan awal diambil secara acak (ran-dom). Adapun keadaan awalnya adalah sebagai berikut:
S→1→2→3→4→5→6→7→8→T
27
n! 2!(n−2)!
Terdapat 10 node yang terdiri dari 1 node asal, 1 node tujuan dan 8 node yang akan dilalui. Maka kombinasi yang diperoleh adalah
n!
2!(n−2)! =
8!
2!(8−2)! = 28
Ada sebanyak 28 pertukaran antar 2node yang akan dilakukan. Pertukaran node tersebut adalah:
1. Tukar 1 dan 2 (menukar urutan posisinode ke - 1 dengan node ke - 2)
2. Tukar 2 dan 3 (menukar urutan posisinode ke - 2 dengan node ke - 3)
3. Tukar 3 dan 4 (menukar urutan posisinode ke - 3 dengan node ke - 4)
4. Tukar 4 dan 5 (menukar urutan posisinode ke - 4 dengan node ke - 5)
5. Tukar 5 dan 6 (menukar urutan posisinode ke - 5 dengan node ke - 6)
6. Tukar 6 dan 7 (menukar urutan posisinode ke - 6 dengan node ke - 7)
7. Tukar 7 dan 8 (menukar urutan posisinode ke - 7 dengan node ke - 8)
8. Tukar 1 dan 8 (menukar urutan posisinode ke - 1 dengan node ke - 8)
9. Tukar 1 dan 3 (menukar urutan posisinode ke - 1 dengan node ke - 3)
10. Tukar 2 dan 4 (menukar urutan posisinode ke - 2 dengan node ke - 4)
11. Tukar 3 dan 5 (menukar urutan posisinode ke - 3 dengan node ke - 5)
12. Tukar 4 dan 6 (menukar urutan posisinode ke - 4 dengan node ke - 6)
13. Tukar 5 dan 7 (menukar urutan posisinode ke - 5 dengan node ke - 7)
14. Tukar 6 dan 8 (menukar urutan posisinode ke - 6 dengan node ke - 8)
15. Tukar 1 dan 7 (menukar urutan posisinode ke - 1 dengan node ke - 7)
16. Tukar 1 dan 4 (menukar urutan posisinode ke - 1 dengan node ke - 4)
17. Tukar 2 dan 5 (menukar urutan posisinode ke - 2 dengan node ke - 5)
18. Tukar 3 dan 6 (menukar urutan posisinode ke - 3 dengan node ke - 6)
19. Tukar 4 dan 7 (menukar urutan posisinode ke - 4 dengan node ke - 7)
20. Tukar 5 dan 8 (menukar urutan posisinode ke - 5 dengan node ke - 8)
21. Tukar 1 dan 6 (menukar urutan posisinode ke - 1 dengan node ke - 6)
22. Tukar 2 dan 7 (menukar urutan posisinode ke - 2 dengan node ke - 7)
23. Tukar 3 dan 8 (menukar urutan posisinode ke - 3 dengan node ke - 8)
24. Tukar 1 dan 5 (menukar urutan posisinode ke - 1 dengan node ke - 5)
25. Tukar 2 dan 6 (menukar urutan posisinode ke - 2 dengan node ke - 6)
26. Tukar 3 dan 7 (menukar urutan posisinode ke - 3 dengan node ke - 7)
27. Tukar 4 dan 8 (menukar urutan posisinode ke - 4 dengan node ke - 8)
28. Tukar 2 dan 8 (menukar urutan posisinode ke - 2 dengan node ke - 8)
Jadi, ada 28 kali pertukaran yang akan dilakukan. Dari posisi saat ini, ruang pencarian tetangga terlebih dahulu diselidiki. Jika solusi kandidat lebih baik ditemukan, maka pencarian bergerak ke titik itu dan menggantikan posisi saat ini dengan solusi kandidat yang lebih baik.
Solusi awal = S → 1 → 2 → 3 → 4 → 5 → 6 → 7 → 8 → T dengan jarak : waktu = 29 : 20
Tukar 1 dan 2 = S →2→1→3→4→5→6→7→8→T = 29 : 20
Tukar 2 dan 3 = S →1→3→2→4→5→6→7→8→T
Tukar 3 dan 4 = S →1→2→4→3→5→6→7→8→T
Tukar 4 dan 5 = S →1→2→3→5→4→6→7→8→T = 29 : 20
Tukar 5 dan 6 = S →1→2→3→4→6→5→7→8→T
Tukar 6 dan 7 = S →1→2→3→4→5→7→6→8→T
Tukar 7 dan 8 = S →1→2→3→4→5→6→8→7→T = 29 : 20
Tukar 1 dan 8 = S →8→2→3→4→5→6→7→1→T
29
Tukar 2 dan 4 = S →1→4→3→2→5→6→7→8→T = 31 : 22
Tukar 3 dan 5 = S →1→2→5→4→3→6→7→8→T
Tukar 4 dan 6 = S →1→2→3→6→5→4→7→8→T
Tukar 5 dan 7 = S →1→2→3→4→7→6→5→8→T = 26 : 17
Tukar 6 dan 8 = S →1→2→3→4→5→8→7→6→T
Tukar 1 dan 7 = S →7→2→3→4→5→6→1→8→T
Tukar 1 dan 4 = S →4→2→3→1→5→6→7→8→T
Tukar 2 dan 5 = S →1→5→3→4→2→6→7→8→T
Tukar 3 dan 6 = S →1→2→6→4→5→3→7→8→T
Tukar 4 dan 7 = S →1→2→3→7→5→6→4→8→T
Tukar 5 dan 8 = S →1→2→3→4→8→6→7→5→T
Tukar 1 dan 6 = S →6→2→3→4→5→1→7→8→T
Tukar 2 dan 7 = S →1→7→3→4→5→6→2→8→T
Tukar 3 dan 8 = S →1→2→8→4→5→6→7→3→T
Tukar 1 dan 5 = S →5→2→3→4→1→6→7→8→T
Tukar 2 dan 6 = S →1→6→3→4→5→2→7→8→T
Tukar 3 dan 7 = S →1→2→7→4→5→6→3→8→T
Tukar 4 dan 8 = S →1→2→3→8→5→6→7→4→T
Tukar 2 dan 8 = S →1→8→3→4→5→6→7→2→T
Proses pencarian lintasan terpendek dengan menggunakan algoritmasteepest ascent hill climbing dapat digambarkan sebagai berikut:
Berdasarkan gambar 4.3, pada tahap pertama setelah dilakukan pertukaran sebanyak 28 pertukaran dan panjang lintasan dan waktu tempuh dari masing-masing lintasan setelah pertukaran diperoleh, selanjutnya dibandingkan panjang lintasan dan waktu tempuh dari masing-masing rute yang telah dipertukarkan. Diperolehlah panjang lintasan dan waktu tempuh yang minimum dibandingkan
Gambar 4.3 Pencarian lintasan terpendek menggunakansteepest ascent hill clim-bing
dengan posisi awal, yaitu 26 dan 17. Selanjutnya posisi yang terpilih sebagai kandidat yang lebih baik daripada posisi awal, maka kandidat tersebut dijadikan sebagai posisi awal. Proses selanjutnya mempertukarkan kembali posisi-posisi yang telah ditentukan. Hasilnya tidak diperoleh kandidat yang lebih baik daripada kondisi awal maka proses pertukaran pun dihentikan. Hasil yang diperoleh yaitu panjang lintasan 26 dan waktu tempuh 17.
4.3 Pengembangan Algoritma Hill Climbing
31
Gambar 4.4 Langkah-langkah pengembangan algoritma
Langkah-langkah dalam pengembangan diawali dengan penentuan posisi awal. Posisi awal merupakan langkah awal dalam menyelesaikan persoalan yang ada. Adapun posisi awalnya adalah S →1 →2 →3 →4 →5 →6 →7 →8 → T. Proses hill climbing akan dilakukan pengembangan berupa modifikasi pada
tahap pertukaran. Posisi awal tersebut dipertukarkan sebanyak kombinasi dari banyaknya node. Proses pertukaran dilakukan dengan menggunakan hill clim-bing dan diperolehlah individu-individu baru. Individu-individu yang merupakan hasil dari pertukaran selanjutnya dijadikan sebagai individu baru dalam proses pengembangan dengan menggunakan algoritma genetik. Individu-individu terse-but akan menjadi populasi awal untuk menyelesaikan fungsi f itness, crossover dan mutasi.
Langkah selanjutnya adalah fungsi f itness. Suatu individu dievaluasi ber-dasarkan suatu fungsi tertentu. Di dalam evolusi alam individu yang bernilai f itness tinggi akan bertahan hidup. Sedangkan individu yang bernilai f itness
rendah akan mati. Nilai yang dihasilkan oleh fungsi f itness mempresentasikan seberapa banyak jumlah persyaratan yang dilanggar, sehingga dalam persoalan pencarian lintasan terpendek semakin kecil jumlah pelanggaran yang dihasilkan maka solusi yang dihasilkan semakin baik. Untuk setiap pelanggaran yang terja-di akan terja-diberikan nilai 1. Agar tidak terjaterja-di nilai f itness yang tidak terhingga, maka jumlah semua pelanggaran akan ditambahkan 1.
f = 1
1 + (Cost)
Ada beberapa batasan yang digunakan dalam pencarian lintasan terpendek ini, yaitu:
1. Node yang dilalui/dikunjungi hanya 1 (satu) kali
2. Lintasan yang digunakan hanya 1 kali
Dari hasil pertukaran yang dilakukan, maka akan menghasilkan fungsif itness sebagai berikut:
Langkah selanjutnya adalah tahap seleksi. Pada tahap seleksi terlebih dahu-lu akan dihitung nilai totalf itness. Setelah ditotal, selanjutnya menghitung pro-babilitas setiap kromosom dengan cara membagi nilai f itness setiap kromosom dengan total f itness. Nilai f itness setiap kromosom dan total f itness serta probabilitas seluruh kromosom dapat dilihat pada tabel 4.1. Untuk menentukan susunan populasi baru hasil seleksi, maka dibangkitkan bilangan acak dengan uru-tan selang seling antara probabilitas yang tinggi dengan probabilitas yang rendah dan selanjutnya dilakukan pindah silang.
Pindah silang (crossover) digunakan sebagai metode pemotongan kromo-som secara acak dan merupakan penggabungan bagian pertama dari kromokromo-som induk 1 dengan bagian kedua dari kromosom induk ke 2. Pindah silang akan dilakukan pada semua kromosom. Biasanya pindah silang dilakukan antara kro-mosom yang nilai f itness yang tinggi disilangkan dengan kromosom yang nilai
f itnessnya rendah. Metode pindah silang paling umum digunakan adalah pindah
silang satu titik potong (one-point crossover). Suatu titik potong dipilih secara acak kemudian bagian pertama dari induk 1 digabungkan dengan bagian kedua dari kromosom induk 2. Crossoverbertujuan menambah keanekaragamanstring dalam populasi dengan penyilangan antar-sting yang diperoleh dari sebelumnya.
33
crossover telah diperoleh. Keturunan - keturunan baru tersebut selanjutnya
di-hitung kembali nilai f itness dari masing-masing kromosom. Nilai f itness dari keturunan setelah dilakukan crossoverdapat dilihat pada tabel 4.1.
Tabel 4.1 Nilai fitness, probabilitas dan nilai fitness setelah pindah silang
Kromosom Nilai Fitness Probabilitas Fitness Pindah Silang
1 1 1/ 12,82=0,078 1
Langkah selanjutnya pada algoritma genetik adalah mutasi. Proses mutasi adalah suatu proses kemungkinan memodifikasi informasi gen-gen pada suatu
mosom. Perubahan ini dapat membuat solusi duplikasi menjadi memiliki nilai
f itness yang lebih rendah maupun lebih tinggi daripada solusi induknya.
Sete-lah proses mutasi dilakukan, selanjutnya dicek kembali nilai f itnessnya apakah masih memiliki pelanggaran atau tidak. Dari proses mutasi yang dilakukan, ma-ka dipilihlah kromosom-kromosom yang tidak memiliki pelanggaran. Selanjutnya dihitung jarak dan waktu tempuh dari masing-masing gen yang ada pada kro-mosom. Hasilnya kemudian dibandingkan antara kromosom yang satu dengan kromosom yang lain agar memperoleh hasil yang ingin dicapai.
Adapun hasil dari mutasi yang tidak memiliki pelanggaran adalah sebagai berikut:
S →1→2→3→4→5→6→7→8→T = 29,20
S →1→2→3→4→5→6→8→7→T = 29,20
S →1→2→3→4→5→8→6→7→T = 28,19
S →1→2→3→4→6→5→8→7→T = 24,15
S →1→2→3→4→7→6→5→8→T = 26,17
S →1→2→3→5→4→6→7→8→T = 29,20
S →1→2→3→5→4→6→8→7→T = 29,20
S →1→2→3→5→4→7→6→8→T = 31,22
S →1→2→3→5→6→4→7→8→T = 27,18
S →1→2→3→5→8→6→4→7→T = 26,17
S →1→2→5→3→4→6→8→7→T = 26,17
S →1→2→5→3→4→6→8→7→T = 26,17
S →1→2→5→3→4→7→6→8→T = 28,19
S →1→3→2→5→8→6→4→7→T = 27,18
S →1→3→2→5→6→4→7→8→T = 28,19
S →1→3→2→5→4→7→6→8→T = 32,23
35
S →1→3→2→5→4→6→7→8→T = 30,21
S →2→1→3→4→5→6→7→8→T = 28,19
S →2→1→3→4→5→6→8→7→T = 28,19
S →2→1→3→4→5→8→6→7→T = 27,18
S →2→1→3→4→6→5→8→7→T = 23,14
S →2→1→3→4→7→6→5→8→T = 25,16
S →2→1→3→5→4→6→7→8→T = 28,19
S →2→1→3→5→4→6→8→7→T = 28,19
S →2→1→3→5→4→7→6→8→T = 28,19
S →2→1→3→5→6→4→7→8→T = 26,17
S →2→1→3→5→8→6→4→7→T = 25,16
S →2→3→1→4→7→6→5→8→T = 30,21
S →2→3→1→4→6→5→8→7→T = 28,19
S →2→3→1→4→5→8→6→7→T = 32,23
S →2→3→1→4→5→6→8→7→T = 33,24
S →2→3→1→4→5→6→7→8→T = 33,24
S →2→5→3→1→4→6→7→8→T = 30,21
S →2→5→3→1→4→6→8→7→T = 30,21
S →2→5→3→1→4→7→6→8→T = 32,23
Dari hasil mutasi, diperoleh lintasan yang minimun dan waktu tempuh yang lebih singkat. Jika dibandingkan dengan hasil yang diperoleh sebelum algoritma dikembangkan, hasil yang diperoleh memiliki selisih yang cukup besar jika per-soalannya mencari lintasan terpendek. Maka lebih baik hasil yang diperoleh sete-lah dilakukan pengembangan algoritma dibandingkan dengan sebelum dilakukan pengembangan algoritma. Lintasan yang harus dilalui untuk mendapatkan hasil yang baik adalah S →2→1→3→4→6→5→8→7→T.
5.1 Kesimpulan
Pencarian lintasan terpendek dengan menggunakan algoritmahill climbinghanya terfokus pada proses pertukaran antar posisi node. Pertukaran yang dilakukan sebanyak kombinasi dari jumlah node yang ada. Karena pertukarannya dibatasi, maka kemungkin memperoleh hasil yang lebih baik masih ada. Selanjutnya di-lakukanlah pengembangan. Setelah dilakukan pengembangan pada proses per-tukaran dengan menggunakan algoritma genetik, diperolehlah hasil yang lebih baik dibandingkan dengan hasil yang diperoleh dengan menggunakan hill clim-bing. Karena pada algoritma genetik terdapat proses mutasi yang menyelidiki semua kemungkinan yang terjadi dari hasil pertukaran. Hal inilah yang menye-babkan hasil yang diperoleh lebih baik.
5.2 Saran
Untuk menyelesaikan persoalan lintasan terpendek dengan kendala multi objek-tif, diperlukan ketelitian penggabungan antara algoritma yang satu dengan yang lain.
36