KABSRA (KAblosuz Bilgi Sistemleri için RFID Altyapısı)

Bitirme tezimin sonucunda ortaya çıkan temel ürün, bilgi sistemleri için RFID altyapısı sağlayan bu sisitem oldu. Amaç, her türlü sektörde kullanılabilecek bir altyapı oluşturmaktı. Bu çalışmada, özellikle çalışma ortamı bağımsızlığı ve güvenlik anlamında aşılması gerekenler için çalışmalara devam ediyoruz.

KABSRA (KAblosuz Bilgi Sistemleri için RFID Altyapısı) projesinin amacı kablosuz/mobil bilgi sistemleriyle uyumlu çalışabilecek genel bir RFID altyapısı geliştirmek ve bu altyapıyı standartlara uygun öğrenme sistemleriyle uyumlu çalışabilir hale getirmektir. RFID altyapısının vereceği destek ile, bilgi sistemine, kullanıcı davranışlarını izleyebilme ve kullanıcıya özgü içerik sunabilme özelliklerinin eklenmesi amaçlamaktadır.

Projenin ana fikri, kampüs içerisinde kullanılmak üzere geliştirilecek olan bir kablosuz bilgi sisteminin, öğrencilerin farklı konularda bilgilendirilmesini, yönlendirilmesini ve bölümleri ile ilgili ders alabilmesini sağlayabileceği üzerine kurulmuştur. RFID etiketine sahip bir kullanıcının kütüphane, mediko gibi hizmetlerden nasıl faydalanacağını, bina içerisinde nasıl hareket edeceğini, hangi bölümlerden ne hizmeti alabileceğini gösterebilecek olan bu sistem aynı zamanda her fakülte için ayrı ders içerikleri sunarak sınıfların dışında da eğitim alınabilmesini sağlayacaktır.

Kampüs içi bilgilendirme sistemi olarak ortaya çıkan bu fikir, yapılan RFID çalışmalarının bir süre sonra, daha farklı uygulama alanlarında da kullanılabilecek genel bir RFID altyapısı projesine dönüşmesi ile sonuçlanmış ve ortaya KABSRA projesi çıkmıştır. KABSRA projesinin ilk hedefi kablosuz bilgi sistemleri ile uyumlu çalışabilecek genel bir RFID arayüz aracı oluşturmaktır. Diğer bir hedef ise bu aracı geliştirmek ve standartları destekleyen öğrenme sistemleri ile birlikte çalışabilir hale getirmektir; bu sayede, farklı uygulama alanlarında kullanılan öğrenme ortamlarına “ortam farkındalık” özelliği kazandırılabilecektir.

Eski bir hatıra, Alias komutu

Bilgisayarın başına geçince eğer internet bağlantısında sorun yoksa, firefox'u açtıktan sonraki ilk işim Update Manager'ı açarak herhangi bir güncelleme var mı diye kontrol etmek. Bunu komut satırından sudo apt-get update ve sudo apt-get upgrade komutlarını peş peşe yazarak ta yapabiliyorum (ssh ile uzaktan bağlanmışken çok işe yarıyor). Bunu tek komuta indirmek için basit bir programcık (shell script) yazdım:
#!/bin/bash
sudo apt-get update
sudo apt-get upgrade
ancak bu da işime yaramadı. Tek komutta işimi halletmeliydim. İlk önce bu programı acaba /usr/bin içine koyabilir miyim diye düşündüm ama araştırmalarım sonuçsuz kaldı. Benim de aklıma eski bir komut geldi. GNU/Linux'u üniversiteye yeni başlarken kullanmaya başladığımda ilk öğrendiğim komutlardan olan alias komutu. Ve hemen kendi aliasımı oluşturdum:
alias update='update.sh'
Ancak bunu yaptığım terminal kapanınca bu komutta kayboldu. En iyisi bilgisayar her çalıştığında, her terminal açtığımda bu komutta tanımlansın dedim. O yüzden bunu ~./bashrc dosyasının en altına aliaslarim diye bir kısma yazdım.
#Aliaslarim
#Ben scriptlerimi home dizinim altinda bin klasorunde tutuyorum
alias update='~/bin/update.sh'
Ben burada her ne kadar bir shell scripte gönderme yapmış olsam da siz alias yardımıyla sürekli yazmakta zorluk çektiğiniz uzun komutlarınızı da kısaltabilirsiniz. Eğer her seferinde ls -al yazmak zor geliyor ise örneğin şu şekilde bir alias işinizi görecektir: alias ls='ls -al'
Düzeltme: /usr/bin altında bir betiği (scripti) çalıştırmak için betiği oraya kopyalayıp (uzantısız olarak) çalıştırma hakkı verirseniz (chmod +x scriptIsmi) doğrudan komut satırından çalıştırabiliyorsunuz.

