SlideShare a Scribd company logo
1 of 17
Download to read offline
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Tugas UAS COMPUTATIONAL INTELLIGENCE (CI)
GA (Genetic Algorithm)
Dosen : Dr.Ir.Yandra Arkeman,M.Eng
Oleh :
Khadijah Febriana G651160091
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
2017
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Algoritma genetika merupakan teknik pencarian nilai optimum secara stochastic berdasarkan
mekanisme seleksi alam – teori genetika. Algoritma genetika berbeda dengan teknik konvergensi
konvensional yang lebih bersifat deterministik (Gen, et.al., 1997).
Algoritma genetika melakukan proses pencarian nilai optimum pada beberapa titik secara
bersamaan (satu generasi). Proses iterasi kemudian dilakukan dengan pendekatan generasi ke
generasi yang mengalami proses evolusi, tetapi jumlah anggota (chromosome) pada setiap generasi,
yang merupakan kumpulan solusi, umumnya dipertahankan tetap. Chromosome yang dianalisis dapat
merupakan kode binary, integer atau desimal. Dalam proses evolusi, sejumlah gen yang membentuk
chromosome melewati proses crossover (kawin silang) dan/atau mutation (perubahan gen secara
alami). Chromosome yang baik akan terus hidup, sedangkan chromosome yang buruk akan mati
dengan sendirinya. Algoritma genetika menggunakan hukum transisi probabilistik untuk memilih
solusi (chromosome) yang terus dipertahankan hidup sesuai dengan ketentuan yang diinginkan
(fitness function), sehingga proses pencarian solusi optimum dapat diarahkan ke arah yang
diperkirakan akan lebih baik.
Bentuk fungsi sinus yang dianalisis pada tugas ini cukup kompleks karena selain hanya ada
satu nilai fungsi maksimum global, juga terdapat banyak nilai fungsi maksimum lokal. Adapun fungsi
sinus yang dimaksud adalah sebagai berikut
Kasus :
Max f (x1, x2) = 10.4 + x1 sin (3πx1) + x2 sin (13πx2)
Dimana :
-2.0 ≤ x1 ≤ 15.5 (...1)
3.27 ≤ x2 ≤ 8.75
Penyelesaian :
Berikut ini adalah pseudocode Algoritma Genetika (Arkeman,2016) :
initialize pupulation;
evaluate population;
while TerminationCriteriaNotSatisfied
{
select parents for reproduction;
perform recombination and mutation;
evaluate population;
}
Dimana untuk kasus diatas penulis mencoba untuk mencari solusi dengan menggunakan tools
matlab 7.10.0 (R2010a). Adapun parameter yang digunakan oleh algoritma genetika pada tulisan ini
sebagai berikut :
Nama Parameter Nilai
Jumlah Individu 80
Jumlah Generasi 1000
Jumlah Kromosom 34
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Proses perhitungan nilai fungsi maksimum global dari persamaan (1) dengan menggunakan
teknik konvergensi konvensional pada dasarnya sulit dilakukan. Misalnya, nilai fungsi maksimum yang
diperoleh dengan menggunakan fasilitas “solver” pada Ms-Excel akan terus berubah dan sangat tidak
mudah untuk mendapatkan nilai fungsi maksimum global sedangkan, dengan menggunakan
algoritma genetika, solusi optimum yang diinginkan umumnya dapat diperoleh.
Ketidakpastian tersebut sebenarnya merupakan sifat unik dari algoritma genetika yang
memanfaatkan bilangan random dan probabilitas dalam proses pencarian solusi optimum yang
diinginkan. Solusi yang diperoleh tidak selalu tepat dan dapat berubah-ubah. Meskipun demikian,
dengan mengatur proses seleksi generasi baru secara cermat, generasi baru terbaik yang merupakan
solusi yang tepat sangat mungkin dapat diperoleh. Algoritma genetika akan sangat bermanfaat
khususnya untuk penyelesaian masalah yang sulit dipecahkan, seperti halnya fungsi sinus pada
persamaan (1).
Berikut ini tampilan dari program genetic algorithm yang di implementasikan menggunakan
matlab. Gambar 1 merupakan tampilan editor dari multi objective genetic algorithm yang diberi nama
variabel “moga_khadijah”. Dan bulatan merah yang diberi tanda panah berwarna merah pada gambar
dibawah merupakan breakpoint dimana dalam debugging dapat menjalankan kode baris per baris
sekaligus mengecek nilai variabel.
Gambar 1.Print screen of multi objective genetic algorithm editor
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Adapun tahapan utama dari algoritma genetika yaitu sebagai berikut :
 Kodifikasi solusi dan pembentukan generasi awal
Proses kodifikasi dari solusi yang dicari ke dalam chromosome merupakan isu kunci dalam
algoritma genetika. Untuk fungsi sinus yang dianalisis, solusi yang dicari adalah nilai x1 dan x2.
Jika ketelitian nilai x1 dan x2 adalah empat desimal, maka kode binary yang digunakan harus
dapat mewakili rentang nilai -20,000 ÷ 150,000 (18 bits) untuk nilai x1, dan rentang nilai
32,000 ÷ 87,000 (15 bits) untuk nilai x2. Setiap bit merupakan gen yang membentuk
chromosome. Dengan demikian, masing-masing chromosome memiliki 34 gen yang
merupakan gabungan dari nilai x1 dan x2 sebagai solusi.
 Proses crossover
Proses crossover bekerja pada dua chromosome melalui pertukaran gen (kawin silang) untuk
menghasilkan dua chromosome baru sebagai turunannya. Cara yang mudah untuk dapat
melakukan pertukaran gen adalah dengan menentukan titik potong secara random. Potongan
gen sebelah kiri titik potong dari satu chromosome induk kemudian digabungkan dengan
potongan gen sebelah kanan titik potong dari chromosome induk lainnya. Jumlah
chromosome yang mengalami proses crossover pada satu generasi ditentukan secara random
berdasarkan tingkat probabilitas crossover yang diijinkan.
 Proses Mutation
