Skip to content

aniltalhab/ABC-Algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

  1. ABC Algoritmasının Temel İlkeleri ABC algoritması, bal arılarının yiyecek kaynaklarını (nektar) arama sürecini taklit eder. Her bir yiyecek kaynağı, optimizasyon problemindeki bir çözüm adayını temsil eder ve nektar miktarı, bu çözümün kalitesini (uygunluk değerini) ifade eder. Algoritma, üç tür arı içerir:

Çalışan Arılar (Employed Bees): Her biri bir yiyecek kaynağına bağlıdır ve bu kaynağın çevresinde yerel arama yapar. Yeni bir yiyecek kaynağı bulduğunda, mevcut kaynağın nektar miktarıyla karşılaştırır ve daha iyisini seçer. Gözlemci Arılar (Onlooker Bees): Çalışan arıların topladığı bilgileri (nektar miktarını) değerlendirir ve bir olasılık mekanizmasıyla (genellikle rulet tekerleği seçimi) yiyecek kaynaklarını seçer. Daha yüksek nektar miktarına sahip kaynaklar daha yüksek olasılıkla seçilir. İzci Arılar (Scout Bees): Terk edilmiş yiyecek kaynaklarını (çözümleri) rastgele yeni kaynaklarla değiştirir. Bu, algoritmanın yerel minimumlara takılmasını önler.

Modelin Temel Dinamikleri:

Pozitif Geri Besleme: İyi yiyecek kaynakları, daha fazla arıyı çeker (çözüm kalitesinin yüksek olması). Negatif Geri Besleme: Zayıf yiyecek kaynakları terk edilir ve izci arılar yeni kaynaklar arar (çözüm çeşitliliğini artırır).

  1. ABC Algoritmasının Çalışma Mantığı ABC algoritması, bir popülasyon tabanlı algoritmadır ve aşağıdaki adımları izler:

Başlangıç (Initialization):

Rastgele bir başlangıç popülasyonu (yiyecek kaynakları) oluşturulur. Her yiyecek kaynağı, problem uzayındaki bir çözüm vektörüdür. Popülasyon büyüklüğü (SN) genellikle 20-100 arasında seçilir ve çalışan arı sayısı, yiyecek kaynağı sayısına eşittir.

Çalışan Arılar Fazı:

Her çalışan arı, kendi yiyecek kaynağı çevresinde yeni bir kaynak arar. Yeni bir çözüm, aşağıdaki formülle üretilir:

image

Burada:

$v_{ij}$: Yeni çözümün $j$'nci boyutu. $x_{ij}$: Mevcut çözümün $j$'nci boyutu. $x_{kj}$: Rastgele seçilen başka bir çözümün $j$'nci boyutu. $\phi_{ij}$: [-1, 1] aralığında rastgele bir sayı.

Yeni çözümün uygunluk değeri hesaplanır. Eğer yeni çözüm daha iyiyse, eski çözüm yerine geçer (açgözlü seçim).

Gözlemci Arılar Fazı:

Çalışan arılar, yiyecek kaynaklarının nektar bilgilerini (uygunluk değerlerini) paylaşır. Gözlemci arılar, uygunluk değerine bağlı bir olasılıkla yiyecek kaynağı seçer. Olasılık şu şekilde hesaplanır:

image

Burada $\text{fit}_i$, $i$'nci yiyecek kaynağının uygunluk değeridir. Seçilen kaynak çevresinde, çalışan arılar fazında olduğu gibi yeni bir çözüm üretilir ve açgözlü seçim uygulanır.

İzci Arılar Fazı:

Eğer bir yiyecek kaynağı, belirli bir sayıda denemede (limit parametresi) iyileştirilemezse, terk edilir. Terk edilen kaynak, izci arı tarafından rastgele yeni bir çözümle değiştirilir: $$x_{ij} = x_{\text{min},j} + \text{rand}(0,1) \cdot (x_{\text{max},j} - x_{\text{min},j})$$

Sonlandırma:

