Paralel Tepe Tırmanma ile Traveling Salesman

TSP yapısı gereği sadece son durumla ilgilenen, geçilen ara adımların önemsiz olduğu bir problem. Mesela satrançta ara adımların tek tek önemi vardır, çünkü rakip de sizin yaptığınıza göre bir hamle yapacaktır. Dolayısıyla TSP gibi bir problemde "bir adet durum tut, bu durumu en iyi hale getirmeye çalış" mantığı benimsenebilir.

Bu mantığın bir adım ilerisi "k adet durumu tut ve en iyi hale getirmeye çalış" mantığıdır. Paralel Tepe Tırmanma (Local Beam Search) bu mantıkla çalışır. O durumun iyiliği, aynı genetik algoritmadaki gibi bir fitness fonksiyonu ile ölçülür. Genetik Algoritma için belirlediğimiz fonksiyon burada da geçerli. (Rotanın toplam uzunluğu; kısaysa iyi, uzunsa kötü)

Paralel Tepe Tırmanma ile TSP genel adımları:

  1. K adet rasgele rota oluştur. Aynı rotanın iki kez oluşmadığından emin ol.
  2. Bu aşamada yukarıdaki rota kümesinde rasgele swap'lar (iki şehrin yerini değiştirmek) yapılarak yeni oluşan rotalar listeye eklenecek. Burada farklı yöntemler kullanılabilir. Ben 1. adımda oluşturduğumuz her rota için, ardışık komşuların yerlerini değiştirerek yeni rotalar oluşturdum.
  3. Bu rotalar fitness değerlerine göre sıralanarak en iyi K tanesi seçilir.
  4. İstenen döngü sayısına ulaşılıncaya veya istenen düşüklükte fitness değeri elde edilene kadar 2. adımdan devam edilir.

20 şehirli haritada K=100 için 200'lü döngü içerisinde çalıştırılınca 9 sn. gibi bir sürede, Genetik Algoritma'nın 28 sn.'de ulaştığı sonuca ulaşılabiliyor.

K=50 için 200'lü döngüde çalıştırıldığında 2 sn. sonunda yine GA'nın 28 sn.'de verdiğinden daha iyi bir sonuç alınıyor.

Media_httpmediatumblr_wrdwt

K değeri şehir sayısına bağlı olarak, iterasyon sayısı da K değerine bağlı olarak doğru seçildiğinde oldukça hızlı sonuç alınabiliyor.

Oyun Fikri: Fuzzy Zeppelin or "Reckless Shadows Taller Than Our Soul"

İsim iğrenç evet, yazdığım class'lara bile isim veremeyen bir adamım. Değiştiririz bir ara...

Arcade Space Shooter
(Star Craft, teknolojisi hayvan olan ırkın zeplinleri vardı)

Bir ana gemi olacak, zeplin tarzında bir şey adı "Soul" :S
Ve Minion savaş gemileri. "Shadow"'lar. Hilal şeklinde olurlarsa üç tane belli bir açı ile yan yana geldiğinde achievement veririz, oyun satışları da artar belki.
Ana geminin bir savaş gücü olmayacak.
Küçük gemiler; asıl savaşan bunlar. İlk hedeflerini biz belirleriz, otomatik saldırırlar, (hala yakıt-bombaları kaldıysa, ölmedilerse) bir süre devriye gezerler, geri dönüş rotasında filan çevrelerindeki düşmanlara da saldırırlar.
Kontroller
WASD Mothership
NUMPAD Minion'ların doğrultuları/ilk fırlatıldıkları yön.
Space, shift vs.: bütün gemileri geri çağır, atom bombası?
Ana Gemi
Savaşma gücü yok.
HP
ReGen: Patlayan küçük gemilerin yerine yenilerinin gelme zamanı
Slot: Gemi veya gemi grubu sayısı
Speed?
Küçük Gemiler
HP
Attack Power
Speed
Range?
Perception/Radar Range, ilk doğrultularını biz belirledikten sonra bu radar range içindeki düşmanları görüp, yön değiştirebilirler.
Ammo: Bombası bitene kadar düşman arar.

Başka fikri olan?

Genetik Algoritma ile Traveling Salesman

