halı saha yapan firmalar halı saha yapan firmalar

Ç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

Fifa 97 International Soccer (Captain Majeed – Captain Majid) Atari Oyunu

Ataride oynadığım ve en çok sevdiğim oyunlardan biriydi Fifa 97 International Soccer yada benim oynadığım adıyla Captain Majeed. Sene 1998 filan olması lazım henüz bilgisayarım yok hatta bilgisayar başına oturmuşluğum bile olmayabilir. Bilgisayar oyunlarından önceki en büyük eğlence ise atari.

Oyun Tecmo firması üretimidir. Açılış ekranı aşağıdaki gibidir. İsmi International Fifa 97 olarak da geçiyor görselde görüldüğü üzere.

Oyunda 16 ülke bulunmaktadır. Takımınızı seçtikten sonra size geri kalan takımlar arasından rasgele bir rakip seçer (Oyunun isminde 1997 olmasına rağmen Sovyetler ve Berlin Duvarı henüz yıkılmamış 🙂 ).

Oyun kuş bakışı oynanıyor ve kısa vuruş ve uzun vuruştan başka alternatiniz yok. 2 oyuncu seçeneğiyle kardeşimle baya oynamıştık bu oyunu.

Oyunu bir süre oynadıktan sonra ilk galibiyetimi aldım ve ikinci maça geçtim. İkinci maç çok zor gelmişti o zaman için ve yenilmiştim. Tekrar yenildiğiniz turdan devam edebiliyorsunuz tabi atariye kapatmazsanız yada atari donmazsa. 🙂 Bir süre sonra oyunu bu şekilde tamamlayamayacağımı anlamıştım. Çünkü aralıksız galibiyet dahi alınca 15 maç baya uzun bir süre tutuyordu. O zaman bu kadar süre iznimiz yoktu oynamak için hem de televizyona bağlı olduğundan dolayı da TV izleneceği zaman mecburen atari kapatılıyordu. Ki aralıksız galibiyet bu oyunda imkansız gibi birşey. Neyse bir süre sonra açılış ekranında çıkan continue seçeneği dikkatimi çekti. Orada bir kod girilecek bir ekran geliyordu. Maçlardan sonra da bir kodun ekranın altında belirdiğini farkettim. Artık her tur geçişimde ekrana çıkan kodu not ediyor. Böylelikle kaldığım turdan devam edebiliyordum. Baya bir uzun süre sonra oyunu bitirebilme şerefine ulaştım 😀 .

Kupa kazanıldığında nasıl birşeyle karşılaşacağımı çok merak ediyordum aşağıda Brezilya ile kazandığım turnuvanın görüntüsü var.

Oyun yıllar sonra aklıma geldi ve internette aramalarım sonucunda şu linkte oyunu buldum. Başka sitelerden de oyunu bulabilirsiniz. Güzel bir nostalji oldu benim için. Resmen çocukluğuma gittim.


Ayrıca o zaman dikkatimi çekmeyen ama şimdi dikkatimi cezbeden bir durumdan daha bahsedeceğim. Yukarıda bahsetmiştim. Ataride kaydetme seçeneği olmadığından dolayı (sonuçta kaydedebileceğiniz bir disk yok) size her maçtan sonra bir kod veriyor. Bu kodu atariye ne zaman girerseniz o zamanki pozisyona geri dönüyorsunuz. Adamlar başka bir deyişle tüm kazanma ve kaybetme durumlarını kodlamışlar. Atıyorum Brezilya’yı seçtiniz, rasgele rakibiniz Arjantin geldi ve bu maçı geçtiniz. İkinci maçta İngiltere rakibiniz oldu ve yenildiniz. Size verilen kodu aldınız ve başka bir gün o kodu atariye girdiniz. Bu durumda Brezilya’yı seçmiş, Arjantin’i elemiş oluyor ve İngiltere ile tekrar maça başlıyorsunuz. O zaman için harika bir kaydetme çözümü olmuş bir nevi. Size verilen kodlar 9 haneli ve 16 harf kombinasyonundan oluşuyor. 16 üzeri 9 adet kombinasyon ayarlanabilir bu kadar harf ve haneyle. Bir ara kafa yorup 9 hane ve 16 kombinasyonun seçilme nedenini anlamaya çalışacağım. Ama hayranlık duydum ne diyim.