Algoritma, maksimum iterasyon sayısına ulaşıldığında, belirli bir uygunluk eşiğine erişildiğinde veya başka bir sonlandırma kriteri sağlandığında durur.

  1. ABC Algoritmasının Pseudocode’u plaintextDaraltMetni gizleKopyalafunction ABC_Algoritma(problemin_tanımı): popülasyon = rastgele_başlangıç_yiyecek_kaynakları(SN) for her yiyecek_kaynağı in popülasyon: uygunluk[yiyecek_kaynağı] = uygunluk_fonksiyonu(yiyecek_kaynağı)

    while sonlandırma_koşulu_sağlanmadı: // Çalışan Arılar Fazı for her yiyecek_kaynağı in popülasyon: yeni_kaynak = yerel_arama(yiyecek_kaynağı) if uygunluk(yeni_kaynak) > uygunluk(yiyecek_kaynağı): yiyecek_kaynağı = yeni_kaynak else: deneme_sayısı[yiyecek_kaynağı] += 1

     // Gözlemci Arılar Fazı
     olasılıklar = uygunluk_değerlerine_göre_olasılık_hesapla(popülasyon)
     for her gözlemci_arı:
         seçilen_kaynak = rulet_tekerleği_seçimi olasılıklar)
         yeni_kaynak = yerel_arama(seçilen_kaynak)
         if uygunluk(yeni_kaynak) > uygunluk(seçilen_kaynak):
             seçilen_kaynak = yeni_kaynak
         else:
             deneme_sayısı[seçilen_kaynak] += 1
     
     // İzci Arılar Fazı
     for her yiyecek_kaynağı in popülasyon:
         if deneme_sayısı[yiyecek_kaynağı] > limit:
             yiyecek_kaynağı = rastgele_yeni_kaynak()
             deneme_sayısı[yiyecek_kaynağı] = 0
     
     en_iyi_çözüm = en_yüksek_uygunluk(popülasyon)
    

    return en_iyi_çözüm

  2. ABC Algoritmasının Parametreleri

Popülasyon Büyüklüğü (SN): Yiyecek kaynaklarının (çözüm adaylarının) sayısı. Limit Parametresi: Bir yiyecek kaynağının terk edilmeden önce kaç kez iyileştirilemediği kontrol edilir. Maksimum İterasyon Sayısı: Algoritmanın durma kriteri. Kontrol Parametreleri: ABC’nin avantajlarından biri, az sayıda kontrol parametresine sahip olmasıdır (SN, limit, iterasyon sayısı).

  1. ABC Algoritmasının Avantajları

Basitlik ve Kolay Uygulama: Az sayıda kontrol parametresi ve anlaşılır yapısı sayesinde kolayca uygulanabilir. Denge: Hem yerel (exploitation) hem de küresel (exploration) arama yetenekleri sayesinde yerel minimumlara takılma olasılığı düşüktür. Esneklik: Sayısal optimizasyon, kombinatoriyel optimizasyon, makine öğrenimi ve mühendislik problemleri gibi geniş bir yelpazede kullanılabilir. Hızlı Yakınsama: Özellikle uygunluk fonksiyonu iyi tasarlandığında, hızlı ve etkili sonuçlar üretir. Robustluk: Farklı problem türlerinde ve yüksek boyutlu veri setlerinde iyi performans gösterir.

  1. ABC Algoritmasının Dezavantajları

Yavaş Yakınsama: Bazı karmaşık veya çok modlu problemlerde yakınsama hızı düşük olabilir. Yerel Minimumlara Takılma: Geleneksel ABC, bazı durumlarda yerel minimumlara takılabilir, bu nedenle varyasyonları geliştirilmiştir. Hesaplama Maliyeti: Büyük popülasyonlar ve karmaşık uygunluk fonksiyonları, hesaplama süresini artırabilir. Parametre Hassasiyeti: Limit ve popülasyon büyüklüğü gibi parametrelerin doğru ayarlanması gerekir.

  1. Kullanım Alanları ABC algoritması, çok çeşitli alanlarda uygulanmıştır:

Sayısal Optimizasyon: Benchmark fonksiyonlar (örneğin, Sphere, Rastrigin, Rosenbrock) üzerinde test edilmiştir. Makine Öğrenimi: Özellik seçimi, yapay sinir ağı eğitimi, kümeleme. Mühendislik: Güç sistemi optimizasyonu (örneğin, ekonomik dağıtım problemi), yapısal tasarım optimizasyonu. Görüntü İşleme: Görüntü segmentasyonu, kenar algılama. Ağ Optimizasyonu: Mobil ad hoc ağlarda (MANET) yönlendirme, yük dengeleme. Finans: Portföy optimizasyonu, risk analizi. Biyoinformatik: Gen dizisi h

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages