• Sonuç bulunamadı

4. GENETİK YEREL ARAMA ALGORİTMASI VE BİLEŞENLERİ

4.5. Yerel Arama Metotları

4.5.5. Yerel Aramayı Hızlandırma Teknikleri

Yerel arama metotları optimum sonuçlara yaklaşmada diğer sezgisel metotlara göre daha iyidir, fakat çevrim sürelerinin fazla oluşu dezavantajlarıdır. Şehir sayısı n olan bir problem için 2-Opt metodu (n2), 3-Opt metodu (n3), LK metodu için (nk) zaman karmaşası mevcuttur. Şehir sayısını artması araştırma süresini üstel olarak arttırmaktadır. Yerel arama metotlarını çevrim süreleri bakımından hızlandırmak için çeşitli yöntemler kullanılmaktadır. Bunlardan en yaygın olarak bilinenleri:

 Sabit Yarıçaplı En Yakın Komşu Arama  Bitlere Bakmama

 Aday Listeleri

Bu metotların her birisi arama süresini oldukça önemli ölçüde azaltmaktadır. Aşağıdaki tabloda hızlandırma tekniklerinin çeşitli problemler üzerindeki etkisi Stützle (2008) tarafından gösterilmektedir.

Tablo 4.4. Yerel Aramayı Hızlandırma Tekniklerinin Etkisi 2-Opt (STANDART) 2-Opt (FRNNS + CL) 2-Opt (FRNNS + CL + DLB) 3-Opt (FRNNS + CL + DLB) Problem

ORT tORT ORT tORT ORT tORT ORT tORT

KroA100 8.9 1.6 6.4 0.5 6.6 0.4 2.4 4.3 D198 5.7 6.4 4.2 1.2 4.3 0.8 1.4 30.1 Lin318 10.6 22.1 7.5 2.1 7.9 1.5 3.4 65.5 Pcb442 12.7 55.7 7.1 2.9 7.6 2.2 3.8 63.4 Rat783 13.0 239.7 7.5 7.5 8.0 5.8 4.2 213.8 Pr1002 12.8 419.5 8.4 13.2 9.2 9.7 4.6 357.6 Pcb1173 14.5 603.1 8.5 16.7 9.3 12.4 5.2 372.3 D1291 16.8 770.3 10.1 16.9 11.1 12.4 5.5 377.6 Fl1577 13.6 1251.1 7.9 25.8 9.0 19.2 4.0 506.8 Pr2392 15.0 2962.8 8.8 65.5 10.1 49.1 5.3 878.1

Tablo 4.4’deki çözümlenen 10 GSP probleminin zamansal verilerine dikkat edilecek olursak önemli ölçüde azalma gözükmektedir. Örneğin Pr1002 problemi için standart bir 2-Opt metodunun çalışma süresi FRNNS + CL + DLB hızlandırma teknikleri sayesinde yaklaşık 43 kat hızlandırılabilir. Tüm zamansal verilerin ortalamaları dikkate alındığında hızlandırma teknikleri yaklaşık 4-60 kat arasında performans artışı sağlamaktadır (problem büyüklüğüne göre).

Hızlandırma teknikleri yerel arama metotları içerisine kodlama sırasında eklenerek GSP çözümünde çevrim süresi bakımından iyileştirme sağlarken, en iyi çözümü bulmayı garanti etmezler.

4.5.5.1. Sabit Yarıçaplı En Yakın Komşu Arama

Sabit Yarıçaplı En Yakın Komşu Arama (Fixed Radius Nearest Neighbor Search) ile sadece (yerel arama metotları içerisine eklenen kodlama) belirli bir yarıçap içerisinde kalan şehirlerin yer değiştirmesi incelenir. Örneğin 2-Opt metodu için verilen bir ci şehri için turdaki her iki komşusu (cj) dikkate alınarak araştırma

yarıçapı belirlenir. ci çevresindeki tüm ck şehirleri d(ci, ck) < d(ci, cj) koşulunu

sağlayacak şekilde araştırılır ve ilk gelişen 2-Opt hareketi kabul edilir. Bu olay Şekil 4.29’daki gibidir. Böylece Sabit Yarıçaplı En Yakın Komşu Arama (FRNNS) ile uzay yarıçap ile sınırlandırılıp araştırma süresi azaltılır (Bentley 1992).

Şekil 4.29. Sabit Yarıçaplı En Yakın Komşu Arama

a b c d r = (a, |ab|) a b c d r = (a, |ab|)

4.5.5.2. Bitlere Bakmama

Bitlere Bakmama (Don’t Look Bits) fikri Bentley (1992) tarafından yerel aramalarda başarısız aramaların tekrarlanmasından kaçınmak için düşünülmüştür. Bu metodun ana fikri verilen ci şehri için herhangi bir gelişme kaydedilmediyse ve ci’in

komşuları değişmediyse bir sonraki araştırmada ci’in gelişim gösterme ihtimali

