Ateşböceği Algoritması

fav gif
Kaydet
Alıntıla
kure star outline
firefly photo 3.png
Ateşböceği Algoritması (Görsel yapay zeka ile oluşturulmuştur.)
Geliştirici
Xin-She Yang
Geliştirme Yılı
2008
Algoritma Türü
MetasezgiselDoğadan esinlenenSürü tabanlı
Esin Kaynağı
Doğada biyolüminesans gösteren ateşböcekleri

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:


<span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5806em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="base"><span class="strut" style="height:0.7333em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1.3152em;vertical-align:-0.2861em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0528em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord"><span class="mord mathnormal">e</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:1.0291em;"><span style="top:-3.1052em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">−</span><span class="mord mathnormal mtight" style="margin-right:0.05556em;">γ</span><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.02778em;">r</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.8913em;"><span style="top:-2.214em;margin-left:-0.0278em;margin-right:0.0714em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05724em;">ij</span></span></span></span><span style="top:-2.931em;margin-right:0.0714em;"><span class="pstrut" style="height:2.5em;"></span><span class="sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.4249em;"><span></span></span></span></span></span></span></span></span></span></span></span></span></span></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.05724em;">j</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2861em;"><span></span></span></span></span></span></span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mclose">)</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.5806em;vertical-align:-0.15em;"></span><span class="mord mathnormal">a</span><span class="mord"><span class="mord mathnormal">ϵ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>

Burada:

  • <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5806em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span> ve <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7167em;vertical-align:-0.2861em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.05724em;">j</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2861em;"><span></span></span></span></span></span></span></span></span></span>: Sırasıyla ateşböceği <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.6595em;"></span><span class="mord mathnormal">i</span></span></span></span> ve daha parlak olan ateşböceği <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.854em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.05724em;">j</span></span></span></span>' nin konumlarıdır.
  • <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7167em;vertical-align:-0.2861em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.02778em;">r</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:-0.0278em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight" style="margin-right:0.05724em;">ij</span></span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.2861em;"><span></span></span></span></span></span></span></span></span></span>: İki ateşböceği arasındaki öklidyen mesafedir.
  • <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.05278em;">β</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3011em;"><span style="top:-2.55em;margin-left:-0.0528em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight">0</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>: Başlangıç çekicilik katsayısıdır.
  • <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.05556em;">γ</span></span></span></span>: Işık emilim (soğurma) katsayısıdır.
  • <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal" style="margin-right:0.0037em;">α</span></span></span></span>: Rastgelelik katsayısıdır.
  • <span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.5806em;vertical-align:-0.15em;"></span><span class="mord"><span class="mord mathnormal">ϵ</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3117em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">i</span></span></span></span><span class="vlist-s">​</span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span></span></span></span>: Rastgele bir sayı vektörüdür (genellikle [-0.5, 0.5] aralığında).

Algoritma Adımları

  1. Başlangıç popülasyonu (ateşböcekleri) rastgele oluşturulur.
  2. Her ateşböceğin parlaklığı uygunluk fonksiyonuna göre hesaplanır.
  3. Daha az parlak ateşböcekleri, daha parlak olanlara doğru hareket eder.
  4. Her hareket sonrası yeni çözümlerin uygunluk değeri güncellenir.
  5. 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:



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. 

Sen de Değerlendir!

0 Değerlendirme

Yazar Bilgileri

Avatar
YazarHanife Kan4 Mayıs 2025 11:15

Etiketler

Tartışmalar

Henüz Tartışma Girilmemiştir

"Ateşböceği Algoritması" maddesi için tartışma başlatın

Tartışmaları Görüntüle

İçindekiler

  • Çalışma Prensibi

  • Matematiksel Model

  • Algoritma Adımları

    • Uygulama Alanları

KÜRE'ye Sor