• Sonuç bulunamadı

3. OPTİMİZASYON ALGORİTMALARI

3.2. Yerçekimsel Arama Algoritması

Fizikte yerçekimi kanununa göre, kütleye sahip her nesne birbirine doğru hızlanırlar. Yine Newton yerçekimi kanununda, kütleye sahip her bir nesne diğer nesneyi belli bir güçle çekmektedir. Bu kural yerçekimsel güç olarak adlandırılmaktadır. GSA, Newton yerçekimi ve hareket kanunlarından esinlenerek geliştirilmiş yeni bir optimizasyon algoritmasıdır. GSA’da kütleler olarak isimlendirilen bir dizi ajan Newton yerçekimi ve hareket kanunlarına göre modellenerek en uygun çözümü bulmak için kullanılır (Rashedi ve ark 2009, 2010).

GSA’yı başlatmak için i. kütlenin (ajan) konumunun denklem 3.5’deki gibi tanımlandığı s kümeli bir sistem varsayalım:

𝑥𝑖 = (𝑥𝑖1, … , 𝑥𝑖𝑑, … , 𝑥𝑖𝑛), 𝑖 = 1,2, … , 𝑠 (3.5)

Burada xdi, d. boyuttaki i. kütlenin konumudur, n ise arama uzayının boyutudur. Her bir ajanın kütlesi, uygunluk değeri ile temsil edilir. Ajana ait mevcut kütle

dizisindeki diğer ajanların uygunluğu denklem 3.6’da hesaplanır (Rashedi ve ark 2009, 2010).

𝑞𝑖(𝑡) =

𝑓𝑖𝑡𝑖(𝑡)−𝑤𝑜𝑟𝑠𝑡(𝑡)

𝑏𝑒𝑠𝑡(𝑡)−𝑤𝑜𝑟𝑠𝑡(𝑡) (3.6)

Mi değeri denklem 3.7’de ifade edildiği gibi mevcut kütlenin toplam kütleye oranına eşittir.

𝑀𝑖(𝑡) = 𝑞𝑖(𝑡) ∑𝑥𝑗=1𝑞𝑗(𝑡)

(3.7)

Bu denklemlerde Mi(t) ve fiti(t) sırasıyla t anındaki i. ajanın kütlesini ve uygunluk değerini ifade etmektedir. best(t) ve worst(t) ifadeleri t anında en düşük ve en yüksek değeri bulmak için denklem 3.8 ve 3.9’daki gibi tanımlanır (Rashedi ve ark 2009, 2010).

𝑏𝑒𝑠𝑡(𝑡) = min(𝑓𝑖𝑡𝑗(𝑡)) 𝑎𝑛𝑑 𝑗 ∈ 1, … . , 𝑠 (3.8)

𝑤𝑜𝑟𝑠𝑡(𝑡) = max( 𝑓𝑖𝑡𝑗(𝑡)) 𝑎𝑛𝑑 𝑗 ∈ 1, … . , 𝑠 (3.9)

Yerçekimi kanununa bağlı olarak bir ajanın ivme hesabı yapılırken, diğer kütleler (ajanlar) tarafından o ajan üzerine etki eden toplam güç hesaplanır. Söz konusu ajana uygulanan toplam güç miktarı denklem 3.10’a göre hesaplanmaktadır. Toplam güç hesaplandıktan sonra hareket kanununa göre ajanın ivmesi denklem 3.11’e göre hesaplanır. Ajana ait ivme değeri mevcut hızıyla toplanıp yeni hız vektörü denklem 3.12’ye göre hesaplanır. Hız vektörü bulunduktan sonra, ajanın yeni konumu denklem 3.13’e göre bulunmuş olur (Rashedi ve ark 2009, 2010).

