halı saha yapan firmalar halı saha yapan firmalar

Mekanlar ve Olaylarıyla Hz. Muhammed’in Hayatı – Mekke – Medine

Güzel bir kitap olmuş. Bir gün kutsal toprakları görme fikrinde olanların veya Mekke ve Medine’yi tanımayı isteyenlerin kesinlikle okuması gereken bir kitap. Bir umre seyahatinde -hatta biraz daha genişletilmiş bir ziyaret de diyebiliriz- nereye niçin gidiliri güzel bir şekilde anlatmış Talha Uğurluel. Ayrıca bu kitap bir kez okumalık bir kitap da değil. Bir başucu kaynağı olarak da kullanılabilir. Özellikle umre veya hac fikrinde olanların kutsal topraklara gitmeden önce kesinlikle oralar hakkında bilgi edinmesini gerektiğini düşünen biri olarak kütüphanede saklanması gereken bir kitap olduğunu düşünüyorum. Talha Uğurluel’in de ellerine sağlık. Kitaptan çektiğim üç tane fotoğrafı da paylaşmak istiyorum. İnşallah yazarla bir gün karşılaşırız da o zaman bu izni de kendisinden almış olurum.

Fotoğraflarda ilki Mekke’nin krokisi.

İkincisi Medine’nin Planı.

Ve sonuncusu da Mescid-i Nebevi’nin Planı.

 

Dünya ve Ahiret Efendimizsin

Bir ulü’l emr idin emrine girdik;
Ezelden bey’atlı hakanımızsın.
Az idik, sayende murada erdik.
Dünya ve ahiret sultanımızsın.

Unuttuk İlhan’ı, Kara Oğuz’u;
İşledik seni göz bebeğimize.
Bağışla ey şef’i kusurumuzu
Bin küsur senelik emeğimize.

Suçumuz çoksa da sun’umuz yoktur.
Şımardık müjde-i sahabetinle
Gönlümüz ganidir, gözümüz toktur
Doyarız bir lokma şefaatinle

Nedense kimseler dinlemez eyvah!
O kadar saf olan dileğimizi
Bir ümmi isen de Ya Rasulallah
Ancak sen okursun yüreğimizi.

Suları tükendi gülabdanların.
Dinmedi gözümüz yaşı merhamet
Külleri soğudu buhurdanların.
Aşkınla bağrını yakmada millet.

Gelmemiş Türkçe’de Lebid, Hassan’ın.
Yok bizde ne Bürde, ne Muallaka.
Yolunda başveren Al-i Osman’ın.
Lâl ile yazdığı tarihten başka.

Ne kanlar akıttık hep senin için.
O ulu Kitab’ın hakkı içün aziz…
Gücümüz erişsin ve erişmesin.
Uğrunda her zaman döğüşeceğiz.

Yapamaz Ertuğrul evladı sensiz.
Can verir, cananı veremez Türkler.
Ebedi hadim’ül harameyniniz.
Ölsek de Ravza’nı ruhumuz bekler.

Mülâzım-ı evvel (Üsteğmen) İdris Sabih Bey (Fahreddin Paşa’nın ihtiyat mülazımı)

Meşekkatli LG G2 Maceram

Yaklaşık 4,5 senedir ısrarla kullanmaya devam ettiğim LG G2 telefonum artık S.O.S. veriyor diyebilirim. Çok güzel başlayan LG G2 maceram kötü bir şekilde son bulacak gibi görünüyor. LG G2 ile yaşadığım sorunları aşağıda sıralayacağım.

  • Aslında herşey çok güzel başlamıştı çok hızlı ve güzel tasarımlı bir telefondu. Pil ömrü de iyiydi ve aldığım zamanlarda Samsung S4 ile kıyaslanıyordu. Aralarında da fiyat farkı çok yoktu. Ben G2’yi tercih ettim. İlk zamanlar fark ettiğim ilk sorun cihazın çok ısınmasıydı. Önemsemedim ama bir müddet sonra bu ısınmalar ekranda sararmalara yol açtı ve kameramda odaklanma problemi oluşmaya başladı. Garantiye gönderdim sağolsunlar ekranı tamamen değiştirdiler. Kamera içinde kapaktaki kamera camını değiştirmeyle yetindiler ama sorun çözülmedi.
  • Neyse dedim Aliexpress’ten G2 kamerası aldım ve kendim taktım. En sevdiğim yanlarından bir tanesi telefonun modüler olması kamerayı rahatlıkta değiştirebildim.
  • Garanti süresi dolduktan bir müddet sonra hoparlörüm patladı. Bundan benim hatam olabilir. Çünkü yağmurlu bir günde uzun süre kullanmak durumunda kaldım ve akabinde bu sorun ortaya çıktı. Yine Aliexpress’ten hoparlör aldım. Onu da kolaylıkla değiştirdim.
  • Bir müddet sonra ekranda sararmalar yeniden ortaya çıktı ve halen o şekilde kullanıyorum.
  • Telefon üçüncü yılın ardından baya bir yavaşladı. Yüklü uygulamaların yeni versiyonlarına gücü yetmiyor artık. Boşken hızlı ama uygulama yükleyince kağnıya dönüşüyor.
  • Bir gün bir baktım kulaklık takılı olmadığı halde takılıymış gibi görünüyor. Kendim düzeltemedim çünkü donanımsal bir problemdi. Telefoncuya falan götürdüm ama onlar da yapamadılar. Netice itibariyle bluetooth kulaklıkla kullanıyorum ve bir de headset toogle adlı uygulamayla.
  • Arada sırada reboot etmeye başladı kendi. Hem de bu reboot’larda pin de sormuyor ilginç.
  • Ve son bomba logo ekranında takılma sorunu Soft-brick. Bu da telefonumdaki resim ve dosyalarımın uçmasına sebep oldu. Artık can çekişiyor diyebilirim.

4,5 yılda bu kadar problemle karşılaşmışım acaba zamanında Samsung S4 alsam ne olurdu diye düşünmüyor değilim. Ama sanıyorum bundan sonra LG telefon almayacağım.

LG G2 logo ekranında takılma problemi

Yaklaşık 4,5 senedir ısrarla kullanmaya devam ettiğim LG G2 telefonum artık S.O.S. veriyor diyebilirim. Bir kaç ay önce (sanıyorum) kulaklık soketi bozuldu ve sürekli olarak kulaklık takılı gibi algılıyor. Hal böyle olunca da kulaklık takmadan veya hoparlöre almadan telefonla konuşamıyorum. Dün ise başka bir problemle karşılaştım ve telefonu değiştirmeye kesin olarak karar verdim.

Dün cebimden telefonu çıkardığımda açılıştaki logonun ekranda olduğunu gördüm ve cebimde baskıdan dolayı kapatma tuşunun basılı olduğunu düşündüm ama uzun bir süre beklememe rağmen telefon açılmadı öylece kalakaldı. Biraz araştırmadann sonra telefonun Soft-Bricked olduğunu anladım. Bu durumda malesef verilerimi kaybedecektim. Neyse en azından yeni bir telefon alana kadar idare ediyim düşüncesiyle telefonu kurtarmaya çalışayım dedim. Velhasıl aşağıdaki şekilde telefonu çalışır hale getirdim ama dediğim gibi içindeki veriler uçtu.

  1. Öncelikle telefonun kapalı olması gerekiyor. Yukarıdaki sorunla karşı karşıya ise telefonunuz açık. Kapatmak için kapatma tuşuna basılı tutuyoruz önce kararıyor ekran ama tekrar logo geliyor basılı tutmaya devam ediyoruz ve tekrar karardığında telefon kapanmış oluyor.
  2. Ses kısma ve güç tuşuna basılı tutuyoruz. Ekrana logo geldiği anda elimizi güç tuşundan çekip hemen tekrar güç tuşuna basılı tutuyoruz.
  3. Ekrana fabrika ayarlarına dönüş için seçenekler geliyor. Burada dokunmatik çalışmıyor. Ses açma-kısma ve güç düğmelerini kullanarak reset işlemini başlatmak için ilgili seçeneği seçiyoruz. Emin olduğumuzu anlamak için tekrar soruyor onu da evet dedikten sonra telefonun fabrika ayarlarına dönmesi için bekliyoruz.