Program "pure" genetik algoritma üzerinde çalıştığından, 2-opt, greedy vs. bir heuristic kullanan genetik algoritmaya göre daha yavaş sonuca ulaşır. Bu algoritmanın genel adımları şöyle:

  1. Tüm şehirlerden bir kez geçilen bir "rota" oluştur. Bu işlemi genetik algoritma X nüfus üzerinde çalışacaksa X kez tekrarla. Tabii aynı rotanın 2 kez olmaması için gerekli önlemleri de almak gerek. Bu rota bizim kromozomumuz olacak.
  2. Rulet tekeri yöntemi veya sıralama seçimi kullanarak 2 rotayı ebeveyn olarak seç. Kısaca daha iyi durumdaki yollara daha yüksek olasılık vererek 2 adet rota seçilecek.
  3. Seçilen ebeveyn kromozomlar özel bir yöntemle çaprazlanacak. Normal çaprazlama TSP'de işe yaramıyor çünkü bir kromozomda aynı şehir iki kez bulunmamalı. Keyword: Order-based crossover
  4. Oluşan çocukların küçük bir ihtimal mutasyona uğrama şansı var. Mutasyon işlemi random iki şehrin yerinin değiştirilmesi şeklinde olabilir.
  5. Çocuklar en kötü iki rota yerine geçiyor. Böylece her jenerasyonda nüfusun iyiye gitmesi sağlanmaya çalışılıyor.
Burada bir rotanın iyi mi kötü mü olduğu değerlendirilirken (fitness function) o rotanın toplam uzunluğu dikkate alınıyor. Uzunsa kötü, kısaysa iyi. 20 şehir içeren bir haritada bu algoritma çalıştırılırken iyi bir sonuç alabilmek için 100000 nüfusun 1000 jenerasyon boyunca yaşaması gerekiyor. 28 saniye sürüyor çalışması. Multi-threaded kodlanırsa düşer tabii bu süre. Bir de benim dandik kodlamış olma ihtimalim var :)

Mutasyonu yüzde 10 yapınca, yüzde 5'e göre sonuç kötüleşiyor. Yani mutasyon olayını abartmamak gerekiyor.

Burada önemli bir faktör, heuristic kullanılsaydı daha az nüfus ve daha kısa bir jenerasyon süresi sonunda aynı veya daha iyi bir sonuca ulaşmak mümkündür.

Media_httpmediatumblr_pydaq

Sonraki yazı Paralel Tepe Tırmanma (Local Beam Search) ile çözümü anlatacak.

Braid

Media_httplh6ggphtcom_yppzf

Zamanı kontrol etmek fikri üzerine kurulu bir platform oyunu. Oyunu Tim olarak oynuyoruz. Lacivert takım, kırmızı kravat takan kızıl kafalı bir geek kendisi. Tim prensesini, “kendi yaptığı bir hatadan dolayı” kaybetmiş, biz de prenses peşinde koşturup duruyoruz işte.

Klasik platform oyunu, hikaye mario’dan beri pek gelişmemiş gibi dursa da bu oyun çok farklı. Bir rüya-masal dünyasını andıran grafikleri ve yine buna uygun seçilmiş müzikleri ve hikayesi ile yaratılan melankolik atmosfer… Her bölüm başında anlatılan hikayeler ile bölümlerdeki bulmacalar uyumlu. Seçimlerden bahseder mesela, ya bu yolu seçseydi, ya bu kapıyı açsaydı, ya bu sözü söylemeseydi nasıl olurdu?, bulmacaları bizim yaptığımız şeyi tekrar eden gölgemiz yardımıyla çözeriz , ama bu sırada biz bambaşka bir şey yapabiliriz.

Neyse iki yıl önce çıkmış zaten oyun, bütün oyun dergilerinden 100/100 puanlar almış, benim de burada oyunu daha fazla tanıtmam, kritik yapmam abesle iştigal olur. Anlatmak istediğim oyunun sonundaki twist ve bunun beni nasıl bir insan yaptığı? (evet bundan sonrası SPOILER – bir bulmacada takıldıysanız ve geçebilecek gibi durmuyorsanız, zaten bu oyunu oynamam diyorsanız veya spoiler filan beni bağlamaz, katili değil onun nasıl bulunduğunu merak ediyorum diyorsanız okuyun bence)

