Anda di halaman 1dari 28

GENETIC ALGORITHMS

3.1. Simple GA Pertama kali ditemukan oleh John Holland pada tahun 1975 di Amerika, Genetic algorithm (GA) memiliki bentuk sederhana sehingga disebut Simple Genetic Algorithm (SGA). SGA digunakan untuk menyelesaikan masalah optimasi diskrit. Ciri dari SGA adalah tidak terlalu cepat dalam menemukan solusi optimal, tetapi memiliki bentuk heuristik yang baik untuk masalah kombinatorial. Pada saat inisialisasi, SGA membangkitan secara acak sejumlah individu sebagai suatu populasi. Jumlah individu dalam populasi tersebut selalu tetap selama proses evolusi (dari generasi pertama sampai generasi terakhir). Setiap individu hanya memiliki satu kromosom dengan panjang yang tetap selama proses evolusi. Artinya sejumlah gen dalam setiap kromosom tidak akan bertambah atau berkurang selama proses evolusi. Setiap gen hanya bisa bernilai 1 atau 0 yang pada saat inisialisasi dibangkitkan secara acak dengan probabilitas yang sama. Pada setiap kromosom probabilitas munculnya gen 1 adalah 0,5 dan munculnya gen 0 juga 0,5. Setiap kromosom didekodekan dan kemudian dievaluasi sehingga diperoleh nilai fitnees-nya. Nilai-nilai fitness ini digunakan sebagai parameter dalam pemilihan orang tua yang bersifat proporsional terhadap nilai fitness. Artinya kromosom yang memiliki nilai fitness yang lebih besar akan memiliki peluang yang lebih besar juga untuk terpilih sebagai orang tua. Dua kromosom orang tua akan direkombinasi menggunakan metode N-point atau uniform, untuk menghasilkan dua kromosom baru (anak). Pada kedua kromosom anak tersebut mungkin saja terjadi mutasi , yang berupa pembalikan bit. Setelah dihasilkan kromosom baru yang

jumlahnya sama dengan kromosom lama, maka semua kromosom lama akan digantikan dengan kromosom baru. Pada SGA memang digunakan proses pergantian seperti ini yang disebut dengan generational replecement. Dengan bergantinya semua kromosom, maka populasi tersebut dikatakan telah menjalani proses evolusi untuk satu generasi. Selanjutnya rangkuman spesifikasi SGA selengkapnya terlihat pada tabel di bawah ini.

Representasi Seleksi orang tua Rekombinasi Mutasi Seleksi survivor Ciri khusus

Pengkodean biner (binary encoding) Proporsional terhadap nilai fitness N-point atau seragam (uniform) Pembalikan bit dengan probabilitas tetap dan bersifat bebas (independent) pada masing-masing bit Semua individu baru menggantikan semua individu lama (generational replacement) Lebih menekankan pada rekombinasi

Proses evolusi pada SGA SGA menggunakan metode penggantian populasi berupa generational replacement. Oleh karena itu pemilihan orang tua yang proporsional terhadap nilai fitness-nya, rekombinasi dan mutasi bisa dilaksanakan sekaligus pada setiap generasi. Pseudo-code SGA diilustrasikan oleh gambar berikut ini.

Bangkitkan populasi awal, N kromosom Loop sampai kondisi berhenti terpenuhi Dekodekan kromosom ke dalam individu Evaluasi individu Seleksi pasangan-pasangan orangtua Rekombinasi dengan probabilitas Pc Mutasi dengan probabilitas Pm Penggantian populasi End

Representasi kromosom SGA menggunakan representasi biner untuk mengkodekan individu ke dalam kromosom. Gambar di bawah ini mengilustrasikan bagaimana individuindividu yang berada di dalam phenotype space dikodekan kedalam kromosomkromosom biner di dalam genotype space. Sebaliknya , kromosom-kromosom di

dalam genotype space didekodekan menjadi individu-individu yang berada di dalam phenotype space. Suatu individu, misalkan x1 = 7 dan x2 = 5 dikodekan menjadi kromosom 01110101. Sebaliknya, kromosom 01110101 didekodekan menjadi individu x1 = 7 dan x2 = 5.
Pengkodean (encoding)

x1 = 7 dan x2 = 5 x1 = 6 dan x2 = 4 x1 = 7 dan x2 = 3 x1 = 9 dan x2 = 5

Pendekodean (decoding)

Seleksi orang tua Salah satu algoritma seleksi yang umum digunakan adalah roulettewheel, dimana masing-masing kromosom menempati potongan lingkaran pada roda roulette secara proporsional sesuai dengan nilai fitness-nya. Seperti diilustrasikan pada gambar berikut ini.

Kromosom K1 K2 K3 K4 Jumlah

Fitness 2 1 1 4 8

Kromosom K4 dengan fitness sebesar 4 menempati setengah lingkaran (4/8) sehingga memiliki peluang sebesar 0,5 untuk terpilih sebagai orang tua. K1 memiliki peluang sebesar 0,25 (1/4) sedangkan K2 dan K3 memiliki peluang untuk terpilih sebesar 0,125 (1/8). Dalam algoritma roulette-wheel tidak ada kromosom yang memiliki peluang terpilih sebesar 0. Hal ini didasarkan pertimbangan bahwa mungkin saja suatu kromosom yang fitness-nya sangat rendah jika