Genetik Algoritmalar

1.Bölüm
2.Bölüm
3.Bölüm
4.Bölüm

Kaynaklar:
Yüksek lisans tezim
Obitko'nun genetik algoritmalar öğrencesi

Genetik Algoritmalar Bölüm IV (Seçim)

GA Akış şemasından da bildiğimiz gibi, kromozomlar toplum içerisinden çaprazlama için ata olmak için seçilmektedir. Problem bu kromozomları nasıl seçileceğidir. Darwin’in evrim teorisine göre en iyi olan yeni yavruyu yaratmak için yaşamına devam eder. Seçim düzeneklerine rulet tekeri seçimi, Boltzman seçimi, turnuva seçimi, sıralama seçimi, sabit durum seçimi ve diğerleri verilebilir.

Rulet Tekeri Seçimi: Atalar uygunluklarına göre seçilirler. Daha iyi kromozomlar, daha fazla seçilme şansına sahip olanlardır. Toplumdaki tüm kromozomların yerleştirildiği bir rulet tekerini hayal edelim. Rulet tekeri üzerindeki kromozomun yerinin boyutu kromozomun uygunluğuyla orantılıdır. Daha uygun olan kromozom daha geniş bir kısma sahip olur.

Bir bilye rulet tekerine atılmakta ve bilyenin durduğu yerdeki kromozom seçilir. Daha uygun olan kromozomlar böylece daha fazla sayıda seçilecektir.
Süreç aşağıdaki algoritma ile anlatılabilir.
Toplam: Toplumdaki tüm kromozomların uygunluk toplamını hesaplar - S.
Seçim: (0,S) aralığından rasgele bir sayı üretilir - r.
Döngü: Toplum üzerinden gidip 0’dan itibaren uygunlukların toplamını al - s, s r’den büyük olduğu zaman dur ve bulunduğumuz yerdeki kromozomu döndür.
Elbette, aşama bir her toplum için bir kez yapılmaktadır.
Sıralama Seçimi: Bir önceki seçim düzeneğinde uygunluk değerleri arasında büyük farklar oluşunca problemler ortaya çıkacaktır. Örneğin, eğer en iyi kromozomun uygunluğu diğer tüm kromozomların toplamının %90’ı ise diğer kromozomların seçilme şansı çok azalacaktır.
Sıralama seçimi ilk önce toplumu sıralar ve her kromozom uygunluk değeri olarak sırasını kullanır. En kötü 1 uygunluğunu, ikinci kötü 2,…., en iyi N (toplumdaki kromozom sayısı) uygunluğunu alır.
Uygunluk sıraya göre belirlendiği zaman durum değişmektedir.

Bu şekilde tüm kromozomların seçilme şansı olacaktır. Ancak bu yöntem daha yavaş yakınsama neden olabilir, çünkü en iyi kromozomlar birbirlerinden çok farklı değillerdir.
Sabit Durum Seçimi: Bu özel bir ata seçme yöntemi değildir. Bu tip seçimin ana fikri, toplumun var olan kromozomlarının büyük bir kısmının yeni nesle aktarılmasıdır.
Sabit durum seçimi şu şekilde çalışmaktadır. Her yeni nesilde yüksek uygunluk değerine sahip kromozomlar yeni yavruları oluşturmak için seçilir ve düşük uygunluk değerine sahip yavrular kaldırılarak yerlerine bu yeni oluşturulan yavrular koyulur. Toplumun geri kalan kısmı aynen yeni nesle aktarılır.
Seçkinlik (Elitizm): Seçkinliğin ana fikri daha önce açıklandı. Çaprazlama ve Mutasyon yöntemleriyle yeni bir nesil oluştururken, en iyi kromozomları kaybetme olasılığımız vardır. Seçkinlik, en iyi kromozomların (ya da bir kısmının) ilk önce kopyalanıp yeni nesle aktarıldığı yöntemin adıdır. Geri kalan kromozomlar yukarıda anlatılan yöntemlerle üretilir. Seçkinlik GA’nın başarımını hızlı bir şekilde arttırabilir, çünkü bulunan en iyi çözümün kaybolmasını önler.

