Anda di halaman 1dari 63

Algoritma Genetika

Algoritma Genetika
Representasi Kromosom Membangkitkan Populasi Awal Hitung Fitness Seleksi Perkawinan Silang Mutasi

Individu Baru
Tidak Ya

Optimal ?

Solusi Optimal

Aplikasi Algoritma Genetika


Aplikasi GA untuk mencari nilai maksimal dari suatu fungsi Aplikasi GA untuk penyelesaian TSP Aplikasi GA untuk optimasi Radio Base Station Aplikasi GA pada peramalan Data Time Series Aplikasi GA untuk mencari kata

Aplikasi Algoritma Genetika untuk Mencari Nilai Maksimal dari Fungsi f(x)=1+e-xsin(4x)

Definisi Individu Nilai Fitness Seleksi roulette whell Two point crossover Mutasi gen

Definisi Individu
Individu menyatakan solusi yaitu nilai x. Nilai x sebagai individu dinyatakan dalam nilai biner. Individu dinyatakan dalam 8 gen biner dengan batas 0 sampai dengan 1 yang berarti sat bit setara dengan 2-8 Sebagai contoh:
10001001 = (128+8+1)/256 = 0.5352 01010010 = (2+16+64)/256 = 0.3203

Fungsi Fitness
Fungsi fitness dinyatakan sebagai fungsi f(x), karena yang dicari adalah nilai maksimum.

Membangkitkan Populasi Awal


Membangkitkan sejumlah individu, misalkan satu populasi terdiri dari 8 individu, maka dibangkitkan 8 individu dengan 8 gen biner yang dibangkitkan secara acak.
For i = 1 To 8 For j = 1 To 8 individu(i, j) = Int(2 * Rnd) Next j Next i

Hitung Fitness
For i = 1 To 8
d=0 For j = 8 To 1 Step -1 k=8-j d = d + individu(i, j) * 2 ^ k Next j X(i) = d / 255 fitness(i) = 1 + Exp(-X(i)) * Sin(4 * X(i)) Next i

Seleksi (1)

Hitung Total Fitness

Jfitness = 0 Seleksi roulette whell untuk memilih For i = 1 To 8 induk dilakukan dengan Jfitness = Jfitness + fitness(i) menggunakan prosentasi fitness Next i setiap individu, dimana setiap individu mendapatkan luas bagian sesuai dengan prosentase nilai Menghitung prosentase fitnessnya. fitness dan penentuan bidang k=0 For i = 1 To 8 prosen = Int(100 * fitness(i) / Jfitness) Text3(i - 1) = prosen For j = 1 To prosen k=k+1 rolet(k) = i Next j Next i

Seleksi (2)
Pemutaran Roulette

For i = 1 To 8 r = Int(k * Rnd) + 1 pilih = rolet(r) Text4(i - 1) = pilih For j = 1 To 8 induk(i, j) = individu(pilih, j) Next j Next i

Perkawinan Silang
Cross-Over (Perkawinan Silang) dilakukan dengan menentukan 2 posisi awal dan akhir gen pada individu yang akan dikawinkan secara acak. Kemudian dilakukan penukaran nilai gen induk 1 dan induk 2 dari posisi awal sampai dengan posisi akhir untuk diperoleh anak 1 dan anak 2.
For i = 1 To 4 p = Rnd If p < probCO Then r1 = Int(8 * Rnd) + 1 r2 = Int((8 - r1) * Rnd) + r1 For j = r1 To r2 anak(2 * i - 1, j) = induk(2 * i, j) anak(2 * i, j) = induk(2 * i - 1, j) Next j End If Next i

Mutasi
Mutasi dilakukan dengan cara mengganti gen dengan nilai inversinya, gen 0 menjadi 1 dan gen 1 menjadi 0 pada posisi gen yang ditentukan secara acak.

For i = 1 To 8 p = Rnd If p < probMut Then r = Int(8 * Rnd) + 1 anak(i, r) = 1 - anak(i, r) End If Next i