direkombinasikan dengan kromosom yang fitness-nya tinggi akan menghasilkan dua kromosom anak yang fitness-nya jauh lebih tinggi dari pada kedua orang tuanya. Jika ada kromosom yang memiliki nilai fitness sama dengan 0 maka kita harus mengubah perhitungan nilai fitness tersebut dengan penskalaan ke dalam suatu interval tertentu yang tidak mengandung angka 0 atau penambahan suatu konstanta yang sesuai sehingga menghasilkan fitness tidak sama dengan 0. Seleksi orang tua bisa dilakukan per dua kromosom atau sekaligus sebanyak jumlah kromosom yang ada di dalam populasi (generational) untuk direkombinasi (steady state).karena SGA menggunakan generational replacement, maka seleksi orang tua dilakukan sekaligus kemudian direkombinasi per pasangan. Seleksi dilakukan dengan cara memutar roda roulette sebanyak jumlah kromosom yang berada di dalam populasi. Setiap kromosom yang terpilih sebagai orang tua dipindahkan dari populasi lama ke mating pool. Di dalam mating pool posisi-posisi kromosom orang tua akan diacak. Selanjutnya, dua kromosom orang tua yang posisinya berurutan direkombinasi untuk menghasilkan dua anak yang selanjutnya mungkin saja mengalami mutasi. Sepasang orang tua tidak boleh memiliki kromosom yang sama persis. Sehingga pada pemilihan dua kromosom sebagai orang tua dilakukan satu per satu dan harus menghasilkan dua kromosom yang berbeda sebagai pasangan orang tua. Bagaimanapun, pembatasan ini akan menambah kompleksitas komputasi.

Rekombinasi Tidak selamanya operasi rekombinasi berhasil, sehingga tidaksemua pasangan orang tua memiliki anak. Peluang keberhasilan rekombinasi dinyatakan dengan probabilitas rekombinasi (crossover), Pc. pada SGA biasanya digunakan Pc sebesar 0,6 0.9. SGA menggunakan rekombinasi N-point atau rekombinasi seragam. Satu atau lebih titik rekombinasi (posisi gen) ditentukan secara acak sebagi posisi gen-

gen orang tuayang akan diwariskan kepada dua anaknya. Jika L adalah panjang kromosom, maka titik rekombinasi dibangkitkan secara acak antara 1 sampai L-1. Sebagai ilustrasi, perhatikan gambar dibawah ini. Titik orang tua 1 orang tua 2 anak 1 anak 2

titik 1 orang tua 1 orang tua 2

titik 2 anak 1 anak 2

pada rekombinasi 1-point (satu titik), suatu titik rekombinasi dibangkitkan , misalkan titik ke-2. Rekombinasi menghasilkan 2 anak, yaitu anak 1 dan anak 2. Anak 1 memiliki gen ke-1 dan ke-2 yang berasal dari orang tua 1 dan gen ke-3 sampai ke-8 yang berasal dari orang tua 2. Sebaliknya anak 2 mendapatkan gen ke-1 dan ke-2 dari orang tua 2 dan gen ke-3 sampai ke-8 dari orang tua 1. Sedangkan pada operasi dua titik, gen-gen kedua orang tua diwariskan secara menyilang (zigzag) kepada kedua anaknya berdasarkan kedua posisi titik tersebut. Pada rekombinasi N-point, jumlah titik rekombinasi bisa lebih dari 2 bergantung jumlah gen yang ada pada kromosom. Jika jumlah gen mencapai ratusan atau ribuan mungkin saja dibutuhkan banyak titik rekombinasi. Sedangkan pada rekombinasi seragam (uniform), posisi gen ditentukan berdasarkan suatu pola tertentu. Pembangkitan pola dilakukan dengan cara seperti pelemparan uang logam (koin) yang memiliki dua sisi gambar dan angka. Misalkan gambar dianalogikan dengan 1 dan angka dianalogikan dengan 0. Sehingga, setelah pelemparan koin akan dihasilkan suatu pola yang bernilai 1 atau 0. Misalkan, 1 berarti terjadi pewarisan gen menyilang (anak 1 mewarisi gen dari

orang tua 2 dan anak 2 mewarisi gen dari orang tua 1), sedangkan 0 berarti terjadi pewarisan biasa (anak 1 mewarisi gen dari orang tua 1 dan anak 2 mewarisi gen dari orang tua 2). Dengan demikian, pewarisan gen-gen orang tua bisa dilakukan berdasarkan pola tersebut. Dengan cara ini, masing-masing anak memiliki gen-gen yang berasal dari kedua orang tuanya. Sebagai ilustrasi perhatikan gambar dibawah ini.

Orang tua 1 pola orang tua 2

anak 1

anak 2

Mutasi Pada SGA, mutasi terjadi secara acak pada setiap gen (bit) dan bersifat bebas (independent) pada setiap gen. Artinya, mutasi yang terjadi pada suatu gen tidak mempengaruhi terjadinya mutasi pada gen-gen yang lain. Secara sederhana untuk setiap gen dilakukan pembangkitan bilangan dalam interval [0,1]. Jika bilangan acak yang dinbangkitkan tersebut kurang dari probabilitas mutasi (P m) yang ditentukan, maka gen tersebut dimutasi dengan cara membalik nilai biner pada gen tersebut (1 diubah menjadi 0, dan sebaliknya). Jika jumlah gen adalah L, maka diperlukan pembangkitan bilangan acak sebanyak L kali. Probabilitas mutasi (Pm) biasanya ditentukan antara 1/NL sampai 1/L. Dimana N adalah jumlah kromosom dalam populasi dan L adalah jumlah gen dalam satu kromosom.