𝐹𝑖𝑑(𝑡) = ∑ 𝑟𝑎𝑛𝑑𝑗𝐺(𝑡)𝑀𝑗(𝑡)𝑀𝑖(𝑡) 𝑅𝑖𝑗(𝑡) + 𝜀 𝑗 ∈𝑘𝑏𝑒𝑠𝑡 & 𝑗≠1 (𝑥𝑗𝑑(𝑡) − 𝑥𝑖𝑑(𝑡)) (3.10) 𝑎𝑖𝑑(𝑡) = 𝐹𝑖𝑑(𝑡) 𝑀𝑖(𝑡) = 𝐹𝑖𝑑(𝑡) = ∑ 𝑟𝑎𝑛𝑑𝑗𝐺(𝑡) 𝑀𝑗(𝑡) 𝑅𝑖𝑗(𝑡) + 𝜀 𝑗 ∈𝑘𝑏𝑒𝑠𝑡 & 𝑗≠1 (𝑥𝑗𝑑(𝑡) − 𝑥𝑖𝑑(𝑡)) (3.11) 𝑣𝑖𝑑(𝑡 + 1) = 𝑟𝑎𝑛𝑑𝑖 × 𝑣𝑖𝑑(𝑡) + 𝑎𝑖𝑑(𝑡) (3.12) 𝑥𝑖𝑑(𝑡 + 1) = 𝑥𝑖𝑑(𝑡) + 𝑣𝑖𝑑(𝑡 + 1) (3.13)

Denklemlerde yer alan randi verandj değerleri [0,1] aralığında dağıtılan rastgele iki sayıdır. ε küçük bir değer olup, bu değerini kullanmaktaki amaç denklemin tanımsızlığını ortadan kaldırmaktır. Rij(t), i ve j ajanları arasındaki öklid uzunluğunu ifade etmektedir ve denklem 3.14’deki gibi hesaplanır.

𝑅𝑖𝑗(𝑡) =∥ 𝑥𝑖(𝑡), 𝑥𝑗(𝑡) ∥2 (3.14)

En iyi uygunluk değerini ifade eden kbest, en büyük kütleye sahip olan tüm ajanlar içindeki ilk k ajanlarının bir dizisini tanımlar. kbest başlangıçta k0’da başlatılan ve zamanla azaltılan bir zaman fonksiyonunu ifade etmektedir. Buradaki k0 değeri, s’nin (toplam ajan sayısı) kümesidir ve doğrusal olarak 1’e doğru azalır. GSA’da G(t) yerçekimsel sabiti, β sabit katsayıyı, t şu anki iterasyon sayısını, tmax bitiş iterasyon sayısını, Go ise bir başlangıç değerini temsil etmektedir (Rashedi ve ark 2009, 2010). Denklem 3.15’de Go’a bağlı olarak her bir iterasyondaki G(t) ifadesi verilmiştir. GSA algoritmasına ait akış diyagramı Şekil 3.2’de gösterilmiştir.

𝐺(𝑡) = 𝐺0𝑒−𝐵(

𝑡

𝑡𝑚𝑎𝑥) (3.15)

3.2.1. İkili (binary) yerçekimsel arama algoritması

ÖS ve boyut azaltma (Bereta ve Burczyński 2007, Wang ve ark 2007, Chuang ve ark 2008, Zeng ve ark 2009, Pal ve Maiti 2010) veri madenciliği (Srinivasa ve ark 2007) ve hücre formasyonu (Wu ve ark 2008) gibi ikili vektör olarak çözümün kodlanmasının gerekli olduğu çok fazla optimizasyon problemi vardır. Buna ek olarak, gerçek uzayda tanımlı problemler de ikili uzayda düşünülebilir. Bu çözüm ikili modda birkaç biti olan gerçek rakamları göstermek içindir.