Membentuk Individu Baru


Anak hasil perkawinan silang dan mutasi menjadi generasi baru untuk dilakukan proses regenerasi Pada generasi berikutnya, individu terbaik (nilai fitness terbesar) dapat dipertahankan dengan proses elitism
For i = 1 To 8 For j = 1 To 8 individu(i, j) = anak(i, j) Next j Next i

kmin = 1 fitnessmin = fitness(1) For i = 2 To 8 If fitness(i) < fitnessmin Then kmin = i fitnessmin = fitness(i) End If Next i fitness(kmin) = fitnessmaks For i = 1 To 8 individu(kmin, i) = individumaks(i) Next i

Contoh Hasil Algoritma Genetika


Generasi 1 Generasi 2

Contoh Hasil Algoritma Genetika


Generasi 3 Generasi 4

Aplikasi Algoritma Genetika untuk Penyelesaian Permasalahan Traveling Salesman Problem


Permasalahan pada TSP adalah bagaimana seorang sales dapat mengunjungi setiap kota dengan jarak yang paling pendek. Pada contoh aplikasi GA untuk TSP, ditentukan 8 kota dengan posisi koordinat (x, y).

Definisi Individu
Individu menyatakan urutan kota yang dinyatakan dalam nilai integer 1 sampai dengan 8 sebanyak 9 gen (8 gen urutan kota dan 1 gen terakhir merupakan duplikat dari gen pertama) Sebagai contoh:
718354627 384265173

Fungsi Fitness
Fungsi fitness dinyatakan sebagai kebalikan dari nilai kuadrat jarak dari urutan kota.
Fitness 1000 ( xi xi 1 ) 2 ( yi yi 1 ) 2
i 2 9

Membangkitkan Populasi Awal (1)


Membangkitkan sejumlah individu, misalkan satu populasi terdiri dari 8 individu, maka dibangkitkan 8 individu dengan 9 gen integer yang dibangkitkan secara acak (nilai 1 sampai dengan 8)
For i = 1 To 8 jumlah = 0 For j = 1 To 7 sw = 0 While sw = 0 r = Int(Rnd * 8) + 1 sw = 1 For k = 1 To j - 1 If r = individu(i, k) Then sw = 0 Next k Wend individu(i, j) = r jumlah = jumlah + r Next j individu(i, 8) = 36 - jumlah individu(i, 9) = individu(i, 1) Next i

For i = 1 To 8 Z=0 For j = 2 To 9 r1 = individu(i, j) r2 = individu(i, j - 1) d = ((xkota(r1) - xkota(r2)) ^ 2 + (ykota(r1) - ykota(r2)) ^ 2) ^ 0.5 Z=Z+d Next j fitness(i) = 1000 - Int(Z) Next i

Hitung Fitness

Membangkitkan Populasi Awal (2)


Individu maksimum yang diperoleh mempunyai urutan 3 8 4 2 6 5 1 7 dengan nilai fitness terbesar yaitu 648

Seleksi (1)

Hitung Total Fitness

Jfitness = 0 Seleksi roulette whell untuk memilih For i = 1 To 8 induk dilakukan dengan Jfitness = Jfitness + fitness(i) menggunakan prosentasi fitness Next i setiap individu, dimana setiap individu mendapatkan luas bagian Menghitung prosentase sesuai dengan prosentase nilai fitness dan penentuan fitnessnya. bidang

k=0 For i = 1 To 8 prosen = Int(100 * fitness(i) / Jfitness) Text2(i - 1) = prosen For j = 1 To prosen k=k+1 rolet(k) = i Next j Next i

Seleksi (2)
Pemutaran Roulette

For i = 1 To 8 r = Int(k * Rnd) + 1 pilih = rolet(r) Text3(i - 1) = pilih For j = 1 To 9 induk(i, j) = individu(pilih, j) m = (i - 1) * 9 + j - 1 Text4(m) = induk(i, j) Next j Next i