Seleksi survivor Pada SGA, seleksi survivor (kromosom yang bertahan hidup) atau replacement dilakukan dengan mengganti semua kromosom lama dengan semua kromosom baru yang dihasilkan dari proses rekombinasi dan mutasi. Penggantian kromosom secara sekaligus seperti ini disebut generational replacement. Sehingga proses evolusinya mengikuti pseudo-code.

Dengan komponen-komponen diatas, SGA menghadapi banyak masalah ketika dihadapkan pada masalah-masalah yang kompleks. Beberapa kelemahan yang ditemukan sebagai berikut: Representasi biner terkadang sulit atau bahkan tidak bisa digunakan untuk mengkodekan suatu masalah; Rekombinasi dan mutasi hanya bisa diaplikasikan untuk representasi biner atau integer; Mekanisme seleksi orang tua sulit atau bahkan tidak bisa digunakan untuk populasi yang tersiri atas individu-individu dengan nilai fitness yang hampir sama; Penggantian populasi yang berupa generational replecement tanpa memperhatikan usia dan nilai fitness membuat proses pencarian menjadi tidak terarah. Oleh karena itu, beberapa tahun sejak diusulkannya SGA, muncul beragam metode kreatif untuk membangun komponen-komponen GA yang lebih baik.

3.2. Studi Kasus: Masalah Optimasi 3.2.1. Optimasi Fungsi Optimasi Fungsi diselesaikan menggunakan SGA (Simple Genetic Algoritm). Untuk mendapatkan nilai minimal atau maksimal, komponen yang diubah adalah fitness-nya saja. Maksimasi Ada sebuah fungsi : ( dimana ) dan merupakan bilangan bulat dengan interval [0,15]

Persoalan di atas dapat diselesaikan menggunakan SGA. Pertama-tama dan dikodekan dengan bilangan biner 4 bit. dikarenakan interval [0,15] ( ) ). Contohnya:

