
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.
Ateşböceği Algoritması üç temel ilkeye dayanır:
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:
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.
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.

Henüz Tartışma Girilmemiştir
"Ateşböceği Algoritması" maddesi için tartışma başlatın
Çalışma Prensibi
Matematiksel Model
Algoritma Adımları
Uygulama Alanları