YÖNEYLEM ARAŞTIRMASI - III Prof. Dr. Cemalettin KUBAT Yrd. Doç. Dr. Özer UYGUN
İçerik Altın Oran (Golden Section Search) Arama Metodu
Tek değişkenli bir f(x) fonksiyonunu ele alalım. [Bazı x ler için f (x) bulunamayabilir.] Aşağıdaki DOP modelini çözmek istediğimizi var sayalım. Max f(x) a x b f (x) bulunmayabilir veya f (x) = 0 denklemini çözmek çok zor olabilir. Bu konuda, f(x) eğer özel bir tür fonksiyon ise (unimodal fonksiyon) optimum (en iyi) noktasının nasıl çözülebileceği ele alınacaktır.
Unimodal fonksiyon: Şayet [a, b] aralığındaki bazı x değerleri için f(x) [a, x] aralığında keskin bir şekilde artıyor ve [x, b] aralığında ise keskin bir şekilde azalıyorsa f(x) fonksiyonu [a, b] aralığında unimodaldır. Yani bu aralıkta sadece tek bir tepe noktası bulunmaktadır.
[a, b] aralığında unimodal bir fonksiyon x = yerel maksimum değeri [a, b] aralığında unimodal olmayan bir fonksiyon
[a, b] aralığında iki nokta olan x 1 ve x 2 noktalarında (x 1 < x 2 ) f(x) fonksiyonunu incelediğimizde çözümü bulana kadar aralığı daraltabiliriz. f(x 1 ) ve f(x 2 ) incelendiğinde üç durumdan biri meydana gelir. Her üç durumda da optimum çözümün [a, b] aralığında olacağını gösterebiliriz.
Durum 1: f(x 1 ) < f(x 2 ). f(x), [x 1, x 2 ] aralığının en azından bir kısmında artmakta olduğu için f(x) in unimodal olmasından dolayı optimum çözüm [a, x 1 ] aralığında oluşamaz. Bu sebeple Durum 1 de x (x 1, b] dir.
Durum 2: f(x 1 ) = f(x 2 ). [x 1, x 2 ] aralığının bir kısmında f(x) azalıyordur ve optimum çözüm a < x 2 kısmındadır. Bu sebeple Durum 2 de x [a, x 2 ) dir.
Durum 3: f(x 1 ) > f(x 2 ). Bu durumda f(x), x x 2 ye ulaşmadan önce azalmaya başlayacaktır. Bu sebeple Durum 3 de x [a, x 2 ) dir.
Belirsizlik aralığı: x nin [a, x 2 ) veya (x 1, b] aralıklarından hangisinde bulunacağına belirsizlik aralığı denir. Bu belirsizlik aralığını azaltmak için çok sayıda arama algoritması bahsedilen bu fikirleri kullanmaktadır. Bu algoritmaların birçoğu aşağıdaki adımları kullanır:
Adım 1: x için belirsizlik aralığı olarak [a, b] aralığı ile başla. Makul bir şekilde seçilmiş x 1 ve x 2 noktaları için f(x) i incele. Adım 2: Durum 1, 2 veya 3 ten hangisine uyduğunu belirle ve belirsizlik aralığını buna göre azalt. Adım 3: İki yeni nokta için f(x) i incele (algoritma, bu iki yeni noktanın nasıl seçileceğini belirtmektedir). Belirsizlik aralığı yeterince küçük olana kadar Adım 2 ye dön.
r : Altın Oran r karesel r 2 + r = 1 denkleminin pozitif bir kökü olsun. Karesel formülden şu elde edilir: r = 5 1 = 0,618 2 Altın oran arama algoritması x 1 ve x 2 noktalarında f(x) in incelenmesi ile başlar. x 1 = b r(b a) x 2 = a + r(b a)
Durum 1, 2 ve 3 te bahsedildiği üzere biliyoruz ki; Eğer f(x 1 ) < f(x 2 ) ise x (x 1, b]. Belirsizlik aralığı b x 1 = r(b a) uzunluğundadır. Eğer f(x 1 ) f(x 2 ) ise x [a, x 2 ). Belirsizlik aralığı x 2 a = r(b a) uzunluğundadır. Bu sebeple f(x 1 ) ve f(x 2 ) incelendikten sonra belirsizlik aralığı r(b a) uzunluğuna indirgenmiş olur.
Aşağıdaki prosedürü kullanarak iki yeni x 3 ve x 4 noktaları üretilir ve bu noktalarda f(x) incelenir. Durum 1: f(x 1 ) < f(x 2 ). Yeni belirsizlik aralığı (x 1, b] alınır. Uzunluğu b x 1 = r(b a) olacaktır. x 3 = b r(b x 1 ) = b r 2 (b a) x 4 = x 1 + r(b x 1 ) Yeni bulunan x 3 noktası, daha önce bulunan x 2 noktasına eşit olacaktır. Bunu r 2 = 1 r gerçeğinden hareketle ispatlayabiliriz. x 3 = b r 2 (b a) = b (1 r)(b a) = a + r(b a) = x 2
Aşağıdaki prosedürü kullanarak iki yeni x 3 ve x 4 noktaları üretilir ve bu noktalarda f(x) incelenir. Durum 2: f(x 1 ) f(x 2 ). Yeni belirsizlik aralığı [a, x 2 ) alınır. Uzunluğu x 2 a = r(b a) olacaktır. x 3 = x 2 r(x 2 a) x 4 = a + r(x 2 a) = a + r 2 (b a) Yeni bulunan x 4 noktası, daha önce bulunan x 1 noktasına eşit olacaktır. Bunu r 2 = 1 r gerçeğinden hareketle ispatlayabiliriz. x 4 = a + r 2 (b a) = a + (1 r)(b a) = b r(b a) = x 1
Şimdi f(x 3 ) ve f(x 4 ) fonksiyonları belirsizlik aralığını azaltmak için kullanılabilir. Bu aşamada Altın Oran Arama Algoritmasının iki iterasyonu tamamlanmıştır. Yukarıdan anlaşıldığı gibi Altın Oran Arama Algoritmasının her iterasyonunda f(x) sadece bir yeni noktada incelenecektir. k. iterasyonda belirsizlik aralığının genel ifadesi: L k = rl k-1 = r k (b a)
Bulunacak son belirsizlik aralığı < ɛ olmalıdır. Bu sebeple kaç iterasyon Altın Oran Arama Algoritması işletileceği, aşağıdaki formülden k değeri elde edilerek bulunur. r k (b a) < ɛ
Örnek: Aşağıdaki modeli, nihai belirsizlik aralığı 0,25 den küçük olacak şekilde Altın Oran Arama Algoritması ile çözelim: Max x 2 1 1 x 0,75
Örnek: a = 1 b = 0,75 b a = 1,75 Max x 2 1 1 x 0,75 r k (b a) < ɛ => 0,618 k * 1,75 < 0,25 => 0,618 k < 1/7 k ln (0,618) < ln (1/7) => k * (-0,48) < -1,95 k > 4,06 Öyleyse 5 iterasyon Altın Oran Arama Algoritması işletilecektir. Önce x 1 ve x 2 bulunur.
Örnek: x 1 = 0,75 0,618 * 1,75 = 0,3315 x 2 = 1 + 0,618 * 1,75 = 0,0815 f(x 1 ) = ( 0,3315) 2 1 = 1,1099 f(x 2 ) = (0,0815) 2 1 = 1,0066 Max x 2 1 1 x 0,75 f(x 1 ) < f(x 2 ) olduğu için yeni belirsizlik aralığı: (x 1, b] = ( 0,3315, 0,75] ve daha önce ispatlandığı üzere x 3 = x 2 olacaktır. L 1 = 0,75 ( 0,3315) = 1,0815
Örnek: x 3 = x 2 = 0,0815 x 4 = 0,3315 + 0,618 * 1,0815 = 0,3369 Max x 2 1 1 x 0,75 f(x 3 ) = f(x 2 ) = 1,0066 f(x 4 ) = (0,3369) 2 1 = 1,1135 f(x 3 ) > f(x 4 ) olduğu için yeni belirsizlik aralığı: [x 1, x 4 ) = [ 0,3315, 0,3369) ve daha önce ispatlandığı üzere x 6 = x 3 olacaktır. L 2 = 0,3369 ( 0,3315) = 0,6684
Örnek: x 5 = 0,3369 0,618*0,6684 = 0,0762 x 6 = x 3 = 0,0815 f(x 5 ) = ( 0,0762) 2 1 = 1,0058 f(x 6 ) = f(x 3 ) = 1,0066 Max x 2 1 1 x 0,75 f(x 5 ) > f(x 6 ) olduğu için yeni belirsizlik aralığı: [x 1, x 6 ) = [ 0,3315, 0,0815) x 8 = x 5 olacaktır. L 3 = 0, 0815 ( 0,3315) = 0,4130
Örnek: x 7 = 0, 0815 0,618 * 0,4130 = 0,1737 x 8 = x 5 = 0,0762 f(x 7 ) = ( 0,1737) 2 1 = 1,0302 f(x 8 ) = f(x 5 ) = 1,0058 Max x 2 1 1 x 0,75 f(x 7 ) < f(x 8 ) olduğu için yeni belirsizlik aralığı: (x 7, x 6 ] = ( 0,1737, 0,0815] x 9 = x 8 olacaktır. L 4 = 0,0815 ( 0,1737) = 0,2552
Örnek: x 9 = x 8 = 0,0762 x 10 = 0,1737 + 0,618 * 0,2552 = 0,016 f(x 9 ) = f(x 8 ) = 1,0058 f(x 10 ) = (0,016) 2 1 = 1,0003 Max x 2 1 1 x 0,75 f(x 9 ) < f(x 10 ) olduğu için yeni belirsizlik aralığı: (x 9, x 6 ] = ( 0,0762, 0,0815] L 5 = 0,0815 ( 0,0762) = 0,1577 < 0,25 olduğu için sonlandırılır.
Örnek: Sonuç olarak; Max x 2 1 1 x 0,75 Max x 2 1 1 x 0,75 modelinin çözümü ( 0,0762, 0,0815] aralığında olacaktır. (Tabi ki gerçek maksimum x = 0 da oluşacaktır.) Altın Oran Arama Algoritması, minimizasyon problemlerinde de kullanılabilir. Bunun için amaç fonksiyonu 1 ile çarpılır.
Ödev: 1. Altın Oran Arama Algoritmasını Excel de hazırlayın. 2. Altın Oran Arama Algoritmasının MATLAB kodlarını yazın. 3. Altın Oran Arama Algoritmasını bildiğiniz bir programlama dili ile yazın.
Sorular 1. Aşağıdaki modelin optimum çözümünü 0,8 belirsizlik aralığı için çözünüz. Max. x 2 + 2x 3 x 5 2. Aşağıdaki modelin optimum çözümünü 0,6 belirsizlik aralığı için çözünüz. Max. x e x 1 x 3
Yöneylem Araştırması - II Kaynaklar 1. Wayne Winston, Operations Research Applications and Algorithms 4th. Edition, 2003. 2. M. Turhan Çoban, Optimizasyon Ders Notları. 3. MATLAB: Yapay Zeka ve Mühendislik Uygulamaları, Prof. Dr. C.Kubat, Beşiz Yayınları-1.Basım, Aralık 2012.