Ubuntu 18.04 Siyah Ekran Hatası

Daha önceleri versiyonlar arası geçişte birar tedirgin oluyordum. Yeni bir versiyon çıktıntan sonra stabil olması için uzun süreler beklediğim oldu. Ne kadar tedirgin olursam o kadar da sorunla karşılaşır olmuştum. Uzunca bir süredir bu alışkanlığımı bıraktım ve yeni bir versiyon çıkar çıkmaz ona geçiyorum. Tabi bunda çok fazla third party uygulama kullanmamamında etkisi var. Kullanan biri olsa iki kez düşünürdüm bu konuyu.

Ubuntu 18.04 çıkar çıkmaz Ubuntu 17.10’dan sudo do-release-upgrade -d diyerek yeni versiyona geçtim. Başlarda sorun da çıkmadı. Ama bir sabah iş yerime geldiğimde önce şifre yanlış dedi. Şifremi ingilizce klavyeye göre tekrar girdim bu kez şifre ekranını geçti ama siyah ekranda takıldı kaldı. Anladım ki ben yokken elektrik gidip gelmiş ve bilgisayar yeniden başlamış. O sırada ne olduysa bilgisayar siyah ekranda takılıyor. Öncelikle bilgisayarı kapatma tuşuna basarak tekrar açtım ama bir önceki senaryo tekrarlandı. Sonrasında aşağıdaki adımlarla problemi çözdüm.

  1. Siyah ekrandayken Ctrl + Alt + F3‘e basarak yeni bir terminal açtım. Bu ekranda aşağıdaki komutlarla güncellemeleri yaptım (güncelleme yapmaya gerek de kalmayabilir aslında).
    • sudo apt-get update
    • sudo apt-get upgrade
    • sudo apt-get dist-upgrade
  2.  Güncelleme bittikten sonra da sudo reboot ile bilgisayarı yeniden başlattım ve sorun çözüldü.

Çok Katmanlı Algılayıcılar (Multi-Layer Perceptron)

  • SINGLE PERCEPTRON MODEL

Multilayer Perceptrom Model’den  önce Perceptron Model’den bahsetmek gerekiyor. Perceptron Model bir Yapay Sinir Ağları modelidir ve bugünkü Yapay Sinir Ağları için önemli bir temel oluşturmaktadır. Supervised (denetimli) bir training (öğrenme) algoritmasıdır. Yani ağa hem giriş hem de çıkış kümesi verili ve öğrenme beklenir. Perceptron Modeli’nde en önemli faktör eşik değeridir. Bu değer kullanılarak güzel bir sınıflandırma yapılabilmektedir. Saptanacak olan eşik değeri probleme göre belirlenebilir. Bu modelde iterasyon sayısı artırılarak öğrenme derecesi artırılabilir. Tek Katmanlı Algılayıcı’lar aşağıdaki şekilde modellenmiştir.

Modelde görülen x değerleri girişleri, w değerleri ise ağırlıkları ifade edilmektedir. BIAS değeri ise öğrenmeyi güçlendirmek için kullanılır. Ayrıca öğrenmeyi güçlendirirken yerel optimum değerler takılmayı da önler. Bu modelin algoritma adımlar şu şekildedir;

Adım 1) Tüm ağırlıklara başlangıç değerleri atanır. Öğrenme katsayısına küçük bir değer verilir. (Örn: Bias = 0)

Adım 2) Adım 3 ile 7 arasını belirli bir iterasyon sayısına ulaşılıncaya kadar tekrarla.

Adım 3) Her bir girdi için Adım 4 ile 6 arasını tekrarla.

Adım 4) Girdi değerlerini girdiden al.

Adım 5) Perceptron’a gelen toplam sinyali hesapla. Aktivasyonu hesapla.

Adım 6) Eğer hesaplanan değer beklen değerden farklı ise, hesaplama yanlıştır. Ağırlıkları güncelle.

Adım 7) Döngü sonunu kontrol et.

Şekil-1’de görüldüğü üzere Perceptron Model tek katmanlıdır. Bu yüzden Single Perceptron Model de denmektedir. Sadece giriş ve çıkış katmanı bulunmaktadır. Net girdi hesaplanır. Girdi eşik değerin altındaysa 0, üstündeyse 1 olarak çıkış değeri belirlenir. Çıkış beklenen değerden farklı ise ağırlık güncellemesi yapılır. Şöyle ki ; Eğer çıkış 1 bekleniyorken, 0 olarak alınmışsa ağırlıklarda artırılmaya gidilir. Tersi durumda ise ağırlıklar azaltılır. Artırım ve azaltım belirlenen delta değeri ile yapılır. Tüm eğitim seti için doğru sonuçlar bulunana kadar algoritma devam ettirilir. Her biri için doğru sonuçlar bulunduğunda öğrenme tamamlanmış sayılır. Bu modelde elde edilen çıktı fonksiyonu doğrusaldır. Perceptron Modeli ile ağa gösterilen örnekler iki sınıf arasında paylaştırılarak iki sınıfı birbirinden ayıran doğru bulunmaya çalışılır. Aşağıda örnekle gösterilmiştir.

Şekil-2

Şekil-3

  • DOĞRUSAL AYRILABİLİRLİK (Linear Seperability)

Bir düzlemde sadece bir hat varsa iki sınıfa ait iki boyutlu örüntülerin bir kümesi doğrusal olarak ayrılabilirdir. Şekil-2’de görülen doğru düzlemi bir hatla ikiye ayırmıştır. Verilen düzlemdeki örneklerin hepsi iki gruptan birine dahil olmuştur. Yani problem çözülebilir. Konuya örnek olarak and ve or fonksiyonları verilebilir. Bunları şekil üzerinden görelim. Yandaki şekilde veya fonksiyonu gösterilmiştir. Bilindiği üzere or fonksiyonunun 1 çıkışı vermesi için giriş değerlerinden birinin bir olması yeterli  olur. Bu durumda or fonksiyonunun çıktılarını düzlemde iki gruba ayırmak istersek yandaki şekilde bu işlemi gerçekleştirebilir. Yani or fonksiyonu doğrusal ayrılabilirdir. Or fonksiyonunu yapay sinir ağları yöntemleriyle sisteme öğretmeye çalışırsak başarılı olabiliriz. Aynı durum and fonksiyonu içinde geçerlidir. Tek farkı doğru farklı yerden geçip düzlemi ikiye ayıracaktır. Eğer bir problem doğrusal ayrılabilir ise o zaman Perceptron Öğrenimi ile örüntülerin bir kümesinden ağırlıklar elde edilebilir. Eğer problem doğrusal ayrılabilir değilse Single Perceptron Modeli ile çözüme ulaşamayız.

  • XOR PROBLEMi

Xor fonksiyonu doğrusal ayrılabilir değildir. Daha önce bahsettiğimiz or ve and fonksiyonunun çıktılarını düzlemde iki gruba ayırabiliyorduk. Fakat xor fonksiyonunda bunu gerçekleştiremiyoruz. Düzlemdeki çıktıları tek bir hatla ikiye bölemiyoruz.(Şekil 5) En az iki doğru gerekiyor. Xor problemi Yapay Sinir Ağları’nın “Hello World”ü olarak bilinir. Perceptronlar XOR Problemi gibi doğrusal olarak sınıflandırılamayan problemleri çözümünde başarısızdır. XOR Problemi’ni çözmek için geriye yayılımlı çok katmanlı ağlardan faydalanılabilir.

