Yapay Arı Kolonisi Algoritması

Doğada arıların besin arama davranışları insanlara ilham kaynağı olmuş ve bunun neticesinde ise Yapay Arı Kolonisi Algoritması(YAKA) geliştirilmiştir. YAKA’da arıların bütün davranışları bire bir modellenmemiş ve bunun yanında da bazı varsayımlarda bulunulmuştur. Bu varsayımlar her bir nektarın çıkarılmasında sadece bir görevli arının olmasıdır. Dolayısıyla algoritmada yer alan ve kullanılacak olan besin sayısı ile görevli arı sayısının biribirine eşit olması gerekmektedir. Bir diğer varsayım ise işçi arı ile gözcü arı sayısının birbirine eşit olmasıdır. Böyle bir varsayımda bulunulmasına rağmen aslında bir nektara gidip gelen arının görevli olduğu besin kaynağı tükendiğinde bu arının kâşif arı olması da söz konusudur. Bir besinin kalitesi ne kadar yüksekse o kaynağın uygunluk değeri de o denli iyidir. Dolayısıyla YAKA ile optimum çözümün elde edilmesine çalışılır. Bu noktada algoritmayı kullanan kişinin amacı maksimizasyon ya da minimizasyon olsun nektar kalitesi çözümün uygunluk değerine denk gelmektedir[1].

abc besin arama grafik

Şekil’de gösterildiği üzere kâşif arılar kovan çevresinde rastgele olarak besin kaynağı aramaya başlarlar. Besin kaynağı keşfinde bulunan kâşif arı bulduğu besin kaynağından kovana nektar taşımaya başlar. Kovana gelen arı nektarı boşalttıktan sonra üç olasılık söz konusudur. Bunlar; dans alanına giderek besin kaynağı ile ilgili bilgiyi diğer arılarla paylaşmak, hiç bilgi vermeden doğrudan besin kaynağına yönelmek ya da bulduğu besin kaynağını terk ederek yeniden kâşif arı olmaya devam etmektir. Kovanda bekleyen gözcü arılar da izledikleri dansa göre ilgili besin kaynağına yöneleceklerdir. YAKA ile ilgili kaba kod aşağıda yer almaktadır.

YAKA’nın adımları:

Adım 1: Rastgele besin kaynakları oluşturulur. Bu besin kaynaklarına sadık kalınarak işçi arı sayısı ve gözcü arı sayısı belirlenir. Ayrıca limit değeri de tespit edilir ve kontrol amaçlı sayaç değişkeni oluşturulur.

Adım 2: Oluşturulan bu besin kaynaklarına ait her bir besinin çözüm değerleri amaç fonksiyonunun türüne göre hesaplanır.

Adım 3: Maksimum döngü sayısı belirlenerek işçi arılar besin kaynaklarına gönderilir. İşçi arılar rastgele bir besine yönelerek bu besin kaynağını işlemeye başlarlar. Besin kaynağı işlendikten sonra bu besine ait yeni besin kalitesi(çözüm değeri) hesaplanır. Elde edilen çözüm değeri önceki çözüm değerinden daha iyi ise bu besin ve besinle ilgili bilgiler hafızaya alınırlar. Eğer çözüm değerinde iyileşme sağlanırsa limit değeri sıfırlanır aksi takdirde limit değeri bir arttırılır. Limit değeri için belirli bir üst değer belirlemek algoritmanın çalıştırılması esnasında sonsuz döngüye girmeye engel olacaktır.

Adım 4: İşçi arılardan sonra gözcü arılar devreye girerler. Besinlerin uygunluk değerine göre bir besin kaynağı seçilir. Gözcü arılar bu besin kaynağı üzerinde çalışmaya başlarlar. Aynı şekilde elde edilen çözüm değeri önceki çözüm değerinden daha iyi ise bu besin ve besinle ilgili bilgiler hafızaya alınırlar. Eğer besin kaynağında iyileşme sağlanırsa limit değeri sıfırlanır aksi takdirde limit değeri bir arttırılır. Bu safhada gözcü arılar işçi arılardan farklı olarak uygunluk değerine göre seçim yaparlar.

Adım 5: İşçi arı ve gözcü arı safhasından sonra kâşif arı devreye girer. Kâşif arı safhasının esas nedeni algoritmanın yerel minimum ya da maksimumda takılmasına engel olmaktır. Dolayısıyla elde edilmiş olan çözümü tamamıyla bozarak yani limit değerleri tamamen sıfırlanarak yeni bir çözüm değeri üretilmesini sağlar. Elde edilen çözüm değeri ile önceden hafızaya alınmış olan çözüm değeri karşılaştırılır. Bu iki çözüm değerinden iyi olanının hafızada tutulmasına devam edilir.

Adım 6: Maksimum döngü sayısı sağlanıncaya kadar işçi arı, gözcü arı ve kâşif arı safhası devam ettirilir. Durdurma kriteri sağlanınca algoritma sonlandırılır.

Yukarıda yer alan YAKA’nın adımlarından da anlaşıldığı üzere YAKA’yı dörde ayırmak mükündür. Bunlar rastgele besin kaynaklarının üretilemesi, işçi arıların besin kaynaklarına gönderilmesi, gözcü arıların uygunluk değerine göre besin kaynağı seçmesi ve en son olarak da nektarı tükenen besin kaynağının terk edilmesidir. Bu noktada sırası ile yukarda yer alan bu dört adımdan bahsetmek yerinde olacaktır.

Rastgele Besin Kaynaklarının Üretilmesi

Besin kaynakları arama yapılan çözüm uzayında yer alacaktır. Dolayısıyla algoritmada ilk önce yapılması gereken şey bu besin kaynaklarının yerinin tespit edilmesidir. Besin kaynaklarının yerlerinin tespit edilmesi ile ilgili eşitlik aşağıda yer almaktadır.

1

Burada besin kaynağı sayısı i ile parametre sayısı ise j ile ifade edilmektedir. Yani önceden belirlenmiş olan bir alt değer ile üst değer arasındaki değerlerden oluşan besin kaynaklarının üretilmesi sağlanmış olur.

İşçi Arıların Besin Kaynaklarına Gönderilmesi

Arama uzayında çözüm değerleri araştırılırken işçi arılar besin kaynaklarından bir tanesini rastgele olarak belirlerler ve bu besin kaynağının kalitesini yani çözüm değerini hesaplarlar. Elde edilen çözüm değeri hafızaya alınır. Daha sonra işçi arılar besin kaynaklarına yöneldikçe hafızadaki bilgiler problemin amacına göre güncellenerek hafızada korunmaya devam edilir. Burada çözüm değerini iyileştiren değerlerin hafızada tutulacağını hatırlatmakta fayda vardır. Bu durum aşağıda yer alan eşitlikte yer almaktadır. 2 Eşitlikte yer alan 3 ile parametrelerin önceden belirlenmiş olan parametre sınırları arasında yer alması sağlanmaya çalışılmaktadır. Bu durum aşağıda yer alan eşitlikte yer almaktadır. 4

Bu bilgiler ışığı altında besin kaynağının uygunluk değeri aşağıda yer alan eşitliğe göre hesaplanır.

5