Perkawinan Silang
Cross-Over (Perkawinan Silang) dilakukan dengan menentukan 2 posisi awal dan akhir gen pada individu yang akan dikawinkan secara acak. Kemudian dilakukan penukaran nilai gen induk 1 dan induk 2 dari posisi awal sampai dengan posisi akhir untuk diperoleh anak 1 dan anak 2.
For i = 1 To 8 p = Rnd If p < probCO Then r1 = Int(Rnd * 8) + 1 r2 = Int(Rnd * (8 - r1)) + r1 For r = r1 To r2 anak(i, r) = induk(i, r2 + r1 - r) Next r End If anak(i, 9) = anak(i, 1) k = (i - 1) * 9 + 8 Next i

Mutasi

Mutasi dilakukan dengan cara menentukan dua posisi gen secara acak (posisi 1 sampai dengan 8) dan melakukan pertukaran nilai gen pada kedua posisi tersebut, nilai gen ke 1 diduplikasi ke nilai gen ke 9 Contoh : Sebelum mutasi : 6 8 7 1 5 3 4 2 6 Posisi terpilih adalah 1 dan 8 Sesudah mutasi : 2 8 7 1 5 3 4 6 2
For i = 1 To 8 p = Rnd If p <= probMut Then r1 = Int(8 * Rnd) + 1 r2 = Int(8 * Rnd) + 1 a = anak(i, r1) anak(i, r1) = anak(i, r2) anak(i, r2) = a End If anak(i, 9) = anak(i, 1) Next i

Membentuk Individu Baru


Anak hasil perkawinan silang dan mutasi menjadi generasi baru untuk dilakukan proses regenerasi Pada generasi berikutnya, individu terbaik (nilai fitness terbesar) dapat dipertahankan dengan proses elitism
For i = 1 To 8 For j = 1 To 9 individu(i, j) = anak(i, j) Next j Next i

Contoh Hasil Algoritma Genetika


Generasi 1 Generasi 2

Contoh Hasil Algoritma Genetika


Generasi 3 Generasi 4

Aplikasi Algoritma Genetika untuk Optimasi Penempatan Radio Based Station

Definisi Individu Nilai Fitness Seleksi roulette wheel Crossover aritmatik Mutasi gen

Definisi Individu
RBS dibatasi sebanyak 5. Setiap individu menyatakan lokasi dari kelima RBS. Setiap individu terdiri dari 10 gen yang menyatakan posisi x dan y dari tiap RBS. Nilai dari gen dinyatakan dengan bilangan integer yang dibatasi sesuai dengan ukuran wilayah yang disediakan. Ukuran wilayah yang disediakan adalah 60 untuk posisi x & 40 untuk posisi y.

Fungsi Fitness
Fungsi fitness dinyatakan sebagai invers dari fungsi yang menghitung jumlah blank area paling sedikit.

Membangkitkan Populasi Awal

Membangkitkan sejumlah individu, misalkan satu populasi terdiri dari 8 individu, maka dibangkitkan 8 individu dengan 10 gen (maks. 60 untuk x dan 40 untuk y) yang dibangkitkan secara acak.

For i = 1 To 8 For k = 1 To 5 xr = Int(59 * Rnd) + 2 yr = Int(39 * Rnd) + 2 individu(i, k * 2 - 1) = xr individu(i, k * 2) = yr Next k Next i

Hitung Fitness

Membangkitkan Populasi Awal


Hitung Fitness
For i = 1 To 8 For xp = 1 To 60 For yp = 1 To 40 s(xp, yp) = 0 For j = 1 To 5 xr = individu(i, j * 2 - 1) yr = individu(i, j * 2) d = ((xp - xr) ^ 2 + (yp - yr) ^ 2) ^ 0.5 If d < radius + 1 Then s(xp, yp) = 1 Next j Next yp Next xp Jcover = 0 For xp = 1 To 60 For yp = 1 To 40 Jcover = Jcover + s(xp, yp) Next yp Next xp fitness(i) = Jcover Next i

