BAB III
1. SEKILAS TENTANG MATLAB [Kembali]
- MATLAB adalah bahasa pemrograman yang berfokus pada komputasi matriks, ideal untuk mengimplementasikan AG karena kemampuannya menangani operasi matriks dengan efisien.
- Interface MATLAB mencakup Command Window, tempat mengetikkan perintah, dan Workspace yang menampilkan variabel aktif.
2. IMPLEMENTASI ALGORITMA GENETIKA [Kembali]
- Algoritma
Genetika (AG) merupakan metode optimasi berbasis populasi yang
menggunakan prinsip evolusi. Dalam MATLAB, AG bisa digunakan untuk
menyelesaikan masalah optimasi sederhana.
- Fungsi-fungsi utama dalam AG seperti InisialisasiPopulasi, DekodekanKromosom, EvaluasiIndividu, dan RouletteWheel dijelaskan secara rinci.
- Fungsi dan
Langkah-Langkah dalam AG:
- InisialisasiPopulasi: Membangkitkan populasi awal secara acak.
Dengan program matlab:
function Populasi = InisialisasiPopulasi(UkPop,
JumGen)
Populasi =
fix(rand(UkPop, JumGen) + 0.5);
end
- Dekodekan Kromosom: Mengonversi kromosom biner ke dalam nilai real
untuk digunakan dalam evaluasi.
Dengan program matlab:
function x = DekodekanKromosom(Kromosom, Nvar, Nbit,
Ra, Rb)
x = zeros(1,
Nvar);
for ii =
1:Nvar
x(ii) =
Rb + (Ra - Rb) * sum(Kromosom((ii-1)*Nbit+1:ii*Nbit) .* (2.^(Nbit-1:-1:0))) /
(2^Nbit - 1);
end
end
- EvaluasiIndividu: Menghitung nilai fitness dari setiap individu.
Dengan program matlab:
function Fitness = EvaluasiIndividu(x)
h = 1000 *
(x(1) - x(2)^2)^2 + (1 - x(1))^2;
a = 1e-6;
Fitness = 1
/ (h + a);
end
- RouletteWheel: Memilih individu untuk menjadi orang tua
berdasarkan nilai fitness.
Dengan program matlab:
function Pindex = RouletteWheel(UkPop, LinearFitness)
JmlFitness =
sum(LinearFitness);
R = rand;
KumulatifFitness = 0;
for ii =
1:UkPop
KumulatifFitness = KumulatifFitness + LinearFitness(ii);
if
(KumulatifFitness / JmlFitness) > R
Pindex = ii;
break;
end
end
end`
- Operasi
Pindah Silang dan Mutasi:
- Operasi
pindah silang satu titik digunakan untuk menghasilkan individu baru,
dengan program matlab:
function [Anak1, Anak2] = PindahSilang(Induk1, Induk2, JumGen)
TP =
randi([1 JumGen-1]);
Anak1 =
[Induk1(1:TP) Induk2(TP+1:end)];
Anak2 =
[Induk2(1:TP) Induk1(TP+1:end)];
End
- Sedangkan
mutasi memperkenalkan variasi dalam populasi. Dengan program matlab:
function MutKrom = Mutasi(Kromosom, Pmutasi)
MutKrom =
Kromosom;
for g =
1:length(Kromosom)
if rand
< Pmutasi
MutKrom(g) = ~Kromosom(g);
end
end
end
- Kedua operasi ini diimplementasikan dengan memanfaatkan fungsi-fungsi MATLAB untuk manipulasi matriks dan pemilihan acak.
3. MENCARI PARAMETER AG YANG OPTIMAL [Kembali]
- Penentuan
parameter seperti ukuran populasi, probabilitas silang, dan probabilitas
mutasi sangat mempengaruhi performa AG. Dengan program sebagai berikut:
% Parameter yang akan diuji
UkPopTest = [50 100 200 400]; % Ukuran populasi yang diobservasi
PmutasiTest = [0.01 0.05 0.1 0.2]; % Probabilitas mutasi yang diobservasi
MaxJumlInd = 60000; % Jumlah maksimum individu
yang dievaluasi
FitnessThreshold = 9.996; % Threshold untuk fitness optimal
% Inisialisasi variabel untuk menyimpan hasil
observasi
ObData = zeros(length(UkPopTest) *
length(PmutasiTest), 4);
index = 1;
for i = 1:length(UkPopTest)
for j =
1:length(PmutasiTest)
UkPop =
UkPopTest(i);
Pmutasi
= PmutasiTest(j);
%
Variabel untuk menghitung rata-rata fitness dan jumlah individu
TotalFitness = 0;
TotalIndividu = 0;
%
Lakukan 10 kali running untuk setiap kombinasi parameter
for k =
1:10
%
Inisialisasi populasi
Populasi = InisialisasiPopulasi(UkPop, JumGen);
IndividuEvaluasi = 0;
MaxFitness = 0;
%
Evolusi hingga mencapai individu maksimal atau fitness optimal
while IndividuEvaluasi < MaxJumlInd && MaxFitness <
FitnessThreshold
% Evaluasi fitness
Fitness = arrayfun(@(x) EvaluasiIndividu(Populasi(x,:)), 1:UkPop);
% Update nilai fitness terbaik
MaxFitness = max(Fitness);
IndividuEvaluasi = IndividuEvaluasi + UkPop;
% Proses seleksi, pindah silang, dan mutasi
for m = 1:2:UkPop
P1 = RouletteWheel(UkPop, Fitness);
P2 = RouletteWheel(UkPop, Fitness);
[Anak1, Anak2] = PindahSilang(Populasi(P1,:), Populasi(P2,:), JumGen);
Anak1 = Mutasi(Anak1, Pmutasi);
Anak2 = Mutasi(Anak2, Pmutasi);
% Tambahkan anak-anak ke dalam populasi baru
Populasi(m,:) = Anak1;
Populasi(m+1,:) = Anak2;
end
end
%
Simpan hasil fitness dan jumlah individu yang dievaluasi
TotalFitness = TotalFitness + MaxFitness;
TotalIndividu = TotalIndividu + IndividuEvaluasi;
end
% Hitung
rata-rata fitness dan individu evaluasi untuk kombinasi ini
ObData(index, :) = [UkPop, Pmutasi, TotalFitness / 10, TotalIndividu /
10];
index =
index + 1;
end
end
% Tampilkan hasil observasi
disp('Hasil Observasi untuk Mencari Parameter AG yang
Optimal');
disp('Populasi | Prob. Mutasi | Rata-rata Fitness |
Rata-rata Individu');
disp(ObData);
OUTPUT:
- Dari output
yang diperoleh dapat disimpulkan bahwa populasi kecil dengan probabilitas
mutasi rendah memberikan hasil yang lebih baik.
- Visualisasi
dan Evaluasi Hasil:
- Program
utama untuk AG mencakup visualisasi dua dan tiga dimensi dari evolusi
generasi.
- Grafik
menunjukkan perkembangan fitness dari generasi awal hingga mencapai
solusi optimal.
- Pengujian
dengan Parameter Optimal:Parameter optimal yang disarankan adalah ukuran populasi 100 dan probabilitas mutasi 0.1, yang memberikan fitness rata-rata tinggi dan waktu komputasi yang efisien.
- HTML↠ klik disini
- Video ↠ klik disini

0 Response to "BAB III"
Posting Komentar