mempunyai biner 4 bit (

= 5 dan 01010011.

= 3 dikodekan menjadi kromosom dgn panjjang 8 gen (bit), yaitu

Representasi kromosom Individu: = 5 dan =3

Kromosom dengan binary encoding

0
0

1
0

0
0

1
0

0
0

0
0

1
0

1
0

Semakin besar nilai fitness suatu individu, maka fungsi h akan semakin maksimal.

Fungsi fitness
= 5 dan =3 ( ( ) )

Setelah representasi romosom dan fungsi fitness terdefinisi, baru dapat mencari nilai maksimum dari fungsi h. Misalkan jumlah kromosom dalam populasi adalah 4.

K1 K2 K3

1
0

1
0

0
0

0
0

0
0

0
0

0
0

1
0

1
0

0
0

0
0

1
0

0
0

0
0

1
0

1
0

0
0

0
0

1
0

1
0

0
0

0
0

0
0

0
0

1
0

0
0

0
0

0
0

1
0

0
0

0
0

1
0

K4

Populasi generasi ke-1, dimana ukuran populasi 4 (berisi 4 kromosom) Yang pertama-tama dilakukan adalah mencari probabilitas tiap individu ( )

Dimana:

= nilai fitness dari individu ke-i = total nilai fitness dari semua individu

Selanjutnya pemilihan individu orang tua,misalkan menggunakan roulette-wheel. Setelah melakukan perhitungan maka didapat:

Tabel Proses seleksi orang tua generasi ke-1 No Kromosom Individu Fitness Probabilitas terpilih Jumlah yang diharapkan di mating pool 1 2 3 4 11000001 10010011 00110000 10001001 (12,1) (9,3) (3,0) (8,5) 81 64 21 41 197 49,25 81 0,41 0,27 0,11 0,21 1 0,24 0,41 1,64 1,08 0,44 0,84 4,00 1,00 1,64 2 1 1 0 4 1 2 Jumlah aktual di mating pool

Jumlah Rata-rata Maksimum

Roulette diputar 4x (sejumlah kromosom dalam populasi). Pada no.4 tidak terpilih karenan roulette memang bersifat acak dan tidak tergantung dari besar kecilnya nilai probabilitas. Langkah berikutnya yaitu pengacakan kromosom ygang ada pada mating pool untuk menentukan pasangan. Misalnya menjadi [1,3,1,2} artinya ada dua pasangan [1,3] dan [1,2]. Seperti pada gambar di bawah:

K1 K1 K2 K3 K3
1
0

1
0

1
0

0
0

0
0

0
0

0
0

0
0

1
0

1
0

0
0

0
0

0
0

0
0

0
0

1
0

K3

0
0

0
0

1
0

1
0

0
0

0
0

0
0

0
0

1
0

0
0

0
0

1
0

0
0

0
0

1
0

1
0

0
0

0
0

1
0

1
0

0
0

0
0

0
0

0
0

K1 K2

1
0

1
0

0
0

0
0

0
0

0
0

0
0

1
0

1
0

0
0

0
0

0
0

1
0

0
0

0
0

1
0

1
0

0
0

0
0

1
0

0
0

0
0

1
0

1
0

Selanjutnya dilakukan proses rekombinasi seperti pada tabel di bawah: No Kromosom Orang tua Proses Titik Rekombinasi Kromosom Anak Hasil Rekombinasi 1 2 3 4 11 | 000001 2 00 | 110000 2 110000 | 01 6 100100 | 11 6 11110000 00000001 11000001 10010001 (15,0) (0,1) (12,3) (9,1) 105 4 75 60 244 61 105 Individu Anak Fitness

Jumlah Rata-rata Maksimum

Kemudian menginjak proses mutasi dari setiap kromosom anak hasil rekombinasi. Misalnya nomor 2 terjadi mutasi gen (00000001 menjadi: 10000001),

K1 K2 K3 K4

1
0

1
0

1
0

1
0

0
0

0
0

0
0

0
0

1
0

0
0

0
0

0
0

0
0

0
0

0
0

1
0

1
0

1
0

0
0

0
0

0
0

0
0

1
0

1
0

1
0

0
0

0
0

0
0

1
0

0
0

0
0

1
0

Minimasi Dengan fungsi yang sama ( )

Pada kasus di atas fungfi h dapat bernilai positif maupun negatif. Jadi fungsi fitness nya untuk meminimasi fungsi h adalah: ( ) ( )

Dimana nilai B sangat besar. Misal: B = 1000, = 0 dan =15

jadi h = -45, sehingga didapat nilai fitness terbesar yaitu 1000- (-45) = 1045 Misal : B = 1000, ,

= 15 dan

=0

Jadi h =105, sehingga didapat nilai fitness terkecil yaitu 1000- 105 = 895

3.2.2. Optimasi Pengepakan Barang Pada optimasi pengepakan barang lebih mudah dipahami apabila menggunakan contoh yang riil. Misalkan kita akan pergi ke suatu daerah, dan hanya diperbolehkan membawa bagasi maksimal 20 kg. Jika kita mempunya 7 macam barang dengan total berat 37 kg, melakukan pemilihan barang apa saja yang kita bawa dengan menggunakan nilai barang sesuai tingkat kepentingan, harga barang, histori atau yang lainnya.
Tabel 3-4 Daftar barang untuk dimasukkan ke koper. Barang mana saja yang harus dimasukkan koper berkapasitas 20 kg sehingga diperoleh total nilai yang maksimum?

Kode b1 b2 b3 b4 b5 b6 b7

Nama Barang Makanan Pakaian Notebook Computer Buku Kamera Souvenir Buah-buahan

Berat (kg) 5 7 3 8 1 9 4

Nilai 80 200 100 300 150 100 50

Dua komponen kunci SGA yang ahru kita defenisikan pertama adalah representasi kromosom dan fungsi fitnes. Komponen SGA yang lain biasanya tidak banyak berbeda dengan komponen SGA untuk masalah lain. Representasi kromosom pada SGA selalu menggunakan pengkodean biner. Satu kromosom harus menyatakan satu solusi. Pada masalah di atas kita dapat membuat representasi kromosom dengan cara menganalogikan masalah tersebut dengan yang terjadi di dunia nyata, dengan cara memberikan logika 1 untuk barang yang terpilih dan logika 0 untuk barang yang tidak dipilih. K1 0 0 1 0 1 1 1

b1 b2 b3 b4 b 5 b6 b7 K2

b1 b2 b3 b4 b 5 b6 b7
Gambar 3-10 Representasi kromosom untuk masalah pengepakan barang. K1 adalah kromosom yang valid karena memberikan total berat 17 kg, sedangkan K2 tidak valid karena memberikan total berat 21 kg (>20 kg).

Dikarenakan pada representasi di atas terdapat kromosom yang tidak valid, maka dapat digunakan beberapa cara, diantaranya dengan menggunakan prosedur validasi kromosom yang dijalankan pada saat inisialisasi populasi dan setiap kali dihasilkan kromosom-kromosom baru pada generasi berikutnya. Kita bisa juga membangun prosedur rekomendasi dan mutasi khusus yang bisa menghindari lahirnya kromosom yang tidak valid. Kita dapat membangun fungsi fitnes dengan memulai dari tujuan yang ingin dicapai. Pada masalah tersebut tujuannya adalah menemukan sejumlah barang yang total nilainya paling besar dan total beratnya kurang dari 20 kg. Jadi terdapat 2 tujuan yang ingin dicapai: 1) total nilai terbesar, dan 2) total berat kurang dari 20 kg. Jika kita menggunakan prosedur validasi kromosom yang menjamin semua kromosom menghasilkan total berat kurang dari 20 kg, tujuan ke-2 dapat diabaikan. Sehingga hanya fokus pada nilai terbesar. Dengan demikian, fungsi fitnes yang bisa digunakan adalah (3.6)

Dimana bi bernilai 1 atau 0 menyatakan barang ke-i dimasukkan atau tidak dimasukkan ke koper dan vi menyatakan nilai barang ke-i. Setelah representasi kromosom dan fungsi fitnes sudah terdefenisi, kita bisa membangun komponen-komponen SAG lainnya. Pertama, inisialisasi populasi. Pada komponen ini, kita membutuhkan prosedur validasi kromosom, karena representasi kromosom yang kita buat di atas memungkinkan adanya

kromosom yang tidak valid. Tujuan dari prosedur ini adalah 1) menguji apakah suatu kromosom itu valid atau tidak, dan 2) memanipulasi kromosom yang tidak valid menjadin kromosom yang valid. Masukan (input) untuk prosedur ini adalah suatu kromosom (baik itu valid atau tidak valid) dan total berat maksimum yang diizinkan. Keluaran (output) adalah kromosom yang valid. Proses prosedur ini, pertama kromosom masukan tersebut dikodekan dan dievaluasi apakah kelebihan berat (overweight) atau tidak. Jika kelebihan berat, maka satu persatu barang dikurangi sampai tidak kelebihan berat. Prosedur validasi kromosom ini dijalankan pada komponen inisialisasi populasi untuk menjamin semua kromosom yang dibangkitkan adalah valid. Prosedur ini harus dijalankan setiap kali dihasilkan populasi baru. Komponen seleksi orang tua, rekomendasi, mutasi, dan penggantian populasi yang digunakan pada masalah optimasi fungsi di atas bisa digunakan kembali untuk masalah pengepakan barang. Untuk masalah pengepakan barang, rekomendasi dan mutilasi mungkin akan menghasilkan kromosom anak yang tidak valid. Tetapi kromosom tersebut akan diubah menjadi valid pada prosedur validasi kromosom pada saat penggantian populasi.

3.3. Representasi Individu 3.3.1. Representasi Biner Dalam representasi biner, setiap gen drepresentasikan bernilai 0 atau 1, atau dapat direprsentasikan Ya atau Tidak. Bilangan biner dapat digunakan mengkodekan bilangan bulat maupun bilangan real. Untuk mengkodekan bilangan bulat digunakan rumus

Keterangan: N = jumlah bit (gen) = bit ke-1 sampai ke-N

g1 sampai gN

Sebagai contoh, suatu bilangan biner 01100 dirubah menjadi bilangan biner dengan menggunakan rumus di atas. Dengan demikian, 01100 didekodekan menjadi
( ) ( ) ( ) ( ) ( )

Untuk mengkodekan bilangan real digunakan rumus


( ) ( )

Keterangan : rb ra N = batas atas bawah = batas atas interval = jumlah bit (gen)

g1 sampai gN = bit ke-1 sampai bit ke-N Sebagai contoh, dengan menggunakan rumus di atas bilangan biner 010 jika didekodekan ke dalam bilangan real pada interval [-1,2] akan menjadi
( )

Representasi biner ini biasanya digunakan untuk masalah-masalah yang sederhana (tidak terlalu kompleks). Hal ini disebabkan adanya dua keterbatasan pada representasi biner: 1. Tidak semua masalah bisa dikodekan ke dalam representasi biner.

Permasalahan praktis di dunia nyata seringkali berupa bilangan real untuk suatu fungsi yang kompleks atau berupa masalah permutasi dengan jumlah kemungkinan solusi yang sangat besar. Misalnya pada persamaan Ackley didapat nilai minimumnya
( )

Jika untuk menyelesaikan masalah tersebut menggunakan representasi bilangan biner, jumlah bit yang digunakan sangat bergantung pada tingkat ketelitian (presisi) yang kita inginkan. Misal direpresentasikan satu variabel x ke dalam 32 bit, maka tingkat ketelitiannya adalah 2 -32 atau sekitar 10 angka di belakang koma. Untuk kasus dua dimensi, berarti membutuhkan kromosom sepanjang 2 x 32 = 64 bit (gen). Sehingga, ruang pencarian (jumlah solusi yang mungkin) sangatlah besar, mencapai 2 64 atau sekitar 1018. 2. Hamming distance antara dua bilangan bulat yang berurutan bisa lebih dari 1 Sebagai contoh Integer 14
0 ` 0 ` 1 ` 1

Biner
1 1 0

Berbeda 1 bit
1 1 1 1

15

Berbeda 5 bit
0 0 0 1 0

16

Perubahan bilangan dari 14 ke 15 mengakibatkan terjadinya perubahan 1 bit saja pada binernya, yaitu 01110 menjadi 01111. Hal ini dikatakan Hamming distance kedua bilangan tersebut adalah 1. Sedangkan perbuahan bilangan dari 15 ke 16 mengakibatkan terjadinya perubahan 5 bit, yaitu 01111 menjadi 10000. Dalam perubahan tersebut terjadi mutasi dari semua gen. Sedangkan untuk mendapatkan hasil yang bagus dibutuhkan

probabilitas mutasi yang sangat kecil. Sehingga hamming distance yang lebih dari 1 bisa menjadi kelemahan dari representasi biner. Untuk dibutuhkan modifikasi pengkodean biner tersebut sehingga Hamming distance dari semua bilangan bulat berurutan adalah 1, pengkodean ini disebut gray coding. Integer Binary coding Gray coding 0 000 000 1 001 001 2 010 011 3 011 010 4 100 110 5 101 111 6 110 101 7 111 100

Jika menggunakan pengkodean ini dibutuhkan 2 algoritma, yaitu mengonversi biner ke gray coding dan gray coding ke biner. Individu: x1=5 dan x2

X1 1 ` 0 1 0

X2 1 1

binary coding