1.Bölüm
2.Bölüm
3.Bölüm
4.Bölüm

Genetik Algoritmalar Bölüm III (Kodlama)

Kromozomların kodlanması bir problem çözümüne başlarken sorulması gereken ilk sorudur. Kodlama problemin kendisine yoğun şekilde bağlıdır.
İkili kodlama: İkili kodlama en çok kullanılan yöntemdir, çünkü ilk GA araştırmaları bu kodlama yöntemini kullanıldı ve görece basit bir yöntemdir. İkili kodlamada, her kromozom bit (0 veya 1) karakter dizilerinden oluşmaktadır.

Kromozom A: 101100101100101011100101
Kromozom B: 111111100000110000011111

İkili kodlama, fazla olasılıkta kromozomlar verir, bunlara düşük sayıda alel içerenler de dahildir. Ancak, bu yöntem çoğu problem için doğal bir kodlama değildir ve çaprazlama ve/ya mutasyondan sonra düzeltmeler yapılması gerekir.

Örnek Problem: Sırt çantası problemi
Problem: Elimizde değeri ve boyutu verilmiş olan nesneler var. Sırt çantasının kapasitesi verilmiştir. Elimizdeki nesneler sırt çantasına azami sayıda çantanın kapasitesini aşmayacak şekilde yerleştirilmelidir.
Kodlama: Her bit, şeyin sırt çantasında olup olmadığını belirtiyor.
Çaprazlama Yöntemleri:
Tek Noktalı Çaprazlama: Tek bir kesme noktası seçilir, ilk atanın kromozomundan kesme noktasına kadar baştan itibaren alınır ve geri kalan kısım ikinci atanın kesme noktasından sonraki kısmıyla birleştirilip yavrunun kromozomu oluşturulur (11001011+11011111 = 11001111 ).

İki Noktalı Çaprazlama: İki kesme noktası seçilir, kromozomun başından ilk kesme noktasına kadar olan ikili karakter dizisi ilk atadan, iki kesme noktası arasındaki kısım ikinci atadan ve ikinci kesme noktasından sonraki kısım tekrar ilk atadan alınarak yeni yavru oluşturulur (11001011 + 11011111 = 11011111).

Tek biçimli çaprazlama: Bitler atalardan rasgele olarak seçilip kopyalanır (11001011 + 11011101 = 11011111 ).

Aritmetik çaprazlama: Bazı aritmetik bit işlemleri atalar üzerinde uygulanarak yeni yavru oluşturulur (VE işlemi 11001011 + 11011111 = 11001001).

Mutasyon Yöntemleri:
Bit ters çevirme: Seçilen bitler terslerine çevrilir. (Bkz. Şekil 4.8 Yeni Bit= (NOT)Eski Bit işlemi 11001001 => 100010001)

Permütasyon Kodlama: Permütasyon kodlama, gezgin satıcı problemi veya görev sıralama gibi sıralama problemlerinde kullanılabilir. Permütasyon kodlamada, her kromozom sıra’da konum belirten numara karakter dizisinden oluşur.

Kromozom A: 1 5 3 2 6 4 7 9 8
Kromozom B: 8 5 6 7 2 3 1 4 9

Permütasyon kodlama, sıralama problemleri için yararlıdır. Bazı problemlerde bazı çaprazlama ve mutasyon türleri için kromozomların tutarlılığı için (örneğin içerisinde gerçek sırayı tutan) düzeltmeler yapılması gerekmektedir.