Mutation merupakan operator genetika kedua dan hanya bekerja pada beberapa gen yang
melakukan penyesuaian diri terhadap kondisi lingkungan sekitar. Proses mutation terjadi agar
makhluk hidup dapat terus bertahan hidup dengan kwalitas yang lebih baik. Pada algoritma
genetika, proses mutation yang menghasilkan gen yang lebih baik dapat membuat
chromosome tetap bertahan dalam proses seleksi dan diharapkan akan dapat makin
mendekati solusi optimum. Sebaliknya, proses mutation yang menghasilkan gen yang lebih
buruk dapat membuat chromosome tereliminasi dalam proses seleksi.
 Proses evaluasi
Secara umum, proses evaluasi dalam pencarian nilai fungsi sinus maksimum terdiri dari tiga
tahapan, yaitu:
1) Konversi chromosome (kode binary) ke dalam solusi yang dinyatakan dengan bilangan
desimal
2) Perhitungan nilai fungsi sinus, y = f (x1, x2 ) , dengan menggunakan persamaan (1)
berdasarkan nilai x1 dan x2 yang diperoleh untuk masing-masing chromosome
3) Perhitungan nilai kecocokan (fitness) yang dalam hal ini juga adalah y'= f (x1, x2 ) .
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Untuk setiap generasi, nilai y’max selalu dapat diperoleh. Akan tetapi, apakah nilai y’max
ini merupakan nilai fungsi maksimum global yang dicari tetap tidak dapat langsung
diketahui dengan algoritma genetika. Untuk itu, proses iterasi harus terus dilakukan
sampai semua generasi yang diinginkan (~ 1000 generasi) telah selesai dianalisis.
 Proses seleksi
Proses seleksi dilakukan untuk memilih chromosome induk dan chromosome turunan
berdasarkan nilai kecocokan yang diperoleh di atas untuk membentuk generasi baru yang
lebih baik ke arah solusi optimum yang dicari.
Gambar 2. Print screen of evaluation editor
Langkah-langkah yang harus dilakukan untuk running program pada matlab ini yaitu breakpoint pada
editor (moga,evaluasi,seleksi dan mutasi ) dengan cara mengklik pada garis yang berada disebelah kiri
(sebagaimana yang terlihat pada gambar 2 dengan tanda bulatan merah) berdasarkan lokasi fungsi
atau perintah untuk mencari nilai yang di inginkan.
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Gambar 3.Print screen of selection editor
Gambar 4. Print screen of mutation editor
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Setelah melakukan breakpoint , kita jalankan fungsi utama dengan cara me-run di editor
“jalankan_program” dengan cara mengklik tools yang berwarna hijau sebagaimana yang terlihat pada
gambar 5 dibawah ini
Gambar 5. Print screen of running program
Setelah di run “editor jalankan_program” akan berpindah ke editor moga kembali untuk dilakukan
step in dan continue dengan cara mengklik tools skip in dekat tools run,lalu di continue .Proses skip
ini bertujuan untuk memberikan inputan dari editor (program yang telah dibuat atau perintah yang
diketik) agar masuk ke dalam workspace sebagaimana yang ditunjukkan pada gambar 7 dibawah
Gambar 6.Print screen of moga editor
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Gambar 7. Workspace
Pada gambar 7 kita dapat melihat proses skip in yang dilakukan telah berhasil menginput di
workspace. Untuk mengetahui lebih detail dapat melakukan double klik pada variabel yang di inginkan
seperti pada gambar 7 misalnya yaitu populasi (ditandai dengan lingkaran biru) sehingga akan muncul
detail jumlah populasi. Pada gambar dibawah terlihat ada sebanyak 80 populasi pada tugas ini.
Gambar 8. Jumlah Populasi
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Gambar 9. Continue to the next breakpoint
Setelah melakukan beberapa tahapan diatas,ulangi proses step in lihat variabel yang
diinginkan continue. Tahapan berikutnya yang penulis lakukan yaitu mengeksekusi program
untuk :
Mendapatkan Populasi Awal (di program matlab moga_khadijah.m baris ke 33)  lihat
variabel populasi di workspace
Populasi awal yang dibangkitkan 80 individu secara acak adalah sebagai berikut:
v1=[ 1010001110101001111011101110001111]
:
:
:
v80=[ 001001000100111100001101000001010]
Nilai variabel xl dan x2 yang bersesuaian (di program matlab evaluasi_khadijah.m baris ke 17)
 lihat variabel x di workspace
v1= [xl,x2] =[13,42958423, 7,739793545]
:
:
v80= [xl,x2] =[9,495634062, 4,235219196]
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Gambar dibawah ini merupakan tampilan variabel editor x1x2
Gambar 10.Nilai variabel x1x2
 Nilai fitness setiap kromosom-kromosom di atas adalah sebagai berikut (di program matlab
evaluasi_khadijah.m baris ke 23)  lihat variabel fitness di workspace (lihat gambar 11)
Eval(v1)= 27,8371476295813
:
:
Eval(v80)= 23,8701892623153
Gambar 11.Nilai fitness variabel evaluasi
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Peluang seleksi pk untuk masing-masing kromosom v k ( k = 1,..,80) adalah sebagai berikut:
(program matlab di seleksi_khadijah.m 12 )  lihat variabel peluang di workspace
P1 = 0,019034773
:
:
P80 = 0,012907659
Peluang kumulatif qk untuk masing-masing kromosom vk ( k = 1,...,80) adalah sebagai berikut:
(program matlab di seleksi_khadijah.m 13) lihat variabel peluang_komulatif di
workspace
Q1 = 0,012433106
:
:
Q80 = 1
Asumsikan bahwa rangkaian delapan puluh angka acak dari range [0,1] adalah sebagai
berikut: (program matlab di seleksi_khadijah.m 15)
r1=0,351237722
:
:
r80=0,488717015
populasi baru (calon kromosom induk), yang terdiri atas kromosom-kromosom
berikut ini: (program matlab di seleksi_khadijah.m 17)
v’1=[0101011001100010110111011111001111]
:
v’80=[1110100010100001110110100010110111]
Diasumsikan rangkaian bilangan acak yang muncul adalah adalah sebagai berikut :
(program matlab di mutasi_khadijah.m 10) lihat variabel roulette di workspace
r1=0,990720957
:
:
r80=0,873899091
Populasi akhir (generasi ke-I) yang didapatkan setelah mutasi adalah sebagai berikut
(program matlab di mutasi_khadijah.m 23): lihat variabel populasi_baru di worksp
v"1=[0110100011100001110111011111010111]
:
:
v"80=[111101000110001011011101111101001 1]
Nilai yang cocok dari variabel-variabel [xi,x2] dan nilai fitnessnya adalah sebagai
berikut: (di program matlab evaluasi_khadijah.m baris ke 17 dan 23):  lihat variabel x dan
fitness di workspace
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
Eval(v1)= f(13,3281129 8,320446937)=13,88532215
:
:
Eval(v80)= f(12,31813934 7,635436484)=6,580882192
Gambar 12.Variabel x1x2
Gambar 13.Fitness
Tahapan di atas adalah tahapan Generasi pertama dalam proses algoritma genetika, yang
berakhir setelah generasi ke-1.000. Dalam eksperimen yang telah dilakukan oleh penulis, jumlah
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
populasi yang digunakan adalah 80, panjang kromosom 34, peluang penyilangan 0,90 dan peluang
mutasi 0,30. Hasil eksperimen tersebut dituangkan dalam bentuk grafik seperti pada Gambar 14 yaitu
mencakup nilai fitness maksimum dan nilai fitness rata-rata dari tiap generasi.
Gambar 14. Grafik perkembangan nilai fitness
 Lampiran Source Code Algoritma Genetika pada matlab 7.10.0(R2010a)