Şekil-4

Şekil-5

  • MULTI-LAYER PERCEPTRON MODEL

Çok Katmanlı Algılayıcılar (MLP) XOR Problemi’ni çözmek için yapılan çalışmalar sonucu ortaya çıkmıştır. Rumelhart ve arkadaşları tarafından geliştirilen bu modeli ‘Back Propogation Model’ yada hatayı ağa yaydığı için ‘Hata Yayma Modeli’ de denmektedir. Delta Öğrenme Kuralı denilen bir öğrenme metodu kullanır. MLP özellikle sınıflandırma ve genelleme yapma durumlarında etkin çalışır. Çok Katmanlı Ağ’ların yapısı aşağıdaki gibidir.

Şekil-6

Birçok giriş için bir nöron yeterli olmayabilir. Paralel işlem yapan birden fazla nörona ihtiyaç duyulduğunda katman kavramı devreye girer. Görüldüğü üzere Single Perceptron Model’den farklı olarak arada gizli(hidden) katman bulunmaktadır. Giriş katmanı gelen verileri alarak ara katmana gönderir. Gelen bilgiler bir sonraki katmana aktarılırlar. Ara katman sayısı en az bir olmak üzere probleme göre değişir ve ihtiyaca göre ayarlanır. Her katmanın çıkışı bir sonraki katmanın girişi olmaktadır. Böylelikle çıkışa ulaşılmaktadır. Her işlem elemanı yani nöron bir sonraki katmanda bulunan bütün nöronlara bağlıdır. Ayrıca katmandaki nöron sayısı da probleme göre belirlenir. Çıkış katmanı önceki katmanlardan gelen verileri işleyerek ağın çıkışını belirler. Sistemin çıkış sayısı çıkış katmanında bulunan eleman sayısına eşittir. Single Perceptron Modeli incelerken bahsettiğimiz nöron yapısı burada aynen geçerlidir.

Modelde aktivasyon fonksiyonu olarak herhangi bir matematiksel fonksiyon kullanılabilir. Ancak Sigmoid, tang, lineer, threshold ve hard limiter fonksiyonları en çok kullanılan fonksiyonlardır.

Şekil-7

Çok katmanlı ağlardaki hücreler yandaki gibidir. Aktivasyon fonksiyonu olarak yandaki modelde sigmoid fonksiyonu seçilmiştir. Çok katmanlı ağda öğrenme Delta Öğrenme Kuralı tabanlıdır. Ağın öğrenebilmesi için örnek giriş ve çıkışlardan oluşan  eğitim seti şarttır. Geri Yayılımlı Yapay Sinir Ağları’nda öğrenme işlemi bir anlamda örnek setindeki giriş değerleriyle, çıkış değerlerini eşleştiren fonksiyonu bulma işlemidir.  Sistemin öğrenme metodu genel olarak iki aşamadan oluşur. Birinci kısım ileri doğru hesaplamadır. İkinci kısım ise geri doğru hesaplamadır (back propogation).

İleri doğru hesaplama aşamasında sisteme verilen girdi ara katmanlardan geçerek çıkışa ulaşır. Her işlem elemanına gelen girdiler toplanılarak net girdi hesaplanır. Bu net girdi aktivasyon fonksiyonundan geçirilerek mevcut işlem elemanının çıktısı bulunur. Ve bu çıktı değeri bir sonraki katmanda bulunan işlem elemanlarına gönderilir. Bu işlemler tekrar edilerek en son çıktı katmanından çıktılar elde edilir. En çok kullanılan aktivasyon fonksiyonu olan sigmoid fonksiyonu şekildedir.

Şekil-8

Ağdan çıktı alınmasıyla öğrenmenin ilk aşaması bitirilmiş olur. İkinci aşama hatanın dağıtılması olacaktır. Beklenen çıktı değeri ile elde ettiğimiz birbirinden farklı ise hata vardır. Geriye doğru hesaplama aşamasında hata ağırlık değerlerine dağıtılarak her iterasyonda azaltılması beklenir. Sisteme başlangıçta random olarak verilen ağırlık değerleri, hataların ağırlıklara dağıtılmasıyla her iterasyonda güncellenmiş olur.

Genelleştirilmiş Delta Öğrenme Kuralı’nın yapısı genel olarak aşağıdaki gibidir.

Şekil-9

Multi-layer Perceptron(MLP) yani Çok Katmanlı Algılayıcılar, Yapay Sinir Ağları’na olan ilgiyi hızlı bir şekilde artırmıştır. MLP ile birlikte YSA tarihinde yeni bir dönem başlamıştır. Geniş kullanım alanına sahiptir. Örnek verecek olursak; Otomotiv alanında yol izleme, rehberlik vs. gibi konularda kullanılmaktadır. Bankacılıkta kredi kartı suçu tespiti ve kredi uygulamalarında kullanılmaktadır. Uzay sanayinde uçuş simülasyonu  ve otomatik pilot uygulamalarında kullanılır. Finans sektöründe ise döviz kuru tahminlerinde kullanılır.

  • MULTI-LAYER PERCEPTRON MODEL UYGULAMASI

Uygulamamızı anlatırken, sadece main sınıfımızdaki kodlar konulup bu sınıfın kullandığı fonksiyonları kod koymaksızın anlatılacaktır. Uygulamamıza giriş olarak 9 değer verilmiştir bunlar;

inputs = [ 0 0 0 ; 0 1 0 ; 1 0 1 ; 1 1 1];
targets = [ 1 1 ; -1 -1 ; -1 -1 ; 1 1];

ni = 3;
nh = 4;
no = 2;
wsize = ((ni+1)*nh)+(nh*no); 
net = 4*rand(1,wsize)-2;
ci = zeros(ni+1,nh);
co = zeros(nh,no);

Giriş değişkenlerimize sırasıyla bakacak olursak;

inputs,targets: Multi Layer Perceptron modeli danışmanlı öğrenme yöntemini kullanarak algoritmanın eğitimini gerçekleştirir. Danışmanlı öğrenme modelinde ise algoritmanın eğitilmesi için giriş değerleri ve bu giriş değerlerden üretilmiş olan çıkış değerleri verilmelidir. Uygulamamızdaki giriş ve çıkış değerleri raporumuzda açıklanan ex-or problemi ile benzerlik göstermektedir. Böylece Multi Layer Perceptron modelinin “Hello word” ü olarak tanımlanan bir uygulamayı gerçekleştirmiş oluyoruz.

ni: Bu değişken algoritmamızda giriş sayısı olarak kullanılmaktadır. Bu değişkenin değiştirilmesi halinde inputs değişkenin içerisinde bulunan değerleri de değiştirmemiz gerekecektir.

nh: Bu değişken ise  ara katmandaki nöron sayısı olarak tanımlanmaktadır.

no: Bu değişken ise targets değişkenine bağlıdır ve girişler sonucunda üretilen çıkış sayısıdır. Eğer targets sayısı değiştirilirse bu değişkeninde değiştirilmesi gerekmektedir.

wsize : bu değişken giriş sayısı, nöron sayısı ve çıkış sayısı kullanılarak oluşturulan ve ağırlık sayısını temsil eden değerdir. Denklemde kullanılan (ni+1) değerindeki +1 öğrenmeyi güçlendirmek için kullanılan bias değeridir.

net: Bu değişken ağırlıkların tutulduğu vektördür. Başlangıçta rastgele atanan değerler ile doldurulur ama kullanılan algoritmada her bir döngüde bu değerler çeşitli parametrelere göre değiştirilmektedir.

ci: Her döngüde girişlerde oluşan değişimi tutan vektördür. Başlangıç değeri olarak giriş sayısı ve ara katman sayısı parametrelerine göre sıfır değerleri atanır. Değişim oldukça bu vektör düzeltilir. Denklemde kullanılan (ni+1) değerindeki bias değeri için kullanılmıştır.