düşüktür. Bu yüzden bir sonraki araştırmada ci, gelişim hareketi için üye olarak

düşünülmez. Bentley, bu fikri her şehir için bir kontrol bayrağı (boolean tipinde bir dizi) ile gerçekleştirmektedir. Yerel aramaya ilk başlandığında tüm bayraklar kapalı (False) olarak alınmakta ve yerel arama süresince her şehre ait olan bayraklar değişimin olmamasının gözlenmesi ile açılmakta veya kapanmaktadır. ci=c

olduğunda ve c şehri bir gelişim gösteremediğinde, c’ye ait olan bayrak açılır (True). Bu şekilde ci şehri yerel arama süresinde tekrar incelenmeye tabii tutulacağında

bayrağının durumuna göre işleme devam edilir.

4.5.5.3. Aday Listeleri

Yerel arama prosedürlerinde şehir sayısının artmasının çözüm süresini kullanılan tekniğe göre yüksek ölçüde arttırmaktadır. Bu süreç içerisinde turun gelişmesi için sonuç vermeyecek birçok deneme yapılmaktadır. Bir şehri diğer şehir ile bağlayacak kısa yolların toplam uzunluğu azaltması uzun birleşmelere göre daha kuvvetli bir ihtimaldir. Bu yüzden her şehir için en yakın komşuların (aday) tutulduğu listeler (aday listeleri) ile yerel arama süresince herhangi bir c şehri için tüm şehirler (n) yerine dizideki yakın olan komşular taranacaktır. Aday listelerinin (CL) büyüklüğü (CLMAX) kullanıcı tarafından belirlenir. Bu şekilde çalışma süresi önemli ölçüde azalmaktadır. Gereken en yakın komşuluk dizisinin hesaplanması için (n2

.logCLMAX) süresine ihtiyaç vardır. Sık olarak kullanılan En Yakın Komşular (Nearest Neighbors: CLNN) ve Çeyrek Daire Komşuları (Quadrant Neighbors: CLQN) aday listeleri mevcuttur. CLNN aday listelerinde herhangi bir c şehri için tüm şehirler en yakından en uzağa olmak üzere sıralanır ve kullanıcı tarafından belirlenen CLMAX sayısınca c şehrinin aday listesini oluşturur. CLQN aday listelerinde ise c şehri orijin olarak düşünülür (x=0, y=0) ve her 4 geometrik bölgede bulunan en yakın

komşulardan birer tanesi aday listesine eklenir. Şekil 4.30’da, U159 GSP probleminde yer alan 159 şehrin her birisine ait en yakın CLMAX=10 olan aday listesi gösterilmektedir.

Şekil 4.30. CLNNAday Listesi (U159 Problemi, CLNN-MAX =10)

Nearest Neighbors ve Quadrant Neighbors komşulukları dışında Delunay Triangulations Lists ve-Value Based Lists metotları da mevcuttur. Şekil 4.31’de 2- Opt yerel arama prosedürüne “Bitlere Bakmama”, “Aday Listesi” ve “Sabit Yarıçaplı En Yakın Komşu Araması” metotlarının eklenmesi ile oluşan hızlandırılmış 2-Opt versiyonunun kod bloğu verilmiştir.

Tüm şehirler için DLB’yi sıfırla (FALSE)

Gelişme sürdüğü sürece (Gelişim=TRUE)

FOR i := 1 TO n DO {

Gelişim := FALSE; C1 := T[i]

Eğer DLB[C1]=TRUE ise GOTO 200;

SC1 := Turda i şehrinden sonraki şehir;

Yarıçap := d(C1,SC1);

FOR h := 1 TO CLMAX DO

{ C2 := Aday_Listesi[C1, h];

Eğer (Yarıçap > d(C1, C2)) ise

{ SC2 := Turda C2 şehrinden sonra gelen şehir;

Kazanç := - Yarıçap + d(C1, C2) + d(SC1, SC2) - d(C2, SC2); Eğer (Kazanç < 0) ise { Gelişim := TRUE; GOTO 100; }

} Değilse h döngüsünden çık;

}

ÖC1 := Turdaki C1 şehrinden bir önceki şehir;

Yarıçap := d(ÖC1, C1);

FOR h := 1 TO CLMAX DO

{ C2 := Aday_Listesi[C1, h];

Eğer (Yarıçap > d(C1, C2)) ise

{ ÖC2 := Turdaki C2 şehrinden önceki şehir;

Kazanç := -Yarıçap + d(C1, C2) + d(ÖC1, ÖC2) – d(ÖC2,C2); Eğer (Kazanç < 0) ise { Gelişim := TRUE; GOTO 100; }

} Değilse h döngüsünden çık;

}

Eğer (Gelişim=TRUE) ise

{ 100: 2-OPT yerdeğişimi yap;

} değilse

{ DLB[C1]:= TRUE; } 200: }

Benzer Belgeler