Ateşböceği Algoritması, ilk olarak 2008 yılında Xin-She Yang tarafından geliştirilen, doğadan esinlenilmiş bir metasezgisel optimizasyon algoritmasıdır. Bu algoritma, doğada ateşböceklerinin biyolüminesans yoluyla birbirlerini etkileme davranışını matematiksel olarak taklit eder. Parlaklığı yüksek olan ateşböcekleri, diğerlerini kendilerine doğru çeker; bu yaklaşım, çözüm uzayında daha iyi çözümlere doğru yönelimi sağlar. Algoritma, popülasyon tabanlı bir yapıya sahip olup hem sürekli hem de ayrık optimizasyon problemlerinde başarıyla kullanılmaktadır. Basit yapısı, esnekliği ve çok amaçlı kullanım imkânı sayesinde mühendislik tasarımından rota optimizasyonuna, makine öğrenmesinden kaynak planlamasına kadar çok çeşitli uygulama alanlarında yaygın olarak tercih edilmektedir.
Çalışma Prensibi
Ateşböceği Algoritması üç temel ilkeye dayanır:
- Tüm ateşböcekleri cinsiyetsiz olarak kabul edilir; bu nedenle bir ateşböceği, diğer ateşböceklerinin cinsiyetine bakmaksızın onlara doğru çekilebilir.
- Çekicilik, parlaklıkla doğru orantılıdır. Parlaklık, bireyin temsil ettiği çözümün uygunluk (fitness) değeri ile ilişkilidir. Daha kaliteli çözümler daha parlak olarak kabul edilir ve diğer bireylerin hareketinde belirleyici olur. İki ateşböceği arasında, daha az parlak olan, daha parlak olana doğru hareket eder. Eğer kendisinden daha parlak bir ateşböceği yoksa bu durumda rastgele hareket eder.
- Parlaklık ve çekicilik, aradaki mesafe arttıkça üstel biçimde azalır. Böylece bir ateşböceği kendisine daha yakın olan parlak bireylerden etkilenir. Bu da yakın çevredeki çözümlere odaklanarak yerel iyileştirme sağlar; ancak rastgelelik sayesinde küresel keşif de korunmuş olur.
Matematiksel Model
Ateşböceği Algoritması' nın temel hareket denklemi aşağıdaki gibidir:
Burada:
- ve : Sırasıyla ateşböceği ve daha parlak olan ateşböceği ' nin konumlarıdır.
- : İki ateşböceği arasındaki öklidyen mesafedir.
- : Başlangıç çekicilik katsayısıdır.
- : Işık emilim (soğurma) katsayısıdır.
- : Rastgelelik katsayısıdır.
- : Rastgele bir sayı vektörüdür (genellikle [-0.5, 0.5] aralığında).
Algoritma Adımları
- Başlangıç popülasyonu (ateşböcekleri) rastgele oluşturulur.
- Her ateşböceğin parlaklığı uygunluk fonksiyonuna göre hesaplanır.
- Daha az parlak ateşböcekleri, daha parlak olanlara doğru hareket eder.
- Her hareket sonrası yeni çözümlerin uygunluk değeri güncellenir.
- Belirli bir iterasyon sayısına kadar veya durma kriteri sağlanana dek süreç tekrarlanır.
Ateşböceği Algoritması’ na ait temel akışı gösteren sözde kodu aşağıdaki gibidir:
Begin 1) Amaç fonksiyonu: f(x), x = (x₁, x₂, ..., x_d); 2) xᵢ (i = 1, 2, ..., n) ateşböceklerinden oluşan başlangıç popülasyonunu oluştur; 3) I ışık yoğunluğunu f(x) ile ilişkili olacak şekilde tanımla (örneğin, maksimumlama problemleri için, I ∝ f(x) ya da basitçe I = f(x)); 4) Soğurma katsayısı γ'yı tanımla while (t < MaxGeneration) for i = 1 : n (tüm n ateşböceği için) for j = 1 : i (n ateşböceği için) if (Iⱼ > Iᵢ), Çekiciliği, mesafeye bağlı olarak exp(-γ r) ile değiştir; Ateşböceği i’yi ateşböceği j yönünde hareket ettir; Yeni çözümleri değerlendir ve ışık yoğunluğunu güncelle; end if end for end for Ateşböceklerini sırala ve en iyi çözümü bul; end while end
Yukarıda verilen sözde kodda; algoritma, amaç fonksiyonuna bağlı olarak bireylerin parlaklığını hesaplar ve daha parlak bireylere doğru yönelim sağlar. İki ateşböceği arasındaki çekim gücü mesafeye bağlı olarak üstel biçimde azalır. Her iterasyonda, daha az parlak ateşböcekleri, daha parlak olanlara doğru hareket ederken yeni çözümler üretilir ve popülasyon güncellenir. Belirli bir nesil (iterasyon) sayısı boyunca en iyi çözüm izlenir ve sonunda en uygun çözüm elde edilir.
Uygulama Alanları
Ateşböceği Algoritması, doğadan esinlenen yapısı ve popülasyon temelli çalışma mekanizması sayesinde, geniş bir uygulama yelpazesine sahip genel amaçlı bir optimizasyon yöntemidir. Özellikle mühendislik alanında; yapısal tasarım optimizasyonu, enerji sistemleri, kontrol sistemleri ve ısı transferi gibi teknik problemlerin çözümünde yaygın olarak kullanılmaktadır. Üretim planlama, iş çizelgeleme, hat dengeleme ve kutu paketleme gibi yerleştirme ve kaynak tahsisi problemlerinde de etkin sonuçlar vermektedir. Yapay zekâ ve makine öğrenmesi alanlarında ise, sınıflandırma doğruluğunu artırmak amacıyla öznitelik seçimi ve hiperparametre ayarlamalarında kullanılmaktadır. Ayrıca mobil robotlar, kablosuz sensör ağları ve lojistik sistemlerinde rota optimizasyonu gibi ağ tabanlı problemlerde de başarıyla uygulanmıştır. Ekonomi ve finans alanlarında risk-getiri dengesi gözetilerek portföy optimizasyonu yapılabilirken; sağlık ve biyoenformatik alanlarında genetik dizilim hizalama ve medikal görüntü işleme gibi ileri düzey analizlerde de algoritmanın potansiyeli değerlendirilmektedir.