co:  Bu vektör ise çıkış değerlerindeki değişimleri tutmaktadır. Başlangıç değerleri ara katman sayısı ve çıkış sayısı parametrelerine göre sıfır olarak atanır. ci,co değişkenleri hatanın hesaplanması için kullanılmaktadır. Böylece her adımda hata kontrolü yapabiliyoruz ve bu hata kontrolüne göre eğitimi durdurabiliyoruz.

for i=1:1000
 error = 0;
 for j=1:4
 [ net,co,ci,err ] = BackProp(net,inputs(j,:),targets(j,:),ni,nh,no,co,ci ); 
 error = error + err; 
 end
 if mod(i,100)==0
 display([' Error ',num2str(error)])
 end
end

Bu kod bloğu eğitim gerçekleştiği yerdir. Bizim uygulamamızda belli bir iterasyon sayısı boyunca eğitim devam etmektedir ve bin iterasyonda sonlanmaktadır fakat bu yaklaşım yerine her adımda hesapladığımız hata değerini(gerçek değere yakınlığını) de kullanabiliriz. Yani algoritmamız bizim belirlediğimiz hata değerinden küçük oluncaya kadar eğitime devam edebilir.

Algoritma her bir iterasyonda her bir giriş için:

BackProp(net,inputs(j,:),targets(j,:),ni,nh,no,co,ci ); fonksiyonunu kullanmaktadır. Bu fonksiyon parametre olarak ağırlık değerleri, girişler, çıkışlar, giriş sayısı, nöron sayısı, çıkış sayısı ve hata hesaplamaları için kullanılan parametreler alarak işlemini gerçekleştirmektedir. İlk önce ileri doğru hesaplama gerçekleştiriliyor.  Bu hesaplama iki kısma ayrılıyor. Birincisi giriş katmanı ile ara katman arasında, ikincisi ise ara katman ve çıkış katmanı arasında gerçekleşiyor. İkinci kısım birinci kısımdan çıkan değerleri kullanmak suretiyle çıkışlar üretiliyor. İleri doğru hesaplama yapılırken birçok aktivasyon fonksiyonu kullanılabilir. Bizim uygulamamızda hiperbolik tanjant fonksiyonu kullanılmaktadır. Böylece ileri doğru hesaplama tamamlanmış oluyor. İleri doğru hesaplama tamamlandıktan sonra ağa sunulan girdi için ağın ürettiği çıktı ağın beklenen çıktıları ile karşılaştırılır. Bunların arasındaki fark hata olarak kabul edilir. Bu hata, ağın ağırlık değerlerine dağıtılarak bir sonraki iterasyonda hatanın azaltılması sağlanır. Algoritma eğitimi de sürerken toplamda on adımda hata yazdırılarak hatanın giderek azaldığı gösterilmiştir.  Böylece hata azaltılarak bütün ağa paylaştırılmış ve geri doğru hesaplama tamamlanmıştır. İki aşama da sona erdikten sonra eğitim tamamlanmış ve değerlerin test edilmesi aşamasına gelinmiştir.

for j=1:4
 output = EvalNN( inputs(j,:),net,ni,nh,no );
 display([' Inputs [',num2str(inputs(j,:)),'] --> outputs: [',num2str(output),']']) 
end

Bu kod bloğunda kullanılan EvalNN( inputs(j,:),net,ni,nh,no );  fonksiyonu ile giriş değerleri test edilmektedir ve öğrenmenin ne kadar başarılı olduğu belirlenmektedir. Test aşamasından çıkan sonuçlar ise şöyledir.

inputs =
 0 0 0
 0 1 0
 1 0 1
 1 1 1
targets =
  1 1
 -1 -1
 -1 -1
  1 1
Error 2.0021
Error 1.9997
Error 0.012925
Error 0.0028741
Error 0.0016513
Error 0.0011705
Error 0.00091238
Error 0.00075076
Error 0.00063978
Error 0.00055868

Inputs [0 0 0] --> outputs: [0.99643 0.99213]
Inputs [0 1 0] --> outputs: [-0.98962 -0.98221]
Inputs [1 0 1] --> outputs: [-0.99356 -0.98541]
Inputs [1 1 1] --> outputs: [0.98985 0.98393]

Görüldüğü üzere hata gittikçe azalmıştır ve girilen giriş değerlerine göre ağın ürettiği çıkış değerleri gerçek değerlere çok yaklaşmıştır.

KAYNAKLAR

Kuyruk Teorisi ve Sistemleri

Kuyruk teorisi ve sistemlerini anlamak için öncelikle kuyruk (queue) ne demek ona bakmalıyız. Kuyruk hizmet kapasitesinin aşılması durumunda ortaya çıkan bekleme durumudur. Süper market kuyruğu gerçek hayattan verilebilecek en güzel örneklerden biridir. Banka sıramatiklerinden sıra alarak sırasını bekleyen müşteriler de güzel bir örnek olabilir. Bilgisayar sistemlerinden örnek olarak da yazıcı kuyruğu verilebilir. Bilindiği üzere ortak bir yazıcıya çıktı gönderen kişilerden çıktıyı ilk alacak olan ilk gönderen kişidir. Verilen örneklerdeki esas olan konu herkesin sırasını beklemesidir. İdeal olan ve istenilen beklemenin olmamasıdır, fakat bu mümkün görünmemektedir. Bu durumda yapılacak olan şey bu süreyi minimize etmektir. Çünkü kuyruğa farklı bir açıdan bakıldığında kuyruğun başlama sebebi hizmet kapasitesinin aşılması durumunda ortaya çıkmaktadır.

Şu ana kadar verdiğimiz örneklerin tarzı ilk giren ilk çıkar (first in first out) mantığı ile çalışan sistemlerdi. Bunun dışında restoran örneğine bakacak olursak, yoğun çalışan bir restoranda her zaman ilk gelen ilk çıkmadığı gibi bekleme süresi de değişebilmektedir. Ayrıca yemek tercihine göre servis süresi de değişken olacaktır. Yani burada durum biraz daha karışıktır. Bu durumda restoran sahibi hizmet maliyeti ve müşteri bekleme süresinin az, kalitenin ise fazla olmasını amaçlar. Müşteri için ise zaman ve hizmet kalitesi önemlidir. Bu durumda müşteri ve işletme sahibinin isteklerini dengeleyen bir yapının modeli kuyruk analizi ile çıkarılabilir. Kuyruk teorisi bekleyen sıra ya da kuyrukların matematiksel analizinin yapılarak bekleme süresini minimize edilmesine çalışılmasıdır. Kuyruk ya da sıralı sistemlerde temel elemanlar müşteri ve hizmet verendir.

Kuyruk teorisinin temel kavramları şunlardır;

  • Kuyruk: Bekleyen müşteri sayısı
  • Servis Kanalı: Hizmet sunulan sistem
  • Geliş Debisi (λ): Birim zamanda kuyruğa gelen müşteri sayısı
  • Servis Debisi (μ): Birim zamanda hizmet verilen müşteri sayısı
  • Kuyruk Disiplini: Müşterilerin seçilme düzeni. (Yazıcı ya da süper market kuyruğunda ilk gelen ilk çıkar mantığı olduğu gibi farklı sistemlerde ilk gelen son çıkar ya da rasgele seçilim gibi farklı disiplinler kullanılabilir.)
  • Servis Olanaklarının Yapısı: Tek kanallı ya da çok kanallı bir yapı olabilir.

Tek kuyruk – tek servis düzeni, tek kuyruk – seri şekilde birden fazla servis, tek kuyruk – paralel şekilde servis, çoklu kuyruk – paralel şekilde çoklu servisi sistemleri kullanılabilecek olan kuyruk sistemlerindendir.

Daha önce de bahsedildiği üzere farklı kuyruk yapıları mevcuttur. Bunlardan M/M/1 Servis zamanının üstel olasılık dağılımına sahip olduğu, FIFO yapısı kullanılan, kuyruk kapasitesi sonsuz, matematiksel çözümü olan bir modeldir. Müşterilerin geliş sırası net olarak bilinemediği için buralarda poisson ve üstel olasılık dağılımları kullanılabilir. Modelleme için kullanılan değişkenlere ve bunların denklemlerine bakalım;

  • Sistemin meşguliyet faktörü: ρ
  • Verilen bir zamanda sistemde n sayıda müşteri bulunma olasılığı: Pn = (1 – ρ) ρn
  • Hizmet verenin boş kalma oranı: Po = 1- ρ
  • Sistemde n veya daha fazla birimin bulunma olasılığı: ρn
  • Sistemdeki ortalama müşteri sayısı: L = ρ / (1- ρ)
  • Müşterinin harcadığı süre: W = 1 / ( μ- λ )
  • Ortalama Kuyruk Uzunluğu: Lq = λ2 / μ ( μ- λ )
  • Müşterilerin kuyrukta geçirdiği ortalama süre: Wq = ρ / ( μ- λ ) (FIFO)

Farklı kuyruk yapıları gelişlerin dağılımının, hizmet süresinin dağılımının, kuyruk boyutunun, müşteri sayısının vb. kavramların farklı kombinasyonlarıyla hazırlanmıştır. Buna göre M/M/1’in dışında M/M/k, M/M/3, M/G/1 modelleri bulunmaktadır.

Farklı kuyruk yapıları gelişlerin dağılımının, hizmet süresinin dağılımının, kuyruk boyutunun, müşteri sayısının vb. kavramların farklı kombinasyonlarıyla hazırlanmıştır. Buna göre M/M/1’in dışında M/M/k, M/M/3, M/G/1 modelleri bulunmaktadır.

Kaynaklar

  1. http://tr.wikipedia.org
  2. http://www.ozyazilim.com
  3. gazi.edu.tr
  4. http://acikders.ankara.edu.tr/
  5. baskent.edu.tr
  6. trakya.edu.tr https://www.google.com.tr/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDEQFjAB&url=http%3A%2F%2Fozlemaydin.trakya.edu.tr%2FMod_2012_5.pptx&ei=hFOnUeraMci0PPaQgbgF&usg=AFQjCNENwsCS7NFd-TqaBi63LYljMP6b1g&sig2=PtYiOayQjBJAS0j9J0A-Fw&bvm=bv.47244034,d.ZWU&cad=rja

Yapay Arı Koloni Algoritması (Artificial Bee Colony – ABC Algorithm)

Giriş

Bu yazımda önce Yapay Arı Koloni Algoritmasının (Artificial Bee Colony – ABC) temelini teşkil eden gerçek arıların yiyecek arama davranışı açıklanacaktır. Sonra yapay arı algoritması ve bu algoritmanın örnek bir problem için uygulamada kullanılması gösterilecektir.

Gerçek Arıların Davranışları

Doğal bir arı kolonisinde yapılacak işler o iş için özelleşmiş arılar tarafından yapılır. Yani yapılacak işlere göre arılar arasında bir iş bölümü vardır ve kendi kendilerine organize olabilmektedirler. İş bölümü yapabilme ve kendi kendine organize sürü zekâsının iki önemli bileşenidir. Arıların minimal yiyecek arama modelinde temel üç bileşen vardır. Bunlar; yiyecek kaynakları, görevli işçi arılar ve görevsiz işçi arılar.

Yiyecek kaynakları

Arıların nektar, polen veya bal elde etmek için gittikleri kaynaklardır. Kaynağın değeri, çeşidi, yuvaya yakınlığı, nektar konsantrasyonu veya nektarın çıkarılmasının kolaylığı birçok etkene bağlı olabilir. Ama kaynağın zenginliği tek ölçüt olarak alınabilir.

Görevli İşçi Arılar

Daha önceden keşfedilen belli kaynaklara ait nektarın kovana getirilmesinden sorumludur. Ayrıca ziyaret ettikleri kaynağın kalitesi ve yeri ile ilgili bilgiyi kovanda bekleyen diğer arılarla da paylaşırlar.

Görevsiz İşçi Arılar

Nektarın toplanacağı kaynak arayışı içerisindeki arılardır. Görevi belirsiz iki çeşit işçi arı bulunmaktadır. Bunlar; rastgele kaynak arayışında olan kâşif arılar ve kovanda bekleyen ve görevli arıları izleyerek bu arılar tarafından paylaşılan bilgiyi kullanarak yeni kaynağa yönelen gözcü arılardır.

Görevli arıların yiyecek kalitesi ve yeri ile ilgili bilgi paylaşımı dans alanında olmaktadır. Bir arı dans ederken diğer arılar ona antenleri ile dokunur ve bulduğu kaynağın tadı ve kokusu ile ilgili bilgiyi alır.

Danslar

Kaynağın kovana olan mesafesine göre çeşitli danslar mevcuttur: dairesel dans, kuyruk dansı ve titreme dansı gibi.

Daire Dansı Belirlenen yiyecek kaynağının kovana olan uzaklığı maksimum 50-100 metre civarında olduğundan bu dans yön ve uzaklık bilgisi içermez.

Titreme Dansı Arıların petek üzerinde düzensiz tarzda ve yavaş tempoda bacaklarını titreterek ileri, geri, sağa ve sola hareketleri söz konusudur. Arı zengin bir nektar kaynağı bulduğunu ancak kovana işlenebileceğinden fazla nektar geldiğini ve bundan dolayı nektar işleme görevine geçmek istediğini belirtmektedir. Bu dansın amacı kovan kapasitesi ve yiyecek getirme aktivitesi arasındaki dengeyi sağlamaktır.

Kuyruk Dansı 100 metreden 10 kilometreye kadar olan geniş bir alan içerisinde bulunan kaynaklarla ilgili bilgi aktarımında kullanılır. Bu dans 8 rakamına benzeyen figürlerin yapıldığı dans çeşididir. Dansı izleyen arıların bir titreşim oluşturması ile dansa son verilir. Dansın her 15 saniyede tekrarlanma sayısı, nektar kaynağının uzaklığı hakkında bilgi vermektedir. Daha az tekrarlanma sayısı daha uzak bölgeleri ifade etmektedir.

Yön bilgisi Şekil-1’deki gibi 8 rakamı şeklindeki dansın açı bilgisinden elde edilir. Şekilde verilen örnekte dansı izleyen arılar, danstan güneşle yiyecek arasındaki açının 45o olduğunu anlamaktadırlar.

Şekil-1 Arılarda Dans

Tüm zengin kaynaklarla ilgili bilgiler dans alanında gözcü arılara iletildiğinden, gözcü arılar birkaç dansı izledikten sonra hangisini tercih edeceğine karar verir. Yiyecek arayıcı arıların daha iyi anlaşılabilmesi için Şekil-2’deki verilen modelin incelenmesi faydalı olacaktır.

A ve B ile gösterilen iki keşfedilmiş kayna bölgesi olduğunu varsayılım. Araştırma başlangıcında potansiyel yiyecek arayıcı, görevi belirsiz bir işçi arı olarak araştırmaya başlayacak ve bu arı kovan etrafındaki kaynakların yerinden haberdar degildir. Bu durumdaki arı için iki olası durum söz konusudur.

  1. Bu arı kaşif arı olabilir ve içsel ve dışsal etkilere bağlı olarak yiyecek aramaya başlayabilir (Şekil-2’de S ile gösterilmiştir).
  2. Bu arı kuyruk dansını izleyen gözcü arı olabilir ve izlediği dansla anlatılan kaynağa gidebilir (Şekil-2’de R ile gösterilmektedir). Bir kaynak keşfedildikten sonra arı imkanları dahilinde bu kaynağın yerini hafızaya alır ve hemen nektar toplamaya başlar. Bu arı artık nektarın zenginliğine göre görevli arı haline gelmiş olur. İşçi arı nektarı aldıktan sonra kovana döner ve bunu yiyecek depolayıcılara aktarır. Nektar aktarıldıktan sonra arı için üç seçenek ortaya çıkmaktadır:
  • Gittiği kaynağı bırakarak bağımsız işçi olabilir (Şekil-2’de UF ile gösterilmiştir).
  • Gittiği kaynağa dönmeden önce dans eder ve kovandaki arkadaşlarını da aynı kaynağa yönlendirebilir ( Şekil-2’de EF1 ile gösterilmiştir).
  • Diger arıları yönlendirmeden direkt kaynağa gidebilir (Şekil-2’de EF2 ile gösterilmiştir).

Şekil-2 Yiyecek Arama Çevrimi

Yapay Arı Kolonisi Algoritması

Doğada var olan zeki davranışlar içeren süreçlerin incelenmesi araştırmacıları yeni optimizasyon metotları geliştirmeye sevk etmiştir. Derviş Karaboğa, arıların yiyecek arama davranışını modelleyerek Yapay Arı Kolonisi(ABC) algoritması geliştirilmiştir.

Derviş Karaboğa’nın ABC algoritmasının temel aldığı modelde bazı kabuller yapılmaktadır. Bunlardan birincisi her bir kaynağın nektarının sadece bir görevli arı tarafından alınıyor olmasıdır. Yani görevli arıların sayısı toplam yiyecek kaynağı sayısına eşittir. İşçi arıların sayısı aynı zamanda gözcü arıların sayısına eşittir. Nektarı tükenmiş kaynağın görevli arısı artık kâşif arı haline dönüşmektedir. Yiyecek kaynaklarının yerleri optimizasyon problemine ait olası çözümlere ve kaynakların nektar miktarları ise o kaynaklarla ilgili çözümlerin kalitesine (uygunluk) karşılık gelmektedir. Dolayısıyla ABC optimizasyon algoritması en fazla nektara sahip kaynağın yerini bulmaya çalışarak uzaydaki çözümlerden problemin minimumu yada maksimumunu veren noktayı bulmaya çalışmaktadır.

Bu Modele ait süreç adımları aşağıdaki gibi verilebilir.

  1. Yiyecek Arama surecinin başlangıcında, kaşif arılar çevrede rastgele arama yaparak yiyecek aramaya başlarlar.
  2. Yiyecek kaynakları bulunduktan sonra, kaşif arılar artık görevli arı olurlar ve buldukları kaynaklardan kovana nektar taşımaya başlarlar. Her bir görevli arı kovana donup getirdiği nektarı boşaltır ve bu noktadan sonra ya bulduğu kaynağa geri döner ya da kaynakla ilgili bilgiyi dans alanında sergilediği dans aracılığıyla kovanda bekleyen gözcü arılara iletir. Eğer faydalandığı kaynak tükenmiş ise görevli kaşif arı haline gelir ve yeni kaynak arayışına yönelir.
  3. Kovanda Bekleyen gözcü arılar zengin kaynakları işaret eden dansları izlerler ve yiyeceğin kalitesi ile orantılı olan dans frekansına bağlı olarak bir kaynağı tercih ederler.

ABC algoritmasının bu süreçleri ve temel adımları ise şu şekilde sıralanabilir;

  1. Başlangıç yiyecek kaynağı bölgelerinin üretilmesi
  2. Repeat
  3. İçi arıların yiyecek kaynağı bölgelerine gönderilmesi
  4. Olasılıksal seleksiyonda kullanılacak olasılık değerlerinin görevli arılardan gelen bilgiye göre hesaplanması
  5. Gözcü arıların olasılık değerlerine göre yiyecek kaynağı bölgesi seçmeleri
  6. Kaynağı bırakma kriteri:limit ve kaşif arı üretimi
  7. Until çevrim sayısı=Maksimum çevrim sayısı

Yiyecek arayan arılarda görülen zeki davranış ile bu davranışı simule eden ABC algoritmasının temel birimleri aşağıda açıklanmaktadır.

1.Başlangıç Yiyecek Kaynağı Bölgelerinin Üretilmesi

Arama uzayını yiyecek kaynaklarını içeren kovan çevresi olarak düşünürsek algoritma arama uzayındaki çözümlere karşılık gelen rastgele yiyecek kaynağı yerleri üreterek çalışmaya başlamaktadır. Rastgele yer üretme sureci her bir parametrelerinin alt ve üst sınırları arasında rastgele değer üreterek gerçeklenir (Eşitlik-1).

Burada i=1… SN, J=1…D ve SN yiyecek kaynağı sayısı ve D is optimize edilecek parametre sayısıdır. Xmin j parametrelerin alt sınırıdır.

2. İsçi Arıların Yiyecek Kaynağı Bölgelerine Gönderilmesi

Daha öncede belirtildiği gibi her bir kaynağın bir görevli arısı vardır. Dolayısıyla yiyecek kaynakların sayısı görevli arıların sayısına eşittir. İşçi arı çalıştığı yiyecek kaynağı komşuluğunda yeni bir yiyecek kaynağı belirler ve bunun kalitesini değerlendirir. Yeni kaynak daha iyi ise bu yeni kaynağı hafızasına alır. Yeni kaynağın mevcut kaynak komşuluğunda belirlenmesinin benzetimi Eşitlilik-2 tanımlanmaktadır.

xi ile gösterilen her bir kaynak için bu kaynağın yani çözümünün tek bir parametresi (rastgele seçilen parametresi, j) değiştirilerek xi komşuluğunda vi kaynağı bulunur. Eşitlik 2 de j,[1,D] aralığında rastgele üretilen bir tamsayıdır. Rastgele seçilen j parametresi değiştirilirken, yine rastgele seçilen xk komsu çözümünün ( k E {1,2,SN} ) j. parametresi ile mevcut kaynağın j parametresinin farkları alınıp [-1 1 ] arasında rastgele değer alan  sayısı ile ağırlandırıldıktan sonra mevcut kaynağın j parametresine eklenmektedir.

Eşitlik-2’den de görüldüğü gibi  xi,j ve xk,j arasındaki fark azaldıkça yani çözümler birbirine benzedikçe xi,j parametresindeki değişim miktarı da azalacaktır. Böylece bölgesel optimal çözüme yaklaştıkça değişim miktarı da adaptif olarak azalacaktır.

Bu işlem sonucunda üretilen vi,j‘nin daha önceden belli olan parametre sınırları asması durumunda j. parametreye ait olan alt veya üst sınır değerlerine ötelenmektedir (Eşitlik-3).

Sınırlar dâhilinde üretilen vi parametre vektörü yeni bir kaynağa temsil etmekte ve bunun kalitesi hesaplanarak bir uygunluk değeri atanmaktadır (Eşitlik-4).

Burada fi ve vi kaynağının yani çözümünün maliyet değeridir. xi ve vi arasında nektar miktarlarına yani uygunluk değerlerine göre bir açgözlü (greddy) semce işlemi uygulanır. Yeni Bulunan vi çözümü daha iyi ise görevli arı hafızasından eski kaynağın yerini silerek vi kaynağının yerini hafızaya alır. Aksi takdirde görevli arı xi kaynağına gitmeye devam eder ve xi çözümü geliştirilemediği için xi kaynağı ile ilgili geliştirememe sayacı (failure) bir artar, geliştirdiği durumda ise sayaç sıfırlanır.

3. Gözcü Arıların Seleksiyonda Kullanacakları Olasılık Değerlerinin Hesaplanması (Dans Benzetimi)