Örnek Problem: Gezgin satıcı problemi
Problem: Şehirler ve bu şehirler arasındaki uzaklıklar verilmektedir. Gezgin satıcı tüm bu şehirleri dolaşmak zorundadır. Fakat gereğinden fazla dolaşmamalıdır. En küçük dolaşma uzunluğunu verecek olan şehir dolaşma sırası bulunmalıdır.
Kodlama: Kromozom şehirlerin gezgin satıcının dolaşacağı sırasını tutar.
Çaprazlama yöntemleri (Tek Noktalı Çaprazlama): Bir kesme noktası seçilir, kesme noktasına kadar ilk atadan, kesme noktasından sonraki kısımlar da ikinci atadan olmak üzere permütasyonlar kopyalanır. Aynı sayılar olmayan sayılarla değiştirilerek tutarlı yeni yavru elde edilir. Bundan çok farklı, daha fazla sayıda yöntem de uygulanabilir.
(1 2 3 4 5 6 7 8 9) + (4 5 3 6 8 9 7 2 1) = (1 2 3 4 5 6 8 9 7)
Mutasyon Yöntemi (Sıra Değiştirme): İki sayı seçilir ve yerleri değiştirilir.
(1 2 3 4 5 6 8 9 7) => (1 8 3 4 5 6 2 9 7)

Değer kodlama: Gerçek sayılar gibi karmaşık değerlerin kullanıldığı problemlerde doğrudan değer kodlama kullanılabilir. İkili kodlamanın bu tip problemler için kullanılması problemlerin zorlaşmasına neden olacaktır.
Değer kodlamada, her kromozom bazı değerlere eşittir. Değerler problemle ilgili herhangi bir şey olabilir. Gerçek sayılar, karakterler veya herhangi nesneler olabilir.

Değer kodlama ile kodlanmış kromozom örnekleri:
Kromozom A: 1.2324 5.3243 0.4556 2.3293 2.4545
Kromozom B: ABDJEIFJDHDIERJFDLDFLFEGT
Kromozom C: (geri), (geri), (sağ), (ileri), (sol)

Değer kodlama bazı özel problemler için iyi bir seçimdir. Ancak, bu tip kodlamada probleme özgü yeni çaprazlama ve mutasyon yöntemleri geliştirmek gereklidir.
Örnek Problem: Bir sinir ağı için ağırlıkları bulma
Problem: Bir sinir ağı belirlenmiş mimariyle birlikte verilmektedir. Ağdan beklenen değeri almak için sinir ağındaki sinirler arasındaki ağırlıklar istenmektedir.
Kodlama: Kromozomlardaki gerçek değerler sinir ağındaki ağırlıkları temsil eder.
Çaprazlama yöntemi: İkili kodlamadaki tüm çaprazlamalar kullanılabilir.
Mutasyon Yöntemi (Küçük bir sayı ekleme -Gerçek sayı kodlama için-): Seçilen değerlere küçük bir sayı eklenir (veya çıkarılır).
(1.29 5.68 2.86 4.11 5.55) => (1.29 5.68 2.73 4.22 5.55)

Ağaç Kodlama: Ağaç kodlama genellikle evrimleşen program veya ifadeler için kullanılmaktadır. Örneğin genetik programlama için
Ağaç kodlamada her kromozom bazı nesnelerin ağacıdır, örneğin işlevler veya programlama dilindeki komutlar gibi. Ağaç kodlama evrimleşen programlar veya ağaç şeklinde kodlanabilecek herhangi diğer yapılar için uygundur. LISP programlama dilinde programların ağaç şeklinde temsil edilmesi nedeniyle LISP bu iş için en çok kullanılan dildir. LISP’te bu ağaçlar kolayca ayrıştırılıp, çaprazlama ve mutasyon kolayca yapılmaktadır.
Örnek Problem: Verilen değer çiftlerini yaklaştıran fonksiyonu bulma
Problem: Girdi ve çıktılar verilmektedir. Görev tüm girdiler için en iyi çıktıları veren fonksiyonun üretilmesidir.
Kodlama: Kromozomlar ağaçta fonksiyonlar şeklinde temsil edilir.
Çaprazlama: Bir kesme noktası her iki atada da seçilir, atalar bu noktada bölünür ve kesme noktasının altında kalan parçalar değiştirilerek yeni yavrular oluşturulur.
Mutasyon (İşlev veya Numara değiştirme): Seçilen düğümler yer değiştirilir.

1.Bölüm
2.Bölüm
3.Bölüm
4.Bölüm