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.
Bilgisayar alanından hareketle yaşamla ilgili her şeyi paylaşmaya çalışan arkadaşların oluşturduğu kollektif bir günlüktür.
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:
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.
#!/bin/bashancak 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:
sudo apt-get update
sudo apt-get upgrade
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.
#AliaslarimBen 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'
#Ben scriptlerimi home dizinim altinda bin klasorunde tutuyorum
alias update='~/bin/update.sh'
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 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
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
İ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
Genetik Algoritmalar Bölüm II (Algoritma)
Genetik Algoritma
Genetik algoritmalar Darwin’in Evrim teorisinden esinlenilerek üretilmiştir. Bir problemin çözümü evrimsel süreç kullanılarak çözülmektedir.
Algoritma toplum adı verilen ve kromozomlarla temsil edilen bir çözüm kümesi ile başlamaktadır. Bir toplumdaki çözümler yeni toplumların üretilmesinde kullanılmaktadır. Bu işlem, yeni toplumun eskisinden daha iyi olacağı umuduyla yapılmaktadır.
Yeni çözümler (yavru) üretmek için alınan çözümler uygunluklarına (fitness) göre seçilmektedir. Daha uygun olan tekrar üretim için daha fazla şansa sahiptir.
Bu süreç belli bir durum (örneğin belli sayıda toplum veya en iyi çözümün gelişmesi) karşılanana kadar tekrar edilmektedir.
Basit Genetik Programlama Taslağı
Bir sonraki soru çaprazlama için ataların nasıl seçileceğidir. Bu farklı birçok yolla yapılabilir, ancak ana fikir daha iyi ataların daha iyi yavrular üreteceği düşüncesiyle seçilmesidir. Bu şekilde en iyi çözümün kaybedilmemesi için seçkinlik, en iyi çözümün değiştirilmeden yeni nesle aktarılması, böylece en iyi çözümün yaşatılması uygulanabilir.
GA İşleçleri
Genetik algoritma taslağında görebileceğimiz gibi, çaprazlama ve mutasyon genetik algoritmanın en önemli kısımlarıdır. Başarım en çok bu iki işleçten etkilenir. Bu işleçlerden bahsetmeden önce kromozomlardan daha fazla bahsetmek gereklidir.
Kromozomun Kodlanması: Bir kromozom temsil ettiği çözüm hakkında bir şekilde bilgi içermelidir. En çok kullanılan kodlama ikili karakter dizisidir. Bu yöntemle kromozom şu şekilde görülmektedir:
Kromozom 1 : 1101100100110110
Kromozom 2 : 1101111000011110
Her kromozom ikili karakter dizisi şeklinde temsil edilmektedir. Karakter dizisindeki her bit çözümün bir özelliğini temsil eder. Bir başka olasılık tüm karakter dizisinin bir sayıyı temsil etmesidir.
Elbette, birçok başka kodlama yöntemi vardır. Kodlama daha çok çözülen probleme bağlıdır. Örneğin bazı problemler için tamsayı veya gerçek sayı şeklinde kodlamak gerekirken, bazı problemlerde permütasyon şeklinde kodlamaya ihtiyaç vardır.
Çaprazlama: Kodlamaya karar verdikten sonra, çaprazlama işlemiyle devam edebiliriz. Çaprazlama, atalardaki seçili genler üzerinde işlem yapar ve yeni yavrular oluşturur. Bunun en basit şekli, rasgele bir kesme noktası (çaprazlama noktası) seçip, bu noktadan önceki her şeyi ilk atadan, sonraki her şeyi ikinci atadan alıp birleştirerek yavruyu oluşturmaktır.
Çaprazlama aşağıdaki şekilde gösterilebilir: ( | kesme noktasıdır):
Kromozom 1: 11011 | 00100110110
Kromozom 2: 11011 | 11000011110
Yavru 1 : 11011 | 11000011110
Yavru 2 : 11011 | 00100110110
Çaprazlamanın birçok yolu mevcuttur, örneğin birden fazla kesme noktası seçilebilir. Çaprazlama daha da karmaşık olabilir ve tamamen kromozomların kodlanmasına bağlıdır. Özel problemler için yapılmış özel çaprazlamalar genetik algoritmanın başarımını arttırabilir.
Mutasyon: Çaprazlama işlemi gerçekleştirildikten sonra, mutasyon işlemi yapılır. Mutasyonun amacı, toplumdaki tüm çözümlerin çözülen problemlerin bir yerel uygun değerine düşmesinin önüne geçmektir. Mutasyon işlemi çaprazlama sonucu oluşan yavruyu rasgele değiştirmektedir. İkili kodlamada rasgele seçilmiş bir kaç biti 1’i 0’a, 0’ı 1’e şeklinde değiştirmek bir mutasyondur.
Asıl Yavru 1: 1101111000011110
Mutasyon Geçirmiş Yavru 1:1100111000011110
Asıl Yavru 2: 1101100100110110
Mutasyon Geçirmiş Yavru 2:1101101100110110
Mutasyon tekniği (çaprazlama tekniği de) kromozomların kodlamasına çoğunlukla bağlıdır. Örneğin permütasyon şeklinde kodlamada mutasyon rasgele seçilen iki genin yer değiştirmesi olarak gerçekleştirilir.
GA’nın Parametreleri
Çaprazlama Olasılığı: Bu parametre çaprazlamanın ne kadar sıklıkla yapılacağını belirtir. Eğer herhangi bir çaprazlama yoksa yavrular ataların aynısı olacaktır. Eğer bir çaprazlama yapılırsa yavrular ataların parçalarından oluşur. Eğer çaprazlama olasılığı %100 ise yavrular tamamen çaprazlama ile yapılır. Eğer %0 ise yavrular ataların kromozomlarının aynısına sahip olurlar. (Bu yeni toplumun aynı olduğu anlamına gelmez)
Çaprazlama, yeni kromozomların eski kromozomların iyi parçalarını alıp daha iyi olacakları düşüncesiyle yapılır, ancak eski toplumun bazı parçalarının bir sonraki nesle aktarılması da iyidir.
Mutasyon Olasılığı: Kromozom parçalarının ne kadar sıklıkla mutasyon geçireceğini belirtir. Eğer mutasyon yoksa yavrular çaprazlamadan hemen sonra değiştirilmeden üretilir (veya doğrudan kopyalanır). Eğer mutasyon varsa, yavruların kromozomlarının bir veya daha fazla parçası değişir. Eğer mutasyon olasılığı %100 ise tüm kromozom değişecektir. %0 ise hiçbir şey değişmez. Mutasyon genellikle GA’nın yerel aşırılıklara düşmesini engeller. Mutasyonlar çok sık oluşmamalıdır, çünkü GA rasgele aramaya dönüşebilir.
Toplum Büyüklüğü: Toplumdaki kromozom (birey) sayısını belirtir. Eğer çok az birey varsa, GA’nın çaprazlama yapacağı olasılıklar azalacaktır ve arama uzayının çok küçük bir kısmı araştırılacaktır. Eğer çok fazla birey varsa, GA bayağı yavaşlayacaktır. Araştırmalar bazı sınırlardan sonra çok büyük toplumların kullanılmasının yararlı olmadığını göstermiştir, bu problemin daha hızlı bir şekilde çözülmesine yardımcı olmamaktadır.
1.Bölüm
2.Bölüm
3.Bölüm
4.Bölüm
Genetik algoritmalar Darwin’in Evrim teorisinden esinlenilerek üretilmiştir. Bir problemin çözümü evrimsel süreç kullanılarak çözülmektedir.
Algoritma toplum adı verilen ve kromozomlarla temsil edilen bir çözüm kümesi ile başlamaktadır. Bir toplumdaki çözümler yeni toplumların üretilmesinde kullanılmaktadır. Bu işlem, yeni toplumun eskisinden daha iyi olacağı umuduyla yapılmaktadır.
Yeni çözümler (yavru) üretmek için alınan çözümler uygunluklarına (fitness) göre seçilmektedir. Daha uygun olan tekrar üretim için daha fazla şansa sahiptir.
Bu süreç belli bir durum (örneğin belli sayıda toplum veya en iyi çözümün gelişmesi) karşılanana kadar tekrar edilmektedir.
Basit Genetik Programlama Taslağı
- Başlangıç: n kromozom oluşan rasgele toplum oluşturulur (problemin olası çözümleri)
- Uygunluk: Toplumdaki her x kromozomu için f(x) uygunluk değeri değerlendirilir.
- Yeni Toplum: Aşağıdaki adımlar izlenerek yeni toplum üretilir;
- Seçim: Toplumdan uygunluklarına göre iki ata seçilir (daha uygun olanın seçilme şansı daha fazladır)
- Çaprazlama: Çaprazlama olasılığı ile ataları yeni yavru oluşturmak için birbirleriyle eşleştirilir. Eğer çaprazlama yapılmazsa, yavru ataların tıpatıp aynısı olacaktır.
- Mutasyon: Mutasyon olasılığı ile yeni yavru üzerinde her yörünge için mutasyon işlemi yapılacaktır.
- Kabul: Yeni yavru, yeni topluma eklenir.
- Değiştir: Yeni toplum algoritmanın tekrar işlenmesinde kullanılır.
- Deney: Eğer bitiş durumu sağlandıysa, durup toplumdaki en iyi çözüm döndürülür.
- Döngü: Adım 2’ye gidilir. (Kaynak)
Bir sonraki soru çaprazlama için ataların nasıl seçileceğidir. Bu farklı birçok yolla yapılabilir, ancak ana fikir daha iyi ataların daha iyi yavrular üreteceği düşüncesiyle seçilmesidir. Bu şekilde en iyi çözümün kaybedilmemesi için seçkinlik, en iyi çözümün değiştirilmeden yeni nesle aktarılması, böylece en iyi çözümün yaşatılması uygulanabilir.
GA İşleçleri
Genetik algoritma taslağında görebileceğimiz gibi, çaprazlama ve mutasyon genetik algoritmanın en önemli kısımlarıdır. Başarım en çok bu iki işleçten etkilenir. Bu işleçlerden bahsetmeden önce kromozomlardan daha fazla bahsetmek gereklidir.
Kromozomun Kodlanması: Bir kromozom temsil ettiği çözüm hakkında bir şekilde bilgi içermelidir. En çok kullanılan kodlama ikili karakter dizisidir. Bu yöntemle kromozom şu şekilde görülmektedir:
Kromozom 1 : 1101100100110110
Kromozom 2 : 1101111000011110
Her kromozom ikili karakter dizisi şeklinde temsil edilmektedir. Karakter dizisindeki her bit çözümün bir özelliğini temsil eder. Bir başka olasılık tüm karakter dizisinin bir sayıyı temsil etmesidir.
Elbette, birçok başka kodlama yöntemi vardır. Kodlama daha çok çözülen probleme bağlıdır. Örneğin bazı problemler için tamsayı veya gerçek sayı şeklinde kodlamak gerekirken, bazı problemlerde permütasyon şeklinde kodlamaya ihtiyaç vardır.
Çaprazlama: Kodlamaya karar verdikten sonra, çaprazlama işlemiyle devam edebiliriz. Çaprazlama, atalardaki seçili genler üzerinde işlem yapar ve yeni yavrular oluşturur. Bunun en basit şekli, rasgele bir kesme noktası (çaprazlama noktası) seçip, bu noktadan önceki her şeyi ilk atadan, sonraki her şeyi ikinci atadan alıp birleştirerek yavruyu oluşturmaktır.
Çaprazlama aşağıdaki şekilde gösterilebilir: ( | kesme noktasıdır):
Kromozom 1: 11011 | 00100110110
Kromozom 2: 11011 | 11000011110
Yavru 1 : 11011 | 11000011110
Yavru 2 : 11011 | 00100110110
Çaprazlamanın birçok yolu mevcuttur, örneğin birden fazla kesme noktası seçilebilir. Çaprazlama daha da karmaşık olabilir ve tamamen kromozomların kodlanmasına bağlıdır. Özel problemler için yapılmış özel çaprazlamalar genetik algoritmanın başarımını arttırabilir.
Mutasyon: Çaprazlama işlemi gerçekleştirildikten sonra, mutasyon işlemi yapılır. Mutasyonun amacı, toplumdaki tüm çözümlerin çözülen problemlerin bir yerel uygun değerine düşmesinin önüne geçmektir. Mutasyon işlemi çaprazlama sonucu oluşan yavruyu rasgele değiştirmektedir. İkili kodlamada rasgele seçilmiş bir kaç biti 1’i 0’a, 0’ı 1’e şeklinde değiştirmek bir mutasyondur.
Asıl Yavru 1: 1101111000011110
Mutasyon Geçirmiş Yavru 1:1100111000011110
Asıl Yavru 2: 1101100100110110
Mutasyon Geçirmiş Yavru 2:1101101100110110
Mutasyon tekniği (çaprazlama tekniği de) kromozomların kodlamasına çoğunlukla bağlıdır. Örneğin permütasyon şeklinde kodlamada mutasyon rasgele seçilen iki genin yer değiştirmesi olarak gerçekleştirilir.
GA’nın Parametreleri
Çaprazlama Olasılığı: Bu parametre çaprazlamanın ne kadar sıklıkla yapılacağını belirtir. Eğer herhangi bir çaprazlama yoksa yavrular ataların aynısı olacaktır. Eğer bir çaprazlama yapılırsa yavrular ataların parçalarından oluşur. Eğer çaprazlama olasılığı %100 ise yavrular tamamen çaprazlama ile yapılır. Eğer %0 ise yavrular ataların kromozomlarının aynısına sahip olurlar. (Bu yeni toplumun aynı olduğu anlamına gelmez)
Çaprazlama, yeni kromozomların eski kromozomların iyi parçalarını alıp daha iyi olacakları düşüncesiyle yapılır, ancak eski toplumun bazı parçalarının bir sonraki nesle aktarılması da iyidir.
Mutasyon Olasılığı: Kromozom parçalarının ne kadar sıklıkla mutasyon geçireceğini belirtir. Eğer mutasyon yoksa yavrular çaprazlamadan hemen sonra değiştirilmeden üretilir (veya doğrudan kopyalanır). Eğer mutasyon varsa, yavruların kromozomlarının bir veya daha fazla parçası değişir. Eğer mutasyon olasılığı %100 ise tüm kromozom değişecektir. %0 ise hiçbir şey değişmez. Mutasyon genellikle GA’nın yerel aşırılıklara düşmesini engeller. Mutasyonlar çok sık oluşmamalıdır, çünkü GA rasgele aramaya dönüşebilir.
Toplum Büyüklüğü: Toplumdaki kromozom (birey) sayısını belirtir. Eğer çok az birey varsa, GA’nın çaprazlama yapacağı olasılıklar azalacaktır ve arama uzayının çok küçük bir kısmı araştırılacaktır. Eğer çok fazla birey varsa, GA bayağı yavaşlayacaktır. Araştırmalar bazı sınırlardan sonra çok büyük toplumların kullanılmasının yararlı olmadığını göstermiştir, bu problemin daha hızlı bir şekilde çözülmesine yardımcı olmamaktadır.
1.Bölüm
2.Bölüm
3.Bölüm
4.Bölüm
Genetik Algoritmalar Bölüm I (Altyapı)
Genetik Algoritmalar
Genetik Algoritmalar evrimsel hesaplamanın bir parçasıdır. Bu alan Yapay Zekâ’nın hızla gelişen bir dalıdır. Genetik algoritmalar Darwin’ in evrim teorisinden etkilenerek geliştirilmiştir. Basitçe açıklayacak olursak problemler evrimsel bir süreç kullanılarak bu süreç sonunda en iyi sonucu veren çözüme erişmeye çalışmaktadır. Başka bir ifadeyle çözüm evrimleşmektedir.
Evrimsel hesaplama 1960’larda I.Rechenberg’in Evrim Stratejileri (“Evolutionsstrategie”) adlı çalışmasında tanıtılmıştır. Daha sonra fikri diğer araştırmacılar tarafından geliştirilmiştir. Genetik algoritmalar John Holland tarafından icat edilmiş ve öğrencileri ve iş arkadaşları tarafından geliştirilmiştir. 1992 yılında John Koza, genetik algoritmaları kullanarak programları evrimleştirerek belli işleri yapmakta kullandı. Bu yönteme “genetik programlama” adını verdi. LISP dilinde programlar Ayrıştırma Ağaçları” (“Parse Tree”) şeklinde ifade edildiği için LISP diliyle geliştirilmiştir. Ayrıştırma Ağaçları genetik algoritmaların çalıştığı temel nesnedir.
Biyolojik Altyapı
Kromozom: Tüm yaşayan organizmalar hücrelerden oluşur. Her hücrede aynı kromozom kümeleri bulunur. Kromozomlar DNA dizileri olup, tüm organizmanın örneği olarak hizmet ederler. Bir kromozom gen adı verilen DNA bloklarından oluşur. Her gen belirli bir proteini kodlar. Basitçe, her genin, örneğin göz rengi gibi bir özelliği kodladığı söylenebilir. Bir özellik için olası ayarlar, (Örn. Mavi, Yeşil) alel olarak adlandırılır. Her gen kromozom üzerinde kendine ait bir konuma sahiptir. Bu konuma yörünge (“locus”) adı verilir.
Tüm genetik malzeme kümesine (tüm kromozomlar) genom adı verilir. Genom üzerindeki belli gen kümelerine genotip adı verilir. Genotipler, doğumdan sonra gelişmeyle fenotiplere - canlının göz rengi, zekâ v.b. fiziksel ve zihinsel özellikleri- dönüşür.
Tekrar Üretim: Tekrar üretim sırasında, yeniden birleşme (veya çaprazlama) ilk önce ortaya çıkar. Atalardan gelen genler yepyeni bir kromozom üretmek için bir araya gelirler. Bu yeni yaratılmış nesil daha sonra mutasyona uğrayabilir. Mutasyon DNA elemanlarının değişmesidir. Bu değişimler genellikle atalardan gen kopyalanması sırasındaki hatalardan kaynaklanır. Bir organizmanın uygunluğu (“fitness”) organizmanın yaşamındaki başarısıyla (hayatta kalma) ölçülür.
Arama Uzayı
Eğer bir problemi çözüyorsak, genellikle çözümler arasındaki en iyi olanını arıyoruz demektir. Mümkün tüm çözümlerin uzayına (istenen çözümün aralarından bulunduğu çözümler kümesi) arama uzayı (durum uzayı) adı verilir. Arama uzayındaki her nokta bir olası çözümü temsil eder. Her olası çözüm değeri (uygunluğu) ile problem için “işaretlenebilir”. Genetik algoritmalar yardımıyla arama uzayındaki olası çözümler arasından en iyi çözümü araştırırız.
Çözümü aramak, arama uzayında aşırı noktaları (azami veya asgari) aramak ile aynı anlamdadır. Zaman zaman arama uzayı iyi tanımlanmış olabilir, ama bu arama uzayında sadece bir kaç noktayı biliyor olabiliriz. GA kullanma sürecinde, çözüm bulma süreci diğer noktaları (olası çözümleri) evrim sürdükçe üretir.
Sorun, arama çok karmaşık olabilir. Nereden başlanacağı veya nereye bakılacağı bilinemeyebilir. Uygun çözümün bulunması için birçok yöntem vardır, fakat bu yöntemler en iyi çözümü üretmeyebilir. Bu yöntemlerin bazıları, tepe tırmanma (“hill climbing”), yasak arama (“tabu search”), benzetimli tavlama (“simulated annealing”) ve genetik algoritmalardır. Bu yöntemler sonucu bulunan çözümler genellikle iyi çözümler olarak kabul edilir, çünkü sık sık en iyiyi bulmak ve ispatlamak mümkün değildir.
NP-Zor (“NP-Hard”) Problemler: “Geleneksel” yolla çözülemeyecek problem sınıfına bir örnek NP (“Non-deterministic Polynomial Time”) problemlerdir.
Hızlı (Çokterimli) algoritmaların uygulanabildiği birçok görev vardır. Ancak algoritmik olarak çözülemeyen bazı problemler de vardır.
Çözüm bulmanın çok zor olduğu önemli problemler vardır, fakat çözüm bulununca bu çözümü kontrol etmek kolaydır. Bu gerçek “NP-Complete” Problemleri ortaya çıkarır. NP Nondeterministic Polynomial anlamına gelir ve bunun anlamı çözüm (Nondeterministic algoritma yardımıyla) “tahmin” edilebilir ve kontrol edilebilir.
NP Problemlere örnek olarak tatmin problemini, gezgin satıcı problemini veya sırt çantası problemini verebiliriz. Daha fazla örnek için “A Compendium of NP Optimization Problems” sitesi incelenebilir.
1.Bölüm
2.Bölüm
3.Bölüm
4.Bölüm
Genetik Algoritmalar evrimsel hesaplamanın bir parçasıdır. Bu alan Yapay Zekâ’nın hızla gelişen bir dalıdır. Genetik algoritmalar Darwin’ in evrim teorisinden etkilenerek geliştirilmiştir. Basitçe açıklayacak olursak problemler evrimsel bir süreç kullanılarak bu süreç sonunda en iyi sonucu veren çözüme erişmeye çalışmaktadır. Başka bir ifadeyle çözüm evrimleşmektedir.
Evrimsel hesaplama 1960’larda I.Rechenberg’in Evrim Stratejileri (“Evolutionsstrategie”) adlı çalışmasında tanıtılmıştır. Daha sonra fikri diğer araştırmacılar tarafından geliştirilmiştir. Genetik algoritmalar John Holland tarafından icat edilmiş ve öğrencileri ve iş arkadaşları tarafından geliştirilmiştir. 1992 yılında John Koza, genetik algoritmaları kullanarak programları evrimleştirerek belli işleri yapmakta kullandı. Bu yönteme “genetik programlama” adını verdi. LISP dilinde programlar Ayrıştırma Ağaçları” (“Parse Tree”) şeklinde ifade edildiği için LISP diliyle geliştirilmiştir. Ayrıştırma Ağaçları genetik algoritmaların çalıştığı temel nesnedir.
Biyolojik Altyapı
Kromozom: Tüm yaşayan organizmalar hücrelerden oluşur. Her hücrede aynı kromozom kümeleri bulunur. Kromozomlar DNA dizileri olup, tüm organizmanın örneği olarak hizmet ederler. Bir kromozom gen adı verilen DNA bloklarından oluşur. Her gen belirli bir proteini kodlar. Basitçe, her genin, örneğin göz rengi gibi bir özelliği kodladığı söylenebilir. Bir özellik için olası ayarlar, (Örn. Mavi, Yeşil) alel olarak adlandırılır. Her gen kromozom üzerinde kendine ait bir konuma sahiptir. Bu konuma yörünge (“locus”) adı verilir.
Tüm genetik malzeme kümesine (tüm kromozomlar) genom adı verilir. Genom üzerindeki belli gen kümelerine genotip adı verilir. Genotipler, doğumdan sonra gelişmeyle fenotiplere - canlının göz rengi, zekâ v.b. fiziksel ve zihinsel özellikleri- dönüşür.
Tekrar Üretim: Tekrar üretim sırasında, yeniden birleşme (veya çaprazlama) ilk önce ortaya çıkar. Atalardan gelen genler yepyeni bir kromozom üretmek için bir araya gelirler. Bu yeni yaratılmış nesil daha sonra mutasyona uğrayabilir. Mutasyon DNA elemanlarının değişmesidir. Bu değişimler genellikle atalardan gen kopyalanması sırasındaki hatalardan kaynaklanır. Bir organizmanın uygunluğu (“fitness”) organizmanın yaşamındaki başarısıyla (hayatta kalma) ölçülür.
Arama Uzayı
Eğer bir problemi çözüyorsak, genellikle çözümler arasındaki en iyi olanını arıyoruz demektir. Mümkün tüm çözümlerin uzayına (istenen çözümün aralarından bulunduğu çözümler kümesi) arama uzayı (durum uzayı) adı verilir. Arama uzayındaki her nokta bir olası çözümü temsil eder. Her olası çözüm değeri (uygunluğu) ile problem için “işaretlenebilir”. Genetik algoritmalar yardımıyla arama uzayındaki olası çözümler arasından en iyi çözümü araştırırız.
Çözümü aramak, arama uzayında aşırı noktaları (azami veya asgari) aramak ile aynı anlamdadır. Zaman zaman arama uzayı iyi tanımlanmış olabilir, ama bu arama uzayında sadece bir kaç noktayı biliyor olabiliriz. GA kullanma sürecinde, çözüm bulma süreci diğer noktaları (olası çözümleri) evrim sürdükçe üretir.
Sorun, arama çok karmaşık olabilir. Nereden başlanacağı veya nereye bakılacağı bilinemeyebilir. Uygun çözümün bulunması için birçok yöntem vardır, fakat bu yöntemler en iyi çözümü üretmeyebilir. Bu yöntemlerin bazıları, tepe tırmanma (“hill climbing”), yasak arama (“tabu search”), benzetimli tavlama (“simulated annealing”) ve genetik algoritmalardır. Bu yöntemler sonucu bulunan çözümler genellikle iyi çözümler olarak kabul edilir, çünkü sık sık en iyiyi bulmak ve ispatlamak mümkün değildir.
NP-Zor (“NP-Hard”) Problemler: “Geleneksel” yolla çözülemeyecek problem sınıfına bir örnek NP (“Non-deterministic Polynomial Time”) problemlerdir.
Hızlı (Çokterimli) algoritmaların uygulanabildiği birçok görev vardır. Ancak algoritmik olarak çözülemeyen bazı problemler de vardır.
Çözüm bulmanın çok zor olduğu önemli problemler vardır, fakat çözüm bulununca bu çözümü kontrol etmek kolaydır. Bu gerçek “NP-Complete” Problemleri ortaya çıkarır. NP Nondeterministic Polynomial anlamına gelir ve bunun anlamı çözüm (Nondeterministic algoritma yardımıyla) “tahmin” edilebilir ve kontrol edilebilir.
NP Problemlere örnek olarak tatmin problemini, gezgin satıcı problemini veya sırt çantası problemini verebiliriz. Daha fazla örnek için “A Compendium of NP Optimization Problems” sitesi incelenebilir.
1.Bölüm
2.Bölüm
3.Bölüm
4.Bölüm
Kopya DVDye karşı RFID
En bilinen film yapımcılarından Warner, Disney ve Fox için DVD ve CD üreten Taiwanlı firma, disklerin içerisine kopyalamayı önlemek amacıyla RFID çipleri yerleştirmeğe başlamış. Bu yöntemle, kopyalanmış disklerin, RFID okuyucular ile donatılan DVD/CD çalarlar tarafından okunmaması sağlanılmaya çalışılıyor. DVD/CD çalarlar, diske gömülü çipi kontrol ederek "yanlış bir coğrafi alanda" izlenmeye çalışılan veya kopya olan diskleri okumayı reddedebilecekler.
Blu-Ray ve HD-DVD disklerin de korunmasını sağlayacak bu yöntem ile film yapımcıları diskleri fabrikalardan, raflara hatta evlere kadar uzaktan takip edebilecekler.
Bu yazıya yapılan bazı yorumlar:
-Burada takip edilen şey yalnızca DVD değil, taşıyıcı olarak biz de olacağız; hem de evlerimize kadar.
-Çalıntı kopya için harcanan para daha iyi bir ürünü daha ucuza mal etmeye harcansa çok daha anlamlı olacaktır, nitekim bu teknolojinin de kırılarak aşılması çok vakit almayacaktır.
-RFID okuyucular çok kolay aldatılabilir. Neden bizi boşuna uğraştırıyorlar ki?
Kaynak: http://www.vnunet.com/vnunet/news/2164309/embedded-dvd-chip-fights-piracy
Blu-Ray ve HD-DVD disklerin de korunmasını sağlayacak bu yöntem ile film yapımcıları diskleri fabrikalardan, raflara hatta evlere kadar uzaktan takip edebilecekler.
Bu yazıya yapılan bazı yorumlar:
-Burada takip edilen şey yalnızca DVD değil, taşıyıcı olarak biz de olacağız; hem de evlerimize kadar.
-Çalıntı kopya için harcanan para daha iyi bir ürünü daha ucuza mal etmeye harcansa çok daha anlamlı olacaktır, nitekim bu teknolojinin de kırılarak aşılması çok vakit almayacaktır.
-RFID okuyucular çok kolay aldatılabilir. Neden bizi boşuna uğraştırıyorlar ki?
Kaynak: http://www.vnunet.com/vnunet/news/2164309/embedded-dvd-chip-fights-piracy
Yapay Zeka (Bilgisayarlar, Makineler) insanların yerini alır mı?
Bu soru üzerinde her alanda (bilim, edebiyat, sinema, ...) sorgulama yapılmaktadır. Mutlaka izlediğiniz bir bilim kurgu filminde (mesela terminatör'ü veya matrix'i izlemeyen yoktur) veya okuduğunuz bir kitapta bu konu hakkında bazı varsayımlar yapılmaktadır. Bilim çevreleri de bu konuyu tartışmaktadır. Aslında tartışanlar genellikle felsefik ve etik kısmını tartışmaktadırlar. Bu konuda bilimciler iki safa ayrılmıştır. Bir kısmı insan zekasına ulaşamayacağımızı söyleyip bu konulara kafa yormayalım, biz ona en yakın benzerliğe ulaşalım yeter diyor, bir kısım ise geçmişte de yeni fikirlere bu şekilde davranıldığı ve hiç umulmayan gelişmeler olduğunu bu yüzden vazgeçmemek gerektiğini söylüyorlar. Nihai hedefin insan zekası olduğunu düşünürsek, o noktaya erişmek için araştırmaların devam edeceğini öngörebiliriz.
Örneğin Matrix'te insanlar tarafından yaratılan robotların "köle" kimliklerini red edip, insanlara isyan etmesi ve bu isyan sonucu sürülen robotların insanlarla savaşması, insanların da her zaman olduğu gibi kendi sonlarını hazırlayıp robotların enerji kaynağını yoketmek için güneşin girişini engelleyen kalın bulutları yapay yolla elde etmesini anlatıyordu. (Evet filmde anlatmıyordu ama filmin geri plan hikayesini anlatan Animatrix'te tarihçe veriliyor) Terminatör filminde de benzer bir konu var. İnsanlar tarafından yaratılan androidler insanlarla savaşıyor. Filmlerin ve devam filmlerinin felsefik ve bilimsel boyutuna girmeden insanlığın kendi sonunu hazırlamasına değinmek gerekiyor. İnsanlar robotları (ve bilgisayarları) kendilerine kolaylık olsun diye yaratıyorlar, günümüzde bu bir problem oluşturmuyor, çünkü henüz makineler bir "bilinç" geliştirebilmiş değiller. Zaten araştırmacıların temel tartıştığı nokta da burası. Bilinç nedir, makineler de bu oluşabilir mi, nasıl oluşur soruları makine zekası konusundaki en önemli soruları oluşturmaktadır. Bu soruların cevabı verilebildiği zaman, makine zekası konusunda nihai hedef ulaştığımızı söylebileceğiz. Artık o noktada düşünmemiz gereken bizim makinelere nasıl bir eğitim ve etik anlayış verdiğimize göre makinelerin bize davranışı da o yönde olacaktır. Bu konularda sinema dünyasından farklı örnekleri incelemek isterseniz şu filmleri tavsiye ederim, ancak önemli bir noktayı unutmayın. Filmlerdeki süper zeki makine örnekleri yapay zeka konusunda sizi aldatmasın, fazla şey beklemeyin. bilinç gibi bazı temel sorunlar henüz makineleri filmlerdeki düzeye yaklaştırmaktan çok uzak. Biraz daha süre gerekiyor :)
Yapay Zeka (özellikle bilinci olan makine) içeren filmler:
-Matrix
-2001 : Bir uzay destanı
-Yapay Zeka
-Robot Adam
-Ben, Robot
-Kısa Devre
-Ghost in the shell
-Innocence: Ghost in the shell II
-Yıldız Savaşları
-Terminatör
Liste gittikçe uzuyor, en iyisi ben burada bırakayım. Bu filmleri özellikle yazmamın sebebi bunları izlemiş olmam ve içlerinde mutlaka "bilinç" kazanmış bir makine içermeleri. Eğer bu konulara ilgi duyuyorsanız bunları (ve bazılarının kitaplarını, sağolsun Isaac Asimov yeterince yapıt vermiş) incelemenizi tavsiye ederim.
Örneğin Matrix'te insanlar tarafından yaratılan robotların "köle" kimliklerini red edip, insanlara isyan etmesi ve bu isyan sonucu sürülen robotların insanlarla savaşması, insanların da her zaman olduğu gibi kendi sonlarını hazırlayıp robotların enerji kaynağını yoketmek için güneşin girişini engelleyen kalın bulutları yapay yolla elde etmesini anlatıyordu. (Evet filmde anlatmıyordu ama filmin geri plan hikayesini anlatan Animatrix'te tarihçe veriliyor) Terminatör filminde de benzer bir konu var. İnsanlar tarafından yaratılan androidler insanlarla savaşıyor. Filmlerin ve devam filmlerinin felsefik ve bilimsel boyutuna girmeden insanlığın kendi sonunu hazırlamasına değinmek gerekiyor. İnsanlar robotları (ve bilgisayarları) kendilerine kolaylık olsun diye yaratıyorlar, günümüzde bu bir problem oluşturmuyor, çünkü henüz makineler bir "bilinç" geliştirebilmiş değiller. Zaten araştırmacıların temel tartıştığı nokta da burası. Bilinç nedir, makineler de bu oluşabilir mi, nasıl oluşur soruları makine zekası konusundaki en önemli soruları oluşturmaktadır. Bu soruların cevabı verilebildiği zaman, makine zekası konusunda nihai hedef ulaştığımızı söylebileceğiz. Artık o noktada düşünmemiz gereken bizim makinelere nasıl bir eğitim ve etik anlayış verdiğimize göre makinelerin bize davranışı da o yönde olacaktır. Bu konularda sinema dünyasından farklı örnekleri incelemek isterseniz şu filmleri tavsiye ederim, ancak önemli bir noktayı unutmayın. Filmlerdeki süper zeki makine örnekleri yapay zeka konusunda sizi aldatmasın, fazla şey beklemeyin. bilinç gibi bazı temel sorunlar henüz makineleri filmlerdeki düzeye yaklaştırmaktan çok uzak. Biraz daha süre gerekiyor :)
Yapay Zeka (özellikle bilinci olan makine) içeren filmler:
-Matrix
-2001 : Bir uzay destanı
-Yapay Zeka
-Robot Adam
-Ben, Robot
-Kısa Devre
-Ghost in the shell
-Innocence: Ghost in the shell II
-Yıldız Savaşları
-Terminatör
Liste gittikçe uzuyor, en iyisi ben burada bırakayım. Bu filmleri özellikle yazmamın sebebi bunları izlemiş olmam ve içlerinde mutlaka "bilinç" kazanmış bir makine içermeleri. Eğer bu konulara ilgi duyuyorsanız bunları (ve bazılarının kitaplarını, sağolsun Isaac Asimov yeterince yapıt vermiş) incelemenizi tavsiye ederim.
Yapay Zeka
Zeka, insanın düşünme, akıl yürütme, nesnel gerçekleri algılama,
kavrama, yargılama, sonuç çıkarma, soyutlama, öğrenme yeteneklerinin
tümü. Ayrıca Soyutlama, öğrenme ve yeni durumlara uyma gibi
yetenekler de zeka kapsamı içindedir.Yapay zeka ise, bu özelliklere sahip
organik olmayan sistemlerdeki zekadır.
Yapay zeka kabaca; bir bilgisayarın ya da bilgisayar denetimli bir
makinenin, genellikle insana özgü nitelikler olduğu varsayılan akıl
yürütme, anlam çıkartma, genelleme ve geçmiş deneyimlerden öğrenme
gibi yüksek zihinsel süreçlere ilişkin görevleri yerine getirme yeteneği
olarak tanımlanmaktadır (Nabiyev, 2003).
Yapay zeka dört kategoriye ayrılabilmektedir (Russel, 2003):
Yapay Zeka kavramının geçmişi modern bilgisayar bilimi kadar eskidir. Fikir babası, "Makineler düşünebilir mi? " sorusunu ortaya atarak Makine Zekasını tartışmaya açan Alan Mathison Turing'dir. 1943 yılında ikinci dünya savaşı sırasında Kripto Analizi gereksinimleri ile üretilen Elektro-Mekanik cihazlar sayesinde Bilgisayar Bilimi ve Yapay Zeka kavramları doğmuştur.
Alan Turing, Nazi'lerin Enigma makinesinin şifre algoritmasını çözmeye çalışan matematikçilerin en ünlenmiş olanlarından biriydi. İngiltere, Bletchley Park'ta şifre çözme amacı ile başlatılan çalışmalar, Turing 'in prensiplerini oluşturduğu bilgisayar prototipleri olan Heath Robinson, Bombe ve Colossus bilgisayarları, Boole cebrine dayanan veri işleme mantığı ile Makine Zekası kavramının oluşmasına sebep olmuştu.
Modern bilgisayarın atası olan bu makineler ve programlama mantıkları aslında insan zekasından ilham almışlardı. Ancak sonraları, modern bilgisayarlarımız daha çok uzman sistemler diyebileceğimiz programlar ile gündelik hayatımızın sorunlarını çözmeye yönelik kullanım alanlarında daha çok yaygınlaştılar. 1970'li yıllarda büyük bilgisayar üreticileri olan Apple, Xerox, IBM gibi şirketler kişisel bilgisayar modeli ile bilgisayarı popüler hale getirdiler ve yaygınlaştırdılar. Yapay Zeka çalışmaları ise daha dar bir araştırma çevresi tarafından geliştirilmeye devam etti.
Alan Turing'in adıyla anılan Turing Testi yazılımların insan gibi düşünüp düşünmediğini ölçmektedir. Testin içeriği kısaca şöyledir: birbirini tanımayan birkaç insandan oluşan bir denek grubu birbirleri ile ve bir Yapay Zeka diyalog sistemi ile geçerli bir süre sohbet etmektedirler. Birbirlerini yüz yüze görmeden yazışma yolu ile yapılan bu sohbet sonunda deneklere sorulan sorular ile hangi deneğin insan hangisinin Makine Zekası olduğunu saptamaları istenir. lginçtir ki,şimdiye kadar yapılan testlerin bir kısmında Makine Zekası insan zannedilirken gerçek insanlar Makine zannedilmiştir. Loebner Ödülünü kazanan Yapay Zeka Diyalog sistemlerinin dünyadaki en bilinen örneklerinden biri A.L.I.C.E'dir. Carnegie üniversitesinden Dr.Richard Wallace tarafından yazılmıştır. Bu ve benzeri yazılımlarının eleştiri toplamalarının nedeni, testin ölçümlediği kriterlerin konuşmaya dayalı olmasından dolayı programların ağırlıklı olarak diyalog sistemi (chatbot) olmalarıdır.
Türkiye'de de Makine Zekası çalışmaları yapılmaktadır.Bu çalışmalar Doğal Dil işleme, Uzman sistemler ve Yapay Sinir Ağları alanlarında Üniversiteler bünyesinde ve bağımsız olarak sürdürülmektedir. Bunlardan biri, D.U.Y.G.U - Dil Uzam Yapay Gerçek Uslamlayıcıdır (Vikipedi, 2006b).
Yapay zeka'nın araştırma ve çalışma alanları çok geniştir. Bir çok farklı alanda Yapay zeka kullanımıyla karşılaşmak mümkündür. Yapay zeka ile günümüzde bir çok alanda karşılaşılmaktadır. Bu alanlara aşağıdaki örnekleri verebiliriz:
Algoritmalar, Etmen Sistemler olarak sayılabilir.
Kaynaklar:
Yüksek lisans tezim
Nabiyev, 2003
Russel, 2003
Vikipedi, 2006b
kavrama, yargılama, sonuç çıkarma, soyutlama, öğrenme yeteneklerinin
tümü. Ayrıca Soyutlama, öğrenme ve yeni durumlara uyma gibi
yetenekler de zeka kapsamı içindedir.Yapay zeka ise, bu özelliklere sahip
organik olmayan sistemlerdeki zekadır.
Yapay zeka kabaca; bir bilgisayarın ya da bilgisayar denetimli bir
makinenin, genellikle insana özgü nitelikler olduğu varsayılan akıl
yürütme, anlam çıkartma, genelleme ve geçmiş deneyimlerden öğrenme
gibi yüksek zihinsel süreçlere ilişkin görevleri yerine getirme yeteneği
olarak tanımlanmaktadır (Nabiyev, 2003).
Yapay zeka dört kategoriye ayrılabilmektedir (Russel, 2003):
- İnsan gibi düşünen sistemler
- İnsan gibi davranan sistemler.
- Mantıklı düşünen sistemler.
- Mantıklı davranan sistemler.
Yapay Zeka kavramının geçmişi modern bilgisayar bilimi kadar eskidir. Fikir babası, "Makineler düşünebilir mi? " sorusunu ortaya atarak Makine Zekasını tartışmaya açan Alan Mathison Turing'dir. 1943 yılında ikinci dünya savaşı sırasında Kripto Analizi gereksinimleri ile üretilen Elektro-Mekanik cihazlar sayesinde Bilgisayar Bilimi ve Yapay Zeka kavramları doğmuştur.
Alan Turing, Nazi'lerin Enigma makinesinin şifre algoritmasını çözmeye çalışan matematikçilerin en ünlenmiş olanlarından biriydi. İngiltere, Bletchley Park'ta şifre çözme amacı ile başlatılan çalışmalar, Turing 'in prensiplerini oluşturduğu bilgisayar prototipleri olan Heath Robinson, Bombe ve Colossus bilgisayarları, Boole cebrine dayanan veri işleme mantığı ile Makine Zekası kavramının oluşmasına sebep olmuştu.
Modern bilgisayarın atası olan bu makineler ve programlama mantıkları aslında insan zekasından ilham almışlardı. Ancak sonraları, modern bilgisayarlarımız daha çok uzman sistemler diyebileceğimiz programlar ile gündelik hayatımızın sorunlarını çözmeye yönelik kullanım alanlarında daha çok yaygınlaştılar. 1970'li yıllarda büyük bilgisayar üreticileri olan Apple, Xerox, IBM gibi şirketler kişisel bilgisayar modeli ile bilgisayarı popüler hale getirdiler ve yaygınlaştırdılar. Yapay Zeka çalışmaları ise daha dar bir araştırma çevresi tarafından geliştirilmeye devam etti.
Alan Turing'in adıyla anılan Turing Testi yazılımların insan gibi düşünüp düşünmediğini ölçmektedir. Testin içeriği kısaca şöyledir: birbirini tanımayan birkaç insandan oluşan bir denek grubu birbirleri ile ve bir Yapay Zeka diyalog sistemi ile geçerli bir süre sohbet etmektedirler. Birbirlerini yüz yüze görmeden yazışma yolu ile yapılan bu sohbet sonunda deneklere sorulan sorular ile hangi deneğin insan hangisinin Makine Zekası olduğunu saptamaları istenir. lginçtir ki,şimdiye kadar yapılan testlerin bir kısmında Makine Zekası insan zannedilirken gerçek insanlar Makine zannedilmiştir. Loebner Ödülünü kazanan Yapay Zeka Diyalog sistemlerinin dünyadaki en bilinen örneklerinden biri A.L.I.C.E'dir. Carnegie üniversitesinden Dr.Richard Wallace tarafından yazılmıştır. Bu ve benzeri yazılımlarının eleştiri toplamalarının nedeni, testin ölçümlediği kriterlerin konuşmaya dayalı olmasından dolayı programların ağırlıklı olarak diyalog sistemi (chatbot) olmalarıdır.
Türkiye'de de Makine Zekası çalışmaları yapılmaktadır.Bu çalışmalar Doğal Dil işleme, Uzman sistemler ve Yapay Sinir Ağları alanlarında Üniversiteler bünyesinde ve bağımsız olarak sürdürülmektedir. Bunlardan biri, D.U.Y.G.U - Dil Uzam Yapay Gerçek Uslamlayıcıdır (Vikipedi, 2006b).
Yapay zeka'nın araştırma ve çalışma alanları çok geniştir. Bir çok farklı alanda Yapay zeka kullanımıyla karşılaşmak mümkündür. Yapay zeka ile günümüzde bir çok alanda karşılaşılmaktadır. Bu alanlara aşağıdaki örnekleri verebiliriz:
- Oyunlar (Satranç, dama, strateji, ...)
- Yapay yaşam
- Teorem ispatlama (Prolog, Paralel Prolog, Cebrik Mantık Programlama)
- Doğal dil anlama, işleme ve çeviri
- Bilgi tabanlı sistemler (Bilgi gösterimi, uzman sistemler, bilgi tabanlı benzeştirim, genel bilgi sistemleri, ...)
- Makine öğrenmesi (Bilgi düzeyinde öğrenme, sembol düzeyinde öğrenme, aygıt düzeyinde öğrenme)
- Makine buluşları (Veri madenciliği, bilimsel buluşların modellenmesi)
- Robotik (Görev planlama, robot görmesi)
- Şekil tanıma (Nesne tanıma, optik harf tanıma, ses tanıma, ...)
Algoritmalar, Etmen Sistemler olarak sayılabilir.
Kaynaklar:
Yüksek lisans tezim
Nabiyev, 2003
Russel, 2003
Vikipedi, 2006b
"ben bir tuşa basayım herşey kendiliğinden olsun" mantığı
"ben bir tuşa basayım herşey kendiliğinden olsun" mantığı benim çok sık karşılaştığım, ve her defasında sabrımın sınırlarını sınayan bir yaklaşım. İnsanlar Bilgisayarların rahatlığına o kadar alışıyorlar ki, her şeyin programlar ile yapılabileceğini hatta makroların bile yeterli olduğunu düşünüyorlar.
Doğru, bilgisayarlar(yazılımlar) zeka ve öğrenme bakımından halen zayıf olsalar da birçok şeyi yaptırabiliyoruz. Ancak bunlar genelde sürekli tekrarlayan ve farklı durumların oluşmadığı, yani yapay zeka ve öğrenme yeteneğine ihtiyaç duyulmayan çalışma alanları oluyor (Aslında Emre bu konuda daha çok bilgiye sahip. Belki yapay zeka konusunu da işleyebiliriz günlüğümüzde Onunla).
Bu durum tabiki insanların pek de umrunda değil; "ben tuşa basayımda o yapsın" diyeceklerdir hala. Sanki kodu yazan bizler değilmişiz gibi. Bilgisayar Etiğinin anlatıldığı dersler bize insanları işsiz bırakmak zorunda kalacağımızı da anlatırdı. Seçim yapmak gerekirdi bu tür durumlarda. Oysa şimdi bakıyorum, seçimi insanlar zaten yapıyor; kendi kendilerini işsiz bırakmak için yerlerini bir an önce bilgisayarlar alsın istiyorlar. Zaten bu olacak, hızlandırmak istemek, Nasreddin Hoca ve bindiği dalı kesmesine benziyor. Bu çelişkiyi Hocamıza anlatıp ders içeriğini değiştirmesini söylemek gerekiyor aslında; gereksiz yere üzülmüşüz :P
"Excel olmasaydı biz ne yapardık" gibi cümleler de bu mantığın sonuçlarından sayılabilir; değinmeden geçemedim. Bu çelişkiyi umarım çok geç farketmezler.
Doğru, bilgisayarlar(yazılımlar) zeka ve öğrenme bakımından halen zayıf olsalar da birçok şeyi yaptırabiliyoruz. Ancak bunlar genelde sürekli tekrarlayan ve farklı durumların oluşmadığı, yani yapay zeka ve öğrenme yeteneğine ihtiyaç duyulmayan çalışma alanları oluyor (Aslında Emre bu konuda daha çok bilgiye sahip. Belki yapay zeka konusunu da işleyebiliriz günlüğümüzde Onunla).
Bu durum tabiki insanların pek de umrunda değil; "ben tuşa basayımda o yapsın" diyeceklerdir hala. Sanki kodu yazan bizler değilmişiz gibi. Bilgisayar Etiğinin anlatıldığı dersler bize insanları işsiz bırakmak zorunda kalacağımızı da anlatırdı. Seçim yapmak gerekirdi bu tür durumlarda. Oysa şimdi bakıyorum, seçimi insanlar zaten yapıyor; kendi kendilerini işsiz bırakmak için yerlerini bir an önce bilgisayarlar alsın istiyorlar. Zaten bu olacak, hızlandırmak istemek, Nasreddin Hoca ve bindiği dalı kesmesine benziyor. Bu çelişkiyi Hocamıza anlatıp ders içeriğini değiştirmesini söylemek gerekiyor aslında; gereksiz yere üzülmüşüz :P
"Excel olmasaydı biz ne yapardık" gibi cümleler de bu mantığın sonuçlarından sayılabilir; değinmeden geçemedim. Bu çelişkiyi umarım çok geç farketmezler.
Özgür yazılım felsefesi
Neden özgür yazılımı ve bu felsefenn bir ürünü olan Linux işletim sistemini tercih ettiğimizi soran insanlardan, benim anlatmamdan dah iyiolacak olan bu yazıyı ve burada geçen bağlantıları okumalarını rica edeceğim. Özgür yazılım aslında yapmaya çalıştığımız şeylerin yapılması sonucu ortaya çıkmış; üretmek ve paylaşmak. Daha hızlı ilerlemek için paylaşmak. Nitekim Linux, Firefox gibi örnekler az zamanda neler yapılabildiğinin kanıtıdır.
Bir kaç alıntı yapacak olursak:
Özgür yazılım felsefesi, üretmeyi ve paylaşmayı temel alan bir bilişim felsefesidir. Felsefenin temelinde bilimsel araştırmalarda izlenen yöntemin topluma kazandırtıkları yatmaktadır.
Bilim adamları yaptıkları tüm araştırmaları detayları ile açıklayan makaleler yazar ve bu makaleleri yayınlayarak kamu ile paylaşır. Bu paylaşımcı bilimsel modeli hızlı bir toplumsal gelişim sürecine imkan vermektedir; yeni çalışmaların tümü, daha önceki çalışmalarda edinilen bilgi ve deneyimli daha ileri bir noktaya taşımaktadır. Bu biçimde paylaşımcı bir yol izlememiş olsaydı bugün medeniyetimizin ulaştığı noktaya varmak için çok daha fazla zamana ihtiyacımız olabilirdi.
Özgür yazılım (ing. free software) felsefesi bu paylaşımcı modeli bilgisayar yazılımı üretimine uygulamayı hedefler. Özgür yazılım felsefesinin lideri olan Richard M. Stallman, tekelleşmeye ve bilimsel gelişmenin hızını kesmeye izin veren yazılım üretim modeline karşı durmak üzere bir çalışma başlatmış ve bu modelin medeniyetimizin gelişmine vurduğu sekteye dikkat çekmiştir.
Felsefe çerçevesinde kullanıcılara şu haklar tannmaktadır:
Her türlü amaç için programı çalıştırma özgürlüğü,
Programın nasıl çalıştığını inceleme ve kendi ihtiyaçları doğrultusunda değiştirme özgürlüğü,
Yeniden dağıtma ve toplum ile paylaşma özgürlüğü,
Programı geliştirme ve gelişmiş hali ile topluma dağıtma özgürlüğü.
Kaynaklar:
http://belgeler.linux-sevenler.org/74_316_en.html
http://ozguryazilim.org/?u=ozguryazilimtanim
Bir kaç alıntı yapacak olursak:
Özgür yazılım felsefesi, üretmeyi ve paylaşmayı temel alan bir bilişim felsefesidir. Felsefenin temelinde bilimsel araştırmalarda izlenen yöntemin topluma kazandırtıkları yatmaktadır.
Bilim adamları yaptıkları tüm araştırmaları detayları ile açıklayan makaleler yazar ve bu makaleleri yayınlayarak kamu ile paylaşır. Bu paylaşımcı bilimsel modeli hızlı bir toplumsal gelişim sürecine imkan vermektedir; yeni çalışmaların tümü, daha önceki çalışmalarda edinilen bilgi ve deneyimli daha ileri bir noktaya taşımaktadır. Bu biçimde paylaşımcı bir yol izlememiş olsaydı bugün medeniyetimizin ulaştığı noktaya varmak için çok daha fazla zamana ihtiyacımız olabilirdi.
Özgür yazılım (ing. free software) felsefesi bu paylaşımcı modeli bilgisayar yazılımı üretimine uygulamayı hedefler. Özgür yazılım felsefesinin lideri olan Richard M. Stallman, tekelleşmeye ve bilimsel gelişmenin hızını kesmeye izin veren yazılım üretim modeline karşı durmak üzere bir çalışma başlatmış ve bu modelin medeniyetimizin gelişmine vurduğu sekteye dikkat çekmiştir.
Felsefe çerçevesinde kullanıcılara şu haklar tannmaktadır:
Her türlü amaç için programı çalıştırma özgürlüğü,
Programın nasıl çalıştığını inceleme ve kendi ihtiyaçları doğrultusunda değiştirme özgürlüğü,
Yeniden dağıtma ve toplum ile paylaşma özgürlüğü,
Programı geliştirme ve gelişmiş hali ile topluma dağıtma özgürlüğü.
Kaynaklar:
http://belgeler.linux-sevenler.org/74_316_en.html
http://ozguryazilim.org/?u=ozguryazilimtanim
Pasaport lar RFID ile "kod ve us-landırılıyor"
ABD pasaportlarında kullanılması düşünülen RFID teknolojisi için ilk adım Infineon firması ile atılmış. Pasaport içerisine gömülecek olan RFID çipi, kişiler hakkında bilgileri içereceği gibi sayısal resimlerini de saklayacak.
Firmanın beyanına göre bu çipler üzerindeki veri "50den fazla bireysel güvenlik mekanizması" ile korunacak. Örneğin, Temel Erişim Kontrolü (Basic Access Control (BAC)) teknolojisi ile okuyucunun çip üzerindeki veriye ulaşması için yetkilendirme yapılması sağlanmakta. Firmanın kullandığı çipler, 10 cm mesafeden veri transferi yapabiliyor. Yetkisiz okumaların engellenmesi için BAC'in yaninda, okuma voltajını değiştiren alıcılar, çip üzerindeki aktif koruyucu kalkanlar ve veriyi şifrelemede kullanılan karmaşık kodlama yöntemleri de firma tarafından kullanılan birkaç güvenlik yöntemi.
Infineon, bu yıl sonu itibariyle neredeyse tüm pasaportların RFID yetkin hale geleceğini tahmin ediyor. Ancak tüm bu güvenlik önlemlerine rağmen elektronik pasaportlar üzerinde ciddi tartışmalar olan bir konu. Almanya, Norveç, İsveç'in de aralarında bulunduğu 20 ülke bu teknolojiyi kullanmaya ve sınamaya başlamış olsa da, bu pasaportların güvenliğinin gerçekten nasıl sağlanabileceği açık kalan bir konu. Infineon firması, pasaport verisinin çözülebilmesi için bir milyar bilgisayarın bir milyar yıl çözüm için birlikte çalışması gerektiğini iddaa etse de; bazı güvenlik uzmanları, verinin çalınması için çözülmesi gerekmediğini vurgulamaktadır. Ortamda elektronik bir pasaport olduğunu algılamak bile bazı durumlarda yeterli bir tehdit oluşturacaktır.
Kaynak: http://www.tgdaily.com/2006/08/21/infineon_supplies_rfid_chips_to_us_government/
Firmanın beyanına göre bu çipler üzerindeki veri "50den fazla bireysel güvenlik mekanizması" ile korunacak. Örneğin, Temel Erişim Kontrolü (Basic Access Control (BAC)) teknolojisi ile okuyucunun çip üzerindeki veriye ulaşması için yetkilendirme yapılması sağlanmakta. Firmanın kullandığı çipler, 10 cm mesafeden veri transferi yapabiliyor. Yetkisiz okumaların engellenmesi için BAC'in yaninda, okuma voltajını değiştiren alıcılar, çip üzerindeki aktif koruyucu kalkanlar ve veriyi şifrelemede kullanılan karmaşık kodlama yöntemleri de firma tarafından kullanılan birkaç güvenlik yöntemi.
Infineon, bu yıl sonu itibariyle neredeyse tüm pasaportların RFID yetkin hale geleceğini tahmin ediyor. Ancak tüm bu güvenlik önlemlerine rağmen elektronik pasaportlar üzerinde ciddi tartışmalar olan bir konu. Almanya, Norveç, İsveç'in de aralarında bulunduğu 20 ülke bu teknolojiyi kullanmaya ve sınamaya başlamış olsa da, bu pasaportların güvenliğinin gerçekten nasıl sağlanabileceği açık kalan bir konu. Infineon firması, pasaport verisinin çözülebilmesi için bir milyar bilgisayarın bir milyar yıl çözüm için birlikte çalışması gerektiğini iddaa etse de; bazı güvenlik uzmanları, verinin çalınması için çözülmesi gerekmediğini vurgulamaktadır. Ortamda elektronik bir pasaport olduğunu algılamak bile bazı durumlarda yeterli bir tehdit oluşturacaktır.
Kaynak: http://www.tgdaily.com/2006/08/21/infineon_supplies_rfid_chips_to_us_government/
HP dizüstü üzerine Linux Ubuntu kurulumu
Tez bitti ve bilgisayarım tamamen bana kaldı. Tez için kullanmak zorunda kaldığım programları hemen kaldırdım, işletim sistemini de tekrar Linux öncelikli hale getirdim.
Linux felsefesi, ulusal yazılım projelerinin desteklenmesi ve kendi yazılımlarımızı kullanmamız açısından önemli. Bu işletim sistemini ve üzerinde çalışmak üzere geliştirilmiş binlerce açık kaynak kodlu(bir çoğu linux gibi ücretsiz) yazılımı; tekelcilik ve paranın simgesi haline gelen Micro$oft ürünlerinin yerine kullanmamız için yeterli nedenler bence.
Birkaç ay öncesine kadar Fedora 4 kullanıyordum ama, bugünlerde Ubuntu'nun yaygınlaşması ve daha önemlisi Emre'nin hayatından memnun bir şekilde bu işletim sistemini kullanıyor olması Ubuntu Linux kurmama neden oldu.
Kurulum diskini taktım; aynı zamanda çalışır disk çıktı, bilgisayara kurulum yapmadan tüm donanımları tanıdı ve işletim sistemini açtı. Bu özellikle ilk defa karşılaştım, çok başarılıydı çünkü aynen kurulumu yapmış gibi bilgisayarı kullanabilmeme ve beğenmezsem kurulumdan vazgeçebilmeme izin veriyordu. Bu ön izleme şeklindeki kurulum, kablosuz internet bağlantımızı bile hiç bir ayar yapmadan tanıyıp, hemen internette gezebilmemi sağlayınca, bende masaüstünde duran "install" seçeneğini fazla düşünmeden çalıştırdım.
Bir güzellik daha! Kurulumu yapmak için bilgisayarı kapatmadı. İşletim sistemi kurulurken ben internette gezebiliyordum :) Kurulum bitti ve bilgisayarı yeniden açtım. Hiç bir ayara gerek duymadan internet ve müzik gibi temel ihtiyaçlarım karşılanmıştı.
Linux sürümleri her gün biraz daha gelişiyor ve her türlü kullanıcının rahatlıkla kullanabileceği bir hal alıyor. Denemelisiniz...
Linux felsefesi, ulusal yazılım projelerinin desteklenmesi ve kendi yazılımlarımızı kullanmamız açısından önemli. Bu işletim sistemini ve üzerinde çalışmak üzere geliştirilmiş binlerce açık kaynak kodlu(bir çoğu linux gibi ücretsiz) yazılımı; tekelcilik ve paranın simgesi haline gelen Micro$oft ürünlerinin yerine kullanmamız için yeterli nedenler bence.
Birkaç ay öncesine kadar Fedora 4 kullanıyordum ama, bugünlerde Ubuntu'nun yaygınlaşması ve daha önemlisi Emre'nin hayatından memnun bir şekilde bu işletim sistemini kullanıyor olması Ubuntu Linux kurmama neden oldu.
Kurulum diskini taktım; aynı zamanda çalışır disk çıktı, bilgisayara kurulum yapmadan tüm donanımları tanıdı ve işletim sistemini açtı. Bu özellikle ilk defa karşılaştım, çok başarılıydı çünkü aynen kurulumu yapmış gibi bilgisayarı kullanabilmeme ve beğenmezsem kurulumdan vazgeçebilmeme izin veriyordu. Bu ön izleme şeklindeki kurulum, kablosuz internet bağlantımızı bile hiç bir ayar yapmadan tanıyıp, hemen internette gezebilmemi sağlayınca, bende masaüstünde duran "install" seçeneğini fazla düşünmeden çalıştırdım.
Bir güzellik daha! Kurulumu yapmak için bilgisayarı kapatmadı. İşletim sistemi kurulurken ben internette gezebiliyordum :) Kurulum bitti ve bilgisayarı yeniden açtım. Hiç bir ayara gerek duymadan internet ve müzik gibi temel ihtiyaçlarım karşılanmıştı.
Linux sürümleri her gün biraz daha gelişiyor ve her türlü kullanıcının rahatlıkla kullanabileceği bir hal alıyor. Denemelisiniz...
Gothic Metal, Ubuntu, Battlestar Galactica, ÖYP
Bir kaç haftadır (belki de 1 ay olmuştur) bu dört öğe arasında gidip geliyorum. Kafam bozulunca hemen Sirenia'dan Lithium and A Lover parçasını dinliyorum (Gothic Metal seçmelerini bulmuştum, çok farklı grupların en çok sevilen parçalarını içeriyor. Bir ara aklıma gelirse içerdiği parçaları yazarım :) ). Ubuntu'nun sürekli olarak güncellediğim son sürümünü (beta bile olsa) kullanıp hatalarla boğuşuyorum. En sonunda doktora yapmak için ÖYP programına kaydımı yaptırdım, alacağım dersleri (kafamda) seçtim. Şimdi doktora tezini düşünmeye başladım. Artık Ege Bilmuh'ta doktora süresince araştırma görevlisi olarak devam edeceğim (bir terslik çıkmazsa :D ). Diğer kalan zamanımda (uyku dışındaki) Battlestar galactica'ya sardım (Şu CNBC-E'nin yeni dizisi). Farscape'ten sonra (Neden bitti ki!!!) yeni alışkanlığım bu oldu :) Ah ben gerçek bir bilim kurgu hayranıyım :) Unutmadan gameknot'ta satranç maçlarıma sadece turnuva ve arkadaş maçları olarak devam ediyorum. İlgilisine tavsiye ederim. Bana karşı da oynayabilirsiniz (Ben çok iyi değilim :) ratingim sadece 1300 civarında dolaşıyor :D )
Bunları neden mi yazıyorum? Günlüğe yazabileceğim fazla bir şey bulamıyorum açıkçası. Bir kaç ay önceki yeni bir şeyler deneme sevdamdan "yoğunluğum" dolayısıyla geçici olarak vazgeçtim. Doktora dersleriyle beraber tekrar başlayacağıma inanıyorum. Ben de bakın günlüğe bir şey yazmıyorum çünkü bir şey ile uğraşmıyorum demek için bunları yazıyorum. Hani belki ilgilenirsiniz diye :D
Bunları neden mi yazıyorum? Günlüğe yazabileceğim fazla bir şey bulamıyorum açıkçası. Bir kaç ay önceki yeni bir şeyler deneme sevdamdan "yoğunluğum" dolayısıyla geçici olarak vazgeçtim. Doktora dersleriyle beraber tekrar başlayacağıma inanıyorum. Ben de bakın günlüğe bir şey yazmıyorum çünkü bir şey ile uğraşmıyorum demek için bunları yazıyorum. Hani belki ilgilenirsiniz diye :D
Yüksek lisans bitirme tezim
Henüz çıkışımı alamadım ama, üç yıllık sürecin sonunda ortaya birşeyler çıkarıp yüksek lisansımı bitirme aşamasına geldim. Uykusuz ve sıkıntılı gecelerim biraz daha azalacak en sonunda :). Ne olduk şimdi biz bilmiyorum ama adam olma konusunda halen umutluyum.
Tezimin giriş bölümünü paylaşmak istedim:
Bu döküman konu olarak öğrenmenin günümüzdeki son basamağı olan mobil öğrenmenin kapsamı ve RFID teknolojilerinin mobil öğrenme yöntemine dahil edilmesiyle elde edilecek etkinlik ve verimlilik artışını işlemektedir. Standartlaşmış öğrenme yönetim sistemleri ile birlikte çalışabilir ve kablosuz bilgi sistemleri ile bütünleştirilebilir ortak bir RFID altyapısı gerçekleştirimi olan KABSRA projesi de üzerinde durulan konulardan biridir.
RFID teknolojisinin, geleneksel öğrenme yönetim sistemleri ile bütünleştirilmesiyle amacımız; farklı uygulama alanlarında kullanılabilecek, her an her yerde öğrenmeyi destekleyen ve uyarlanabilir öğrenme ortamları geliştirip, bunların aynı zamanda, içinde bulunduğu ortamın farkında, mobil ve standartlara uygun Egemobs gibi bir öğrenme yönetim sistemini oluşturmalarını sağlamaktır.
Anahtar Sözcükler: RFID, Mobil Öğrenme, Uyarlanabilir Öğrenme, LMS, SCORM, KABSRA, Egemobs
Tezimin giriş bölümünü paylaşmak istedim:
Bu döküman konu olarak öğrenmenin günümüzdeki son basamağı olan mobil öğrenmenin kapsamı ve RFID teknolojilerinin mobil öğrenme yöntemine dahil edilmesiyle elde edilecek etkinlik ve verimlilik artışını işlemektedir. Standartlaşmış öğrenme yönetim sistemleri ile birlikte çalışabilir ve kablosuz bilgi sistemleri ile bütünleştirilebilir ortak bir RFID altyapısı gerçekleştirimi olan KABSRA projesi de üzerinde durulan konulardan biridir.
RFID teknolojisinin, geleneksel öğrenme yönetim sistemleri ile bütünleştirilmesiyle amacımız; farklı uygulama alanlarında kullanılabilecek, her an her yerde öğrenmeyi destekleyen ve uyarlanabilir öğrenme ortamları geliştirip, bunların aynı zamanda, içinde bulunduğu ortamın farkında, mobil ve standartlara uygun Egemobs gibi bir öğrenme yönetim sistemini oluşturmalarını sağlamaktır.
Anahtar Sözcükler: RFID, Mobil Öğrenme, Uyarlanabilir Öğrenme, LMS, SCORM, KABSRA, Egemobs
İzmir fuarı ve alternatif yaşam
Fuarın kalabalığı ürkütse de, alternatif yaşam ile ilgili birçok bilgi, kaynak ve çalışma olduğunu duymak, insan pazarını geçmek için yeterli bir neden oldu. 6 saat hiç sıkılmadan dolaştık bugün fuarı, iyiki dolaşmışız.
Alternatif yaşam için bilgi toplamakla kalmayıp, çok güzel iki konseri de dinleme fırsatı bulduk. Özellikle kemanların konuştuğu bu konserlerden birincisi yabancı ve Türkçe şarkıları, ikincisi ise Türküler ve benimsenmiş birkaç şarkıyı dinleyebilmemizi sağladı; adları bilmesem de gayet başarılı iki gruptu.
Fuarın en büyük salonlarından biri olan 4 nolu alanda, sanki bize nispet yaparmış gibi organik tarım, alternatif enerji kaynakları ve avcılık ile ilgili firmalar vardı. Bunları gezip bilgi toparlamaya çalıştık ve alternatifyasam da bunları paylaşmak için notlar aldık.
Alternatif yaşam için bilgi toplamakla kalmayıp, çok güzel iki konseri de dinleme fırsatı bulduk. Özellikle kemanların konuştuğu bu konserlerden birincisi yabancı ve Türkçe şarkıları, ikincisi ise Türküler ve benimsenmiş birkaç şarkıyı dinleyebilmemizi sağladı; adları bilmesem de gayet başarılı iki gruptu.
Fuarın en büyük salonlarından biri olan 4 nolu alanda, sanki bize nispet yaparmış gibi organik tarım, alternatif enerji kaynakları ve avcılık ile ilgili firmalar vardı. Bunları gezip bilgi toparlamaya çalıştık ve alternatifyasam da bunları paylaşmak için notlar aldık.
GetAFreelancer
Rent A Coder sitesini takip ederim sürekli. İlginç proje ve konuları öğrenip benzer uygulamaları gerçekleştirmeye çalışırım. Buna benzeyen GetAFreelancer (Microsoft tarafından üretilmiş olan Freelancer oyunu da aklıma geliyor, güzel bir oyundu :) ) sitesini de buldum. Evden serbest olarak çalışıp para kazanmak isteyenler için iyi olanaklar barındırıyor bu siteler.
Benzer Siteler:
http://www.guru.com/
http://www.elance.com/
Benzer Siteler:
http://www.guru.com/
http://www.elance.com/
Java'da tarih
Arkadaşım Java'da basit bir şekilde o günün tarihini nasıl alabileceğimizi sormuştu. Bunun en kolay yolu için ona anlatmaya çalıştıklarımı ayrıca günlüğe de yazayım dedim. Java bu konularda alışkın değilseniz zor gelebiliyor.
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Tarih {
public static void main(String[] args){
//Calendar sinifindan su ani aliyoruz
Date time = Calendar.getInstance().getTime();
//toString yardimiyla ekrana yazmakla
System.out.println("time.toString():"+time.toString());
//Bir tarih bicimi kullanmak
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//ekranda farkli gosterim sekilleri elde etmemizi sagliyor
System.out.println("formatted date:"+formatter.format(time));
//tarihin bicimini diledigimiz gibi ayarlayabiliriz
formatter = new SimpleDateFormat("dd.MM.yyyy");
//boylece diledigimiz bicimde string olarak alabiliriz
System.out.println("formatted date:"+formatter.format(time));
Date date2 = null;
try {
//tanimladigimiz bicime uygun tarihi string olarak girebilir
//girdigimiz bu stringin tarih nesnesine dondurulmesini saglayabiliriz
date2 = formatter.parse("12.05.2006");
} catch (ParseException e) {
// Girilen metin bicime uygun degilse
// bu hata olusacaktir
e.printStackTrace();
}
//Elle girdigimiz tarihi ekranda toString ile gorelim
System.out.println("date2.toString():"+date2.toString());
}
}
Linkler:
http://home.tiscali.nl/~bmc88/java/sbook/016.html
http://javaalmanac.com/egs/java.text/FormatTime.html
http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Tarih {
public static void main(String[] args){
//Calendar sinifindan su ani aliyoruz
Date time = Calendar.getInstance().getTime();
//toString yardimiyla ekrana yazmakla
System.out.println("time.toString():"+time.toString());
//Bir tarih bicimi kullanmak
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//ekranda farkli gosterim sekilleri elde etmemizi sagliyor
System.out.println("formatted date:"+formatter.format(time));
//tarihin bicimini diledigimiz gibi ayarlayabiliriz
formatter = new SimpleDateFormat("dd.MM.yyyy");
//boylece diledigimiz bicimde string olarak alabiliriz
System.out.println("formatted date:"+formatter.format(time));
Date date2 = null;
try {
//tanimladigimiz bicime uygun tarihi string olarak girebilir
//girdigimiz bu stringin tarih nesnesine dondurulmesini saglayabiliriz
date2 = formatter.parse("12.05.2006");
} catch (ParseException e) {
// Girilen metin bicime uygun degilse
// bu hata olusacaktir
e.printStackTrace();
}
//Elle girdigimiz tarihi ekranda toString ile gorelim
System.out.println("date2.toString():"+date2.toString());
}
}
Linkler:
http://home.tiscali.nl/~bmc88/java/sbook/016.html
http://javaalmanac.com/egs/java.text/FormatTime.html
http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html
Procrastination (Kaytarma)
Phdcomics sitesini dolaşırken bu terimle karşılaştım, ve araştırdım. Ve kelimenin bazı dönemlerde bana ne kadar uyduğunu farkettim. Yüksek lisans süresince yumurta kapıya dayanana kadar bu modda kaldığımı da anladım. :) Sanırım çoğu YL ve doktora öğrencisi aynı problemi yaşıyor.
Ekşisözlükten:
"mukemmeli yaratmak isteyenlerin icine du$tugu durum. yapilacak i$e ba$lamadan once o i$in mukemmel olmasi icin nasil olmasi gerektigi tasarlanir. dolayisiyla i$e ba$lanamaz. i$e ba$lanmadikca i$ insanin gozunde daha da mukemmelle$ir. mukemmelle$tikce daha da ula$ilamaz olur. ula$ilamaz oldukca, i$e ba$layacak $ahis bunalima girer ve ertelemeye ba$lar. dolayisiyla yapilacak i$ son anda yeti$tirilir ve de mukemmel olmaktan cok uzaktir."
İlgilenenlere:
http://sourtimes.org/show.asp?t=procrastination
http://www.bildirgec.org/etiket/procrastination
http://en.wikipedia.org/wiki/Procrastination
Bana bu değerli kelimeyi öğreten karikatürler:
http://www.phdcomics.com/comics/archive.php?comicid=312
(Bu ve sonraki karikatürler)
Ekşisözlükten:
"mukemmeli yaratmak isteyenlerin icine du$tugu durum. yapilacak i$e ba$lamadan once o i$in mukemmel olmasi icin nasil olmasi gerektigi tasarlanir. dolayisiyla i$e ba$lanamaz. i$e ba$lanmadikca i$ insanin gozunde daha da mukemmelle$ir. mukemmelle$tikce daha da ula$ilamaz olur. ula$ilamaz oldukca, i$e ba$layacak $ahis bunalima girer ve ertelemeye ba$lar. dolayisiyla yapilacak i$ son anda yeti$tirilir ve de mukemmel olmaktan cok uzaktir."
İlgilenenlere:
http://sourtimes.org/show.asp?t=procrastination
http://www.bildirgec.org/etiket/procrastination
http://en.wikipedia.org/wiki/Procrastination
Bana bu değerli kelimeyi öğreten karikatürler:
http://www.phdcomics.com/comics/archive.php?comicid=312
(Bu ve sonraki karikatürler)
Google Calendar ve Hırsızlık
Geçen gün slashdot'ta bir haber okudum. Haberde bir günlük yazısından bahsediliyor. Bu yazıda google calendar yardımıyla soyulabileceğimiz ve hatta öldürebileceğimiz konusu bir örnek yardımıyla gösterilmiş. Günlük yazısını inceleyip örneği incelemenizi tavsiye ederim. :)
Sphere Online Judge
Algoritma yarışmalarına merakınız varsa, şu siteyi tavsiye ederim. TopCoder'ı biliyorsanız bu sitenin ona benzediğini ancak daha basit, özellikle algoritma ve performans çözümlerine yönelik algoritmalar içerdiğini de belirtmek isterim. (Bu yazıyı yazarken 913 problem vardı. Bense Java'nın performans sorunları nedeniyle (bahane) 1. problemde takılmış durumdayım :D )
Veritabanındaki tablolardan Java sınıfı oluşturmak
Bir ara en çok sıkıntıyı herhangi bir kalıcı katman çatısı kullanmadığım bir projede veritabanındaki tabloların veri sınıflarını yazarken yaşamıştım. Tablolar her değiştiğinde bu veri sınıflarını da değiştirmek gerekiyordu. Bu nedenle işimi kolaylaştırması amacıyla veritabanındaki tabloyu java sınıfına çeviren bir proje gerçekleştirdim. Kullanmak isteyenler için çalıştırılabilir jar ve kaynak kodlarını burada paylaşmaya karar verdim. Çalıştırmak için bağlanacağınız veritabanının jdbc sürücülerine ihtiyaç duyacaksınız. Mysql, ODBC ve Oracle sürücüleriyle çalıştırabileceğinizi düşünüyorum. Daha fazla veritabanı için DBManager sınıfını değiştirebilirsiniz.
Jar'ı sürücü ile beraber çalıştırmak için:
komutunu kullanabilirsiniz.
Jar'ı sürücü ile beraber çalıştırmak için:
java -classpath surucu.jar -jar DB2POJO.jar
komutunu kullanabilirsiniz.
GPL lisansının çiğnenmesi
GPL lisansına sahip Jin Chess Client yazılımının üreticisi, IchessU yazılımının üreticisini GPL lisansını çiğnediği suçlamasıyla mahkemeye veriyor. Bence bu GPL lisansının kullanımını daha iyi anlamak ve yaptırım gücünü görmek açısından önemli bir olay. Elbette davanın sonucunu takip etmek gerekiyor. Ayrıca haberdeki yorumlar da GPL ile ilgili anlaşılamamış noktaları (ve hatta lisansın nasıl farklı yorumlanabileceğini) anlamak açısından iyi bir temel teşkil ediyor.
Kaynak: http://yro.slashdot.org/yro/06/09/05/087224.shtml
Kaynak: http://yro.slashdot.org/yro/06/09/05/087224.shtml
Patates Silahı
Silahlanma ve gereksiz kullanımı konusunda hep karşı duruş sergileyen bir aileye sahibim ben. Babamın mesleği silah taşımasını yasalarla kolaylaştırıyor olmasna rağmen hiç silah girmedi evimize. Kullanma gereği duymadığımız için şanslıydık. Bugün Türküyede her 3 erkekten birinde silah var neredeyse. Bunların çoğu düğünlerde, sevindiklerinde başkalarını öldürmek pahasına kullanılmaktan başka amaç taşımıyor.
Silah bizim için olmaması gereken bir şey olsada, gelen günlerin ne getireceği belli olmayacak; ve belki kendimizi, ailemizi savunmak için, avlanmak için yani hayatta kalmak için kullanmak zorunda kalacağız. Bu, silaha karşı olsamda, silah kullanmayı öğrenmenin gerekli olduğunu düşünmeme neden oluyor. Yinede en zararsız haliyle olmasını tercih ediyorum ve yine alternatif çözümler arıyorum.
Bir kaç gün önce öğrendiğim patates silahını anlatmak istedim. Şekli aşağıda görünen silah 300 mt uzağa patates fırlatabiliyor. Silah, yanmaz özellikte iki ayrı borudan oluşuyor. Siyah ön bölüm patatesin içinde duracağı namlu, gri arka bölüm de gaz doldurulacak olan fırlatıcı haznesini oluşturuyor. Sarı ile gorunen kisim aslinda siyah ön bölümün ağzı olan keskinleştirilmiş ucunu gösteriyor. Bu keskin uç sayesinde namludan içeri geçirilen patates borunun şeklini tam alması ve fazlasının dışarıda kalması sağlanıyor. Bir sopa yardımı ile iki borunu birleşimi olan orta bölüme kadar itilen patates tam olarak yerleşmiş oluyor. Sonra yeşil ile gösterilen kapak bölümünden sprey gaz (parfüm v.s.) sıkılıyor ve ateşleme için kırmızı ile gösterilen içe dönük çakmak bölümü çakılıyor. Uçan patatesimiz hazır.
Silah bizim için olmaması gereken bir şey olsada, gelen günlerin ne getireceği belli olmayacak; ve belki kendimizi, ailemizi savunmak için, avlanmak için yani hayatta kalmak için kullanmak zorunda kalacağız. Bu, silaha karşı olsamda, silah kullanmayı öğrenmenin gerekli olduğunu düşünmeme neden oluyor. Yinede en zararsız haliyle olmasını tercih ediyorum ve yine alternatif çözümler arıyorum.
Bir kaç gün önce öğrendiğim patates silahını anlatmak istedim. Şekli aşağıda görünen silah 300 mt uzağa patates fırlatabiliyor. Silah, yanmaz özellikte iki ayrı borudan oluşuyor. Siyah ön bölüm patatesin içinde duracağı namlu, gri arka bölüm de gaz doldurulacak olan fırlatıcı haznesini oluşturuyor. Sarı ile gorunen kisim aslinda siyah ön bölümün ağzı olan keskinleştirilmiş ucunu gösteriyor. Bu keskin uç sayesinde namludan içeri geçirilen patates borunun şeklini tam alması ve fazlasının dışarıda kalması sağlanıyor. Bir sopa yardımı ile iki borunu birleşimi olan orta bölüme kadar itilen patates tam olarak yerleşmiş oluyor. Sonra yeşil ile gösterilen kapak bölümünden sprey gaz (parfüm v.s.) sıkılıyor ve ateşleme için kırmızı ile gösterilen içe dönük çakmak bölümü çakılıyor. Uçan patatesimiz hazır.
Kaydol:
Kayıtlar (Atom)