Tüm görevli arılar bir çevrimde araştırmalarını tamamladıktan sonra kovana donup buldukları kaynakların nektar miktarları ile ilgili gözcü arılara bilgi aktarırlar. Bir gözcü arı dans aracılıyla paylaşılan bilgiden faydalanılarak yiyecek kaynaklarının nektar miktarları ile orantılı bir olasılıkla bir bölge(kaynak) seçer. Bu ABC‘nin altında çoklu etkileşim sergilendiğinin bir örneğidir. Olasılıksal seçme işlemi, algoritmada nektar miktarlarına karşılık gelen uygunluk değerleri uygulanarak yapılmaktadır. Uygunluk değerine bağlı seçme işlemi rulet tekerliği,sıralamaya dayalı, stokastik ,örnekleme, turnuva yöntemi yada diğer seleksiyon şemalarından herhangi biri ile gerçeklenir.Temel ABC algoritmasında bu seleksiyon işlemi rulet tekerliği kullanılarak yapılmıştır. Tekerlekteki her bir dilimin açısı uygunluk değeri toplamına oranı o kaynağın diğer kaynaklara göre nispi seçilme olasılığı olduğunu vermektedir (Eşitlik-5).

Burada  kaynağın kalitesini SN görevli arı sayısını göstermektedir. Bu olasılık hesaplama işlemine göre bir kaynağın nektar miktarı arttıkça (uygunluk değeri arttıkça) bu kaynak bölgesini seçecek gözcü arı sayısı da artacaktır. Bu özellik ABC’ nin pozitif geri besleme özelliğine karşılık gelmektedir.

4. Gözcü Arıların Yiyecek Kaynağı Bölgesi Seçmeleri

Algoritma da olasılık değerleri hesaplandıktan sonra be değerler kullanılarak rulet tekerleğine göre secim işleminde her bir kaynak için [0.1] aralığında rastgele sayı üretilen ve pi değeri bu üretilen sayıdan büyükse görevli arılar gibi gözcü arı da Eşitlik-2’yi kullanarak bu kaynak bölgesinde yeni bir çözüm üretir. Yeni çözüm değerlendirilir ve kalitesi hesaplanır. Sonra yeni çözümle eski çözümün uygunluklarının karşılaştırıldığı en iyi olanın seçildiği açgözlü seleksiyon işlemine tabi tutulur. Yeni çözüm daha iyi ise eski çözüm yerine bu çözüm alınır ve çözüm geliştirememe sayacı (failure) sıfırlanır. Eski çözümün uygunluğu daha iyi ise bu çözüm muhafaza edilir ve geliştirememe sayacı (failure) bir artırılır. Bu süreç,tüm gözcü arılar yiyecek kaynağı bölgelerine dağılana kadar devam eder.

5. Kaynağı Bırakma Kriteri: Limit ve Kaşif Arı Üretimi

Bir çevrim sonunda tüm görevli ve gözcü arılar arama süreçlerini tamamladıktan sonra çözüm geliştirememe sayaçları (failure) kontrol edilir. Bir arının bir kayaktan faydalanıp faydalanmadığı, yani gidip geldiği kaynağın nektarının tükenip tükenmediği çözüm geliştirememe sayaçları aracılığıyla bilinir. Bir kaynak için çözüm geliştirememe sayacı belli bir eşik değerinin üzerindeyse, artık bu kaynağın görevli arısının tükenmiş olan o çözümü bırakıp kendisi için başka bir çözüm araması gerekir. Bu da biten kaynakla ilişkili olan görevli arının kâşif arı olması anlamına gelmektedir. Kâşif arı haline geldikten sonra, bu arı için rastgele çözüm arama sureci başlar (Eşitlik-1). Kaynağın terk ettiğinin belirlenmesi için kullanılan eşik değeri ABC algoritmasının önemli bir kontrol parametresidir ve “limit” olarak adlandırılmaktadır. Temel ABC algoritmasında her çevrimde sadece kâşif arının çıkmasına izin verilir.

Tüm bu birimler arasındaki ilişki ve döngü Şekil-3’deki gibi bir akış diyagramı ile şematize edilebilir.

6. Seleksiyon Mekanizmaları

ABC algoritması 4 farklı seleksiyon işlemi kullanmaktadır.Bunlar ;

  1. Potansiyel iyi kaynaklarının belirlenmesine yönelik eşitlik 5 olasılık değerlerinin hesaplandığı global olasılık temelli seleksiyon sureci.
  2. Görevli ve gözcü arıların renk,şekil,koku gibi nektar kaynağının turunu belirlenmesi sağlayan görsel bilgiyi kullanarak bir bölgede kaynağın bulunmasına vesile olan bölgesel olasılık tabanlı seleksiyon işlemi (Eşitlik-2).
  3. İşçi ve gözcü arıların daha iyi olan kaynağı belirlemek amacıyla kullandıkları açgözlü seleksiyon.
  4. Kâşif Arılar tarafından eşitlik 1 aracılıyla gerçekleştirilen rastgele seleksiyon.

Bütün bu seleksiyon metotların bir arada kullanılmasıyla ABC algoritması hem iyi bir global araştırma hem de bölgesel araştırma yapabilmektedir.

ABC Algoritması Akış Şeması

7. ABC Algoritmasının Adımları

Önceki bölümlerde genel hatları ile ABC algoritmasının adımları ve her bir adımda yapılan işlemler tarif edilmişti ancak bu adımları sözde kod seklinde baştan aşağı yazmak faydalı olacaktır.

  1. Eşitlik 1 aracılıyla tüm xi,j i=1…SN,j =1…D, çözümlerine başlangıç değerlerinin atanması ve çözüm geliştirememe sayaçlarının  sıfırlanması failurei=0
  2. fi=f(xi) fonksiyon değerlerinin ve bu değerlere karşılık gelen uygunluk değerlerin  hesaplaması
  3. Repeat
  4. for i=1 to Sn do
  5. Eşitlik 2 kullanarak xi çözümünün görevli arısı için yeni bir kaynak üret vi ve f(vi)’yi (4) eşitliğinde yerine koyarak bu çözümün uygunluk değerini hesapla
  6. xi ve vi arasında açgözlü seleksiyon işlemi uygula ve daha iyi olanı seç
  7. xi çözümü gelişememişse çözüm geliştireme sayacını bir artır failurei= failurei+1, gelişmemişse sıfırla, failurei=0
  8. End For
  9. Eşitlik 5 ile gözcü arıların seçim yaparken kullanacakları uygunluk değerine dayalı olasılık değerlerini pi hesapla
  10. t=0 i=1
  11. Repeat
  12. if random<pi then
  13. Eşitlik 2 ‘i kullanarak gözcü arı için yeni bir kaynak, vi üret
  14. xi ve vi arasında açgözlü seleksiyon işlemi uygula ve daha iyi olanı seç.
  15. xi çözümü gelişememişse çözüm geliştirememe sayacını bir artır failurei= failurei+1, gelişmemişse sıfırla, failurei=0
  16. t=t1
  17. End İf
  18. Until t=SN
  19. if max (failurei) > limit then
  20. xi eşitlik 1 ile üretilen rastgele bir çözümle değiştir.
  21. End İf
  22. En İyi Çözümü hafıza da tut
  23. Until Durma kriteri

ABC’nin Temel Özellikleri

ABC algoritmasının temel özellikleri şu şekilde sıralanabilir;

  1. Oldukça esnek ve basittir.
  2. Gerçek yiyecek arayıcı arıların davranışlarına oldukça yakın şekilde simule eder.
  3. Sürü zekâsına dayalı bir algoritmadır.
  4. Nümerik problemler için geliştirilmiştir ama ayrık problemler içinde kullanılabilir.
  5. Oldukça az kontrol parametresine sahiptir
  6. Kâşif Arılar tarafından gerçekleştirmen küresel ve görevli ve gözcü arılar tarafından gerçekleştirilen bölgesel araştırma kabiliyetine sahiptir ve ikisi paralel yürütülmektedir.

