Yazan : Şadi Evren ŞEKER

Bilgisayar bilimlerinde kullanılan arama algoritmalarından (search algorithms) birisinin ismidir. Bu algoritmada amaç belirli bir en iyi noktasını (optimum point) bulmaktır.

Bu arama işlemi sırasında arıların bal yapmak için kullandıkları arama metodu modellenmiştir. Algoritmanın farklı çeşitleri bulunmasına karşılık en basit haliyle bir komşu arama algoritmasına benzetilebilir.

Algoritmanın açıklaması

Algoritmanın çalışması sırasında kullanılan bazı değerleri tanımlayalım.

n: ortamda gezinen ve hedefi arayan arı sayısı

m: ortamda aranacak noktaların sayısı. (arı ve bal örneği düşünülürse çiçek sayısı olabilir)

e: ortamdaki m çiçekten bulunan en iyilerinin sayısı

nep: en iyi olarak bulunmuş e tane çiçeği bulan arı sayısı

nsp: en iyi olarak bulunmayan çiçekleri (yani m – e sayıdaki çiçekteki) arıların sayısı

ngh: ortamı ve bitiş koşulunu belirleyen parametre

Algoritmanın çalışması aşağıdaki şekilde adımlar halinde yazılabilir. (müsvedde kod (pseudo code))

1. ortamın ilklenmesi (çiçeklerin hazırlanması).

2. Başarı değerlerinin (fitness) atanması.

3. While (istenen başarıdan düşükken)

4. Arama için komşuların(çiçeklerin) belirlenmesi.

5. Seçilen komşulara(çiçeklere) arıların gitmesi. ( en iyi çiçeklere daha çok arı yollanarak)

6. Gidilen çiçeklerdeki başarının ölçülmesi.

7. Kalan arıların kalan çiçeklere dağıtılması.

8. End While.

Yukarıdaki algoritma görüldüğü üzere klasik bir komşu aramasından farklı olarak bulduğu iyi çiçeklere (optimum noktalara) daha fazla arı yollayarak bir sonraki aramada şansı arttırmaktadır.

Bir örnek üzerinde algoritmanın çalışması

Bu durumu görsel bir örnek üzerinden açıklayalım.

Arama yapılacak grafiğin yukarıdaki şekilde olduğunu kabul edelim. Bu grafik örnek olarak verilmiş olup grafik aslında hesaplanması zaman alan ve bütün noktaları bilinmeyen bir grafik olarak kabul edilir. Yani arama algoritmalarında amaç zaten bütün grafik noktalarını hesaplamadan bir optimum nokta bulmaktır. Biz konuyu açıklamak için grafiği açık olarak göstereceğiz.

Bu yazı şadi evren şeker tarafından yazılmış ve bilgisayarkavramlari.com sitesinde yayınlanmıştır. Bu içeriğin kopyalanması veya farklı bir sitede yayınlanması hırsızlıktır ve telif hakları yasası gereği suçtur.

Grafikte öncelikle arı hikayesinde olduğu üzere arama yapılacak noktaları belirleyeceğiz. Bu noktalara arıların bal topladıkları çiçekler diyebiliriz. Rast gele olarak aşağıdaki şekilde bu noktaların belirlendiğini kabul edelim:

Örneğimizde en küçük noktayı aradığımızı kabul ediyoruz. Bu durumda daha düşük noktadaki değerler bizim için daha kıymetli. Yukarıdaki örnekte 8 çiçek bulunuyor (m tane) ve örneğin arı sayımız 12 olsun. İlk durumda her çiçeğe birer arı hareket edip başarıyı ölçüyorlar (fitness).

İyi durumda olan çiçekler tespit ediliyor (e tane). Bu örnekte 3 noktayı iyi olarak kabul edersek aşağıdaki çiçekler öncelikli olacaktır.

Bu çiçekler bir sonraki çalışmada daha fazla arı alacak ve yakın noktalar daha çok aranacak.

İkinci adımda (döngünün ikinci dönüşünde) elimizdeki iyi olan 3 çiçek dışında yeni çiçekler tespit ediyoruz. Ayrıca iyi olan çiçeklerin yakınlarına fazladan arı yolluyoruz.

Yukarıdaki şekilde, iyi olarak bulunan çiçeklere ilave arı giderken geri kalan arılar farklı çiçekler tespit edip bu noktalarda arama yapmaktadır. Sonuçta bulunan en iyi noktalar aşağıdaki şekilde işaretlenmiştir.

Arama algoritmasının temsili olarak sonraki adımını aşağıdaki şekilde gösterebiliriz:

Yukarıda örnek bir grafik üzerinde arı arama algoritmasının çalışmasını gösterdik. Bu algoritma anlatıldığı üzere arıların bir bahçedeki çiçekler üzerinde bal yapmak için dolaşmaları ve bir arının başarılı bir çiçek bulması üzerine bu çiçeğe daha fazla arının yönlenmesi hikayesi gibi bir grafik üzerinde arama yapmaktadır.

Yukarıda algoritmanın çalışması birkaç adımda gösterilmiştir. Algoritma benzer şekilde istenen başarı değerine ulaşana kadar çalışmaya devam etmektedir.

Algoritmanın uygulama alanları

  • Yapay sinir ağlarının eğitimi
  • Üretim sistemlerinde iş planlaması
  • Tasarım problemlerinde verimli alan hesaplanması (feasible region)
  • Veri sınıflandırması (clustering)

Yorumlar

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir