GENETIKA ALGORITMA
Oleh :
Nama : Steven Lim
NPM : 1421021
2
Golberg (1989) mengemukakan bahwa algoritma genetik mempunyai
karakteristik-karakteristik yang perlu diketahui sehingga dapat terbedakan dari
prosedur pencarian atau optimasi yang lain, yaitu:
1. Algoritma genetik dengan pengkodean dari himpunan solusi permasalahan
berdasarkan parameter yang telah ditetapkan dean bukan parameter itu
sendiri.
2. Algoritma genetik pencarian pada sebuah solusi dari sejumlah individu-
individu yang merupakan solusi permasalahan bukan hanya dari sebuah
individu.
3. Algoritma genetik informasi fungsi objektif (fitness), sebagai cara untuk
mengevaluasi individu yang mempunyai solusi terbaik, bukan turunan dari
suatu fungsi.
4. Algoritma genetik menggunakan aturan-aturan transisi peluang, bukan
aturan-aturan deterministic.
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.
3
generasi yang disebut sebagai proses crossover. Jumlah chromosome dalam
populasi yang mengalami crossover ditetukan oleh paramater yang disebut dengan
crossover_rate. Mekanisme perubahan susunan unsur penyusun mahkluk hidup
akibat adanya faktor alam yang disebut dengan mutasi direpresentasikan sebagai
proses berubahnya satu atau lebih nilai gen dalam chromosome dengan suatu nilai
acak. Jumlah gen dalam populasi yang mengalami mutasi ditentukan oleh
parameter yang dinamakan mutation_rate. Setelah beberapa generasi akan
dihasilkan chromosome-chromosome yang nilai gen-gennya konvergen ke suatu
nilai tertentu yang merupakan solusi terbaik yang dihasilkan oleh algoritma
genetika terhadap permasalahan yang ingin diselesaikan.
4
1. Seleksi
Seleksi bertujuan memberikan kesempatan reproduksi yang lebih besar bagi
anggota populasi yang paling fit. Langkah pertama dalam seleksi ini adalah
pencarian nilai fitness. Masing-masing individu dalam suatu wadah seleksi akan
menerima probabilitas reproduksi yang tergantung pada nilai objektif dirinya
sendiri terhadap nilai objektif dari semua individu dalam wadah seleksi tersebut.
Nilai fitness inilah yang nantinya akan digunakan pada tahap seleksi berikutnya.
Kemampuan algoritma genetik untuk memproduksi kromosom yang lebih
baik secara progresif tergantung pada penekanan selektif (selective pressure)
yang diterapkan ke populasi. Penekanan selektif dapat diterapkan dalam dua
cara. Cara pertama adalah membuat lebih banyak kromosom anak yang
dipelihara dalam populasi dan memilih hanya kromosom-kromosom terbaik
bagi generasi berikut. Walaupun orang tua dipilih secara acak, metode ini akan
terus menghasilkan kromosom yang lebih baik berhubungan dengan penekanan
selektif yang diterapkan pada individu anak tersebut.
2. Crossover
Crossover bertujuan untuk menambah keanekaragaman sting dalam
populasi dengan penyyilangan antara string satu dengan string lainya yang
diperoleh sebelumnya. Crossover memiliki beberapa jenis yaitu :
a) Crossover 1-titik.
Pada crossover dilakukan dengan memisahkan suatu string
menjadi dua bagian dan selanjutnya salah satu bagian dipertukarkan
dengan salah satu bagian dari string yang lain yang telah dipisahkan
dengan cara yang sama. Proses yang demikian dinamakan operator
crossover satu titik.
Tabel 1.2 Contoh Crossover 1-titik
Kromosom Orangtua 1 11001011
Kromosom Orangtua 2 11011111
Keturunan 11001111
b) Crossover 2-titik.
5
Proses crossover ini dilakukan dengan memilih dua titik
crossover. Kromosom keturunan kemudian dibentuk dengan barisan
bit dari awal kromosom sampai titik crossover pertama disalin dari
orangtua pertama, bagian dari titik crossover pertama dan kedua
disalin dari orangtua kedua, kemudian selebihnya disalin dari
orangtua pertama lagi.
c) Crossover Seragam.
Crossover seragam manghasilkan kromosom keturunan
dengan menyalin bit-bit secara acak dari kedua orangtuanya.
3. Mutasi.
Mutasi merupakan proses mengubah nilai dari satu atau beberapa gen dalam
suatu kromosom. Operasi crossover yang dilakukan pada kromosom dengan
tujuan untuk memperoleh kromosom-kromosom baru sebagai kandidat solusi
pada generasi mendatang denga fitness yang lebih baik, dan lama-kelamaan
menuju solusi optimum yang diinginkan. Akan tetapi, untuk mencapai hal ini,
penekanan selektif juga memegang peranan yang penting. Jika dalam proses
pemilihan kromosom-kromosom cenderung pada kromosom yang memiliki
fitness yang tinggi saja, konvergensi premature, yaitu mencapai solusi yang
optimal lokal sangat mudah terjadi.
6
Untuk menghindari konvergensi premature tersebut dan tetap menjaga
perbedaan (diversity) kromosom-kromosom dalam populasi, selain melakukan
penekanan selektif yang lebih efisien, operator mutasi juga dapat digunakan.
Proses mutasi dalam system biologi berlangsung dengan mengubah isi allele
gen pada suatu locus dengan allele yang lain. Proses mutasi ini bersifat acak
sehingga tidak selalu menjamin bahwa setelah proses mutasi akan diperoleh
kromosom dengan fitness yang lebih baik.
7
Bab II
Metode Penyelesaian
8
InpTar.Enabled = false;
inptarget.Enabled = false;
Init.Enabled = true;
Auto.Enabled = true;
}
}
9
Gambar 2.3 Interface setelah menggunakan Button inisialisasi.
Setelah menggunakan Button inisialisasi dan individu sudah muncul
selanjutnya adalah menggunakan Button evaluasi. Button Evaluasi akan muncul
karena coding yang telah menghubungkan inisialisasi dengan evalusi sehingga saat
buttoninitial click di jalankan akan memunculkan atau mengaktifkan button
evaluasi untuk tahap selanjutnya seperti pada coding berikut.
private void Init_Click(object sender, EventArgs e)
{
Init.Enabled = false;
Eval.Enabled = true;
Sel.Enabled = false;
Cross.Enabled = false;
Mut.Enabled = false;
Clear.Enabled = false;
listBox1.Items.Clear();
listBox2.Items.Clear();
init_chromosome();
}
10
Gambar 2.4 Interface Setelah Button evaluasi di jalankan.
Berikut adalah Coding yang digunakan untuk menghubungkan evaluasi dan
seleksi :
private void Eval_Click(object sender, EventArgs e)
{
Init.Enabled = false;
Eval.Enabled = false;
Sel.Enabled = true;
Cross.Enabled = false;
Mut.Enabled = false;
Clear.Enabled = false;
evaluasi_chromosome();
}
Pada proses seleksi ini juga akan memunculkan data baru pada listbox 1 dan
listbox 2 dimana pada listbox 2 adalah Individu baru. Berikut adalah tampilan
Interface setelah menggunakan seleksi.
11
Gambar 2.5 Interface Setelah Button seleksi di jalankan.
12
Gambar 2.6 Interface Setelah Button Mutasi dijalankan.
Button Clear listbox berfungsi untuk memunculkan individu baru atau
memulai dengan generasi baru. Setelah Button Clear listbox dijalankan maka
generasi baru akan muncul pada listbox 1 dan menggunakan Tahap yang sama
untuk mendapatkan target. Perbedaan dengan tahap awal adalah button inisialisasi
tidak diaktifkan melainkan langsung menuju ke Button Evaluasi.
private void Clear_Click(object sender, EventArgs e)
{
Init.Enabled = false;
Eval.Enabled = true;
Sel.Enabled = false;
Cross.Enabled = false;
Mut.Enabled = false;
Clear.Enabled = false;
listBox1.Items.Clear();
listBox2.Items.Clear();
13
Pada chart terdapat 2 garis yang berbeda warna. Garis dengan warna biru
merupakan target yang ingin kita dapatka sedangkan garis berwana merah adalah
output atau hasil yang kita dapatkan.
Button auto pada program ini berfungsi untuk kita mendapatkan hasil yang
kitainginkan tanpa menggunakan cara diatas. Dengan Button auto maka hasil akan
dicari dengan sendirinya dan akan berhenti ketika mencapai target yang diinginkan.
14
Gambar 2.10 Flowchart Genetika Algoritma
15
Bab III
Analisa Data
16
Gambar 3.2 Inisialisasi populasi
Dapat dilihat bahwa nilai a,b,c,d sesuai dengan batasan yaitu nilai
terkecil dari inisialisasi diatas adalah 71 dan nilai 71 > 10(batasan minimal)
dan nilai terbesar adalah 988 dan nilai 988 < 1000(batasan maksimal).
2. EVALUASI
}
private void evaluasi_chromosome()
{
double temp = 0;
int i;
listBox1.Items.Add("----Evaluasi----");
for (i = 0; i <= pop - 1; i++)
{
f_obj[i] = Math.Abs((Math.Pow(chromosome[i, 0], 2)) +
(Math.Pow(chromosome[i, 1], 2)) + (Math.Pow(chromosome[i, 2], 2)) +
chromosome[i, 3] - target);
listBox1.Items.Add("Fungsi Obyektif [" + i + "] : " +
f_obj[i]);
temp = temp + f_obj[i];
}
f_obj_avg = temp / pop;
listBox1.Items.Add("Rata-rata Obyektif = " + f_obj_avg);
}
17
Berdasarkan inisialisasi individu yang kita dapatkan tadi dapat di
hitung fungsi objektifnya,
𝑓𝑜𝑏𝑗(0) = |(912 + 9882 + (7952 + 465)) − 1421021|
= | (8281 +976144 +(632025 + 465)) – 1421021|
= 195894
𝑓𝑜𝑏𝑗(1) = |3392 + 9282 + (6102 + 561) − 1421021|
= |(114921 + 861184 +(372100 + 561)) – 1421021|
= |-72255| = 72255
𝑓𝑜𝑏𝑗(2) = |9162 + 712 + (9532 + 774) − 1421021|
= |1753080- 1421021|
= 332059
𝑓𝑜𝑏𝑗(3) = |6122 + 9662 + (3502 + 840) − 1421021|
= 10019
𝑓𝑜𝑏𝑗(4) = |3242 + 5592 + (4252 + 74) − 1421021|
= 822865
𝑓𝑜𝑏𝑗(5) = |8522 + 2162 + (2932 + 90) − 1421021|
= 562522
Maka rata-rata dari fungsi objektif diatas adalah
𝑓𝑜𝑏𝑗(𝑡𝑜𝑡𝑎𝑙) ÷ 6…………………………………………………………(3)
18
3. SELEKSI
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
𝑓𝑖𝑡𝑛𝑒𝑠𝑠 (𝑖) = fobj(i)+1……………………………………………….(4)
19
}
tot_fit = temp;
listBox1.Items.Add("Total Fitness : " + tot_fit);
max = fitness[0];
for (i = 1; i <= pop - 1; i++)
{
max = Math.Max(max, fitness[i]);
if (max == fitness[i])
{
winner = i;
}
}
listBox1.Items.Add("Max : " + max);
listBox1.Items.Add("Number Chromosome : " + winner);
for (i = 0; i <= pop - 1; i++)
{
prob[i] = fitness[i] / tot_fit;
listBox1.Items.Add("Probability [" + i + "]: " + prob[i]);
}
}
for (i = 0; i <= pop - 1; i++)
{
20
for (j = 0; j <= gen - 1; j++)
{
new_chrom[i, j] = chromosome[numb_chro[i], j];
}
listBox2.Items.Add("New Individu [" + i + "]: " +
(new_chrom[i, 0]) + " , " + (new_chrom[i, 1]) + " , " + (new_chrom[i, 2]) +
" , " + (new_chrom[i, 3]));
}
= 0.040
= 0.800
21
Bila dilihat dari data yang ada pada program dapat dopastikan nilai
yang dicari secara manual dan program adalah sama.
C(0) = 0.040
22
Dengan menggunakan program ini , hasil yang kita peroloeh adalah
sebagai berikut.
4. 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
Berikut adalah coding yang digunakan dalam proses Crossover.
private void crossover()
{
listBox2.Items.Add("----Crossover----");
Random rnd = new Random();
int k = 0;
int j = 0;
int i;
double pc = 0.5;
int count = 0;
int[] off_num = new int[6];
int[] cross = new int[6];
for (i = 0; i <= pop - 1; i++)
{
RR[i] = rnd.NextDouble();
}
for (i = 0; i <= pop - 1; i++)
{
if (RR[i] < pc)
{
for (k = 0; k <= gen - 1; k++)
{
23
parent[i, k] = new_chrom[i, k];
}
off_num[count] = i;
count++;
}
listBox2.Items.Add("Parent [" + i + "]: " + (parent[i, 0])
+ " , " + (parent[i, 1]) + " , " + (parent[i, 2]) + " , " + (parent[i,
3]));
}
for (i = 0; i <= count - 1; i++)
{
listBox2.Items.Add("off spring number [" + i + "] : " +
off_num[i]);
}
for (i = 0; i <= count - 1; i++)
{
for (k = 0; k <= gen - 1; k++)
{
mutation[i, k] = parent[off_num[i], k];
}
listBox2.Items.Add("mutation [" + i + "] : " + mutation[i,
0] + " ; " + mutation[i, 1] + " ; " + mutation[i, 2] + " ; " + mutation[i,
3]);
}
for (i = 0; i <= count - 1; i++)
{
cross[i] = Convert.ToInt32(rnd.Next(0, count));
}
for (i = 0; i <= count - 1; i++)
{
for (k = 0; k <= gen - 1; k++)
{
if (k == 0)
{
child[i, k] = mutation[i, k];
}
else
{
child[i, k] = mutation[cross[i], k];
child[i, k] = mutation[cross[i], k];
child[i, k] = mutation[cross[i], k];
}
}
listBox2.Items.Add("child [" + i + "] : " + child[i, 0] + "
; " + child[i, 1] + " ; " + child[i, 2] + " ; " + child[i, 3]);
}
24
{
chromosome[i, k] = new_chrom[j, k];
}
}
listBox2.Items.Add("Chromosome [" + i + "] : " +
chromosome[i, 0] + " , " + chromosome[i, 1] + " , " + chromosome[i, 2] + "
, " + chromosome[i, 3]);
}
}
Karena Crossover_rate (pc) pada program adalah 0.5. maka, dari
data diatas yang akan kita jadikan induk adalah R(4) dan R(5).
25
5. 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
=4*6
= 24
= 2.4
=2
26
Gambar 3.8 Hasil akhir dari mutasi.
27
Gambar 3.9 Hasi pencarian auto namun tidak sesuai target.
Dalam pencarian diatas terjadi error dalam pencarian yaitu 7 x 10-5 % dari
target yang diinginkan.
28
Bab IV
Kesimpulan
29
Daftar Pustaka.
Suyanto (2014) Artificial Intelligent : Informatika Bandung
Firman (2007). Algoritma serta Aplikasinya. [online] “http://www.firman-
its.com/2007/05/17/algoritma-genetika-dan-contoh-aplikasinya/”
30