UYGULAMA VE DENEY SONUÇLARI

Algoritmanın performansını Rastrigin Problemi üzerinde görmeye çalıştık. Bu anlamda bu fonksiyonu çözmeye çalıştık. Deney sonuç ve performanslarına geçmeden önce Rastrigin Problemi ve Fonksiyonu nedir ve ne işe yarar bundan bahsetmek istiyorum. Rastrigin fonksiyonu içerisinde birçok lokal minimumu içeren ve bu yüzden de optimizasyon tekniklerinin performansını ölçmek için ideal olan bir test fonksiyonudur. Fonksiyonun global minimumu iki boyutlu uzay için [0,0] noktası, üç boyutlu bir uzay için ise [0,0,0] noktasıdır. Fonksiyonun grafik üzerindeki görünümü aşağıdaki şekildeki gibidir.

Kullandığım demo uygulama http://mf.erciyes.edu.tr/abc/ web sitesinden alınmıştır. Çeşitli optimizasyon problemleri üzerinde ABC Algoritması’ nın performansını gözlemektedir. Biz yukarıda da bahsettiğimiz üzere bu fonksiyonlardan Rastrigin Fonksiyonunu kullandık. Demo uygulamanın genel görünümü aşağıdaki gibidir.

Öncelikle uygulamanın parametrelerine bakalım. Demo üzerinde parametreler ve açıklamaları aşağıda sırasıyla verilmiştir.

  • # of parameter: Üzerinde çalışılan uzayın boyutu. Biz uygulamamızda anlaşılması ve gözlemi kolay olması maksadıyla 2 boyutlu uzayda çalışmayı tercih ettik.
  • Colony Size: Kolonide bulunan arı miktarı.
  • Parameter Range: Algoritmanın çalışmasını istediğimiz aralık. Yukarıdaki görülen şekilde aralık [-5,5] olarak seçilmiştir. Böylelikle alan daraltılarak arıların hareketi daha rahat görülmektedir.
  • # of Cycle: Algoritmanın durdurma kriteri olarak çalışma sayısı belirtilmiştir.
  • Limit: Her döngüde görevli ve gözcü arılar arama süreçlerini tamamladıktan sonra çözüm geliştirememe sayaçlarına bakarlar eğer ki limit değeri aşılmışsa yani algoritma belli bir süre boyunca artık iyi değer vermemeye başlamışsa bu bölgeden vazgeçilir. Limit değeri bu sayacı belirtmektedir.
  • # of Runs: Algoritmanın baştan itibaren kaç defa çalışacağı. Biz her defasında varsayılan değer kabul edilen bir kez çalıştırdık.

Ayrıca demo şekil üzerinde görülen Obtained kısmı algoritmanın bulduğu en iyi değerleri, Desired kısmı fonksiyonun beklenilen değerlerini, üst soldaki grafik Rastrigin Fonksiyonu’nun grafiksel olarak üç boyutlu görünümünü, üst sağdaki grafik fonksiyon grafiğinin üstten görünümünü, sol alttaki grafik en iyi değerin kaçıncı döngüde bulunduğunu ve bulunan değerlerin ortalama iyiliğini göstermektedir. Sağ alttaki grafik ise arıların hareketini her döngüde izleme imkânı sunmaktadır. Buradaki mavi noktalar, görevli işçi arılar;  yeşil noktalar, kaşif; kırmızı noktalar, beklenen değer; ve son olarak da mor noktalar, o ana kadar ki bulunan en iyi çözüm noktasını göstermektedir.

Deney Sonuçları: Yaptığımız deneylerde Colony Size, Cycle Sayısı ve Limit Sayısı parametrelerinin algoritmanın performansı üzerindeki etkilerine baktık. Her deney çeşidi için en az 5’er adet deney yapılmıştır.

Colony Size Deneyi

            Sabit Değerler: Parameter Range (-5,5), Cycle (100), Limit (20)

  1. Deney Colony Size Değeri: 30
  2. Deney Colony Size Değeri: 50
  3. Deney Colony Size Değeri: 60
  4. Deney Colony Size Değeri: 75
  5. Deney Colony Size Değeri: 100

Deney Değerlendirmesi: Bulunan en iyi değerlere bakıldığında yaptığımız deney için Colony Size değişimi çok etki etmemiştir fakat Colony Size’ın artışı algoritmanın daha az döngüde en iyi değerlere ulaşmasını sağlamıştır. Yani koloni büyüklüğü problemin daha kısa sürede çözülmesini sağlamaktadır. Bu durumda eğer ki Colony Size’ı artırma imkânımız yoksa döngü (cycle) sayısının yüksek tutulması gerekir. Aksi takdirde en iyi çözüme çok yakın olan çözümlere ulaşamayabiliriz.

# of Cycle Deneyi (Döngü Sayısı)

            Sabit Değerler: Colony Size(50), Parameter Range (-5,5), Limit (20)

  1. Deney Cycle Değeri: 10
  2. Deney Cycle Değeri: 20
  3. Deney Cycle Değeri: 50
  4. Deney Cycle Değeri: 70
  5. Deney Cycle Değeri: 100

Deney Değerlendirmesi: Colony Size deneyinde 10 ile 100 döngü arasında deneyler yaptık. 10 beklenen değerler için çok bir sayı oldu ve hata oranı çok fazla çıktı. Belirlenen parametrelerde için bu deneyde cycle değerini artırmaya başladık ilk anlamlı sonuç 20’de çıkmıştır ve beklenen değere yüzde bir oranında hataya sahip değerler bulunmuştur. Bundan sonraki artışlar hata oranını giderek düşürmeye başlamış fakat yaklaşık 70 cycle’dan sonra hata oranında çok fazla bir değişim olmamaya başlamıştır. Belirlenen sabit parametrelere göre bu deney için yaklaşık 70 cycle değeri uygun bir değer olarak belirlenmiştir. Cycle değeri belli bir yere kadar olumlu etki etmekte, belli bir yerden sonra ise etmemektedir.

# Limit Deneyi

            Sabit Değerler: Colony Size(50), Parameter Range (-5,5), Cycle(80)

  1. Deney Limit Değeri: 5
  2. Deney Limit Değeri: 10
  3. Deney Limit Değeri: 20
  4. Deney Limit Değeri: 40
  5. Deney Limit Değeri: 50
  6. Deney Limit Değeri: 60
  7. Deney Limit Değeri: 70

Deney Değerlendirmesi: Limit deneyinde diğer parametreler sabit kalmak koşuluyla limit değeri olarak 5’ten 70’e kadar deneyler yaptık. 5 değerinde yüksek cycle değerlerinde beklenen değere yakın değerler elde ettik. Limit değerini artırmaya başladık ve yavaş yavaş daha az cycle’da beklenen değerlere çok yakın değerler elde etmeye başladık. Fakat sabit değerlerle birlikte yaklaşık 20 limit değerinden sonraki değerlerde çok tutarlı sonuçlar elde edemedir. Yani 20 için daha az iken, 40 ta cycle değeri arttı, ama 50’de yine azaldı. Bu deneyler sonucunda limit değerinin cycle sayısına göre ayarlanması gerektiğiniz düşünüyoruz. Çünkü bu deneyde cycle 80 iken limit değerini 70’e kadar artırdık. Belli bir noktadan sonra anlamsız sonuçlar elde ettik. Bu sebeple limit için bizim düşüncemiz cycle sayısının yaklaşık yüzde 10’u ile %25’i arasında bir değer alması ideal olacaktır.

KAYNAKLAR

eskisehir escort eskisehir escort porno porno izle
porno izle