% Penerapan Algoritma Genetika untuk mencari nilai maksimum
% yang memaksimalkan fungsi y = 10.4 + x(1)*sin(3*pi*x(1)) +
x(2)*sin(13*pi*x(2));
% edited By Khadijah Febriana - G651160091
% e-mail : khadijah_febriana91@apps.ipb.ac.id
% -----------------------------------------------------------------
--------
% Departemen Ilmu Komputer
% Fakultas Matematika dan Ilmu Pengetahuan Alam
% Sekolah Pascsarjana - Institut Pertanian Bogor (IPB)
% -----------------------------------------------------------------
uas_khadijah.m
function y = uas_khadijah(x)
%UAS_KHADIJAH Fungsi yang mau dicari nilai maksimumnya
y = 10.4 + x(1)*sin(3*pi*x(1)) + x(2)*sin(13*pi*x(2));
end
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
moga_khadijah.m
function [nilai_optimal, x_optimal, posisi, fitbgt, fitrata] =
moga_khadijah(fungsi, bawah_x, atas_x, generasi, jumlah_populasi,
pc, pm, digit)
%OPTIMASI_MOGA Mengoptimalkan keluaran fungsi menggunakan MOGA
buatan
%Khadijah
% MOGA = Multi Objective Genetic Algorithm
% Masukan dari program ini adalah
% FUNGSI : Fungsi yang ingin dicari nilai maksimumnya
% BAWAH_X : Batas bawah dari variabel masukan
% ATAS_X : Batas atasnya
% GENERASI : Maksimum generasi
% JUMLAH_POPULASI : Jumlah populasi awal yang diinginkan
% PC : Persentase kromosom yang ingin disilangkan
% PM : Persentasi gen yang ingin dimutasi
% DIGIT : Jumlah angka di belakang koma yang diinginkan
% Keluaran fungsi ini adalah
% NILAI_OPTIMAL : Nilai maksimum yang berhasil ditemukan si
MOGA
% X_OPTIMAL : Nilai X yang bersesuaian
% Copyright Khadijah Febriana (G651160091)
% Masukan default (hanya coba, berkreasi)
if nargin < 8, digit = 4; end
if nargin < 7, pm = 0.3; end
if nargin < 6, pc = 0.9; end
if nargin < 5, jumlah_populasi = 50; end
if nargin < 4, generasi = 1000; end
if nargin < 3, disp ('Masukan kurang'); end
% Persiapkan catatan sejarah fitness per generasi
fitbgt = zeros(1,generasi);
fitrata = zeros(1,generasi);
fitx = zeros(generasi, 2);
% Populasi Awal
kromosom_x = ceil(log2((atas_x - bawah_x) * 10^digit));
populasi = randi([0 1], jumlah_populasi, sum(kromosom_x));
for i = 1:generasi
[fitness, x] = evaluasi_khadijah(fungsi, populasi, kromosom_x,
bawah_x, atas_x);
[fitbgt(i) index] = max(fitness);
fitx(i,:) = x(index,:);
fitrata(i) = mean(fitness);
populasi_baru = seleksi_khadijah(populasi, fitness);
populasi_silang = silang_khadijah(pc, populasi_baru);
populasi_mutasi = mutasi_khadijah(pm, populasi_silang);
populasi = populasi_mutasi;
% populasi = mutasi(pm, silang(pc, seleksi(populasi,
evaluasi)));
end
% Hasil akhir
[nilai_optimal, posisi] = max(fitbgt);
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
x_optimal = fitx(posisi,:);
if nargout == 0
plot(fitbgt)
hold on
plot(fitrata, 'Color', 'red')
end
end
evaluasi_khadijah.m
function [fitness, x] = evaluasi_khadijah(fungsi, populasi, bit_x,
bawah_x, atas_x)
%EVALUASI Fungsi yang mengevaluasi kelayakan tiap kromosom
% Masukannya adalah sebagai berikut
% FUNGSI : Fungsi kelayakan yang ingin dicari maksimumnya
% POPULASI : Populasi yang ingin dievaluasi kelayakannya
% BIT_X : Jumlah gen pada tiap variabel masukan
% BAWAH_X : Batas bawah dari variabel masukan
% ATAS_X : Batas atasnya
% Keluarannya adalah
% FITNESS : Hasil fungsi yang diterapkan pada populasi
% X : Nilai desimal dari variabel di populasi
[jumlah_populasi, bit] = size(populasi);
fitness = zeros(jumlah_populasi,1);
desimal = [bi2de(populasi(:,1:bit_x(1)))
bi2de(populasi(:,bit_x(1)+1:bit))];
x = bsxfun(@plus, (bawah_x), (bsxfun(@times, desimal,((atas_x-
bawah_x)./(pow2(bit_x)-1)))));
for i = 1:jumlah_populasi
fitness(i) = fungsi(x(i,:));
end
end
seleksi_khadijah.m
function populasi_baru = seleksi_khadijah(populasi, fitness)
%SELEKSI Fungsi yang memilih kromosom yang layak berdasarkan hasil
fitness
% Masukan fungsi adalah
% POPULASI : Populasi yang telah difitness kelayakannya
% fitness : Hasil fitness dari tiap kromosom pada POPULASI
% Keluarannya adalah
% POPULASI_BARU : Populasi baru yang berisi kromosom yang
beruntung
jumlah_populasi = size(fitness,1);
fitness_total = sum(fitness);
peluang = fitness./fitness_total;
peluang_kumulatif = cumsum(peluang);
roulette = rand(jumlah_populasi,1);
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
populasi_baru = populasi;
for i = 1:jumlah_populasi
if roulette(i) < min(peluang_kumulatif)
populasi_baru(i,:) = populasi(1,:);
else
populasi_baru(i,:) = populasi((find(peluang_kumulatif <
roulette(i), 1, 'last' ) + 1),:);
end
end
end
mutasi_khadijah.m
function populasi_mutasi = mutasi_khadijah(pm, populasi)
%MUTASI Fungsi yang memutasi populasi dengan menukar gen
% Masukannya adalah sebagai berikut
% PM : Persentase jumlah gen dari populasi yang dimutasi
% POPULASI : Populasi yang ingin dimutasi
% Keluarannya adalah
% POPULASI_MUTASI : Populasi yang telah dikenai mutasi
% seperti X-Men
roulette = rand(size(populasi));
indeks = find(roulette < pm);
populasi_mutasi = populasi;
for i = 1:length(indeks)
if populasi(i) == 0
populasi_mutasi(i) = 1;
else
populasi_mutasi(i) = 0;
end
end
end
silang_khadijah.m
function populasi_silang = silang_khadijah(pc, populasi)
%SILANG Fungsi yang melakukan persilangan (crossover) pada kromosom
% Masukan fungsi ini adalah
% PC : Persentase kromosom yang mengalami persilangan
% POPULASI : Populasi kromosom
% Keluarannya adalah
% POPULASI_SILANG : Populasi yang telah disilangkan
jumlah_populasi = size(populasi,1);
bit = size(populasi,2);
roulette_silang = rand(jumlah_populasi,1);
indeks = find(roulette_silang < pc);
if mod(length(indeks),2) ~= 0
indeks = indeks(2:end);
end
populasi_silang = populasi;
Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm
for i = 1:2:length(indeks)
titik_potong = randi(bit-1);
populasi_silang(indeks(i),:) =
[populasi(indeks(i+1),1:titik_potong)
populasi(indeks(i),titik_potong+1:bit)];
populasi_silang(indeks(i+1),:) =
[populasi(indeks(i),1:titik_potong)
populasi(indeks(i+1),titik_potong+1:bit)];
end
end
jalankan_program.m
% Bersihkan ruangan sebelum bekerja
clear;clc;
% Deklarasikan fungsi dan kendalanya
soal = @(x) 10.4 + x(1)*sin(3*pi*x(1)) + x(2)*sin(13*pi*x(2));
bawah_x = [-2.0 3.27];
atas_x = [15.5 8.75];
% Jalankan optimasi menggunakan MOGA
[nilai_optimal, x_optimal, posisi, fitbgt, fitrata] = moga_khadijah
(soal, bawah_x, atas_x, 1000, 80);
% Buat plot perkembangan fitness
plot(fitbgt)
title('Grafik perkembangan nilai fitness')
xlabel('Generasi')
ylabel('Fitness')
hold on
plot(fitrata, 'Color', 'red')

