
Prof.Dr. Derviş KARABOĞA tarafından geliştirilen Yapay Arı Kolonosi sürü tabanlı bir arama algoritmasıdır. Her algoritmanın olduğu gibi bu algoritmanın da çeşitli versiyonları vardır. Ayrıca Arama algoritmalarıyla ilgili yazıyı okumadıysanız ilk önce onu okuyarak arama algoritmalarının genel çalışma mantığına bakmalısınız.
Çalışma
İlk olarak kâşif arılar rastgele besin kaynakları bulurlar. Bundan sonraki adımlar işçi arıların, gözcü arıların ve kâşif arıların belirlenen tekrar sayına ulaşıncaya kadar gönderilmesiyle oluşur. İlk olarak işçi arılar bulunan bu besin kaynaklarına nektar toplamak için giderler. İşçi arı bu besin kaynağının konumunu rastgele başka bir komşu konumuyla geliştirme formülü uygulayarak yeni bir konum elde edilir. Yeni konum eski konumdan daha iyiyse işçi arı eski besin kaynağını unutur ve yeni besin kaynağını hafızaya atar. Kovana geldiklerinde gözcü arılar işçi arıların danslarından iyi besin kaynaklarını anlarlar ve bir olasılığa bağlı olarak yiyecek kaynaklarına yönelirler. İşçi arılar gibi gözcü arılarda gittikleri besin kaynağını rastgele başka bir komşu konumuyla geliştirme formülü uygulayarak yeni bir besin kaynağı konumu elde ederler. Eğer bu besin kaynağı daha verimliyse eski besin kaynağı unutulur ve yenisi hafıza atılır. Belirli bir sayıda gidilen besin kaynağı eğer tüketilmiş ise terk edilir ve gözcü arılar kâşif arıya dönerek yeni yiyecek kaynakları ararlar. Bu işlem maksimum döngü sayısına kadar işçi, gözcü ve kâşif arıların tekrar gönderilmesiyle devam eder. Bu açıklama algoritmanın esinlendiği arı kolonilerinin sürü hareketleri temel alınarak yapılmış. Tabi böyle anlatınca benimde ilk okuduğum gibi kafanız karışabilir o yüzden size bu aşamaların ne anlama geldiğini ve aşamalarının detaylı şekilde açıklamasını kodlarla destekli bir şekilde paylaşmayı planlıyorum.
Özet Adımlar
Adımları sürüden esinlenildiği davranışlara karşılık gelen algoritmadaki işlemleriyle destekledim. Böylece algoritmanın orijinalini okuduğunuzda ve aşağıda algoritmanın detaylı örneklendirilmesinde kafa karışıklığı yaşamayacağınızı umuyorum.
Esinlenen davranışlar |
Algoritmada karşılık gelen eylem |
|
|
|
|
|
|
|
|
|
|
Algoritmada Tanımlar ve Detaylı Çözüm
Bu bölümde algoritmadaki önemli değişkenlerden bahsedeceğim. Ayrıca paragrafa noktayla başlayan yer alan değerler aşağıda örneklerde kullanacağım değer olacak.
Problem : Algoritmada çözüm aradığımız problemdir ve genellikle bir matematiksel formülle belirtilir.
- x2 + y2 = 10 . Biz burada x ve y parametre değerlerini algoritmada arayacağız. Örnek olması açısından basit bir problem seçtim.
Uygunluk fonksiyonu : Algoritmada çözmek istediğimiz problem için bulduğumuz çözüm kümelerinin iyilik derecesini bulmamıza yarayan formül. Sizin probleminize göre formülünüzü kendiniz belirlemeniz gerekir. Bu bölüm için arama algoritmaları adlı makaleyi tekrar okumanızı tavsiye ediyorum. Ancak Yapay Arı Algoritması minimize veya maksimize formüllere göre bir yardımcı fonksiyon içerir bu formülleri aşağıdaki detaylı açıklamada göreceksiniz. Biz yukarıdaki problemimiz için | x2 + y2 – 10| fonksiyonunu uygunluk fonksiyonu olarak kullanacağız. Mutlak değeri x2 + y2 değerinin 10’dan uzaklığını hesaplamak için koyduk.
Popülasyon Boyutu: Popülasyondaki işçi ve gözcü arı sayısının toplamıdır. İşçi ve gözcü arı sayısı eşittir. İşçi arı+gözcü arı = popülasyon boyutu. Aslında çözüm kümelerinin üzerinde işçi arı ve gözcü arı işlemlerinin sayısınıda belirtir.
- 20
Paremetre Boyutu: Uygunluk fonksiyonumuzda bilinmeyen değişkenlerin sayısını ifade eder.
- 2 . Görüldüğü üzere bizim problemimizde x2 + y2 = 10, x ve y olmak üzere 2 parametremiz var.
Paremetre Aralığı: Parametrelerin alabileceği maksimum ve minimum değerlerdir. Sizin probleminize göre parametre aralığını kendiniz belirlemeniz gerekir. Ne kadar nokta atışı parametre değer aralığı ayarlarsanız. Algoritmanızdan o kadar iyi sonuçlar elde edebilirsiniz.
- Minimum = 1.0, Maksimum = 5.0 . Örnek olması açısından aralığı geniş tuttum ayrıca isterseniz her parametrenin minimum ve maksimum değerlerini ayrı olarak belirleyebilirsiniz. Ben bu problemde iki parametre içinde aynı değer aralıkları belirledim.
Maksimum İterasyon: Algoritmanın çalışacağı maksimum döngü sayısını belirtir.
- 20
Besin Kaynağı Sayısı: Popülasyon boyutu’nun yarısı kadardır. Algoritmadaki hafızada tutulan toplam çözüm kümesini ifade eder.
- 5
Deneme Limiti: Çözüm kümesinin geliştirme formülü deneme limiti.
- 6
1-) Kâşif arıların rastgele besin kaynaklarına gitmesi : İlk aşama olarak her çözüm kümesi için parametre boyutu kadar minimum ve maksimum parametre değerlerine göre rastgele çözüm kümesi oluşturulur. Uygunluk değerleri uygunluk fonksiyonu ile hesaplanır.
Parametre değeri atama formülü [f.1]: |
|
Besin kaynağımızın sayısı 5 parametre sayımız 2 ydi.
Bu yöntem ile 5 rastgele çözüm kümesi oluşturulur. Örnek olarak:
Çözüm kümeleri oluşturulduktan sonra her biri uygunluk formülüne koyulur bulunan değer Yapay Arı Kolonisi için ek uygunluk fonksiyonuna verilir ve dönen değer Yapay Arı Kolonisi için uygunluk değerini verir. Yapay arı algoritması kendi kullandığı uygunluk formülü aşağıda verilmiştir. Ancak siz kendi uygunluk formülünüzü de oluşturabilirsiniz.
Yapay Arı Kolonisi ek uygunluk formülü [f.2]: |
Eğer Di |
|
Eğer Di < 0 à 1 + | |
Şimdi bir çözüm kümesinin örnek olarak bizim uygunluk değerini hesaplayalım.
D1 = 10.69 olarak bulduk şimdi Yapay Arı Kolonisin ek uygunluk fonksiyonuna bu değeri verelim.
U1 =
BAŞLA
2-) İşçi arıların besin kaynaklarına gitmesi : Oluşturulan çözüm kümelerinin her biri sırayla geliştirilme formülü uygulanır. Eğer çözümün uygunluk değeri artmışsa eski çözüm kümesiyle yeni çözüm kümesi değiştirilir. Eğer uygunluk değerinde artış yoksa o indeks değerine ait çözüm kümesinin deneme değeri bir attırılır.
Geliştirme Formülü [f.3]: |
|
Örnek olarak
Seçilen çözüm kümesi i = 1, rastgele seçilen komşu çözüm kümesi j = 5, rastgele seçilen parametre indeks numarası ise 2 olsun
Yani X1t = [3.8, 1.0] yeni kümesini elde etmiş oluruz. Bununda uygunluk değerini hesaplayarak U1t = 0.15 buluruz.
Şimdiki aşamada U1 ve U1t değerlerini karşılaştırmalıyız. 0.085<0.15 yani yeni çözüm kümemizin uygunluk değeri eskisinden büyük o yüzden artık yeni çözüm kümemizi
X1 = [3.8, 1.0] olarak belirliyoruz ve eski çözüm kümesini hafızadan siliyoruz. Deneme limiti değişkenini ise T1 = 0 olarak ayarlıyoruz. Eğer uygunluk değeri yeni çözüm kümenin büyük olmasaydı çözüm kümesini değiştirmeyecektik ve ayrıca T1 deneme limiti değerini bir arttıracaktık.
Eğer çözüm kümesinde yeni bulunan parametre değerlerinin belirlediğiniz minimum ve maksimum değerleri arasına çıkmasını istemiyorsanız. Aşağıdaki formülü uygulamalısınız.
Parametre değeri limit kontrolü [f.4]: |
|
|
|
Yukarıdaki işlemler tüm çözüm kümesi için uygulanır. Hatırlarsanız işçi arı sayısı, besin kaynağına eşitti. Yani her işçi arı bir besin kaynağına gidiyor olarak kabul ediyorduk.
3-) Gözcü arıların besin kaynaklarına gitmesi : Uygunluk değerine göre çözüm kümelerinin seçim şansı oluşturulur. Örnek olarak Rulet Seçim Yöntemi, Turnava Seçim Yöntemi gibi seçim yöntemleri kullanılabilir. Biz rulet yöntemini kullandık. Rastgele gözcü arı sayısı kadar çözüm kümesi uygunluk değerlerinin olasılıklarına göre seçilir ve geliştirilme formülü [f.3] işçi arı aşamasındaki gibi uygulanır. Tek farkı sırayla besin kaynakları değil olasılıklarına göre rastgele bir seçim yapılması. Yani aynı indeks değerine ait çözüm kümesi bu seçim yöntemiyle birden fazla kez seçilebilir. Eğer çözümün uygunluk değeri artmışsa eski çözüm kümesiyle yeni çözüm kümesi değiştirilir. Eğer uygunluk değerinde artış yoksa o indeks değerine ait çözüm kümesinin deneme değeri bir attırılır. Aynı işçi arı yöntemindeki gibi.
Rulet seçim yöntemi formülü [f.5]: |
|
4-) İşçi arıların kâşif arılara dönüşmesi : Tüm çözüm kümeleri kontrol ed
Merhaba, paylaşım için teşekkürler, akademik anlamda çok faydalı oldu, step 4 ten sonrasına ulaşamıyorum, yardımcı olabilir misiniz ?