diadopsi menjadi algoritma komputasi untuk mencari solusi suatu permasalahan dengan cara
yang lebih “alamiah”. Salah satu aplikasi algoritma genetika adalah pada permasalahan
optimasi kombinasi, yaitu mendapatkan suatu nilai solusi optimal terhadap suatu
permasalahan yang mempunyai banyak kemungkinan solusi. Dalam tulisan ini akan dibahas
teori dasar algoritma genetika beserta contoh aplikasinya dalam menyelesaikan suatu
permasalahan optimasi kombinasi sederhana.
Teori Dasar Algoritma Genetika
Algoritma genetika yang dikembangkan oleh Goldberg adalah algoritma komputasi
yang diinspirasi teori evolusi Darwin yang menyatakan bahwa kelangsungan hidup
suatu makhluk dipengaruhi aturan “yang kuat adalah yang menang”. Darwin juga
menyatakan bahwa kelangsungan hidup suatu makhluk dapat dipertahankan melalui
proses reproduksi, crossover, dan mutasi. Konsep dalam teori evolusi Darwin
tersebut kemudian diadopsi menjadi algoritma komputasi untuk mencari solusi suatu
permasalahan dengan cara yang lebih “alamiah”.
Sebuah solusi yang dibangkitkan dalam algoritma genetika disebut sebagai
chromosome, sedangkan kumpulan chromosome-chromosome tersebut disebut
sebagai populasi. Sebuah chromosome dibentuk dari komponen-komponen
penyusun yang disebut sebagai gen dan nilainya dapat berupa bilangan numerik,
biner, simbol ataupun karakter tergantung dari permasalahan yang ingin
diselesaikan.
2. Inisialisasi
Proses inisialisasi dilakukan dengan cara memberikan nilai awal gen-gen dengan
nilai acak sesuai batasan yang telah ditentukan.
Misalkan kita tentukan jumlah populasi adalah 6, maka:
Chromosome[1] = [a;b;c;d] = [12;05;03;08]
Chromosome[2] = [a;b;c;d] = [02;01;08;03]
Chromosome[3] = [a;b;c;d] = [10;04;03;04]
Chromosome[4] = [a;b;c;d] = [20;01;10;06]
Chromosome[5] = [a;b;c;d] = [01;04;03;09]
Chromosome[6] = [a;b;c;d] = [20;05;07;01]
3. Evaluasi Chromosome
Permasalahan yang ingin diselesaikan adalah nilai variabel a, b, c, dan d yang
memenuhi persamaan a+2b+3c+4d = 30, maka fungsi_objektif yang dapat
digunakan untuk mendapatkan solusi adalah fungsi_objektif(chromosome) = |
(a+2b+3c+4d) – 30 |
Kita hitung fungsi_objektif dari chromosome yang telah dibangkitkan:
fungsi_objektif(chromosome[1]) = Abs(( 12 + 2*5 + 3*3 + 4*8 ) – 30)
= Abs((12 + 10 + 9 + 32 ) – 30)
= Abs(63 – 30)
= 33
fungsi_objektif(chromosome[2]) = Abs(( 2 + 2*1 + 3*8 + 4*3 ) – 30)
= Abs(( 2 + 2 + 24 + 12 ) – 30)
= Abs(40 – 30)
= 10
fungsi_objektif(chromosome[3]) = Abs(( 10 + 2*4 + 3*3 + 4*4 ) – 30)
= Abs(( 10 + 8 + 9 + 16 ) – 30)
= Abs(43 – 30)
= 13
fungsi_objektif(chromosome[4]) = Abs(( 20 + 2*1 + 3*10 + 4*6 ) – 30)
= Abs(( 20 + 2 + 30 + 24 ) – 30)
= Abs(76 – 30)
= 46
fungsi_objektif(chromosome[5]) = Abs(( 1 + 2*4 + 3*3 + 4*9 ) – 30)
= Abs(( 1 + 8 + 9 + 36 ) – 30)
= Abs(54 – 30)
= 24
fungsi_objektif(chromosome[6]) = Abs(( 20 + 2*5 + 3*7 + 4*1 ) – 30)
= Abs(( 20 + 10 + 21 + 4) – 30)
= Abs(55 – 30)
= 25
Rata-rata dari fungsi objektif adalah:
rata-rata = (33+10+13+46+24+25)/6
= 151 / 6
= 25.167
4. Seleksi Chromosome
Proses seleksi dilakukan dengan cara membuat chromosome yang mempunyai
fungsi_objektif kecil mempunyai kemungkinan terpilih yang besar atau mempunyai
nilai probabilitas yang tinggi. Untuk itu dapat digunakan fungsi fitness =
(1/(1+fungsi_objektif)), fungsi_objektif perlu ditambah 1 untuk menghindari
kesalahan program yang diakibatkan pembagian oleh 0.
fitness[1] = 1 / (fungsi_objektif[1]+1)
= 1 / 34
= 0.0294
fitness[2] = 1 / (fungsi_objektif[2]+1)
= 1 / 11
= 0.0909
fitness[3] = 1 / (fungsi_objektif[3]+1)
= 1 / 14
= 0.0714
fitness[4] = 1 / (fungsi_objektif[4]+1)
= 1 / 47
= 0.0212
fitness[5] = 1 / (fungsi_objektif[5]+1)
= 1 / 25
= 0.0400
fitness[6] = 1 / (fungsi_objektif[6]+1)
= 1 / 26
= 0.0385
total_fitness = 0.0294 + 0.0909 + 0.0714 + 0.0212 + 0.04 + 0.0385
= 0.2914
Dari probabilitas diatas dapat kita lihat kalau chromosome ke 2 yang mempunyai
fitness paling besar maka chromosome tersebut mempunyai probabilitas untuk
terpilih pada generasi selanjutnya lebih besar dari chromosome lainnya. Untuk
proses seleksi kita gunakan roulete wheel, untuk itu kita harus mencari dahulu nilai
kumulatif probabilitasnya:
C[1] = 0.1009
C[2] = 0.1009+ 0.3119
= 0.4128
C[3] = 0.1009+ 0.3119 + 0.2450
= 0.6578
C[4] = 0.1009+ 0.3119 + 0.2450 + 0.0728
= 0.7306
C[5] = 0.1009+ 0.3119 + 0.2450 + 0.0728 + 0.1373
= 0.8679
C[6] = 0.1009+ 0.3119 + 0.2450 + 0.0728 + 0.1373 + 0.1321
=1
Setelah dihitung cumulative probabilitasnya maka proses seleksi menggunakan
roulete-wheel dapat dilakukan. Prosesnya adalah dengan membangkitkan bilangan
acak R dalam range 0-1.
Jika R[k] < C[1] maka pilih chromosome 1 sebagai induk, selain itu pilih chromosome
ke-k sebagai induk dengan syarat C[k-1] < R < C[k]. Kita putar roulete wheel
sebanyak jumlah populasi yaitu 6 kali (bangkitkan bilangan acak R) dan pada tiap
putaran, kita pilih satu chromosome untuk populasi baru. Misal:
R[1] = 0.201
R[2] = 0.284
R[3] = 0.009
R[4] = 0.822
R[5] = 0.398
R[6] = 0.501
Angka acak pertama R[1] adalah lebih besar dari C[1] dan lebih kecil daripada C[2]
maka pilih chromosome[2] sebagai chromosome pada populasi baru, dari bilangan
acak yang telah dibangkitkan diatas maka populasi chromosome baru hasil proses
seleksi adalah:
chromosome[1] = chromosome[2]
chromosome[2] = chromosome[2]
chromosome[3] = chromosome[1]
chromosome[4] = chromosome[5]
chromosome[5] = chromosome[2]
chromosome[6] = chromosome[3]
5. Crossover
Setelah proses seleksi maka proses selanjutnya adalah proses crossover. Metode
yang digunakan salah satunya adalah one-cut point, yaitu memilih secara acak satu
posisi dalam chromosome induk kemudian saling menukar gen. Chromosome yang
dijadikan induk dipilih secara acak dan jumlah chromosome yang mengalami
crossover dipengaruhi oleh parameter crossover_rate ( ρc ).
Pseudo-code untuk proses crossover adalah sebagai berikut:
begin
k← 0;
while(k<populasi) do
R[k] ← random(0-1);
if (R[k] < ρc ) then
select Chromosome[k] as parent;
end;
k = k + 1;
end;
end;
Misal kita tentukan crossover probability adalah sebesar 25%, maka diharapkan
dalam satu generasi ada 50% Chromosome (3 chromosome) dari satu generasi
mengalami proses crossover. Prosesnya adalah sebagai berikut:
Pertama kita bangkitkan bilangan acak R sebanyak jumlah populasi
R[1] = 0.191
R[2] = 0.259
R[3] = 0.760
R[4] = 0.006
R[5] = 0.159
R[6] = 0.340
Maka Chromosome ke k akan dipilih sebagai induk jika R[k] < ρc, dari bilangan acak
R diatas maka yang dijadikan induk adalah chromosome[1], chromosome[4] dan
chromosome[5].
Posisi cut-point crossover dipilih menggunakan bilangan acak 1-3 sebanyak jumlah
crossover yang terjadi, misal
C[1] = 1
C[2] = 1
C[3] = 2
6. Mutasi
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. Dalam kasus ini panjang total gen adalah
total_gen = (jumlah gen dalam chromosome) * jumlah populasi
=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-chromosome 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
chromosome ke-3 gen nomor 4 dan Chromosome ke-5 gen nomor 2. Maka nilai gen
pada posisi tersebut kita ganti dengan bilangan acak 0-30.
chromosome[1] = [02;04;03;09]
fungsi_objektif[1] = Abs(( 2 + 2*4 + 3*3 + 4*9 ) – 30)
= Abs(( 2 + 8 + 9 + 36 ) – 30)
= Abs( 55 – 30)
= 25
chromosome[2] = [02;01;08;03]
fungsi_objektif[2] = Abs(( 2 + 2*1 + 3*8 + 4*3 ) – 30)
= Abs(( 2 + 2 + 24 + 12 ) – 30)
= Abs(40 – 30)
= 10
chromosome[3] = [12;05;03;02]
fungsi_objektif[3] = Abs(( 12 + 2*5 + 3*3 + 4*2 ) – 30)
= Abs(( 12 + 10 + 9 + 8 ) – 30)
= Abs(39 – 30)
=9
chromosome[4] = [01;01;08;03]
fungsi_objektif[4] = Abs(( 1 + 2*1 + 3*8 + 4*3 ) – 30)
= Abs(( 1 + 2 + 24 + 12 ) – 30)
= Abs(39 – 30)
=9
chromosome[5] = [02;05;08;03]
fungsi_objektif[5] = Abs(( 2 + 2*5 + 3*8 + 4*3 ) – 30)
= Abs(( 2 + 10 + 24 + 12 ) – 30)
= Abs(48 – 30)
= 18
chromosome[6] = [10;04;03;04]
fungsi_objektif[6] = Abs(( 10 + 2*4 + 3*3 + 4*4 ) – 30)
= Abs(( 10 + 8 + 9 + 16 ) – 30)
= Abs(43 – 30)
= 13
Dapat dilihat dari hasil perhitungan fungsi objektif diatas bahwa setelah satu
generasi, nilai hasil rata-rata fungsi_objektif lebih menurun dibandingkan hasil
fungsi_objektif pada saat sebelum mengalami seleksi, crossover dan mutasi. Hal ini
menunjukkan bahwa chromosome atau solusi yang dihasilkan setelah satu generasi
lebih baik dibandingkan generasi sebelumnya. Maka pada generasi selanjutnya
chromosome-chromosome yang baru adalah:
chromosome[1] = [02;04;03;09]
chromosome[2] = [02;01;08;03]
chromosome[3] = [12;05;03;02]
chromosome[4] = [01;01;08;03]
chromosome[5] = [02;05;08;03]
chromosome[6] = [10;04;03;04]
Penutup
Pada contoh diatas telah diberikan contoh mengenai penerapan algoritma genetika
untuk mencari solusi suatu persamaan matematis sederhana. Source code dalam
bahasa Java untuk contoh diatas dapat didownload di milis sc-ina yahoogroups:
Langkah pertama dalam algoritma genetika adalah membentuk sebuah populasi untuk
sejumlah gen. populasi itu sendiri merupakan sekumpulan solusi yang akan digunakan dalam
proses regenerasi selanjutnya untuk mencari solusi terbaik. Solusi-solusi yang ada selanjutnya
disebut sebagai individu.
Pada tahap ini setiap individu yang terbentuk dicari fitness cost-nya sebagai nilai pembanding
antara individu satu dengan yang lainnya.
3. Pengurutan (Sorting)
Pada tahap ini, individu yang terdapat pada populasi diurutkan berdasarkan fitness costnya.
Tujuan utamanya adalah untuk mencari individu terbaik pada populasi yang ada, yang dapat
dikatakan sebagai solusi sementara.
4. Proses Regenerasi
5. Tahapan Pengulangan
Setelah proses regenerasi selesai, maka dilakukan pengulangan proses ini sampai sejumlah
generasi yang dikehendaki.
4. Kelebihan Algoritma Genetik
Beberapa hal yang termasuk kelebihan dari Algoritma Genetika adalah sebagai
berikut (Haupt dan Haupt, 2004):
Inisialisasi populasi awal dilakukan untuk menghasilkan solusi awal dari suatu
permasalahan algoritma genetika. Inisialisasi ini dilakukan secara acak sebanyak jumlah
kromosom/populasi yang diinginkan. Selanjutnya dihitung nilai fitness dan seterusnya
dilakukan seleksi dengan menggunakan metode roda roullete, tournament atau ranking.
Kemudian dilakukan perkawinan silang (crossover) dan mutasi. Setelah melalui beberapa
generasi maka algoritma ini akan berhenti sebanyak generasi yang diinginkan.
6. Karakteristik Algoritma Genetik
Goldberg (1989) mengemukakan bahwa algoritma genetika mempunyai karakteristik-
karakteristik yang perlu diketahui sehingga dapat terbedakan dari prosedur pencarian atau
optimasi yang lain yaitu:
KESIMPULAN
Algoritma genetik adalah teknik pencarian yang di dalam ilmu komputer untuk
menemukan penyelesaian perkiraan untuk optimisasi dan masalah pencarian. Algoritma
genetik adalah kelas khusus dari algoritma evolusioner dengan menggunakan teknik yang
terinspirasi oleh biologi evolusioner seperti warisan, mutasi, seleksi alam dan rekombinasi
(atau crossover). Algoritma Genetik pertama kali dikembangkan oleh John Holland pada tahun
1970-an di New York, Amerika Serikat.
Sebelum algoritma genetika dilakukan, ada dua hal penting yang harus dilakukan yaitu
pendefinisian kromosom yang merupakan suatu solusi yang masih berbentuk simbol dan
fungsifitness atau fungsi obyektif. Dua hal ini berperan penting dalam algoritma genetika untuk
menyelesaikan suatu masalah.
Referensi
http://singgihawi.blogspot.co.id/2011/04/algoritma-genetika.html
http://informatika.web.id/algoritma-genetika.html
http://informatika.web.id/struktur-umum-algoritma-genetika.html
https://id.wikipedia.org/wiki/Algoritma_genetik
http://repository.usu.ac.id/bitstream/123456789/55989/5/Chapter%20I.pdf
PRINSIP KERJA
Prinsip kerja dari suatu algoritma genetika dapat digambarkan sebagai berikut.
Dari gambar 1 dapat dijelaskan dalam tiga struktur utama yaitu sebagai berikut :
1. Membangkitkan populasi awal, yaitu dengan proses acak sehingga didapatkan solusi awal.
2. Membentuk generasi baru dengan menggunakan 3 operator yaitu seleksi, pindah silang, dan
mutasi.
3. Evaluasi solusi, yaitu dengan menghitung nilai fitness tiap kromosom sampai memenuhi
kriteria yang diinginkan.
Dari Gambar 2 dapat dilihat bahwa proses pindah silang terjadi pada satu titik yaitu pada gen
ke-3 dan ke-4.
5. Mutasi, yaitu merupakan operator yang menukar nilai pada gen, misalnya gennya bernilai 0
menjadi 1. Mutasi dilakukan dengan memberikan nilai inversi atau menggeser nilai gen pada
gen yang terpilih untuk dimutasikan. Pada aplikasi ini mutasi dilakukan dengan cara menggeser
posisi gen yang dimutasi. Penggeseran ini dilakukan dengan melakukan penambahan atau
pengurangan pada posisi tersebut. Proses ini dapat digambarkan pada Gambar 3 berikut.
VIII. APLIKASI
Use Case
Use case untuk aktor pengguna pada aplikasi pemilihan spesifikasi komputer ini
ditunjukkan pada Gambar 4.
Diagram Aktivitas
Diagram aktivitas akan menggambarkan proses yang terjadi pada aplikasi pemilihan
spesifikasi komputer untuk masing-masing aktor yang mengaksesnya.
1. Algoritma Genetika
Diagram aktivitas algoritma genetika ditunjukkan oleh Gambar 6.
Populasi awal kromosom akan terbentuk yang nantinya diseleksi untuk mendapatkan
kromosom-kromosom terpilih. Kromosom-kromosom ini kemudian akan mengalami proses
pindah silang dan mutasi. Setelah didapatkan kromosom solusi, kromosom tersebut akan
dicocokkan dengan basis data yang ada untuk kemudian dikonversi menjadi spesifikasi
komputer yang diminta.
Dari Gambar 7 dapat dijelaskan bahwa proses perubahan data komputer dilakukan oleh
administrator. Administrator harus masuk kedalam mode administrator untuk dapat melakukan
proses ini, yaitu dengan memasukkan password pada menu login. Data kemudian dapat diubah
sesuai dengan perkembangan yang terjadi. Setelah itu data disimpan di basis data.
Dari Gambar 8 dapat dijelaskan bahwa proses perubahan bobot komputer yang ada di basis
data sesuai dengan perkembangan komputer yang terjadi. Perubahan ini nantinya akan
disimpan kedalam basis data kembali.
IX. ANALISA
Pengujian dimulai dengan memberikan informasi kebutuhan yang diinginkan dengan
batasan dana yang dipunyai. Dari nilai-nilai tersebut algoritma genetika akan melalukan iterasi
(Gambar 9) untuk mencari nilai keluaran dengan fitness optimal dengan harga yang mendekati
batasan dana yang ada.
Setelah semua proses algoritma genetika dijalankan maka pengguna dapat mengetahui
keluaran yang diinginkan. Gambar 10 merupakan tampilan dari form solusi.
X. KESIMPULAN
Dari hasil implementasi algoritma genetika dalam pemilihan spesifikasi komputer
diperoleh kesimpulan hal sebagai berikut.
1. Proses yang dikerjakan terdiri atas 3 fungsi utama yaitu proses algoritma genetika, pengubahan
bobot kebutuhan dan pengubahan data komputer.
2. Implementasi algoritma genetika pemilihan spesifikasi komputer ini berbasis pada proses acak.
3. Perbedaan perhitungan nilai fitness tiap kebutuhan komputer berdasarkan pada bobot tiap
perangkat keras.
4. Pengurutan perangkat keras dalam basis data berdasarkan pada perbandingan kinerja tiap
perangkat keras.