More Related Content

Similar to Genetic algorithm

Bab 3. pengenalan algoritma
Bab 3. pengenalan algoritmaBab 3. pengenalan algoritma
Bab 3. pengenalan algoritma
Arif Punk Street
 

Similar to Genetic algorithm (13)

Bab 3. Pengenalan Dasar dasar Algoritma .ppt
Bab 3. Pengenalan Dasar dasar Algoritma .pptBab 3. Pengenalan Dasar dasar Algoritma .ppt
Bab 3. Pengenalan Dasar dasar Algoritma .ppt
 
Bab 3. pengenalan algoritma
Bab 3. pengenalan algoritmaBab 3. pengenalan algoritma
Bab 3. pengenalan algoritma
 
Makalah Random Generator
Makalah Random GeneratorMakalah Random Generator
Makalah Random Generator
 
Pengenalan algoritma.ppt
Pengenalan algoritma.pptPengenalan algoritma.ppt
Pengenalan algoritma.ppt
 
01_Pengenalan_Algoritma_ppt.ppt
01_Pengenalan_Algoritma_ppt.ppt01_Pengenalan_Algoritma_ppt.ppt
01_Pengenalan_Algoritma_ppt.ppt
 
Pengenalan_Algoritma_ppt.ppt
Pengenalan_Algoritma_ppt.pptPengenalan_Algoritma_ppt.ppt
Pengenalan_Algoritma_ppt.ppt
 
11 Sem -materi.pdf
11 Sem -materi.pdf11 Sem -materi.pdf
11 Sem -materi.pdf
 
Algoritma Genetika
Algoritma GenetikaAlgoritma Genetika
Algoritma Genetika
 
Jurnal 15398 ilmplementasi k-nearest neighbor untuk mengenali pola citra dala...
Jurnal 15398 ilmplementasi k-nearest neighbor untuk mengenali pola citra dala...Jurnal 15398 ilmplementasi k-nearest neighbor untuk mengenali pola citra dala...
Jurnal 15398 ilmplementasi k-nearest neighbor untuk mengenali pola citra dala...
 
Efisiensi algoritma
Efisiensi algoritmaEfisiensi algoritma
Efisiensi algoritma
 
Analisis Algoritma - Strategi Algoritma Dynamic Programming
Analisis Algoritma - Strategi Algoritma Dynamic ProgrammingAnalisis Algoritma - Strategi Algoritma Dynamic Programming
Analisis Algoritma - Strategi Algoritma Dynamic Programming
 
Algoritma pemrograman
Algoritma pemrogramanAlgoritma pemrograman
Algoritma pemrograman
 
Bahan 2.pptx
Bahan 2.pptxBahan 2.pptx
Bahan 2.pptx
 

Recently uploaded

