Optimasi Pencarian Solusi dengan Algoritma Dragonfly


Pencarian solusi optimal merupakan salah satu tantangan utama dalam berbagai bidang, mulai dari ilmu komputer hingga ilmu pengetahuan alam. Untuk menangani permasalahan tersebut, berbagai algoritma metaheuristik telah dikembangkan. Salah satu algoritma yang menarik perhatian adalah Dragonfly Algorithm (DA), yang terinspirasi dari perilaku capung dalam mencari makanan. Dalam artikel ini, kita akan membahas penerapan algoritma DA dalam mencari posisi dengan nilai fungsi maksimal, serta analisis implementasi dalam lingkungan MATLAB.

Dragonfly Algorithm

Dragonfly Algorithm: Konsep dan Filosofi

Sebelum masuk ke dalam implementasi, mari kita pahami konsep dasar dari Dragonfly Algorithm. Algoritma ini didasarkan pada perilaku sosial dan pencarian makanan capung di alam. Capung memiliki kemampuan untuk bergerak secara adaptif, berkomunikasi dengan anggota lain dalam populasi, dan mengoptimalkan pencarian makanannya.

Dalam DA, populasi capung (dragonfly) digunakan untuk mengeksplorasi ruang pencarian solusi. Setiap capung diwakili oleh sebuah posisi dalam ruang pencarian, dan kemampuannya untuk mencari solusi ditingkatkan dengan menggunakan tiga komponen utama: pencarian acak, pertukaran informasi antar individu, dan adaptasi perilaku berdasarkan lingkungan.

Flowchart of the dragonfly algorithm

Studi Kasus: Mencari Posisi dengan Nilai Fungsi Maksimal menggunakan Dragonfly Algorithm

Dalam studi kasus ini, kita akan menggunakan Dragonfly Algorithm (DA) untuk mencari posisi dengan nilai fungsi maksimal dari fungsi Himmelblau. Fungsi Himmelblau, yang dikenal sebagai salah satu benchmark fungsi dalam optimasi, memiliki rumus matematis sebagai berikut:

f(x, y) = (x^2 + y – 11)^2 + (x + y^2 – 7)^2

Kita ingin menentukan posisi ( (x, y) ) di dalam rentang ( -2 ) hingga ( 2 ) dimana fungsi Himmelblau mengembalikan nilai maksimal.

Langkah-langkah Studi Kasus:

  1. Pendefinisian Masalah: Kita memiliki fungsi objektif yang ingin kita maksimalkan, yaitu fungsi Himmelblau. Rentang pencarian posisi terbatas pada area ( -2 ) hingga ( 2 ) pada kedua sumbu ( x ) dan ( y ).
  2. Implementasi Dragonfly Algorithm: Kita menggunakan Dragonfly Algorithm untuk mencari posisi yang menghasilkan nilai maksimal dari fungsi Himmelblau. Dalam implementasi ini, kita menentukan jumlah capung (dragonfly), jumlah iterasi, jumlah dimensi, serta batas minimal dan maksimal posisi capung sesuai dengan kebutuhan masalah.
  3. Evaluasi Hasil: Setelah menjalankan algoritma DA, kita memperoleh posisi terbaik yang memberikan nilai maksimal dari fungsi Himmelblau. Kita membandingkan nilai fungsi pada posisi tersebut dengan nilai maksimal yang telah ditemukan.
  4. Analisis dan Interpretasi: Dari hasil yang diperoleh, kita dapat menganalisis seberapa dekat posisi yang ditemukan dengan nilai maksimal yang sebenarnya dari fungsi Himmelblau. Kita juga dapat mempertimbangkan waktu yang diperlukan oleh algoritma DA untuk mencapai solusi tersebut.

Implementasi dalam MATLAB

Pertama-tama, kita deklarasikan beberapa parameter yang diperlukan dalam pencarian solusi menggunakan DA, seperti jumlah capung, jumlah iterasi maksimal, jumlah dimensi, serta batas minimal dan maksimal posisi capung. Selanjutnya, kita siapkan matriks batas bawah dan atas posisi pada setiap dimensi.

%Tentukan jumlah capung / dragonfly yang digunakan
%Nilai yang direkomendasikan adalah 10 sampai dengan 40
%Diasumsikan dalam kasus ini, bat yang digunakan adalah 15 ekor
jumlahDragonfly = 15;

%Tentukan jumlah maksimal iterasi yang digunakan
%Diasumsikan dalam kasus ini, jumlah maksimal iterasi adalah 500 kali
jumlahIterasi = 500;

%Tentukan jumlah dimensi yang digunakan
%Diasumsikan dalam kasus ini, jumlah dimensi adalah 2 karena posisi bunga hanya ditentukan dari 2 sumbu yaitu sumbu x dan y
jumlahDimensi = 2;

%Tentukan posisi minimal dan maksimal dari fungsi yang akan dihitung
%Jika tidak ada batasan posisi, tentu saja posisi yang mendekati tak terhingga akan terpilih karena akan mengembalikan nilai fungsi yang sangat besar
%Diasumsikan dalam kasus ini, posisi minimal adalah -2, dan posisi maksimal adalah +2
minPosisi = -2;
maksPosisi = 2;

%Tentukan matriks batas bawah dan batas atas posisi pada masing-masing dimensi yang sudah ditentukan sebelumnya
%Matriks ini akan digunakan untuk mengecek apakah posisi serangga yang baru masih berada dalam batas yang diperbolehkan
Lb = minPosisi * ones(1,jumlahDimensi);
Ub = maksPosisi * ones(1,jumlahDimensi);