Puzzle parçaları toplayınca her bölümün bir poster’i açılıyor. Ama bu resimlerdeki karakterler bizim kızıl kafalı Tim’e hiç benzemiyor. Bu prenses peşinden koşma, hatayı telafi etme hikayesindeki ilk gariplik. Tim’i değil bütün insanlık adına (ahahaa) prensesi arıyoruz. Bu benim ilk düşündüğüm şeydi. Son bölüme kadar da bu şekilde devam etti. Bulmaca bölümleri zaten genel ilişki sorunları hakkında doğrudan hikaye ile ilgileri yok.

Son bölümün başında Tim’in diğer insanlardan farklı olduğundan, takıntılarından bahsediyor. Bölüm içinde ise prenses ile karşılaşıyoruz. Kendisini kaçıran “korkunç yaratığın” kollarından kurutulup kaçmaya başlıyor. O ekranın üst kısmında, biz aşağıda birbirimize kapıları açıp, hızlıca kaçmaya çalışıyoruz. Ama kapılarda bir gariplik var… Platformun sonunda prensesin odasında bir araya gelecekken, kapı kapanıyor, prenses içeride uyuyor. Bundan sonra zaman tersine akıyor. Yaptığımız bütün hareketler geriye sarılıyor, prenses uyanıyor, bizi görüyor, o üst platformda biz aşağıda koşuyoruz yine. Bir farkla, daha önce açtığımız kapılar, kaldırdığımız engellerin ne anlama geldiğini öğreniyoruz. Aslında engelleri kaldırmaya değil, prensesin yolunu kapatmaya çalışıyoruz. “Korkunç yaratık” aslında prensesi bizden kurtaran beyaz şövalye…

Bölüm sonundaki son hikayeler; Tim’in çocukluğundan beri takıntılarını, sahiplenme duygusunu anlatıyor. Burada da ufak bir iki bulmaca ile farklı yazılar açıyoruz, bilim-teknoloji takıntısı ile çarpılmış beyinleri eleştiren yazılar. Ağırlıklı olarak atom bombası ki teknolojinin zararlarından bahsederken atom bombasını kullanmak sıkça karşılaşılan bir durum. Ama bildiğin açık açık atom bombası hakkında yazılar, yani ilk denemeleri yapıldığındaki alıntılar filan var. Oyunu sonuçta atom bombası-teknoloji-insan ilişkileri-arası bir çerçevede, vay be indie oyuna baki hayat dersi verdi bee düşünceleri ile bitirdim (ne mal adamım lan).

Peki takıntılar ne anlama geliyor? Son bölüm de bununla ilgili pek bir şey yoktu: Oyunun tamamına yayılmış çok zor ulaşılan yıldızlar var. Birini almak için 2 saat boyunca (gerçekten 2 saat) bir bulutun üzerinde ekranın sağ tarından soluna kadar gitmeniz gerekiyor. Bir diğeri için adeta taş sektirir gibi canavar sektirmelisiniz… Bunların hepsini toplayınca son bölüm değişiyormuş diye düştüm bunların peşine. Ama öyle böyle değil bildiğin eziyet. Toplayamadım tabiki hepsini, youtube’de o değişik son bölümü buldum:

GI 2008 Sorular

1.a bi resme tuz biber etkisi nasıl eklenir.
b) average ve medyan filtreleri niçin kullanılır. verilen 3*3 lük matrisin merkez pikseli için filtreleri uygulayın. sonucu yorumlayın.
2. 01234 renkleri
ve 100 100 0 300 500 bu renklerin bulunma adetleri verilmiş histogramı çıkartın çizin. sonra 2 renge indirgeyip yeni histogramı çizin.
3. non maximum suppression ne için kullanılır. yaklaşık 8*8 lik matris verilmiş. bu matristeki kenar yönünün 0 olduğu belirtilmiş. matrise non maximum suppression uygulayıp sonuç resmi yazınız.
4. bi rgb resmin 64 bin histogramını çıkaran fonksiyon kodunu yazın.