Seleksi (1)
Seleksi roulette wheel untuk memilih induk dilakukan dengan menggunakan prosentasi fitness setiap individu, dimana setiap individu mendapatkan luas bagian sesuai dengan prosentase nilai fitnessnya.

Hitung Total Fitness


Jfitness = 0 For i = 1 To 8 Jfitness = Jfitness + fitness(i) Next i

Menghitung prosentase fitness dan penentuan bidang


k=0 For i = 1 To 8 prosen = Int(100 * fitness(i) / Jfitness) Text2(i - 1) = prosen For j = 1 To prosen k=k+1 rolet(k) = i Next j Next i

Seleksi (2)
Pemutaran Roulette

For i = 1 To 8 r = Int(k * Rnd) + 1 pilih = rolet(r) Text4(i - 1) = pilih For j = 1 To 10 induk(i, j) = individu(pilih, j) Next j Next i

Perkawinan Silang
Cross-Over (Perkawinan Silang) dilakukan dengan menentukan 2 posisi awal dan akhir gen pada individu yang akan dikawinkan secara acak. Kemudian pada posisi tersebut dilakukan cross-over aritmetik.
For i = 1 To 4 p = Rnd If p < probCO Then r1 = Int(10 * Rnd) + 1 r2 = Int((10 - r1) * Rnd) + r1 For r = r1 To r2 a = 0.5 + 0.5 * Rnd anak(2 * i - 1, r) = Int(a * induk(2 * i - 1, r) + (1 - a) * induk(2 * i, r)) anak(2 * i, r) = Int(a * induk(2 * i, r) + (1 - a) * induk(2 * i - 1, r)) k = (2 * i - 2) * 10 + r - 1 Next r Next i

Mutasi
Mutasi dilakukan dengan cara menggeser posisi gen yang dimutasi. Penggeseran ini dilakukan dengan melakukan penambahan atau pengurangan pada posisi tersebut.
For i = 1 To 8 p = Rnd If p < probMut Then r1 = Int(10 * Rnd) + 1 r2 = Int((10 - r1) * Rnd) + 1 For r = 1 To r2 If r Mod 2 = 0 Then bt = 40 Else bt = 60 a = Int(10 * Rnd) - 4 If a < 1 Then a = a - 1 anak(i, r) = anak(i, r) + a If anak(i, r) < 1 Or anak(i, r) > bt Then anak(i, r) = anak(i, r) - 2 * a k = (i - 1) * 10 + r - 1 Next r End If Next i

Membentuk Individu Baru


Anak hasil perkawinan silang dan mutasi menjadi generasi baru untuk dilakukan proses regenerasi Pada generasi berikutnya, individu terbaik (nilai fitness terbesar) dapat dipertahankan dengan proses elitism
For i = 1 To 8 For j = 1 To 8 individu(i, j) = anak(i, j) Next j Next i

kmin = 1 fitnessmin = fitness(1) For i = 2 To 8 If fitness(i) < fitnessmin Then kmin = i fitnessmin = fitness(i) End If Next i fitness(kmin) = fitnessmaks For i = 1 To 8 individu(kmin, i) = individumaks(i) Next i

Contoh Hasil Algoritma Genetika


Generasi 1

Contoh Hasil Algoritma Genetika


Generasi 2

Contoh Hasil Algoritma Genetika


Generasi 3

Contoh Hasil Algoritma Genetika


Generasi 4

Aplikasi Algoritma Genetika untuk Peramalan Time Series


Model Sistem
Training dengan algoritma genetika untuk mendapatkan nilai koefisien model linier

Permasalahan pada peramalan time series adalah bagaimana mempelajari perilaku data time series yang direpresentasikan pada model linier untuk menghasilkan nilai peramalan

Data Input

Data Test (Forecast)

Hasil Peramalan

Koefisien model linier

Data Model
Data untuk learning/training Data input (time lag) Data test x(k) Data prediksi

Input(1) Input(2) Input(3)

Target(1) Target(2) Target(3)