Son olarak Brezilya’yı seçtiğinizde final yolu şu şekilde olabilir (tabi gelen rasgele ekiplere göre farklı bir sürü kombinasyon da olabilir). Bu şekilde kupayı kazanmıştım. Aşağıdaki final kodunu girerseniz. Finalde Brezilya ile İngiltere’ye karşı oynuyorsunuz. 🙂

brezilya ile 2. tur kodu : llmımbopı
3. tur kodu: llkimbdae
4. tur kodu: nljimbdio
5. tur kodu: edmgmfopg
6. tur kodu: gdmgafpig
7. tur kodu: odkibfddo
8. tur kodu: ohkiafpeo
9. tur kodu: ohjkafdeg
10. tur kodu: npbmbfaeg
11. tur kodu: mpdmbfemo
12. tur kodu: phbkbhaeg
13. tur kodu: dhekahemo
yarı final kodu: bjekbheeg
final kodu: jbjdihedo

Brother HL-1211W Wifi Printer Driver Kurulumu (Windows 10)

Brother HL-1211W yazıcıyı bilgisayarım otomatik olarak gördü ve ekstra bir kurulum yapmama gerek kalmadı. Fakat Wifi özelliğini kullanmak için biraz zahmet çektim. Kurulum CD’sinin adımlarını tam olarak izlediğimde problem çıktı. Ben de aşağıdaki adımları izleyerek bu problemi çözdüm.

1 – Öncelikle kurulum CD’sini takıyorum ve çift tıklayarak kurulum programını başlatıyorum (sürücüyü ve kurulum programını internetten de indirebilirsiniz).

2 – Yazıcımı seçip devam ediyorum.

3 – Dili olarak Türkçe’yi seçip devam ediyorum. Açılan pencerede Yazıcı sürücüsünü kur diyorum.

4 – Güncelleme için soruyor. Hızlı bir şekilde yüklemek için Hayır’ı seçip devam edelim. Güncellemeler daha sonra da yapılabilir.

5 – Kablosuz Ağ Bağlantısı’nı seçip devam ediyoruz.

6 – Brother Eşler Arası Ağ Yazıcı’nı seçip devam ediyoruz.

7 – Aşağıdaki şekilde devam ediyoruz.

8 – Aşağıdaki şekilde devam ediyoruz (seçilmiş başka seçenekler de olabilir sıkıntı yok).

9 – Hayır diyerek devam edin.

10 – Burada bir pencere açılacak ve sizden yazıcının Wifi tuşuna basılı tutmanızı isteyecek ışık yanıp sönene kadar bu tuşa basılı tutun sonrasında aşağıdaki şekilde devam edin. 

11- Bağlanmak istediğiniz kablosuz ağı seçin ve ilerle diyin.

12 – Benim kablosuz ağım şifresiz olduğundan dolayı aşağıdaki uyarıyı verdi. Sizinki şifreli bir ağ ise şifreyi girmenizi isteyecek şifreyi girin ve devam edin.

13 – Bir değişiklik yapmanıza gerek yok. İlerle diyin.

14 – Geldik önemli noktaya. Aşağıdaki pencereye geldiğinizde Kurmak istediğiniz Brother makinesini seçin diyor. Ama ben de bir müddet aradıktan sonra hiçbir makine bulamadı. Ben de OK’e basıp iptal ettim. Burada yazıcının power tuşuna üç kere kısa aralıklarla basıp yazıcı bilgilerinin yazdırılmasını sağladım ve IP Address satırından yazıcının IP adresini öğrendim.

15 – Şimdi kuruluma tekrar başlıyoruz.  Ama bu kez Özel kurulum seçeneğini seçerek.

16 – İkinci seçeneği seçip öğrendiğimiz IP numarasını buraya yazıyoruz.

17 – Ve kurulum tamamlanıyor.

 

TRUBA yenilenen OpenVPN Bağlantısı