1)80x80 lik 2 resim var. birinin yarısı (0-40 pixelleri arası) siyah, gerisi beyaz. Diğer resim ise satranç tahtası şeklinde 10x10 luk karelerden oluşuyor. a) bu resimleri çiziniz, b) (0,1) komşuluğuna bakarak NGLCM lerini bulunuz.c) Ve bu iki resmin farklı olduğunu anlamak için hani komşuluklara bakılmalıdır.
2)1. sorudaki satranç tahtasını split&merge yöntemi ile ayırınız.
3)512x512 lik R,G,B lerden oluşan bi resim var. bunların herbiri 8 bit yer kaplıyor. Bu resimde kaç farklı renk geçtiğini hesaplayan algoritmayı çiziniz.
4)Yüz tanıması yapılmak isteniyor. yüz bilgisayara aktarıldıktan sonra hangi işlemler yapılmalıdır adım adım anlatınız.

1)Nx1 lik bir yapı elemanı kullanılarak bir resme Erosion işlemi uygulayan programın akışını çiziniz herhangi bir dilde programını yazınız.

2) Bir matris içinde 3 tane birbirine yakın olmayan daireler var. Bu matrise hangi (r,Q) ikilisi uygulanırsa akümülatör matrisinin uzunluğu en yüksek çıkar. Bir matris yazarak şekli göstermeye çalışayım.


011100001
010101110
011101010
000001110
111110000
100010010
100010000
100010000
111110010
000000100

Yani kısaca Hough Transform sorusu.

3) K=2 olmak üzere 20' e yakın renk verilmiş. Ve iki tane sınıf merkezi verilmiş. Bu 20 noktayı 2 sınıfa ayırın demişti. 2 adımda biten bi soruydu.

4) Küçük nokta şeklinde dairele ve çubuklar bulunan bir resme (ki ders slaytlarında da bu resim vardı) hangi işlemleri uygularsan resimde sadece yuvarlaklar kalır? Adım Adım açıklayınız demişti.

5) 8x8 lik bir matris ve bu matrisin içinde 4x4 lük bi alan beyaz geri kalan alanlar siyahtı. Resime
Roberts filtreleri uygulanarak Edge bulunacaktı. b şıkkında ise bir T eşik seviyesi belirlenerek Tnin altında kalanlar 0 üstünde olanlar 255 olacak şekilde matris yeniden düzenlenecekti.

a şıkkı için verilen
-1 0 1
hx=-2 0 2
-1 0 1

-1 -2 -1
hy= 0 0 0
1 2 1

Vakıf Serisi - Isaac Asimov

Güzel bir iki şey yazayım bunlarla ilgili dedim, Alper görür okumak ister, fidanı gençken eğeriz filan, dellendim yine.

Foundation –> İmparatorluk Kitabın her yerinde milyon kez geçen vakıf kelimesi dururken, çeviri ismi İmparatorluk. Garip olan Asimov'un bu isimde başka bir kitabının daha olması.

Foundation and Empire -> Altın Galaksi  -İmparatorluk vee Imparaaa ohaa oğlum sıçtık lan... - Yaz yaz başka bir şey yaz

Second Foundation -> Gizli Tanrılar  Yorumsuz

Kitapların üzerinde herhangi bir birinci ikinci kitap gibi açıklama olmadığından basım sırasına göre okuyayım derseniz, yanlış yoldasınız, basım sıraları da değişik: İmparatorluk, Gizli Tanrılar, Altın Galaksi.

Yani tamam dünyanın en lineer ilerleyen serisi olmasa da (Seri ile doğrudan bağlantılı olmayan kitapları çıkardığımızda bile , 3 4 5 6 7 1 2 gibi bir sıralaması oluyor, Tatlısu bilimkurgucuları için açıklama: star wars gibi) bu üç kitap (original trilogy diye geçerler) arasında sıranın değişmemesi gerekiyor. İşte o kitaplar:

Foundation Trilogy:
3. Foundation 1951
4. Foundation and Empire 1952
5. Second Foundation 1953
Uzunca bir aradan sonra seriye eklenen kitaplar:
6. Foundation's Edge 1982
7. Foundation and Earth 1983
1. Prelude to Foundation 1988
2. Forward the Foundation 1993

Neyse, çevirilerin yani baskıları bu şekilde değil (Vakıf, İkinci Vakıf, Vakıf İleri gibi çatır çatır çevirmişler). Okuyun lan yani vallahi güzeller. Braid de oynayın.