BAB III




 
BAB III IMPLEMENTASI ALGORITMA GENETIKA DALAM MATLAB

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.

  1. 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`

  1. 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.
  1. 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.
  2. 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.









Subscribe to receive free email updates:

0 Response to "BAB III"

Posting Komentar