Bilindiği üzere Truba 2018 itibariyle OpenVpn bağlantı şeklini değiştirdi. Bu değişimle birlikte kullanıcıya özel sertifikaya gerek kalmadı. Böylelikle sertifika süresinin dolması ve sertifika yenilenmesine de gerek kalmamış oldu. Yeni bağlantı şekli ile yapmamız gereken öncelikle OpenVPN programını güncellemek ki, Linux kullanıyorsanız ve işletim sisteminiz güncelse bu işleme gerek yok. Sonrasında ise aşağıdaki komut ile OpenVPN genel yapılandırma dosyasını indiriyoruz (Bilgisayarınızda wget yoksa apt-get install wget ile edinebilirsiniz).

NOT: Windows 10 kullananlar TRUBA’nın wiki sayfasından yararlanabilirler (Diğer işletim sistemleri için de bilgiler mevcut).

wget http://wiki.truba.gov.tr/TRUBA-VPN/TRUBA-genel.ovpn

Daha sonra Truba’ya bağlanmak için aşağıdaki komutu kullanıyoruz (Dizini kendi dizininize göre ayarlamalısınız).

sudo openvpn /home/nuh/vpn/TRUBA-genel.ovpn

Sırasıyla kullanıcı adı ve şifre soracak. Buralara Truba için daha önce aldığınız ssh kullanıcı adı ve şifrenizi giriyorsunuz ve işlem tamam. Aşağıdaki gibi bir ekranla karşılaşacaksınız ve bağlantınız gerçekleşecektir.

Thu Apr 19 22:44:00 2018 OpenVPN 2.4.3 x86_64-pc-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Jul 3 2017
Thu Apr 19 22:44:00 2018 library versions: OpenSSL 1.0.2g 1 Mar 2016, LZO 2.08
Enter Auth Username: sizin_kullanici_adiniz
Enter Auth Password: ********
Thu Apr 19 22:44:06 2018 TCP/UDP: Preserving recently used remote address: [AF_INET]193.140.99.241:1195
Thu Apr 19 22:44:06 2018 UDP link local (bound): [AF_INET][undef]:1194
Thu Apr 19 22:44:06 2018 UDP link remote: [AF_INET]193.140.99.241:1195
Thu Apr 19 22:44:06 2018 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Thu Apr 19 22:44:06 2018 [midye.truba.gov.tr] Peer Connection Initiated with [AF_INET]193.140.99.241:1195
Thu Apr 19 22:44:08 2018 Options error: Unrecognized option or missing or extra parameter(s) in [PUSH-OPTIONS]:5: register-dns (2.4.3)
Thu Apr 19 22:44:08 2018 TUN/TAP device tun0 opened
Thu Apr 19 22:44:08 2018 do_ifconfig, tt->did_ifconfig_ipv6_setup=0
Thu Apr 19 22:44:08 2018 /sbin/ip link set dev tun0 up mtu 1500
Thu Apr 19 22:44:08 2018 /sbin/ip addr add dev tun0 10.3.8.111/22 broadcast 10.3.11.255
Thu Apr 19 22:44:08 2018 Initialization Sequence Completed

Ssh ile Truba’ya bağlanabilirsiniz (bunun için başka bir terminal kullanabilirsiniz). Aşağıda levrek1 sunucusuna nasıl bağlanacağınıza dair bir komut bulunmaktadır. Diğer sunucular için yukarıda daha önce verdiğim linkten bilgi alabilirsiniz.

ssh username@172.16.7.1

Not: İşiniz bitip OpenVPN bağlantısının açtığımız terminali kapatırsanız tekrar bağlanmaya çalıştığınızda hata veriyor. Bunun önüne geçmek için ben VPN bağlantısını screen ile açıyorum arka planda açık kalıyor. Aksi durumda terminal kapandığında tekrar VPN bağlantısı yapabilmek için bilgisayarı restart etmek gerekiyor.

Linux Screen Programı ve Kullanımı

Daha önce Tmux ve Terminatör programlarından bahsetmiş, Tmux kullanımı ve komutları konusunda bilgiler vermiştim. Bu yazıda ise Screen programında bahsedeceğim. Screen bir terminal ekranından birden çok terminal ekranı kullanmaya yarar. Tmux ve Terminatör’den farkı ise ekranda sadece bir tane terminal ekranı görürsünüz. Diğer açtığınız terminaller ise arka planda çalışmaya devam eder. Biraz karmaşık gelmiş olabilir ama aslında anlaşılması ve kullanımı çok kolay bir programdır.