disp(['Jumlah Capung                = ', num2str(jumlahDragonfly)]);
disp(['Jumlah maksimal iterasi      = ', num2str(jumlahIterasi)]);
disp(['Jumlah dimensi               = ', num2str(jumlahDimensi)]);
disp(['Batas minimal posisi capung  = ', num2str(minPosisi)]);
disp(['Batas maksimal posisi capung = ', num2str(maksPosisi)]);
disp(newline);

Deklarasi Variabel dan Konstanta:

  • jumlahDragonfly: Menentukan jumlah capung (dragonfly) yang akan digunakan dalam algoritma. Dalam kasus ini, diatur sebanyak 15 ekor.
  • jumlahIterasi: Menentukan jumlah iterasi maksimum yang akan dilakukan. Dalam kasus ini, diatur sebanyak 500 iterasi.
  • jumlahDimensi: Menentukan jumlah dimensi yang digunakan dalam pencarian solusi. Dalam kasus ini, diatur sebanyak 2 dimensi.
  • minPosisi dan maksPosisi: Menentukan batas minimal dan maksimal posisi yang akan dieksplorasi. Dalam kasus ini, diatur dari -2 hingga +2.
  • Lb dan Ub: Matriks batas bawah dan atas posisi pada setiap dimensi. Digunakan untuk memeriksa apakah posisi serangga yang baru masih dalam batasan yang diperbolehkan.
Proses Inisialisasi Parameter DA

Dalam algoritma DA, dilakukan iterasi sebanyak jumlah iterasi maksimal yang telah ditentukan. Pada setiap iterasi, capung-capung dalam populasi akan bergerak dan mencari solusi. Langkah-langkah pencarian solusi ini akan mengacu pada prinsip-prinsip yang telah disebutkan sebelumnya, seperti pencarian acak dan pertukaran informasi.

%Lakukan proses perhitungan dengan metode DA (Dragonfly Algorithm)
%Penjelasan tentang fungsi ini akan dijelaskan pada perhitungan dibawah ini (poin 1 - 3)
[posisiDragonflyTerbaik,nilaiFungsiTerbaik] = DA( ...
    jumlahDragonfly, jumlahIterasi, jumlahDimensi, minPosisi, maksPosisi, Lb, Ub);
disp(newline);

disp(['Posisi Terbaik: ',num2str(posisiDragonflyTerbaik)]);
disp(['Nilai Fungsi Terbaik =',num2str(nilaiFungsiTerbaik)]);

% Plot hasil simulasi
x = linspace(minPosisi, maksPosisi, 100);
y = linspace(minPosisi, maksPosisi, 100);
[X, Y] = meshgrid(x, y);
Z = (X.^2 + Y - 11).^2 + (X + Y.^2 - 7).^2; % Fungsi Himmelblau

figure;
contour(X, Y, Z, 50, 'LineWidth', 1.5);
hold on;
plot(posisiDragonflyTerbaik(1), posisiDragonflyTerbaik(2), 'rx', 'MarkerSize', 10, 'LineWidth', 2);
xlabel('X');
ylabel('Y');
title('Contour Plot Fungsi Himmelblau dengan Posisi Terbaik');
legend('Fungsi Himmelblau', 'Posisi Terbaik', 'Location', 'best');
grid on;
hold off;

Tampilan Informasi Awal:

  • Menampilkan informasi tentang algoritma yang akan digunakan (Dragonfly Algorithm), contoh kasus (mencari posisi dengan nilai fungsi maksimal), dan fungsi yang digunakan (fungsi Himmelblau).
  • Menampilkan jumlah capung, jumlah iterasi maksimal, jumlah dimensi, serta batas minimal dan maksimal posisi capung.

Pemanggilan Fungsi DA:

  • Melakukan proses perhitungan dengan menggunakan fungsi DA (Dragonfly Algorithm).
  • Fungsi DA akan mengembalikan posisi terbaik dari capung beserta nilai fungsi terbaik yang ditemukan.
Hasil posisi terbaik dan nilai fungsi terbaik

Setelah proses pencarian selesai, kita akan mendapatkan posisi terbaik dari capung beserta nilai fungsi terbaik yang ditemukan. Informasi ini akan menjadi hasil akhir dari implementasi algoritma DA.

Tampilan Hasil:

  • Menampilkan posisi terbaik dari capung serta nilai fungsi terbaik yang ditemukan.
Visualisasi kontur

Analisis Hasil

Hasil dari algoritma DA ini akan sangat tergantung pada konfigurasi parameter yang telah ditentukan. Jumlah capung, jumlah iterasi, serta batasan-batasan pada posisi pencarian akan memengaruhi kualitas solusi yang ditemukan. Oleh karena itu, penting untuk melakukan analisis sensitivitas terhadap parameter-parameter tersebut guna mendapatkan hasil yang optimal.

Dragonfly Algorithm

Algoritma Dragonfly Algorithm merupakan salah satu pendekatan yang menarik dalam pencarian solusi optimal, terutama dalam konteks masalah pencarian global. Implementasi algoritma ini dalam lingkungan MATLAB memberikan kemudahan dalam pemodelan dan eksperimen. Dengan penyesuaian parameter yang tepat, algoritma DA dapat memberikan solusi yang baik untuk berbagai macam permasalahan optimasi. Oleh karena itu, pemahaman yang mendalam tentang konsep algoritma serta analisis yang cermat terhadap hasil yang dihasilkan menjadi kunci dalam penggunaan algoritma ini.

Posted on March 28, 2024, in Data mining and tagged , , , , , , . Bookmark the permalink. Leave a comment.

Leave a comment