Input(k)

Target(k)

Model peramalan algoritma genetika menggunakan model matematika untuk merepresentasikan pola data time series sebagai berikut :

y (k 1) a0 a1 x1 (k ) a 2 x2 (k ) ... a n x n (k ) e(k )
x1(k) xn(k) : data input prediksi pada step ke k y(k+1) : nilai prediksi pada step ke k+1 e(k) : error pada step ke k

Data Time Series


Data time series sunspot dengan jumlah data 30 yang dibagi dalam periode input (time lag) 14 dan periode training algoritma genetika 5

Periode Input Periode Training

Periode Peramalan

Membangkitkan Populasi Awal


Membangkitkan sejumlah individu, misalkan satu populasi terdiri dari 8 individu, maka dibangkitkan 8 individu dengan 10 gen float yang dibangkitkan secara acak (nilai antara 0-1) sebagai representasi koefisien model linier
ncrom = m - pga + 1 For i = 1 To 8 For k = 1 To 10 a(i, k) = Rnd / ncrom Next k Next i

Hitung Fitness
pGA1 = m - pga pGA2 = pGA1 + pga For i = 1 To 8 e=0 ndata = 0 For k = pGA1 + 1 To pGA2 zp = a(i, 1) For j = 2 To ncrom zp = zp + a(i, j) * aktual(k + 1 - j) Next j e = e + (aktual(k) - zp) ^ 2 ndata = ndata + 1 Next k er = e / ndata fitness(i) = ncrom / (er + 0.01) Next i

Seleksi
Seleksi roulette whell untuk memilih induk dilakukan dengan menggunakan prosentasi fitness setiap individu, dimana setiap individu mendapatkan luas bagian sesuai dengan prosentase nilai fitnessnya.

Perkawinan Silang
Cross-Over (Perkawinan Silang) dilakukan dengan menentukan 2 posisi awal dan akhir gen pada individu yang akan dikawinkan secara acak. Digunakan arithmetic crossover untuk perkawinan silang
c1(k) = r.p1(k) + (1-r).p2(k) c2(k) = (1-r).p1(k) + r.p2(k)

Mutasi
Mutasi untuk algoritma genetika dilakukan dengan metode shift yaitu menentukan satu posisi gen pada kromosom secara random. Kemudian nilai gen tersebut ditambahkan dengan bilangan kecil antara -0.1 sampai dengan 0.1 sebagai nilai gen yang baru tetapi tetap pada jangkauan nilai gen awal.

Membentuk Individu Baru


Anak hasil perkawinan silang dan mutasi menjadi generasi baru untuk dilakukan proses regenerasi. Pada generasi berikutnya, individu terbaik (nilai fitness terbesar) dapat dipertahankan dengan proses elitism

Contoh Hasil Algoritma Genetika


Generasi 1

Contoh Hasil Algoritma Genetika


Generasi 2

Contoh Hasil Algoritma Genetika


Generasi 3

Contoh Hasil Algoritma Genetika


Generasi 4

Aplikasi Algoritma Genetika untuk Pencarian Kata secara Acak

Definisi Individu Nilai Fitness Seleksi roulette wheel Two point crossover Mutasi gen

Definisi Individu
Kata yang menjadi acuan adalah GENETIKA. Setiap individu menyatakan kata dugaan terhadap kata acuan. Setiap individu terdiri dari 8 gen. Nilai dari gen dinyatakan dengan bilangan integer antara 1 s/d 26 yang jika dikonversikan akan didapatkan karakternya. 1 dikonversikan ke huruf A, dst sampai 26 dikonversikan ke huruf Z.

Fungsi Fitness
Fungsi fitness dinyatakan sebagai 8 * 26 - (ac[i] gen[i])

Membangkitkan Populasi Awal

Membangkitkan sejumlah individu, misalkan satu populasi terdiri dari 16 individu, maka dibangkitkan 8 individu dengan 8 gen integer (1 gen26) yang dibangkitkan secara acak.