TUGAS MANDIRI 3 _ SKETSA KEHIDUPAN BERAGAMA DI INDONESIA.pdf
TUGAS MANDIRI 3 _ SKETSA KEHIDUPAN BERAGAMA DI INDONESIA.pdfTUGAS MANDIRI 3 _ SKETSA KEHIDUPAN BERAGAMA DI INDONESIA.pdf
TUGAS MANDIRI 3 _ SKETSA KEHIDUPAN BERAGAMA DI INDONESIA.pdf
AbdulHalim854302
 

Recently uploaded (8)

Biokimia Gizi 13: Metabolisme Mineral 2024.pptx
Biokimia Gizi 13: Metabolisme Mineral 2024.pptxBiokimia Gizi 13: Metabolisme Mineral 2024.pptx
Biokimia Gizi 13: Metabolisme Mineral 2024.pptx
 
Bahasa Arab kelas 4 BAB 6 (kosa kata tentang perlengkapan yang ada di rumah)
Bahasa Arab kelas 4 BAB 6 (kosa kata tentang perlengkapan yang ada di rumah)Bahasa Arab kelas 4 BAB 6 (kosa kata tentang perlengkapan yang ada di rumah)
Bahasa Arab kelas 4 BAB 6 (kosa kata tentang perlengkapan yang ada di rumah)
 
PENGEMBANGAN & PERBANYAKAN TRICHODERMA SP.ppt
PENGEMBANGAN & PERBANYAKAN TRICHODERMA SP.pptPENGEMBANGAN & PERBANYAKAN TRICHODERMA SP.ppt
PENGEMBANGAN & PERBANYAKAN TRICHODERMA SP.ppt
 
Uji triaxial pada material batuan beku sebagai penanda kekuatan pondasi
Uji triaxial pada material batuan beku sebagai penanda kekuatan pondasiUji triaxial pada material batuan beku sebagai penanda kekuatan pondasi
Uji triaxial pada material batuan beku sebagai penanda kekuatan pondasi
 
Biokimia Gizi 12: Metabolisme Vitamin 2024.pptx
Biokimia Gizi 12: Metabolisme Vitamin 2024.pptxBiokimia Gizi 12: Metabolisme Vitamin 2024.pptx
Biokimia Gizi 12: Metabolisme Vitamin 2024.pptx
 
Materi Presentasi Dasar Perkembangan Tanaman.pptx
Materi Presentasi Dasar Perkembangan Tanaman.pptxMateri Presentasi Dasar Perkembangan Tanaman.pptx
Materi Presentasi Dasar Perkembangan Tanaman.pptx
 
3_Kerangka Kompetensi Numerasi - M Ilhamul Qolbi
3_Kerangka Kompetensi Numerasi - M Ilhamul Qolbi3_Kerangka Kompetensi Numerasi - M Ilhamul Qolbi
3_Kerangka Kompetensi Numerasi - M Ilhamul Qolbi
 
TUGAS MANDIRI 3 _ SKETSA KEHIDUPAN BERAGAMA DI INDONESIA.pdf
TUGAS MANDIRI 3 _ SKETSA KEHIDUPAN BERAGAMA DI INDONESIA.pdfTUGAS MANDIRI 3 _ SKETSA KEHIDUPAN BERAGAMA DI INDONESIA.pdf
TUGAS MANDIRI 3 _ SKETSA KEHIDUPAN BERAGAMA DI INDONESIA.pdf
 