X1 1 ` 1 1 0

X2 1 0

Kromosom: gray coding

3.3.4. Representasi Permutasi Untuk permasahan tertentu ,kita mungkin sajatidak bias menggunakan representasi biner, integer, maupun real. Misalkan masalah travelling salesman problem (TSP), pada TSP ,masalahnya adalah mencari urutan bukan nilai.

Bagaimana menemukan urutan kunjunganlokasi (satu lokasi hanya dikunjungi satu kali)yang total nilainilai-nya paling optimal. nilai disini berupa jarak, biayakenyamanan, dan sebagainya. Bagi seorang kurir, misalnya tujuannya adalah menemukan urutanlokasi pengantaran paket yangyang total jaraknya paling minimal. Bagi seorang wisata-wan tujuannya bias lokasiwisata yang tingkay kenyamanannya maksimal. Bagaimana membangun kromosom denghan representasi permutasi untukmasalah TSP? satukata kunciyang harus diingat: satu kromosommenyatakan satu slusi, dua kata kunci lain juga perlu kita perhatikan adalah posisi dan nilai gen. posisi gen (indeks pada kromosom) bsa digunakan untuk menyatakan urutan kunjungan lokasi, dengan demikian , jika terdapat 6 lokasi untuk masalah TSP , maka panjang kromosomnya adalah 6 gen yang berniali integer dalam interval[1,6] yang menyatakan lokasi. Sedangkan posisi gen, ke-1 sampai ke-6 menyatakan urutan kunjungan. Sebagai ilustrasi , perhatikan contoh kromosom permutasi pada gambar berikut:

Keempatjenis representasi diatas (biner , integer, real maupun permutasi ) menggunakan angka numerik) sebagai nilai gen (alelle).sebenarnya bisa sajakita mempresentasikan nilai gen dengan huruf Bila menggunakan huruf maka tingggalmenganti angka pada setiap titip menjadihrurf sesuai dengan urutannya, dengan demikian alamat kombinasi yang ada bila menggunakan huruf menjadi 26*26 3.4. Nilai Fitness Seleksi alamiah di dunia nyata menyatakan bahwa hanya individu unggul (berkualitas tinggi) saja yang akan bertahan hidup. Sedangkan individu berkualitas rendah akan mati atau punah. Pada GA, suatu individu dievaluasi berdasarkan suatu fungsi tertentu sebagai ukuran nilai kualitasnya. Fungsi ini dikenal sebagai fungsi fitness. Hal pertama yang perlu diperhatikan dalam menemukan fungsi fitness yang tepat untuk suatu masalah adalah fungsi objektif (objective function). Pada kasus optimasi, kita mengenal dua masalah: maksimasi atau minimasi. Maksimasi artinya mencari nilai maksimal dari sesuatu (bisa berupa fungsi). Jadi, tujuannya adalah memaksimalkan sesuatu. Sedangkan minimasi artinya mencari nilai minimal dari sesuatu. Jika tujuannya adalah memaksimalkan sebuah fungsi, maka fungsi fitness yang digunakan adalah fungsi itu sendiri. Misalkan masalahnya adalah memaksimalkan fungsi h, maka formula fungsi fitness yang bisa digunakan adalah f = h (dimana f adalah fungsi fitness). Tetapi jika tujunnya adalah meminimalkan fungsi h, maka fungsi h tidak bisa digunakan secara langsung. Hal ini, disebabkan GA menggunakan suatu aturan bahwa individu yang memiliki nilai fitness lebih tinggi memiliki kemampuan bertahan hidup lebih tinggi dari pada individu yang bernilai fitness rendah. Oleh karena itu,fungsi fitness untuk masalah minimasi adalah f = 1/h. Artinya, semakin kecil nilai h semakin besar nilai f. Tetapi fungsi fitness ini akan bermasalah jika h

bisa bernilai 0, yang mengakibatkan f bisa bernilai tak terhingga. Untuk mengatasi masalah tersebut, fungsi fitness perlu dimodifikasi sedikit menjadi
( )

( 3.18)

dimana a adalah bilangan yang dianggap sangat kecil dan disesuaikan dengan masalah yang akan diselesaikan. Jika diketahui bahwa x1 dan x2 adalah bilangan real dalam interval [10, 10], maka formula fungsi fitness bisa digunakan untuk mencari nilai minimal dari fungsi pada persamaan di bawah ini h(x1,x2) = 3x16 + 5x22 (3.19)

fungsi h mencapai nilai minimum, yaitu 0, pada saat x1 = 0 dan x2 = 0. Karena h bisa menjadi 0, maka nilai fitness yang bisa digunakan untuk masalah ini adalah f = 1/(h+a). Jika kita mendefinisikan a sebagai 0,001, maka nilai

maksimum f adalah 1000 (ketika h = 0). Menentukan fungsi fitness sangat berpengaruh pada performasi GA. Dalam permasalahan sederhana, seperti optimasi fungsi, formula fungsi fitness bisa ditemukan dengan mudah. Tetapi, pada kebanyakan masalah praktis yang kompleks, seperti penjadwalan kuliah, peramalan, learning, dan sebagainya, diperlukan usaha cukup memlelahkan untuk menemukan formula fungsi fitness. Menggunakan GA akan mudah menemukan suatu formula fungsi fitness. Jadi, kita perlu berlatih mencari formula fungsi fitness dari beragam masalah. Fungsi fitness dibangun dari fungsi objektif dan batasan. Pada masalah tersebut, fungsi objektifnya adalah memaksimalkan total nilai barang. Sedangkan batasannya adalah tidak boleh melebihi nilai yang ditentukan. Ada banyak cara untuk menggabungkan dua parameter ini. Misalkan, kita bisa memberikan denda (penalti) jika batasan tersebut dilanggar. Besar penalti tentu saja dapat disesuaikan dengan fungsi obyektifnya. Salah satu contoh fungsi fitness yang bisa digunakan adalah:

( )

(3.20)

dimana bi bernilai 1 atau 0 yang menyatakan barang ke-i dimasukkan atau tidak dimasukkan ke koper, Vi menyatakan nilai barang ke-i , dan Wi menyatakan berat barang ke-i. Pada rumus di atas dapat dilihat bahwa suatu kromosom yang memberikan total berat lebih dari batasan maka akan memiliki nilai fitnes yang lebih kecil. Semakin banyak kelebihan beratnya maka semakin kecil nilai fitnesnya. Sehingga memungkinkan untuk bertahan hidup pada generasi berikutnya akan semakin kecil. Apabila suatu fungsi h yang memiliki nilai-nilai yang hampir mirip (variasinya sangat kecil), formula fungsi fitnes dapat digunakan untuk mendapatkan nilai x1 dan x2. h(x1 , x2) = 100000 + 2x1 + x2 (3.21)

Pada fungsi di atas, nilai-nilai h berada dalam interval 99994 sampai 100006. Dengan demikian setiap individu memiliki nilai fitnes yang hampir sama dalam kisaran 100000. Hal ini akan berakibat buruk pada proses seleksi pemilihan orang tua secara proporsional sesuai dengan nilai fitnesnya. Kita dapat menggunakan suatu mekanisme sederhana yang disebut linier fitnes rangking. Mekanisme ini bertujuan untuk melakukan penskalaan nilai-nilai fitnes

menggunakan perangkingan individual berdasarkan nilai fitnesnya. Formula fungsi fitnes menggunakan linear fitnes rangking sebagai berikut: () ( )
()

(3.22)

di mana nilai fLR(i) adalah nilai fitnes individial ke-i yang sudah diskalakan menggunakan linear fitnes rangking. N adalah jumlah individu dalam populasi. R(i) menyatakan rangking individu ke-i. Sedangkan fmin dan fmax secara berturut-turut adalah nilai fitnes terkecil dan terbesar.

Yang kedua adalah kondisi dimana terdapat satu kromosom yang memiliki nilai fitness yang jauh lebih tinggi dibandingkan dengan semua kromosom lainnya. Hal ini memungkinkan Bakers SUS memilih kromosom ber-fitness sangat tinggi tersebut sebanyak N kali dan semua kromosom lainnya tidak pernah terpilih. Misalkan, terdapat satu kromosom dengan nilai fitness yang jauh lebih tinggi dibandingkan dengan semua kromosom lainnya. Pemilihan orang tua menggunakan algoritma Bakers SUS mungkin saja menghasilkan N kromosom yang sama sebagai orang tua. Bagaimana hal ini bisa terjadi? Perhatikan ilustrasi berikut ini.
Kromosom K1 K2 K3 K4 Jumlah Fitness 1 1 1 17 20
K4 K1 K2 K3

Gambar 3-23 Algoritma Bakers SUS untuk memilih 4 kromosom sebagai orang tua. Ada kemungkinan kromosom K4 terpilih sebanyak 4 kali karena nilai fitness-nya jauh lebih besar dibandingkan 3 mromosom lainnya.

Pada gambar di atas, kromosom K1, K2 dan K3 hanya menempati 3/20 (atau kurang dari 1/4) ruangan pada roda roulette. Dengan demikian, jika terdapat 4 jarum yang diletakkan secara merata di tepi roda roulette, maka mungkin saja ketiga kromosom tersebut tidak pernah terpilih sebagai orang tua. Sebaliknya, kromosom K4 yang menempati 17/20 ruangan (lebih dari 3/4)bisa terpilih sebanyak 4 kali. Pada gambar di atas, keempat jarum menunjuk ke K4.

Jika semua kromosom yang terpilih sebagai orang tua adalah kromosom yang sama, maka rekombinasi (crossover) akan menghasilkan kromosomkromosom anak yang sama persis dengan orang tuanya. Hal ini membuat K4 mengalami stagnasi tanpa bisa menghasilkan kromosom baru yang nilai fitnessnya lebih tinggi dibandingkan dengan generasi sebelumnya. Pada kedua kondisi di atas, algoritma Roulette Wheel juga mungkin saja mengalami masalah yang sama dengan algoritma Bakers SUS. Dengan demikian, kita bisa menyimpulkan bahwa metode pemilihan orang tua yang menggunakan model Fitness Proportionate Selection (FPS) memiliki kelemahan dalam dua kondisi, yaitu : 1) ketika semua individu dalam populasi memiliki fitness yang hamper sama dan 2) ketika terdapat 1 kromosom yang memiliki nilai fitness yang jauh lebih tinggi dibandingkan dengan semua kromosom lainnya. Bagaimana cara mengatasi masalah ini? Cara sederhana yang bisa digunakan adalah penskalaan (scaling) nilai fitness. Tiga metode penskalaan yang bisa digunakan adalah Linear Scaling, Window Scaling dan Sigma Scaling.

Linear Scaling Pada metode ini, nilai-nilai fitness setiap individu diskalakan secara linear menggunakan rumus :

dimana

adalah nilai fitness individu ke-i. Kedua konstanta a dan b dipilih = dan
max

sedemikian hingga

= Cmult * , dimana

adalah rata-rata fitness

dan Cmult adalah nilai harapan berapa kali kromosom terbaik terpilih sebagai orang tua (atau jumlah kopi kromosom ber-fitness tertinggi yang diharapkan muncul di dalam mating pool). Untuk ukuran populasi sebesar 50 sampai 100 individu, biasanya digunakan Cmult sebesar 1,2 sampai 2. Sebagai ilustrasi,

perhatikangambar dibawah ini.

Fitness Terskalakan 2*f rata

f rata f min

f min f rata

f max

Fitness Awal

Gambar 3-24 Penskalaan nilai fitness menggunakan Linear Scaling dengan Cmult=2. Fitness awal maksimum diskalakan menjadi dua kali rata-rata fitness awal.

Terlihat bahwa pada Fitness terskalakan (hasil penskalaan ), perbedaan antara nilai maksimum dan nilai rata-ratanya lebih besar dibandingkan dengan yang ada pada Fitness awal. Dengan demikian, variansi nilai-nilai fitness menjadi lebih besar. Pada beberapa kasus, penskalaansecara linier memang bisa mengubah nilai-nilai fitness individu sehingga memiliki variansi yang lebih besar. Tetapi mungkin saja ada kondisi dimana fitness rata-ratanya sangat mendekati fitness

maksimum dan ada beberapa individu yang memiliki nilai fitness dibawah ratarata. Hal ini , bisa memungkinkan nilai fitness hasil penskalaan bernilai negatif. Sebagai ilustrasi, perhatikan gambar berikut.

Fitness Terskalakan 2*f rata

f rata

0 f max

f min

f rata f max

Fitness Awal

Gambar 3-25 Penskalaan nilai fitness menggunakan Linear Scaling bias menghasilkan nilai fitness negative.

Nilai fitness yang bernilai negatif tentu saja tidak bisa digunakan untuk proses seleksi orang tua yang menggunakan perhitungan probabilitas (nilai probabilitas selalu dalam interval [0,1]). Karena kebanyakan metode seleksi orang tua menggunakan nilai fitness, maka nilai fitness negatif ini harus dihilangkan. Bagaimana caranya? Tidak sulit. Buat saja aturan: jika Artinya, jika bernilai negatif, maka , maka .

diset sama dengan 0. Tetapi hal ini


min

mungkin sedikit menyalahi aturan penskalaan linear. Kalau nilai

yang negatif

diubah menjadi 0, maka grafik pada gambar di atas menjadi tidak linier,bukan? Bagaimanapun, hal tersebut tidak terlalu bermasalah untuk proses seleksi orang tua.

Window Scaling Pada metode ini, nilai-nilai fitness diskalakan berdasarkan rumus :
i= i

Dimana adalah nilai fitness paling rendah dalam n generasi terakhir. Pada penskalaan Windowing, kita harus menentukan berapa generasi terakhir yang digunakan sebagai pengamatan (window). Sebagai contoh, perhatikan ilustrasi pada gambar berikut ini. Misalkan window =5 dan fitness terendah selama generasi terakhir adalah 1,97.
Misalkan fitness terendah selama generasi terakhir=1,97

Kromosom K1 K2 K3 K4 Jumlah

f 1,98 2,01 1,99 2,02 8

f' 0,01 0,04 0,02 0,05 0,12

K1 K4 K1 K3 K4

K2

K3

K2

Gambar 3-26 Penskalaan menggunakan Windowing. Misalkan window = 5 dan fitness terendah selama generasi terakhir adalah 1,97. Windowing menhasilkan nilai-nilai fitness baru yang lebih bervariasi.

Sigma Scaling Metode ini digunakan untuk memperbaiki kelemahan yang ada pada linear scaling. Metode ini bisa mengatasi masalah fitness yang bernilai negatif dan masalah ketergantungan informasi ke dalam pemetaan. Nilai-nilai fitness diskalakan menggunakan rata-rata dan standar deviasi yang dapat dirumuskan sebagai berikut :
i= i +(

c*) adalah

Dimana c adalah bilangan bulat kecil ( biasanya sama dengan 2 ),

fitness rata-rata dan adalah standar deviasi. Untuk menghindari nilai negatif dibuat aturan jika sama dengan 0.
i

< 0, maka

= 0. Artinya, jika

bernilai negatif maka

diset

3.5.2. Rank-Based Selection Pada subbab sebelumnya tentang Nilai Fitness, kita telah membahas tentang macam .fitness ranking menggunakan rumus yang sederhana. Ada beberapa metode lain yang bisa digunakan untuk perankingan. Disini kita hanya membahas dua metode perankingan, yaitu Linear Ranking dan Non-Linear Ranking. Bagaimanapun, kedua metode tersebut bisa diimplementasikan menggunakan rumus yang berbeda-beda. Disini kita hanya membahas dua rumus saja. 3.5.2.1 Linear Ranking

Pada metode ini, mula-mula semua individu yang berada dalam populasi diurutkan berdasarkan nilai fitness-nya secara asceding (dari paling rendah sampai tinggi). Misalkan N adalah ukuran populasi (jumlah individu dalam populasi). Nilai fitness hasil perankingan dihitung menggunakan rumus : ( ) ( ) ( ) ( ( ) )

Dimana S adalah selective pressure (probabilitas terpilih individu terbaik dibandingkan dengan rata-rata probabilitas terpilih semua individu). Pos adalah posisi individu dalam populasi, dimana individu terburuk (nilai fitnessnya paling rendah) berada di posisi 1 dan individu terbaik di posisi N. pada metode ini, nilai S beradadalam interval [1,2]. 3.5.2.2 Non-Linear Ranking Metode ini mengizinkan penggunaan selective pressure yang lebih besar dibandingkan yang ada pada linear ranking. Penghitungan fitness perankingan dilakukan menggunakan rumus fungsi non-linear sebagai berikut : ( )

Dimana X adalah akar dari polynomial : ( )