Screen’e ihtiyaç duyacağınız en önemli senaryo şu olabilir; ssh bağlantısı ile uzak bir bilgisayar veya sunucuya bağlandınız diyelim. Bir iş başlatacaksınız ama işlem uzun sürecek ve siz işi başlatıp uzak bilgisayarda çalışmaya devam etsin, ben de bilgisayarımı kapatıyım istiyorsunuz. Bu çok normal çünkü bazen şarjınız yetmeyebiliyor, internet paketinden çok yemek istemiyorsunuz yada bulunduğunuz yer dizüstü bilgisayarınızı kullanmaya devam etmek için uygun değil vs. vs. Screen sayesinde işi başlatıyorsunuz. İş çalışmaya devam ederken bilgisayarınızı kapatıyorsunuz. İsterseniz arada bağlanıp kontrol ediyorsunuz. Hatta iş bitince bana mail atsın bile diyebilirsiniz. Bu konu hakkında da bu yazıdan bilgi edinebilirsiniz.

Aşağıdaki komut ile programı kuruyoruz.

sudo apt-get install screen

Kurulum bu kadar. Şimdi ise kullanılmasından bahsedeyim. Diyelim ki screen’de bir python dosyası çalıştıracaksınız. Yapmanız gerek komutun önüne screen eklemek.

screen python dosya.py

Komutu çalıştırdığınızda terminal içerisinde yeni bir terminal açılacak ve dosya çalışmaya başlayacak. Diyelim bu program saatlerce süren bir program bu durumda Ctrl + a + d komutu ile bir önceki ekrana geri dönebilirsiniz. Arka planda program çalışmaya devam edecek.

Çalışan işleri ise screen -ls komutu ile görebilirsiniz. Aşağıdaki gibi bir görüntüyle karşılaşırsınız.

Bu işe geri dönmek için işin ID numarasını kullanacağız.

screen -r 31935

Bu komutla işin çalıştığı terminale geçmiş olduk. Screen -ls ile çalışan işlere baktığımızda şu an için bir iş görmekteyiz. Bu sebepten dolayı ID numarasını kullanmadan direkt olarak screen -r komutunu da kullanabilirdik.

Screen’i aynı andan birden fazla iş için kullanabiliriz.

Peki Screen’de çalışan bir işi öldürmek istiyorsak ne yapacağız. Bu durumda aşağıdaki komut satırını kullanacağız.

screen -X -S 31935 kill

Normalde Screen’de bir iş çalıştırıldığında yeni Screen terminali attach edilmiş olarak açılır ve siz Ctrl + a + d ile bu işi detach edersiniz. Direkt olarak detach edilmiş bir iş başlatmak için ise aşağıdaki komut satırını kullanabiliriz.

 screen -dm bash -c "python dosya.py

Buraya kadar kullandığım kodlar Screen’in temel kullanımı için yeterlidir. Kullanım ihtiyacı duyduğum kodları buraya eklemeye devam edeceğim.

Latex kurulum – TeXstudio (Linux)

Daha önce Windows’ta Latex kurulum ve kullanımı ile ilgili bir yazı yazmıştım. Bu yazıda ise Linux üzerine Latex kurulumunda bahsedeceğim. Öncelikle şunu söylemeliyim ki Linux üzerine kurulum daha basit. Sırasıyla çalıştırmanız gereken komutlar aşağıdadır. Yüklenecek paketlerin toplamı yaklaşık 4GB civarında o yüzden bağlantı hızınıza ve diskinizin yazma hızına göre yükleme süresi değişiklik gösterebilir.

apt-get update
apt-get install texlive-full
apt-get install texstudio

Ve kurulum tamamlandı. Sonrasında bir latex template’ini açarak yazmaya başladım. İleride latex komutları ile ilgili (yazmak durumunda kalarak öğrendiğim) yazılar da yazmayı planlıyorum.

eskisehir escort eskisehir escort porno porno izle
porno izle