ALGORITMA GENETIKA
PENDAHULUAN Algoritma genetika terinspirasi dari prinsip genetika dan seleksi alam (teori evolusi Darwin) yg ditemukan di Universitas Michigan, AS, oleh John Holland (1975) melalui sebuah penelitian dan dipopulerkan oleh salah satu muridnya, David Goldberg. Konsep dasar algoritma genetika sebenarnya dirancang utk menyimulasikan proses-proses dlm sistem alam yg diperlukan utk evolusi, khususnya teori evolusi alam yg dicetuskan oleh Charles Darwin, yaitu survival of the fittest. Menurut teori ini, di alam terjadi persaingan antara individu-individu utk memperebutkan sumber daya alam yg langka shg makhluk yg kuat mendominasi makhluk yg lebih lemah.
PENDAHULUAN Algoritma genetika adalah teknik pencarian heuristik yg didasarkan pada gagasan evolusi seleksi alam dan genetik. Algoritma ini memanfaatkan proses seleksi alamiah yg dikenal dgn proses evolusi, “hanya individu-individu yg kuat yg mampu bertahan”. Proses seleksi alamiah ini melibatkan perubahan gen yg terjadi pd individu melalui proses perkembangbiakan.
Proses perkembangbiakan ini didasarkan pd analogi struktur genetika dan perilaku kromosom dlm populasi individu dg menggunakan dasar sbb: Individu dlm populasi bersaing utk sumber daya alam dan pasangannya. Mereka yg plg sukses di setiap kompetisi akan menghasilkan keturunan yg lebih baik drpd individu-individu yg berkinerja buruk. Gen dari individu yg baik akan menyebar ke seluruh populasi shg dua orang tua yg baik kadang-kadang akan menghasilkan keturunan yg lbh baik dr org tuanya. Setiap ada pergantian generasi maka generasi terbaru ini biasanya lbh cocok dg lingkungan mereka. Dgn kata lain, generasi baru ini bisa menyesuaikan dgn keadaan lingkungannya.
Permasalahan yg Membutuhkan Algoritma Genetika Ruang pencarian sangat besar, kompleks atau krg dipahami. Tidak ada pengetahuan yg memadai utk menyederhanakan ruang pencarian yg sgt besar mjd ruang pencarian yg lebih sempit. Tidak ada analisis matematis yg bisa menangani ketika metode konvensional gagal menyelesaikan masalah yg dihadapi. Solusi yg dihasilkan tidak harus optimal, asal sudah memenuhi kriteria sudah bisa diterima. Mempunyai kemungkinan solusi yg jumlahnya tak hingga. Membutuhkan solusi “real-time”, yaitu solusi yg bisa didapatkan dgn cepat shg dpt diimplementasikan utk permasalahan yg mempunyai perubahan yg cepat.
APLIKASI ALGORITMA GENETIKA Algoritma genetika telah digunakan utk memecahkan masalah dan pemodelan di bidang teknik, bisnis dan hiburan, termasuk: Optimasi: algoritma genetika byk digunakan dlm berbagai tugas optimasi, termasuk optimasi numerik, dan masalah-masalah optimasi kombinatorial seperti Traveling Salesman Problem (TSP), desain sirkuit, Job Shop Scheduling dan optimasi video & kualitas suara. Pemrograman Otomatis: algoritma genetika telah digunakan utk berevolusi thd program komputer utk melakukan tugas-tugas yg spesifik dan merancang struktur komputasi lain, misalnya selular automata dan sorting networking. Machine Learning: algoritma genetika byk digunakan utk aplikasi mesin-learning, termasuk klasifikasi dan prediksi struktur protein. Algoritma genetika juga telah digunakan utk merancang jst dan utk mengendalikan robot. Model ekonomi : algoritma genetika telah digunakan utk memodelkan proses inovasi, pengembangan strategi penawaran dan munculnya pasar ekonomi.
APLIKASI ALGORITMA GENETIKA Model Sistem Imunisasi: algoritma genetika telah digunakan utk memodelkan berbagai aspek sistem kekebalan tubuh alami, termasuk mutasi somatik selama masa hidup individu dan menemukan keluarga dg gen ganda selama evolusi. Model ekologi:algoritma genetika telah digunakan utk memodelkan fenomena ekologi seperti host-parasite co-evolution, simbiosis dan arus sumber daya dlm ekologi. Interaksi antara evolusi dan pembelajaran : algoritma genetika telah digunakan utk mempelajari bagaimana individu belajar dan memengaruhi proses evolusi suatu spesies satu sama lain.
BEBERAPA PENGERTIAN DASAR Gen (genotype) adalah variabel dasar yg membentuk suatu kromosom. Dalam algoritma genetika, gen ini bs bernilai biner, float,integer maupun karakter. Allele adalah nilai dari suatu gen, bisa berupa biner,float,integer maupun karakter. Kromosom adalah gabungan dari gen-gen yg membentuk arti tertentu. Ada beberapa macam bentuk kromosom, yaitu : Kromosom biner adalah kromosom yg disusun dr gen-gen yg bernilai biner. Kromosom ini mempunyai tingkat ketelitian yg diharapkan. Kromosom ini bagus bila digunakan utk permasalahan yg parameter dan range nilainya tertentu. Kromosom float adalah kromosom yg disusun dr gen-gen yg bernilai pecahan, termasuk gen yg bernilai bulat. Kromosom ini mrp model yg jumlah parameternya banyak. Tingkat keberhasilan dr kromosom ini rendah dlm kecepatan (jlh kecepatan) Kromosom string yaitu kromosom yg disusun dr gen-gen yg bernilai string Kromosom kombinatorial yaitu kromosom yg disusun dr gen-gen yg dinilai berdasarkan urutannya.
BEBERAPA PENGERTIAN DASAR Individu adalah kumpulan gen, bs dikatakan sama dgn kromosom. Individu menyatakan salah satu kemungkinan solusi dari suatu permasalahan Populasi adalah sekumpulan individu yg akan diproses scr bersama-sama dlm satu siklus proses evolusi Generasi menyatakan satu satuan siklus proses evolusi Nilai fitness menyatakan seberapa baik nilai dari suatu individu atau solusi yg didapatkan. Nilai inilah yg dijadikan acuan utk mencapai nilai optimal. Algoritma genetika bertujuan utk mencari individu yg mempunyai nilai fitness yg plg optimal (bs maksimum atau minimum, tergantung pd kebutuhan)
1 allele gen gen1 gen2 gen3 gen4 gen5 Kromosom 2 Kromosom 3 Kromosom 1 gen1 gen2 gen3 gen4 gen5 Kromosom 2 Kromosom 3 Kromosom 1 Individu Individu Individu Populasi
SIKLUS ALGORITMA GENETIKA David Goldberg adalah org yg pertama kali memperkenalkan siklus algoritma genetika seperti digambarkan sbb. Populasi Awal Evaluasi Fitness Seleksi Individu Reproduksi: Cross-Over Dan Mutasi Populasi Baru
Siklus dimulai dari membuat populasi awal scr acak, kemudian setiap individu dihitung nilai fitnessnya. Proses berikutnya adl menyeleksi individu terbaik, kemudian dilakukan cross-over dan dilanjutkan oleh proses mutasi shg terbentuk populasi baru. Selanjutnya populasi baru ini mengalami siklus yg sama dgn populasi sblmnya. Proses ini berlangsung terus hingga generasi ke-n. Siklus ini kemudian diperbaiki oleh Zbigniew Michalewicz dg menambahkan satu proses elitisme dan membalik proses reproduksi dahulu, kemudian proses seleksi seperti berikut.
Reproduksi:Cross-Over dan Mutasi Populasi Awal Reproduksi:Cross-Over dan Mutasi Evaluasi Fitness Seleksi Individu Populasi Baru Elitisme
KOMPONEN-KOMPONEN UTAMA ALGORITMA GENETIKA Untuk mengimplementasikan algoritma genetika, ada 8 komponen utama yg hrs dilakukan. Teknik encoding/decoding gen dari individu. Membangkitkan populasi awal scr random dgn terlebih dahulu menentukan jlh individu dlm populasi tsb. Nilai fitness (nilai dari fungsi tujuan) Elitisme (prosedur utk mengcopy individu yg mempunyai nilai fitness tertinggi sebanyak 1 (bila jlh individu dlm populasi ganjil) atau 2 ( bila jlh individu dlm populasi adl genap) Seleksi Cross-over (pindah silang) Operasi pindah silang antar kromosom yg dilakukan utk membentuk individu baru yg lbh baik. Mutasi (untuk melakukan modifikasi satu atau lebih nilai gen dlm kromosom yg sama. Penggantian populasi (agar semua individu awal dari satu generasi diganti oleh temporer individu hasil proses pindah silang dan mutasi)
1. Teknik Encoding/Decoding Gen dan Individu Encoding (pengkodean) berguna utk mengodekan nilai gen-gen pembentuk individu. Nilai-nilai gen ini diperoleh scr acak.
Decoding (pendekodean) berguna utk mendekode gen-gen pemebentuk individu agar nilainya tdk melebihi range yg telah ditentukan dan sekaligus mjd nilai variabel yg akan dicari sbg solusi permasalahn. Jika nilai variabel x yg telah dikodekan tsb range-nya diubah mjd [rb ra], yaitu rb = batas bwh, ra = batas atas , maka cara utk mengubah nilai-nilai variabel di atas hingga berada dlm range yg baru [rb ra], disebut decoding (pengodean)
Pengdekodean bilangan real : x = rb + (ra – rb)g Pendekodean diskrit desimal: x = rb + (ra – rb) (g1.10-1 + g2. 10-2 + … + gN. 10-N) 3. Pendekodean biner: x = rb + (ra – rb)(g1.2-1 + g2.2-2 + … + gN.2-N) N : jlh gen dlm individu
Contoh Soal Misalkan diketahui fungsi f(x1, x2, x3) = 2x1 + x2 – 4x3, nilai variabel x dibatasi dalam range [-4 6]. Tentukan besar nilai f(x1, x2, x3) jika: Variabel (x1, x2, x3) diperoleh secara acak menggunakan pengodean bilangan real berikut. Variabel (x1, x2, x3) diperoleh secara acak menggunakan pengodean diskrit desimal berikut. Variabel (x1, x2, x3) diperoleh secara acak menggunakan pengodean biner berikut. x1 x2 x3 0,2431 0,9846 0,5642 g1 g2 g3 x1 x2 x3 5 2 9 4 8 g1 g2 g3 g4 g5 g6 g7 g8 g9 x1 x2 x3 1 g1 g2 g3 g4 g5 g6 g7 g8 g9
2. Membangkitkan Populasi Awal Sebelum membangkitkan populasi awal, terlebih dahulu kita harus menentukan jumlah individu dalam populasi tersebut. Misalnya jumlah individu tsb N. Setelah itu, baru kita bangkitkan populasi awal yang mempunyai N individu secara random.
3. Nilai Fitness Nilai fitness menyatakan nilai dari fungsi tujuan. Tujuan dari algoritma genetika adalah memaksimalkan nilai fitness. Jika yang dicari nilai maksimal, maka nilai fitness adalah nilai dari fungsi itu sendiri. Tetapi jika yang dibutuhkan adalah nilai minimal, maka nilai fitness merupakan invers dari nilai fungsi itu sendiri. Proses invers dapat dilakukan dengan cara berikut.
Fitness = C – f(x) atau C adalah konstanta dan ℇ adalah bilangan kecil yang ditentukan untuk menghindari agar tidak terjadi pembagian oleh nol dan x adalah individu.
Contoh Soal Diketahui fungsi f(x1, x2) = 2x12 + 3x22, nilai x dibatasi pada [-2 4], dengan ℇ = 0,1 Buatlah populasi awal secara acak, yang terdiri dari 5 individu yang dikodekan secara biner. Bila diinginkan mencari nilai maksimal fungsi f(x1, x2), tentukan individu mana yang mempunyai nilai terbaik. Bila diinginkan mencari nilai minimal fungsi f(x1, x2), tentukan individu mana yang mempunyai nilai terbaik.
4. Elitisme Elitisme adalah prosedur untuk meng-copy individu yang mempunyai nilai fitness tertinggi sebanyak satu (bila jumlah individu dalam suatu populasi adalah ganjil) atau dua (bila jumlah individu dalam suatu populasi adalah genap). Hal ini dilakukan agar individu ini tidak memiliki kerusakan (nilai fitnessnya menurun) selama proses pindha silang maupun mutasi.
5. Seleksi Kadang kala suatu fungsi tertentu dapat menyebabkan setiap individu mempunyai nilai fitness hampir sama. Hal ini bisa berakibat buruk pada saat dilakukan proses seleksi untuk memilih orang tua karena dapat menyebabkan optimum lokal.
Nilai Fitness Optimum Lokal Optimum Sebenarnya P • • • • • Individu ke-i Semua individu berada sangat jauh dari titik optimal sesungguhnya. Kebetulan ada satu individu P yang nilai fitnessnya tertinggi dibanding individu lainnya. Akibatnya individu P akan memproduksi banyak anak.
• P Nilai Fitness Individu ke-i Pada generasi tertentu individu P dan anak-anaknya, melalui proses pindah silang dan mutasi, akan menghasilkan individu-individu yang mendekati lokal optimum sehingga terjadilah konvergensi prematur, dimana populasi konvergen pada suatu solusi optimal lokal. Permasalahan inilaj yang sering muncul pada algoritma genetika.
Untuk menghindari hal ini, dibuatlah suatu mekanisme yang disebut dengan Linier Fitness Ranking (LFR). Tujuan mekanisme ini sebenarnya adalah untuk melakukan penskalaan nilai-nilai fitness dengan menggunakan persamaan berikut: Keterangan : LFR(i) = nilai LFR individu ke-i N = jumlah individu dalam populasi R(i) = ranking individu ke-i setelah diurutkan dari nilai fitness terbesar hingga terkecil fmax = nilai fitness tertinggi fmin = nilai fitness terendah
Seleksi digunakan untuk memilih dua buah individu yang akan dijadikan orang tua, kemudian dilakukan pindah silang (cross-over) untuk mendapatkan keturunan yang baru. Metode seleksi yang sering digunakan adalah Roulette-Wheel (Roda Roulette). Dengan menggunakan Roda Roulette, masing-masing individu menempati potongan lingkaran roda secara proposional sesuai dengan nilai fitnessnya. Pemilihan dilakukan secara random dengan membangkitkan bilangan random. Jika probabilitas individu ke-i < bilangan random, maka individu ke-i terpilih sebagai orang tua.
6. Cross-Over (Pindah Silang) Sebuah individu yang mengarah pada solusi optimal bisa diperoleh melalui proses pindah silang, dengan catatan bahwa pindha silang hanya bisa dilakukan jika sebuah bilangan random r dalam interval [0 1] yang dibangkitkan nilainya lebih kecil dari probabilitas tertentu prob, denagn kata lain : r < prob. Biasanya nilai prob diset mendekati 1. Cara yang paling sederhana untuk melakukan pindah silang adalah pinda silang satu titik potong. Posisi titik potong dilakukan secara random.
7. Mutasi Mutasi dilakukan untuk smeua gen yang terdapat pada individu, jika bilangan random yang dibangkitkan lebih kecil dari probabilitas mutasi p yang ditentukan. Biasanya p diset = 1/N, dimana N adalah jumlah gen dalam individu. Untuk kode biner, mutasi dilakukan dengan cara membalik nilai bit 0 menjadi bit 1, sebaliknya bit 1 diubah menjadi bit 0.
8. Penggantian Populasi Penggantian populasi (generational replacement) dimaksudkan bahwa semua individu awal dari satu generasi diganti temporer_individu hasil proses pindah silang dan mutasi.
TEKNIK CROSS-OVER (PINDAH SILANG) Berdasarkan tipe data dari nilai gen, ada beberapa cara untuk melakukan pindah silang, yaitu: Gen bertipe data biner Pindah silang melibatkan dua buah individu sbg orang tua dan akan menghasilkan dua anak sebagai individu baru. Prinsip pindah silang ini adalah menentukan posisi titik potong T (posisi gen) scr random, yg dipakai sbg acuan utk menukar gen-gen orang tua shg dihasilkan gen-gen anak. Jika bilangan random yg dibangkitkan r lebih kecil drpd probabilitas pindah silang p (r < p), maka proses pindah silang dikerjakan.
Gen bertipe data real Untuk gen bertipe real, cara pindah silangnya mengikuti persamaan berikut. x1’(T) = r*x1(T) + (r-1)*x2(T) x2’(T) = r*x2(T) + (r-1)*x1(T) Keterangan: T : posisi gen yg mengalami mutasi r : bilangan random [0 1]
Gen bertipe data permutasi Bila tipe data dari gen adalah permutasi (contohnya pada Travels Salesman Problem), kita bisa gunakan metode Partial-Mapped CrossOver (PMX). Metode ini diciptakan oleh Goldberg dan Lingle dgn langkah-langkah berikut: Tentukan dua posisi (P1 dan P2) pada individu scr random. Substring yg berada dlm dua posisi ini disebut daerah pemetaan. Tukar dua substring antar dua induk utk menghasilkan proto-child. Di antara daerah dua pemetaan, tentukan hubungannya. Mengacu pada hubungan pemetaan tadi, tentukan individu keturunannya.
TEKNIK MUTASI Pada gen yg mempunyai tipe data biner, mutasi dilakukan dengan menukar bit 0 menjadi 1, dan bit 1 menjadi 0. Untuk gen yg mempunyai tipe data real, mutasi dilakukan dgn cara menggeser nilai gen termutasi (pada posisi T, dimana T = random) sebesar bilangan kecil ℇ yang ditentukan dalam interval [0 1]. Nilai gen yang baru adalah: x’(r) = x(r) + ℇ