Bu bölümde, GSA’nın ikili versiyonu sunulacaktır. Bunu gerçekleştirmek için, GSA’nın bazı temel kavramları değiştirilecektir. Ayrık ikili uzayda, her boyut sadece 0 ya da 1 değeri alabilir. Bir boyuttaki hareket ilgili değişken değerinin 0’dan 1’e değişmesi ya da tam tersinin gerçekleşmesi anlamına gelir. GSA’nın ikili moduna başlamak için güç, ivme ve hız güncelleme prosedürlerinin sürekli algoritmalara benzer olduğu düşünülebilir. Sürekli (continuous) ve ikili (binary) GSA arasındaki temel fark; sürekli algoritmada pozisyon güncellemesi sürekli değer kümesi içinde tanımlanırken, ikili algoritmada pozisyon güncellemesi 0 ve 1 değerleri arasında tanımlanmaktadır. Bu değişim kütle hızına göre yapılması gerekir. Pozisyon güncellemesi kitle hızına göre hesaplanılmış bir olasılıkla mevcut bit değerlerini değiştirme mantığına dayanmaktadır. Başka bir deyişle, İGSA hızını denklem 3.12’ye göre günceller ve verilen olasılık dahilinde ya 0 ya da 1 olarak yeni pozisyonu atar.

Pozisyon güncelleme olasılığına göre hızı yerleştirecek (mapping) bir transfer fonksiyonu tanımlanmadan önce, GSA’nın bazı temel kavramlarını hatırlamak faydalı olacaktır.Buna göre;

 Büyük mutlak hız değeri kütlenin mevcut pozisyonunun hazır olmadığını ve büyük bir hareketin optimum pozisyona ulaşması için gerekli olduğunu gösterir.

 Küçük mutlak hız değeri kütlenin mevcut konumunun optimum pozisyona yakın olduğunu ve optimum pozisyona ulaşmak için çok küçük bir mesafe olduğunu işaret eder. Ardından, optimum çözümü bulduktan sonra, hız değeri 0 olur.

GSA’nın yukarıdaki kavramlarına dayanan İGSA’nın uygulanmasında, aşağıdaki kavramlar dikkate alınmalıdır.

 Büyük mutlak hız değeri önceki konumuna nazaran kütlenin pozisyonunu değiştirecek yüksek bir olasılık sağlamalıdır. (1’den 0’a veya tam tersi)

 Küçük mutlak hız değeri pozisyon değişiminde küçük bir olasılık sağlamalıdır. Başka bir deyişle, hızın 0 değeri kütle pozisyonun iyi olduğunu ve değiştirilmemesi gerektiğini gösterir.

Yukarıda bahsedilen kavramlara dayanan, uygun bir olasılık fonksiyonu tanımlanmalıdır. Öyle ki, küçük |𝑣𝑖𝑑|değeri için, x

id değişme olasılığı 0 değerine yakın olmalı ve büyük |𝑣𝑖𝑑|değeri için x

id değişme olasılığı yüksek olmalıdır. vid yi olasılık fonksiyonuna göndermek için S(vid) fonksiyonu tanımlanır. S(vid) [0,1] aralığında sınırlandırılmış olması gerekir ve vid’nin artmasıyla artar. Denklem 3.16’da S(v

id) fonksiyonu gösterilmiştir.

𝑆(𝑣𝑖𝑑(𝑡)) = |tanh (𝑣𝑖𝑑(𝑡))| (3.16)

S(vid) is hesaplandığında, ajanlar denklem 3.17’de açıklanan kurala göre hareket edecektir.

𝑖𝑓 𝑟𝑎𝑛𝑑 < 𝑆 (𝑣𝑖𝑑(𝑡 + 1)) 𝑡ℎ𝑒𝑛 𝑥𝑖𝑑(𝑡 + 1) = 𝑐𝑜𝑚𝑝𝑙𝑒𝑚𝑒𝑛𝑡 (𝑥 𝑖𝑑(𝑡))

𝑒𝑙𝑠𝑒 𝑥𝑖𝑑(𝑡 + 1) = 𝑥𝑖𝑑(𝑡) (3.17)

İyi bir yakınsama oranını yakalamak için, hızın sınırlandırılması gerekir. Burada Hamming mesafesine dayanılarak hesaplanan R uzaklık değeri dikkate alınır (Rashedi ve ark 2010).

Benzer Belgeler