Genetic algorithm

  • 1. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Tugas UAS COMPUTATIONAL INTELLIGENCE (CI) GA (Genetic Algorithm) Dosen : Dr.Ir.Yandra Arkeman,M.Eng Oleh : Khadijah Febriana G651160091 DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR 2017
  • 2. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Algoritma genetika merupakan teknik pencarian nilai optimum secara stochastic berdasarkan mekanisme seleksi alam – teori genetika. Algoritma genetika berbeda dengan teknik konvergensi konvensional yang lebih bersifat deterministik (Gen, et.al., 1997). Algoritma genetika melakukan proses pencarian nilai optimum pada beberapa titik secara bersamaan (satu generasi). Proses iterasi kemudian dilakukan dengan pendekatan generasi ke generasi yang mengalami proses evolusi, tetapi jumlah anggota (chromosome) pada setiap generasi, yang merupakan kumpulan solusi, umumnya dipertahankan tetap. Chromosome yang dianalisis dapat merupakan kode binary, integer atau desimal. Dalam proses evolusi, sejumlah gen yang membentuk chromosome melewati proses crossover (kawin silang) dan/atau mutation (perubahan gen secara alami). Chromosome yang baik akan terus hidup, sedangkan chromosome yang buruk akan mati dengan sendirinya. Algoritma genetika menggunakan hukum transisi probabilistik untuk memilih solusi (chromosome) yang terus dipertahankan hidup sesuai dengan ketentuan yang diinginkan (fitness function), sehingga proses pencarian solusi optimum dapat diarahkan ke arah yang diperkirakan akan lebih baik. Bentuk fungsi sinus yang dianalisis pada tugas ini cukup kompleks karena selain hanya ada satu nilai fungsi maksimum global, juga terdapat banyak nilai fungsi maksimum lokal. Adapun fungsi sinus yang dimaksud adalah sebagai berikut Kasus : Max f (x1, x2) = 10.4 + x1 sin (3πx1) + x2 sin (13πx2) Dimana : -2.0 ≤ x1 ≤ 15.5 (...1) 3.27 ≤ x2 ≤ 8.75 Penyelesaian : Berikut ini adalah pseudocode Algoritma Genetika (Arkeman,2016) : initialize pupulation; evaluate population; while TerminationCriteriaNotSatisfied { select parents for reproduction; perform recombination and mutation; evaluate population; } Dimana untuk kasus diatas penulis mencoba untuk mencari solusi dengan menggunakan tools matlab 7.10.0 (R2010a). Adapun parameter yang digunakan oleh algoritma genetika pada tulisan ini sebagai berikut : Nama Parameter Nilai Jumlah Individu 80 Jumlah Generasi 1000 Jumlah Kromosom 34
  • 3. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Proses perhitungan nilai fungsi maksimum global dari persamaan (1) dengan menggunakan teknik konvergensi konvensional pada dasarnya sulit dilakukan. Misalnya, nilai fungsi maksimum yang diperoleh dengan menggunakan fasilitas “solver” pada Ms-Excel akan terus berubah dan sangat tidak mudah untuk mendapatkan nilai fungsi maksimum global sedangkan, dengan menggunakan algoritma genetika, solusi optimum yang diinginkan umumnya dapat diperoleh. Ketidakpastian tersebut sebenarnya merupakan sifat unik dari algoritma genetika yang memanfaatkan bilangan random dan probabilitas dalam proses pencarian solusi optimum yang diinginkan. Solusi yang diperoleh tidak selalu tepat dan dapat berubah-ubah. Meskipun demikian, dengan mengatur proses seleksi generasi baru secara cermat, generasi baru terbaik yang merupakan solusi yang tepat sangat mungkin dapat diperoleh. Algoritma genetika akan sangat bermanfaat khususnya untuk penyelesaian masalah yang sulit dipecahkan, seperti halnya fungsi sinus pada persamaan (1). Berikut ini tampilan dari program genetic algorithm yang di implementasikan menggunakan matlab. Gambar 1 merupakan tampilan editor dari multi objective genetic algorithm yang diberi nama variabel “moga_khadijah”. Dan bulatan merah yang diberi tanda panah berwarna merah pada gambar dibawah merupakan breakpoint dimana dalam debugging dapat menjalankan kode baris per baris sekaligus mengecek nilai variabel. Gambar 1.Print screen of multi objective genetic algorithm editor
  • 4. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Adapun tahapan utama dari algoritma genetika yaitu sebagai berikut :  Kodifikasi solusi dan pembentukan generasi awal Proses kodifikasi dari solusi yang dicari ke dalam chromosome merupakan isu kunci dalam algoritma genetika. Untuk fungsi sinus yang dianalisis, solusi yang dicari adalah nilai x1 dan x2. Jika ketelitian nilai x1 dan x2 adalah empat desimal, maka kode binary yang digunakan harus dapat mewakili rentang nilai -20,000 ÷ 150,000 (18 bits) untuk nilai x1, dan rentang nilai 32,000 ÷ 87,000 (15 bits) untuk nilai x2. Setiap bit merupakan gen yang membentuk chromosome. Dengan demikian, masing-masing chromosome memiliki 34 gen yang merupakan gabungan dari nilai x1 dan x2 sebagai solusi.  Proses crossover Proses crossover bekerja pada dua chromosome melalui pertukaran gen (kawin silang) untuk menghasilkan dua chromosome baru sebagai turunannya. Cara yang mudah untuk dapat melakukan pertukaran gen adalah dengan menentukan titik potong secara random. Potongan gen sebelah kiri titik potong dari satu chromosome induk kemudian digabungkan dengan potongan gen sebelah kanan titik potong dari chromosome induk lainnya. Jumlah chromosome yang mengalami proses crossover pada satu generasi ditentukan secara random berdasarkan tingkat probabilitas crossover yang diijinkan.  Proses Mutation Mutation merupakan operator genetika kedua dan hanya bekerja pada beberapa gen yang melakukan penyesuaian diri terhadap kondisi lingkungan sekitar. Proses mutation terjadi agar makhluk hidup dapat terus bertahan hidup dengan kwalitas yang lebih baik. Pada algoritma genetika, proses mutation yang menghasilkan gen yang lebih baik dapat membuat chromosome tetap bertahan dalam proses seleksi dan diharapkan akan dapat makin mendekati solusi optimum. Sebaliknya, proses mutation yang menghasilkan gen yang lebih buruk dapat membuat chromosome tereliminasi dalam proses seleksi.  Proses evaluasi Secara umum, proses evaluasi dalam pencarian nilai fungsi sinus maksimum terdiri dari tiga tahapan, yaitu: 1) Konversi chromosome (kode binary) ke dalam solusi yang dinyatakan dengan bilangan desimal 2) Perhitungan nilai fungsi sinus, y = f (x1, x2 ) , dengan menggunakan persamaan (1) berdasarkan nilai x1 dan x2 yang diperoleh untuk masing-masing chromosome 3) Perhitungan nilai kecocokan (fitness) yang dalam hal ini juga adalah y'= f (x1, x2 ) .
  • 5. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Untuk setiap generasi, nilai y’max selalu dapat diperoleh. Akan tetapi, apakah nilai y’max ini merupakan nilai fungsi maksimum global yang dicari tetap tidak dapat langsung diketahui dengan algoritma genetika. Untuk itu, proses iterasi harus terus dilakukan sampai semua generasi yang diinginkan (~ 1000 generasi) telah selesai dianalisis.  Proses seleksi Proses seleksi dilakukan untuk memilih chromosome induk dan chromosome turunan berdasarkan nilai kecocokan yang diperoleh di atas untuk membentuk generasi baru yang lebih baik ke arah solusi optimum yang dicari. Gambar 2. Print screen of evaluation editor Langkah-langkah yang harus dilakukan untuk running program pada matlab ini yaitu breakpoint pada editor (moga,evaluasi,seleksi dan mutasi ) dengan cara mengklik pada garis yang berada disebelah kiri (sebagaimana yang terlihat pada gambar 2 dengan tanda bulatan merah) berdasarkan lokasi fungsi atau perintah untuk mencari nilai yang di inginkan.
  • 6. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Gambar 3.Print screen of selection editor Gambar 4. Print screen of mutation editor
  • 7. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Setelah melakukan breakpoint , kita jalankan fungsi utama dengan cara me-run di editor “jalankan_program” dengan cara mengklik tools yang berwarna hijau sebagaimana yang terlihat pada gambar 5 dibawah ini Gambar 5. Print screen of running program Setelah di run “editor jalankan_program” akan berpindah ke editor moga kembali untuk dilakukan step in dan continue dengan cara mengklik tools skip in dekat tools run,lalu di continue .Proses skip ini bertujuan untuk memberikan inputan dari editor (program yang telah dibuat atau perintah yang diketik) agar masuk ke dalam workspace sebagaimana yang ditunjukkan pada gambar 7 dibawah Gambar 6.Print screen of moga editor
  • 8. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Gambar 7. Workspace Pada gambar 7 kita dapat melihat proses skip in yang dilakukan telah berhasil menginput di workspace. Untuk mengetahui lebih detail dapat melakukan double klik pada variabel yang di inginkan seperti pada gambar 7 misalnya yaitu populasi (ditandai dengan lingkaran biru) sehingga akan muncul detail jumlah populasi. Pada gambar dibawah terlihat ada sebanyak 80 populasi pada tugas ini. Gambar 8. Jumlah Populasi
  • 9. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Gambar 9. Continue to the next breakpoint Setelah melakukan beberapa tahapan diatas,ulangi proses step in lihat variabel yang diinginkan continue. Tahapan berikutnya yang penulis lakukan yaitu mengeksekusi program untuk : Mendapatkan Populasi Awal (di program matlab moga_khadijah.m baris ke 33)  lihat variabel populasi di workspace Populasi awal yang dibangkitkan 80 individu secara acak adalah sebagai berikut: v1=[ 1010001110101001111011101110001111] : : : v80=[ 001001000100111100001101000001010] Nilai variabel xl dan x2 yang bersesuaian (di program matlab evaluasi_khadijah.m baris ke 17)  lihat variabel x di workspace v1= [xl,x2] =[13,42958423, 7,739793545] : : v80= [xl,x2] =[9,495634062, 4,235219196]
  • 10. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Gambar dibawah ini merupakan tampilan variabel editor x1x2 Gambar 10.Nilai variabel x1x2  Nilai fitness setiap kromosom-kromosom di atas adalah sebagai berikut (di program matlab evaluasi_khadijah.m baris ke 23)  lihat variabel fitness di workspace (lihat gambar 11) Eval(v1)= 27,8371476295813 : : Eval(v80)= 23,8701892623153 Gambar 11.Nilai fitness variabel evaluasi
  • 11. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Peluang seleksi pk untuk masing-masing kromosom v k ( k = 1,..,80) adalah sebagai berikut: (program matlab di seleksi_khadijah.m 12 )  lihat variabel peluang di workspace P1 = 0,019034773 : : P80 = 0,012907659 Peluang kumulatif qk untuk masing-masing kromosom vk ( k = 1,...,80) adalah sebagai berikut: (program matlab di seleksi_khadijah.m 13) lihat variabel peluang_komulatif di workspace Q1 = 0,012433106 : : Q80 = 1 Asumsikan bahwa rangkaian delapan puluh angka acak dari range [0,1] adalah sebagai berikut: (program matlab di seleksi_khadijah.m 15) r1=0,351237722 : : r80=0,488717015 populasi baru (calon kromosom induk), yang terdiri atas kromosom-kromosom berikut ini: (program matlab di seleksi_khadijah.m 17) v’1=[0101011001100010110111011111001111] : v’80=[1110100010100001110110100010110111] Diasumsikan rangkaian bilangan acak yang muncul adalah adalah sebagai berikut : (program matlab di mutasi_khadijah.m 10) lihat variabel roulette di workspace r1=0,990720957 : : r80=0,873899091 Populasi akhir (generasi ke-I) yang didapatkan setelah mutasi adalah sebagai berikut (program matlab di mutasi_khadijah.m 23): lihat variabel populasi_baru di worksp v"1=[0110100011100001110111011111010111] : : v"80=[111101000110001011011101111101001 1] Nilai yang cocok dari variabel-variabel [xi,x2] dan nilai fitnessnya adalah sebagai berikut: (di program matlab evaluasi_khadijah.m baris ke 17 dan 23):  lihat variabel x dan fitness di workspace
  • 12. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm Eval(v1)= f(13,3281129 8,320446937)=13,88532215 : : Eval(v80)= f(12,31813934 7,635436484)=6,580882192 Gambar 12.Variabel x1x2 Gambar 13.Fitness Tahapan di atas adalah tahapan Generasi pertama dalam proses algoritma genetika, yang berakhir setelah generasi ke-1.000. Dalam eksperimen yang telah dilakukan oleh penulis, jumlah
  • 13. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm populasi yang digunakan adalah 80, panjang kromosom 34, peluang penyilangan 0,90 dan peluang mutasi 0,30. Hasil eksperimen tersebut dituangkan dalam bentuk grafik seperti pada Gambar 14 yaitu mencakup nilai fitness maksimum dan nilai fitness rata-rata dari tiap generasi. Gambar 14. Grafik perkembangan nilai fitness  Lampiran Source Code Algoritma Genetika pada matlab 7.10.0(R2010a) % Penerapan Algoritma Genetika untuk mencari nilai maksimum % yang memaksimalkan fungsi y = 10.4 + x(1)*sin(3*pi*x(1)) + x(2)*sin(13*pi*x(2)); % edited By Khadijah Febriana - G651160091 % e-mail : khadijah_febriana91@apps.ipb.ac.id % ----------------------------------------------------------------- -------- % Departemen Ilmu Komputer % Fakultas Matematika dan Ilmu Pengetahuan Alam % Sekolah Pascsarjana - Institut Pertanian Bogor (IPB) % ----------------------------------------------------------------- uas_khadijah.m function y = uas_khadijah(x) %UAS_KHADIJAH Fungsi yang mau dicari nilai maksimumnya y = 10.4 + x(1)*sin(3*pi*x(1)) + x(2)*sin(13*pi*x(2)); end
  • 14. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm moga_khadijah.m function [nilai_optimal, x_optimal, posisi, fitbgt, fitrata] = moga_khadijah(fungsi, bawah_x, atas_x, generasi, jumlah_populasi, pc, pm, digit) %OPTIMASI_MOGA Mengoptimalkan keluaran fungsi menggunakan MOGA buatan %Khadijah % MOGA = Multi Objective Genetic Algorithm % Masukan dari program ini adalah % FUNGSI : Fungsi yang ingin dicari nilai maksimumnya % BAWAH_X : Batas bawah dari variabel masukan % ATAS_X : Batas atasnya % GENERASI : Maksimum generasi % JUMLAH_POPULASI : Jumlah populasi awal yang diinginkan % PC : Persentase kromosom yang ingin disilangkan % PM : Persentasi gen yang ingin dimutasi % DIGIT : Jumlah angka di belakang koma yang diinginkan % Keluaran fungsi ini adalah % NILAI_OPTIMAL : Nilai maksimum yang berhasil ditemukan si MOGA % X_OPTIMAL : Nilai X yang bersesuaian % Copyright Khadijah Febriana (G651160091) % Masukan default (hanya coba, berkreasi) if nargin < 8, digit = 4; end if nargin < 7, pm = 0.3; end if nargin < 6, pc = 0.9; end if nargin < 5, jumlah_populasi = 50; end if nargin < 4, generasi = 1000; end if nargin < 3, disp ('Masukan kurang'); end % Persiapkan catatan sejarah fitness per generasi fitbgt = zeros(1,generasi); fitrata = zeros(1,generasi); fitx = zeros(generasi, 2); % Populasi Awal kromosom_x = ceil(log2((atas_x - bawah_x) * 10^digit)); populasi = randi([0 1], jumlah_populasi, sum(kromosom_x)); for i = 1:generasi [fitness, x] = evaluasi_khadijah(fungsi, populasi, kromosom_x, bawah_x, atas_x); [fitbgt(i) index] = max(fitness); fitx(i,:) = x(index,:); fitrata(i) = mean(fitness); populasi_baru = seleksi_khadijah(populasi, fitness); populasi_silang = silang_khadijah(pc, populasi_baru); populasi_mutasi = mutasi_khadijah(pm, populasi_silang); populasi = populasi_mutasi; % populasi = mutasi(pm, silang(pc, seleksi(populasi, evaluasi))); end % Hasil akhir [nilai_optimal, posisi] = max(fitbgt);
  • 15. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm x_optimal = fitx(posisi,:); if nargout == 0 plot(fitbgt) hold on plot(fitrata, 'Color', 'red') end end evaluasi_khadijah.m function [fitness, x] = evaluasi_khadijah(fungsi, populasi, bit_x, bawah_x, atas_x) %EVALUASI Fungsi yang mengevaluasi kelayakan tiap kromosom % Masukannya adalah sebagai berikut % FUNGSI : Fungsi kelayakan yang ingin dicari maksimumnya % POPULASI : Populasi yang ingin dievaluasi kelayakannya % BIT_X : Jumlah gen pada tiap variabel masukan % BAWAH_X : Batas bawah dari variabel masukan % ATAS_X : Batas atasnya % Keluarannya adalah % FITNESS : Hasil fungsi yang diterapkan pada populasi % X : Nilai desimal dari variabel di populasi [jumlah_populasi, bit] = size(populasi); fitness = zeros(jumlah_populasi,1); desimal = [bi2de(populasi(:,1:bit_x(1))) bi2de(populasi(:,bit_x(1)+1:bit))]; x = bsxfun(@plus, (bawah_x), (bsxfun(@times, desimal,((atas_x- bawah_x)./(pow2(bit_x)-1))))); for i = 1:jumlah_populasi fitness(i) = fungsi(x(i,:)); end end seleksi_khadijah.m function populasi_baru = seleksi_khadijah(populasi, fitness) %SELEKSI Fungsi yang memilih kromosom yang layak berdasarkan hasil fitness % Masukan fungsi adalah % POPULASI : Populasi yang telah difitness kelayakannya % fitness : Hasil fitness dari tiap kromosom pada POPULASI % Keluarannya adalah % POPULASI_BARU : Populasi baru yang berisi kromosom yang beruntung jumlah_populasi = size(fitness,1); fitness_total = sum(fitness); peluang = fitness./fitness_total; peluang_kumulatif = cumsum(peluang); roulette = rand(jumlah_populasi,1);
  • 16. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm populasi_baru = populasi; for i = 1:jumlah_populasi if roulette(i) < min(peluang_kumulatif) populasi_baru(i,:) = populasi(1,:); else populasi_baru(i,:) = populasi((find(peluang_kumulatif < roulette(i), 1, 'last' ) + 1),:); end end end mutasi_khadijah.m function populasi_mutasi = mutasi_khadijah(pm, populasi) %MUTASI Fungsi yang memutasi populasi dengan menukar gen % Masukannya adalah sebagai berikut % PM : Persentase jumlah gen dari populasi yang dimutasi % POPULASI : Populasi yang ingin dimutasi % Keluarannya adalah % POPULASI_MUTASI : Populasi yang telah dikenai mutasi % seperti X-Men roulette = rand(size(populasi)); indeks = find(roulette < pm); populasi_mutasi = populasi; for i = 1:length(indeks) if populasi(i) == 0 populasi_mutasi(i) = 1; else populasi_mutasi(i) = 0; end end end silang_khadijah.m function populasi_silang = silang_khadijah(pc, populasi) %SILANG Fungsi yang melakukan persilangan (crossover) pada kromosom % Masukan fungsi ini adalah % PC : Persentase kromosom yang mengalami persilangan % POPULASI : Populasi kromosom % Keluarannya adalah % POPULASI_SILANG : Populasi yang telah disilangkan jumlah_populasi = size(populasi,1); bit = size(populasi,2); roulette_silang = rand(jumlah_populasi,1); indeks = find(roulette_silang < pc); if mod(length(indeks),2) ~= 0 indeks = indeks(2:end); end populasi_silang = populasi;
  • 17. Computational Intelligence Khadijah Febriana-G651160091 Genetic Algorithm for i = 1:2:length(indeks) titik_potong = randi(bit-1); populasi_silang(indeks(i),:) = [populasi(indeks(i+1),1:titik_potong) populasi(indeks(i),titik_potong+1:bit)]; populasi_silang(indeks(i+1),:) = [populasi(indeks(i),1:titik_potong) populasi(indeks(i+1),titik_potong+1:bit)]; end end jalankan_program.m % Bersihkan ruangan sebelum bekerja clear;clc; % Deklarasikan fungsi dan kendalanya soal = @(x) 10.4 + x(1)*sin(3*pi*x(1)) + x(2)*sin(13*pi*x(2)); bawah_x = [-2.0 3.27]; atas_x = [15.5 8.75]; % Jalankan optimasi menggunakan MOGA [nilai_optimal, x_optimal, posisi, fitbgt, fitrata] = moga_khadijah (soal, bawah_x, atas_x, 1000, 80); % Buat plot perkembangan fitness plot(fitbgt) title('Grafik perkembangan nilai fitness') xlabel('Generasi') ylabel('Fitness') hold on plot(fitrata, 'Color', 'red')