For i = 1 To 16 For j = 1 To 8 individu(i, j) = Int(26 * Rnd + 1) k = (i - 1) * 8 + j - 1 Text1(k) = Chr(individu(i, j) + 64) Next j Next i

Hitung Fitness

Membangkitkan Populasi Awal

Hitung Fitness
For i = 1 To 16 er = 0 er1 = 0 For j = 1 To 8 er = er + ad(j) * (ac(j) - individu(i, j)) ^ 2 If ac(j) <> individu(i, j) Then er1 = er1 + 1 Next j fitness(i) = 8 * 26 - Int(er ^ 0.5) - 8 * er1 If fitness(i) < 0 Then fitness(i) = 0 Next i

Seleksi (1)
Seleksi roulette wheel untuk memilih induk dilakukan dengan menggunakan prosentasi fitness setiap individu, dimana setiap individu mendapatkan luas bagian sesuai dengan prosentase nilai fitnessnya.

Hitung Total Fitness


Jfitness = 0 For i = 1 To 8 Jfitness = Jfitness + fitness(i) Next i

Menghitung prosentase fitness dan penentuan bidang


k=0 For i = 1 To 8 prosen = Int(100 * fitness(i) / Jfitness) Text2(i - 1) = prosen For j = 1 To prosen k=k+1 rolet(k) = i Next j Next i

Seleksi (2)
Pemutaran Roulette

For i = 1 To 8 r = Int(k * Rnd) + 1 pilih = rolet(r) Text4(i - 1) = pilih For j = 1 To 10 induk(i, j) = individu(pilih, j) Next j Next i

Perkawinan Silang
Cross-Over (Perkawinan Silang) dilakukan dengan menentukan 2 posisi awal dan akhir gen pada individu yang akan dikawinkan secara acak. Kemudian dilakukan penukaran nilai gen induk 1 dan induk 2 dari posisi awal sampai dengan posisi akhir untuk diperoleh anak 1 dan anak 2.

For i = 1 To 8 p = Rnd If p < probCO Then r1 = Int(8 * Rnd) + 1 r2 = Int((8 - r1) * Rnd) + r1 For j = r1 To r2 jn = r2 - (j - r1) anak(2 * i - 1, j) = induk(2 * i, j) anak(2 * i, j) = induk(2 * i - 1, j) k = ((2 * i - 1) - 1) * 8 + j - 1 k = (2 * i - 1) * 8 + j - 1 Next j End If Next i

Mutasi
Mutasi dilakukan dengan cara menggeser posisi gen yang dimutasi. Penggeseran ini dilakukan dengan melakukan penambahan atau pengurangan pada posisi tersebut.

For i = 1 To 16 p = Rnd If p < probMut Then r1 = Int(8 * Rnd) + 1 r2 = Int((8 - r1) * Rnd) + r1 For r = r1 To r2 anak(i, r) = Int(Rnd * 26) + 1 k = (i - 1) * 8 + r - 1 Next r End If Next i

Membentuk Individu Baru


Anak hasil perkawinan silang dan mutasi menjadi generasi baru untuk dilakukan proses regenerasi Pada generasi berikutnya, individu terbaik (nilai fitness terbesar) dapat dipertahankan dengan proses elitism
For i = 1 To 8 For j = 1 To 8 individu(i, j) = anak(i, j) Next j Next i

kmin = 1 fitnessmin = fitness(1) For i = 2 To 8 If fitness(i) < fitnessmin Then kmin = i fitnessmin = fitness(i) End If Next i fitness(kmin) = fitnessmaks For i = 1 To 8 individu(kmin, i) = individumaks(i) Next i

Contoh Hasil Algoritma Genetika


Generasi 1

Contoh Hasil Algoritma Genetika


Generasi 2

Contoh Hasil Algoritma Genetika


Generasi 3

Contoh Hasil Algoritma Genetika


Generasi 4

Contoh Hasil Algoritma Genetika


Generasi 5

Anda mungkin juga menyukai