MENGUKUR KINERJA ALGORITMA GENETIK PADA PEMAMPATAN MATRIKS JARANG Nico Saputro dan Joice Aritonang Email : nico@home.unpar.ac.id, jo_aritonang@yahoo.com A matrix that has lots of zero elements is called a sparse matrix. A sparse matrix can be compressed by saving non-zero elements. There are many algorithms to compress a sparse matrix, one of them is genetic algorithm. Genetic algorithm is a searching algorithm by an evolutionary process resulting in a best solution. A sparse matrix is modeled into genetic components. These components will be used by genetic operators to compress a sparse matrix. Then, will be searched the influence of genetic parameter in compressing a sparse matrix. Finally, compression result from genetic algorithm will be compared with exhaustive search algorithm. Keywords : sparse matrix, genetic algorithm, genetic operators, exhaustive search algorithm Matriks jarang adalah matriks yang memiliki banyak elemen nol. Pemampatan matriks jarang dapat dilakukan dengan menyimpan elemen tidak nol. Pemampatan dapat dilakukan dengan beberapa cara, salah satunya adalah algoritma genetik. Algoritma genetik merupakan algoritma pencarian yang bekerja berdasarkan mekanisme seleksi alam untuk menemukan individu berkualitas tinggi. Matriks jarang dimodelkan ke dalam komponen genetik. Operasi genetik dilakukan terhadap komponenkomponen tersebut untuk mendapatkan hasil pemampatan. Setelah itu, akan diteliti mengenai pengaruh paramater-parameter genetik terhadap pemampatan matriks jarang. Pada akhirnya, algoritma genetik akan dibandingkan dengan algoritma exhaustive search untuk mengetahui pemampatan matriks jarang dengan algoritma genetik sudah maksimal atau belum Kata kunci : matriks jarang, algoritma genetik, operator-operator genetik, algoritma exhaustive search 1. Pendahuluan Algoritma exhaustive search dapat melakukan pemampatan terhadap matriks jarang secara optimal karena algoritma ini mencoba semua kemungkinan pemampatan secara sistematis. Untuk ukuran matriks jarang yang relatif kecil (9x9), penggunaan algoritma ini masih efisien tetapi untuk ukuran matriks jarang yang besar (15x15), maka akan ada 1,307,674,368,000 kemungkinan. Waktu komputasi yang dibutuhkan untuk menemukan solusi tersebut cukup lama. Perlu dicari alternatif lain yaitu menggunakan algoritma genetik. Ingin dilihat apakah algoritma genetik dapat menemukan pemampatan matriks jarang yang optimal dengan waktu komputasi yang lebih cepat dibandingkan algoritma exhaustive search. 2. Matriks Jarang Matriks merupakan array 2 dimensi. Berdasarkan konvensi, indeks pertama adalah
baris, index kedua adalah kolom.[1] Definisi matriks jarang adalah matriks yang hanya mempunyai beberapa elemen tidak nol. Suatu matriks n x m dengan sejumlah k elemen tidak nol dikatakan sebagai matriks jarang bila k jauh lebih kecil dibandingkan n x m [6]. Array dengan banyaknya elemen tidak nol sekitar 10% dari ukuran array disebut array jarang [2]. Array jarang ini banyak dijumpai dalam persoalan komputasi sehari-hari seperti desain struktur, dan mencari solusi dari persamaan diferensial [2]. Contoh matriks jarang : 0 5 0 0 12 0 0 21 22 0 19 0 0 0 0 0 0 0 0 1 2 3 4 6 0 0 28 7 8 9 10 11 13 14 0 0 0 0 0 0 0 0 0 26 27 15 16 17 18 20 0 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 23 0 0 0 0 0 0 24 0 0 25 0 0 0 0 3. Algoritma Exhaustive search Algoritma exhaustive search di kenal juga sebagai brute force. Brute force lebih mengandalkan kepada kemampuan komputasi dari perangkat keras dengan mencoba seluruh kemungkinan sampai ditemukannya solusi. Meskipun dirasakan kurang elegan, tetapi masih tetap dipakai di bidang software engineering sampai sekarang. Brute force selalu dapat menghasilkan solusi optimal, walaupun waktu yang diperlukan mungkin lama. Brute force berguna untuk menguji keakuratan algoritma yang lebih cepat. [7] 0 0 0 0 0 0 0 0 0 0 4. Pemodelan ke dalam Algoritma Genetik 4.1 Representasi Kromosom Kromosom direpresentasikan dengan cara permutation encoding. Pada permutation encoding, setiap kromosom direpresentasikan dengan string angka yang merepresentasikan posisi secara terurut. Baris akan menjadi gen pada kromosom. Kromosom dibentuk dengan melakukan permutasi terhadap urutan penempatan semua baris yang ada. Gen mempunyai lokus dan allele. Nilai gen (allele) merepresentasikan nomor baris dan lokus merepresentasikan urutan penempatan. Gen yang muncul terlebih dahulu akan memiliki prioritas lebih tinggi untuk diproses terlebih dahulu. Tabel 1 merupakan sebuah contoh matriks jarang berukuran 10 x 10 untuk memperjelas pemodelan di atas. Tabel 1 Contoh Matriks Jarang 10 x 10 1 2 3 4 5 6 7 8 9 10 1 0 10 0 0 0 0 0 0 0 0 2 1 0 0 0 0 0 0 0 0 0 3 2 0 0 0 0 0 0 27 0 0 4 0 31 0 0 34 0 0 0 38 0 5 4 0 0 0 0 0 46 0 0 0 6 5 0 52 0 0 0 0 0 0 0 7 0 61 62 0 0 0 0 0 0 0 8 7 71 0 0 0 75 76 0 0 0 9 8 0 0 83 0 0 0 0 0 0 10 9 0 0 0 0 0 0 0 98 99 Warna abu-abu pada Tabel 1 di kolom ke-1 merupakan dummy, yaitu elemen yang bersifat unik. Dummy ini berfungsi sebagai penanda kolom ke-1 untuk baris tertentu. Tabel 1 dapat direpresentasikan sebagai berikut : Karena ada 10 baris maka dalam 1 kromosom ada 10 gen, seperti Gambar 1.
Lokus 1 2 3 4 5 6 7 8 9 10 Allele 9 8 4 5 6 7 1 3 2 10 Gambar 1 Contoh representasi kromosom untuk kasus pada tabel 1 Nilai-nilai gen pada kromosom menunjukkan operasi yang spesifik. Pada representasi di atas, lokus 1 berarti urutan penempatan ke-1, lokus 2 berarti urutan penempatan ke-2. Sehingga, baris ke-9 memiliki urutan penempatan ke-1, baris ke- 8 memiliki urutan penempatan ke-2, dst. Allele 9 berarti baris ke-9. Isi dari baris ke-9 ditempatkan di array satu dimensi, array posisi menyimpan posisi baris dari elemen tidak nol. Dapat dilihat pada Gambar 2(a) dan 2(b). Array 1 Dimensi Array Posisi Array 1 Dimensi Array Posisi 9 8 0 0 83 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (a) 8 0 0 83 0 0 0 0 0 0 9 0 0 9 0 0 0 0 0 0 (b) Gambar 2. (a) Kondisi awal array (b) kondisi array setelah penempatan baris 9 Allele 8 berarti baris ke-8. Isi dari baris ke-8 ditempatkan di array satu dimensi dengan aturan bahwa bila di suatu kolom di array 1 dimensi sudah ditempati oleh elemen tidak nol dari penempatan sebelumnya, kolom tersebut tidak dapat ditempati lagi oleh elemen tidak nol dari penempatan berikutnya. Untuk menempatkan baris 8, karena kolom 1 dan kolom 4 dari array 1 dimensi sudah ditempati oleh elemen 8 dan 83 dari penempatan sebelumnya, elemen 7 tidak dapat ditempatkan di kolom 1 tetapi di kolom 2 (lihat Gambar 3). 8 7 71 0 0 0 75 76 0 0 0 Array 1 Dimensi 8 7 71 83 0 0 75 76 0 0 Array Posisi 9 8 8 9 0 0 8 8 0 0 mbar 3 array setelah penempatan baris ke-8 Bila proses penempatan baris berdasarkan nilai gen tersebut dilanjutkan sampai selesai, akan diperoleh array satu dimensi dan array posisi seperti pada Gambar 4. Ga 9 0 0 0 0 0 0 0 98 99 1 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 27 0 0 0 10 0 0 0 0 0 0 0 0 0 61 62 0 0 0 0 0 0 0 5 0 52 0 0 0 0 0 0 0 4 0 0 0 0 0 46 0 0 0 0 31 0 0 34 0 0 0 38 0 7 71 0 0 0 75 76 0 0 0 8 0 0 83 0 0 0 0 0 0 Array 1 Dimensi Array Posisi 8 7 71 83 0 31 75 76 34 4 0 5 38 52 0 46 0 61 62 0 10 2 1 9 0 0 0 0 27 0 0 98 99 9 8 8 9 4 4 8 8 4 5 0 6 4 6 0 5 7 7 7 1 1 3 2 10 0 0 0 0 3 0 0 10 10 Gambar 4 Proses pengurutan gen untuk kasus pada tabel 1 [3]
4.2 Fungsi Fitness Fungsi fitness akan dihitung dengan rumus : banyaknya elementidak nol panjangarray1 dimensi Nilai fitness terletak antara 0 dan 1. Di mana kromosom yang semakin baik, memiliki nilai fitness yang semakin besar. Kromosom terbaik memiliki nilai fitness = 1. 4.3 Operator Genetik 4.3.1 Reproduksi Metode pemilihan yang digunakan adalah elitism method dan roulette wheel selection. Elitism method menduplikasi terlebih dahulu kromosom-kromosom terbaik dari populasi tersebut ke generasi berikutnya [4]. Untuk mencukupi ukuran populasi pada generasi yang baru, dibentuk individu-individu baru sebanyak ukuran populasi dikurangi jumlah individu hasil elitism, yang diturunkan dari generasi sebelumnya. Individu-individu baru diperoleh dari hasil pindah silang dan setelah itu, pada individu-individu hasil pindah silang akan dilakukan mutasi. Roulette wheel berfungsi untuk memilih individu yang akan dilakukan pindah silang dan mutasi. 4.3.2 Pindah Silang Metode pindah silang yang digunakan adalah Mixed-type Partial Matching Crossover (MPMX). Induk A 1 2 3 4 5 6 7 8 9 10 Induk B 10 9 4 7 6 8 5 3 2 1 Gambar 5 Contoh kromosom induk A dan induk B Metode MPMX bekerja sebagai berikut [5] : 1. Langkah-langkah untuk mendapatkan daerah matching : a. Ambil N1 (nilai acak antara 1 dan jumlah karakter yang sama pada kedua string, berarti nilai acak antara 1 dan 10), misalnya = 4 b. {1, 5, 6, 7} merupakan keempat nilai karakter yang diambil secara acak dari {string1} {string2} c. Daerah matching pertama menjadi M1 = 1 5 6 7 d. Daerah matching kedua adalah M2 = 1 5 6 7 2. Rotasi dari M1 menghasilkan M1 = 5 6 7 1 3. Berdasarkan pemetaan yang dilakukan di antara daerah matching yang telah diputar dan daerah matching yang kedua (misalnya pada string1 : allele 5 menjadi 1, allele 6 menjadi 5, dst. Demikian juga untuk string2 : allele 1 menjadi 5, allele 5 menjadi 6, dst) akan diperoleh 2 string baru, dapat dilihat pada Gambar 6. Induk A 1 2 7 6 9 13 4 11 12 5 Induk B 15 2 4 5 6 7 1 3 8 9 Gambar 6 Kromosom hasil pindah silang MPMX 4.3.3 Mutasi Metode mutasi yang digunakan adalah remove and insert. Pada metode remove and insert, pemindahan dan penyisipan gen dilakukan secara acak. Sebuah posisi gen pada kromosom
akan dipilih secara acak kemudian sebuah posisi baru dipilih lagi secara acak. Gen antara kedua posisi tersebut akan dipindahkan dan disisipkan secara acak. Pada Gambar 7 diperlihatkan contoh bagaimana mutasi dilakukan pada kromosom hasil pindah silang dengan metode MPMX. Anak C 7 2 3 4 1 5 6 8 9 10 Posisi Gen 3 8 Hasil Anak C 7 2 4 1 5 6 8 3 9 10 Gambar 7 Contoh mutasi Penempatan gen hanya melihat tempat yang kosong pada gen sebelumnya, bukan 2 atau 3 gen sebelumnya. Sebagai contoh, gen 4 (baris 4) ditempatkan dengan cara mencari tempat kosong setelah penempatan gen 8, tidak melihat tempat kosong pada gen 9. Array satu dimensi merupakan hasil pemampatan matriks jarang. Array posisi berfungsi untuk menyimpan posisi gen (baris) pada matriks jarang, sehingga matriks yang dimampatkan dapat dikembalikan ke bentuk matriks jarang. 4.4 Parameter Genetik Parameter Genetik berguna dalam pengendalian operator-operator genetik. Parameter yang digunakan adalah : ukuran populasi, jumlah generasi, Probabilitas Crossover (P c ), dan Probabilitas Mutasi (P m ). Tidak ada aturan pasti tentang berapa nilai setiap parameter ini [4]. 5. Pengujian 5.1 Pengujian Parameter Genetik Pengujian ini bertujuan untuk mengetahui pengaruh parameter-parameter genetik dalam menghasilkan pemampatan yang maksimal. Pengujian terhadap hasil pemampatan yang dihasilkan dilakukan dengan melihat nilai fitness yang dihasilkan dengan melakukan beberapa perubahan nilai parameter genetik. Pengujian ini dilakukan terhadap sebuah populasi awal yang sama agar hasil perbandingan yang didapat merupakan sebuah hasil yang obyektif. Spesifikasi parameter genetik yang digunakan : Banyak Populasi : 10, Banyak Elitism : 5, Nilai Pc = 0.8, Nilai Pm = 0.09 Populasi Awal yang digunakan : 1 3 5 6 4 8 10 7 2 9 5 7 8 6 2 9 10 1 3 4 5 7 6 2 3 8 4 1 9 10 3 6 8 9 2 7 10 1 5 4 1 3 5 9 6 10 8 2 7 4 6 3 4 10 1 5 7 2 8 9 8 1 3 6 7 9 2 10 5 4 6 9 3 5 4 8 2 7 10 1 1 5 3 7 2 9 10 4 6 8 9 7 5 4 6 1 10 3 8 2 5.1.1 Pengujian Maksimal Generasi Pengujian terhadap maksimal generasi yang nilainya diubah agar dapat dilihat pengaruh maksimal generasi terhadap pemampatan matriks jarang, nilai generasi yang digunakan adalah 1, 10, 50, 75, dan 100. Dari 25 kali percobaan untuk masing-masing nilai generasi, diperoleh nilai fitness rata-rata:
Nilai Fitness Rata-rata Nilai Fitness Rata-rata 0,9 0,85 0,8 0,75 0,7 1 3 5 7 9 11 13 15 17 19 21 23 25 Percobaan ke- Nilai Maksimal Generasi Gambar 8 Grafik pengujian terhadap maksimal generasi Pada Gambar 8, nilai rata-rata fitness pada generasi ke-1 adalah 0.789192, dengan standar deviasi = 0.01071, pada generasi ke-10 adalah 0.818844 dengan standar deviasi = 0.01873, pada generasi ke-50 adalah 0.83248 dengan standar deviasi = 0.02043, pada generasi ke-75 adalah 0.8376 dengan standar deviasi = 0.02101, pada generasi ke-100 adalah 0.833736 dengan standar deviasi = 0.02016, hal ini menunjukkan bahwa semakin besar maksimal generasi yang digunakan maka semakin besar kemungkinan ditemukan pemampatan matriks jarang yang terbaik. 5.1.2 Pengujian Jumlah Elitism Pengujian terhadap jumlah elitism yang nilainya diubah, diuji pada maksimal generasi = 100, agar dapat dilihat pengaruh jumlah elitism terhadap pemampatan matriks jarang. Nilai elitism yang digunakan adalah 1, 3, dan 5. Nilai Pc = 0.8 dan nilai Pm = 0.09. Dari 25 kali percobaan untuk masing-masing nilai elitism, diperoleh nilai fitness rata-rata : 1 10 50 75 100 0,88000 0,86000 0,84000 0,82000 0,80000 0,78000 0,76000 0,74000 1 16 31 46 61 76 91 Generasi ke- Nilai Elitism Gambar 9 Grafik pengujian terhadap jumlah elitism Dari Gambar 9, dapat dilihat bahwa nilai elitism yang kecil dapat mencapai nilai fitness yang maksimal, sedangkan untuk nilai elitism yang besar nilai fitness yang dicapai tidak maksimal. Untuk nilai elitism = 5, nilai fitness maksimal mendekati angka 0.84030 dengan standar deviasi = 0.01239, untuk nilai elitism = 3, nilai fitness maksimal mendekati angka 0.85711 dengan standar deviasi = 0.01548, dan untuk elitism = 1, nilai fitness maksimal mendekati angka 0.86513 dengan standar deviasi = 0.01366. Hal ini dikarenakan, dengan menggunakan nilai elitism yang kecil, kemungkinan mendapat nilai fitness dari kromosom baru lebih besar. Misalnya, banyaknya populasi = 10, untuk nilai elitism = 1, proses pindah silang akan menghasilkan 9 kromosom baru, sedangkan untuk nilai elitism = 5, proses pindah silang hanya menghasilkan 5 individu baru. 1 3 5 5.1.3 Pengujian Parameter Pindah Silang Pengujian terhadap parameter pindah silang (Pc) yang nilainya diubah, diuji pada maksimal
Fungsi Fitness Rata-rata Nilai Fitness Rata-rata generasi = 100, agar dapat dilihat pengaruh parameter pindah silang terhadap pemampatan matriks jarang. Nilai parameter pindah silang yang digunakan adalah 0.1, 0.4, dan 0.7. Banyaknya elitism = 5, Pm = 0.09. Dari 25 kali percobaan untuk masing-masing nilai parameter pindah silang, diperoleh nilai fitness rata-rata : 0,86000 0,84000 0,82000 0,80000 0,78000 0,76000 0,74000 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 Generasi ke- Nilai Pc 0.1 0.4 0.7 Gambar 10 Grafik pengujian terhadap nilai Pc mutasi terhadap pemampatan matriks jarang. Nilai parameter mutasi yang digunakan adalah 0.1, 0.4, dan 0.7. Banyaknya elitism = 5, Pc = 0.8. Dari 25 kali percobaan untuk masingmasing nilai parameter mutasi, diperoleh nilai fitness rata-rata : 0,88000 0,86000 0,84000 0,82000 0,80000 0,78000 0,76000 0,74000 1 13 25 37 49 61 73 85 97 Generasi ke- Nilai Pm 0.1 0.4 0.7 Gambar 11 Grafik pengujian terhadap nilai Pm Dari Gambar 10, dapat dilihat bahwa Pc yang relatif besar akan menghasilkan nilai fitness yang mendekati maksimal. Pada generasi ke- 100, untuk Pc = 0.1 nilai fitness mendekati angka 0.79036 dengan standar deviasi = 0.00202, untuk Pc = 0.4 nilai fitness mendekati angka 0.83770 dengan standar deviasi = 0.01045, dan untuk Pc = 0.7 nilai fitness mendekati angka 0.84146 dengan standar deviasi = 0.01162. Dengan menggunakan nilai Pc yang besar, maka kemungkinan kromosom mengalami proses pindah silang semakin besar dan menghasilkan kromosom baru yang memiliki nilai fitness yang lebih baik. 5.1.4 Pengujian Parameter Mutasi Pengujian terhadap parameter mutasi (Pm) yang nilainya diubah, diuji pada maksimal generasi = 100, agar dapat dilihat pengaruh parameter Dari Gambar 11, dapat dilihat bahwa Pm yang relatif besar akan menghasilkan nilai fitness yang mendekati maksimal. Pada generasi ke- 100, untuk Pm = 0.1 nilai fitness mendekati angka 0.84542 dengan standar deviasi = 0.01396, untuk Pm = 0.4 nilai fitness mendekati angka 0.85190 dengan standar deviasi = 0.01520, dan untuk Pm = 0.7 nilai fitness mendekati angka 0.86387 dengan standar deviasi = 0.01762. Dengan menggunakan nilai Pm yang besar, maka kemungkinan kromosom mengalami proses mutasi semakin besar dan menghasilkan kromosom baru yang memiliki nilai fitness yang lebih baik. 5.2 Perbandingan dengan Algoritma Brute Force Brute force melakukan pencarian dengan dibatasi satu juta kombinasi urutan baris secara
acak. Jadi, hasil pemampatan menggunakan algoritma brute force belum tentu paling optimal. Hasil pemampatan menggunakan algoritma genetik dan algoritma brute force, untuk ukuran matriks jarang dan njuml_elm yang sama, dapat dilihat pada tabel 2. Banyaknya percobaan yang dilakukan menggunakan algoritma genetik adalah 10 kali percobaan, dari percobaan tersebut dipilih hasil yang terbaik yaitu persentase yang terbesar dan waktu komputasi yang tercepat. Tabel 2 Hasil Perbandingan Algoritma Brute Force dan Algoritma Genetik nbaris nkolom njuml_elm Brute Force Algoritma Genetik Persentase Waktu Persentase Waktu Banyaknya (menit) (menit) percobaan 5 1000 500 45.6800% 24 45.5800% 1 10 5 1000 2500 0.5800% 25 0.4800% 1 10 10 10 10 80.0000% 4 80.0000% 1 10 10 10 50 36.0000% 5 36.0000% 1 10 500 500 25000 63.0000% 1207 62.9148% 17 10 500 500 125000 1.0000% 1300 0.9548% 23 10 1000 1000 100000 48.8600% 2160 48.8241% 100 10 1000 1000 500000 0.4700% 2280 0.4561% 138 10 Dapat dilihat bahwa persentase pemampatan menggunakan algoritma genetik mendekati persentase pemampatan menggunakan algoritma brute force. Dapat dikatakan bahwa, hasil pemampatan menggunakan algoritma genetik tidak semaksimal hasil pemampatan menggunakan algoritma brute force, tetapi hasil pemampatan menggunakan algoritma genetik cukup baik. Kelebihan dari algoritma genetik adalah memiliki waktu komputasi yang lebih cepat dibandingkan dengan algoritma brute force. kromosom dibentuk secara acak, sedangkan pada algoritma brute force dibentuk semua kemungkinan untuk mengetahui hasil pemampatan yang maksimal. Tetapi waktu komputasi algoritma genetik lebih cepat dibandingkan dengan algoritma brute force. 2. Semakin besar maksimal generasi, Pc, dan Pm akan semakin besar pula peluang ditemukannya pemampatan yang lebih baik. 3. Semakin kecil banyaknya elitism, akan semakin besar pula peluang ditemukannya pemampatan yang lebih baik. 6. Kesimpulan 1. Matriks jarang dapat dimampatkan menggunakan algoritma genetik, tetapi tidak semaksimal algoritma brute force. Hal ini disebabkan, dalam algoritma genetik 7. Daftar Pustaka 1. Black, Paul E., http://www.nist. gov/dads/html/matrix.html, 2. Wilson, R. (1988) "An introduction to dynamic data structures", McGraw-Hill,
London 1988, in http://homepages.which.net\~gk.sherman\ba aaaacn.htm. 3. Driesen, K., Compressing Sparse Table using a Genetic Algorithm, Proceedings of the GRONICS 94 Student Conference, Groningen, the Netherlands, February 1994. 4. Koza, J., Genetic Algorithm, http://cs.felk.cvut.cz/~xobitko/ga.html, April 2003. 5. Saputro, N., Aplikasi Algoritma Genetik pada Pattern Matching 2 Pola Biner, Jurusan Teknik Elektro, Fakultas Teknologi Industri, Institut Teknologi Bandung, 1994. 6. Black, Paul E., http://www.nist. gov/dads/html/sparsematrix.html 7. http://www.pcwebopaedia.com/term/b/br ute_force.html