Burada 6 ile besin kaynağının uygunluk değeri ifade edilmektedir. Uygunluk değerinin hesaplanmasında problemin yapısı ön plana çıkmaktadır yani problemin maksimizasyon ya da minimizasyon olması durumuna göre uygunluk hesaplaması yapılmaktadır. Uygunluk değerine göre seçilen besin kaynağının çözüm değeri hesaplanır. Eğer elde edilen çözüm önceki çözümden daha kötü ise sayaç bir arttırılarak önceden belirlenmiş olan limit değeri ile karşılaştırılır. Aksi halde önceki çözüm değerinden daha iyi bir çözüm değeri elde edilmesi durumunda ise sayaç sıfırlanır. Daha önce de belirtildiği üzere limit değeri ile karşılaştırma yapılmasının nedeni artık daha fazla iyileştirilemeyen besin kaynaklarını değerlendirme dışı bırakarak sonsuz döngüye girmeye engel olmaktır. Bu noktada kovanda bekleyerek dans alanındaki işçi arıları izleyen gözcü arılar önceden hesaplanmış olan uygunluk değerine göre ilgili besin kaynağına yöneleceklerdir. Uygunluk değerlerinin hesaplanmasında çeşitli yöntemler mevcuttur. Bunlar rulet tekerleği seçim yöntemi, sıralamaya dayalı seçim yöntemi, stokastik örnekleme, turnuva yöntemi gibi yöntemlerdir[2]. YAKA’da rulet tekerleği seçim yöntemi kullanılmıştır. Bu yöntemde rulet tekerleği bir pasta gibi düşünülebilir. Pastanın her bir dilimi bir uygunluk değerine denk gelmektedir dolayısıyla uygunluk değeri yüksek olan çözüm değerinin seçilme olasılığı diğerlerinin seçilmesi olasılığından daha yüksektir. Aşağıda yer alan eşitlikte rulet tekerleği seçim yönteminde seçim olasılığının hesaplanış şekli yer almaktadır.

7

Yukarıdaki eşitlikte 8 ile i. kaynağın uygunluk değeri, SN ile işçi arı sayısı ifade edilmektedir. Yani hesaplanan uygunluk değerinin toplam uygunluk değerine oranlanması ile pastanın dilimlerinin bir diğer ifade ile rulet tekerleğinde yer alan parçaların genişlikleri elde edilmiş olmaktadır.

Gözcü Arıların Besin Kaynaklarına Gönderilmesi

Yukarıda yer alan eşitlikte hesaplanan uygunluk değerine göre gözcü arılar kovandan ayrılarak ilgili besin kaynaklarına yönelerek yeni bir çözüm değeri hesaplar. Elde edilen çözüm değeri önceden hesaplanmış olan ve hafızada tutulan çözüm değeri ile karşılaştırılır. İlgili çözüm değeri önceki çözüm değerinden daha iyi ise sayaç sıfırlanır aksi halde sayaç bir arttırılır. Bütün gözcü arılar besin kaynağına gidene kadar bu süreç böyle devam eder.

Besin Kaynağının Terk Edilmesi ve Kâşif Arı Üretilmesi

Yukarıda yer alan ikinci ve üçüncü aşama yani işçi arıların besin kaynaklarına gönderilmesi ile gözcü arıların besin kaynaklarına gönderilmesi aşamaları tamamlandıktan sonra eğer sayaç limit değerini aşmışsa yani artık çözüm değeri daha fazla iyileştirilemiyorsa kâşif arılar görevi devralırlar. Gerçek hayatta bu durumu şöyle açıklamak mümkündür. Bir besin kaynağının nektarı tükenmişse nektarın çıkarılmasından sorumlu olan işçi arı yeni besin kaynaklarının araştırılmasından sorumlu olmak üzere kâşif arı olmaktaydı. İşte aynı gerçek arıların besin arama davranışlarında olduğu gibi YAKA’da da belirli bir limit adedince iyileştirilemeyen çözüm değeri için kâşif arılar üretilmekte ve bu kâşif arılar aracılığıyla yeni bir besin kaynağı oluşturulup bu besin kaynağının çözüm değeri hesaplanmaktadır. Oluşturulan yeni besin kaynağının çözüm değeri önceki çözüm değeri ile karşılaştırılmakta ve elde edilen çözüm değeri iyiyse hafızaya alınmakta aksi takdirde ihmâl edilmektedir.   Bütün bu adımlar önceden belirlenmiş olan döngü adedince gerçekleştirilerek durdurma kriteri sağlandığında algoritma sonlandırılarak döngüden çıkılır.

Kaynakça

  1. Karaboğa D., sy. 206,Yapay Zeka Optimizasyon Algoritmaları, Nobel Yayın Dağıtım, Genişletilmiş 2. Basım, 2011.
  2. Akay B., Nümerik Optimizasyon Problemlerinde Yapay Arı Kolonisi Algoritmasının Performans Analizi, sy. 61, 2009