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ı:
- K adet rasgele rota oluştur. Aynı rotanın iki kez oluşmadığından emin ol.
- 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.
- Bu rotalar fitness değerlerine göre sıralanarak en iyi K tanesi seçilir.
- İ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.
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.