07-04-006 Ümit Akıncı Fonksiyon Minimizasyonunda Simulated Annealing Yöntemi İçindekiler Fonksiyon Minimizasyonu Metropolis Algoritması. Algoritma.......................................... Bir boyutlu probleme uygulama............................. Simulated Annealing. Algoritma......................................... 4. Bir boyutlu probleme uygulama............................. 4 Fonksiyon Minimizasyonu Fonksiyon minimizasyonu fizikte karşımıza sık çıkan bir problemdir. Örneğin incelenen sistemin kararlı durumu için minimum enerjili durumlar aranır. N değişkenli f( ) fonksiyonunun sayısal yöntemlerle minimumunu bulmak oldukça zor bir problemdir. Fonksiyonun alabileceği değerler uzayı büyük olduğunda bu problem daha da zorlaşır. Fonksiyon argümanı, N boyutlu uzayda sürekli değer alan bir vektördür. Sayısal yöntem kullanıldığında uzayın kesikli hale getirilmesi söz konusu olduğundan iyi bir sonuç için N boyutlu uzayda çok küçük aralıklı bir ızgara (mesh) oluşturulmalıdır. Bu da uzayda çok fazla sayıda nokta olması demektir. Fonksiyonun tüm bu boktalarda aldığı değer bulunup, bu değerler arasında karşılaştırma yapılır. N boyutlu uzayda fonksiyon minimumunu daha hızlı bulan bir algoritma şöyle olabilir. bir başlangıç noktasından başlanıp, nokta rasgele değiştirilebilir. Yeni noktadaki fonksiyon değeri eski noktadakinden daha küçükse yeni nokta kabul edilir, değilse kabul edilmez. Bu nokta yine rasgele değiştirilir, elde edilen nokta için aynı işlem ile seçim yapılır. Böylece daha kısa sürede fonksiyon minimizasyonu yapılabilir.. i başlangıç noktası (i = 0) seçilir, f ( i ) hesaplanır.. Nokta i+ = i + i şeklinde rasgele bir hareketle ötelenir, f ( i+ ) hesaplanır.. f ( i+ ) < f ( i ) ise yeni hareket noktası i+ olur, değilse yeni hareket noktası i olarak kalır. 4., işlemleri yeni hareket noktası için yinelenir. 5. Hareketin durduğu i zaman adımında fonksiyonun minimumu bulunmuş olacaktır. Bu ve benzeri yöntemlerin hepsi birden çok minimumlu fonksiyonlarda çalışmaz. Algoritma bulduğu ilk minimumda takılacak (yerel minimum), büyük ihtimalle global minimumu bulamadan sonlanacaktır. Gezgin satıcı problemi de böyle bir problemdir, problemde N tane noktayı birleştiren en kısa kapalı yol aranır ve nokta sayısı arttıkça problemin kesin çözümü imkansız hale gelir
Metropolis Algoritması Metropolis algoritması[] birden çok minimumlu fonksiyonun global minimumu bulunabilir. Metropolis Algoritması, N boyutlu uzaydaki bir noktayı argüman kabul eden fonksiyon minimumu bulma problemi için kullanılabilir. Bir önceki algoritmaya göre üstünlüğü, yerel minimumlarda takılmayıp diğer minimumlara doğru aramaya devam edebilmesidir. Minimum arama sırasında, fonksiyonun argümanı olan, N boyutlu uzayında hareket ettirilir, 0,,..., i, i+,... s noktaları boyunca olan hareket sonunda s aranan minimum değerini veren nokta olması beklenir.. Algoritma Olası bir algoritma şu şekildedir,. N boyutlu uzayda i başlangıç noktası (i = 0) seçilir, f ( i ) hesaplanır.. Nokta i+ = i + i şeklinde rasgele bir hareket gerçekleştirilir, f ( i+ ) hesaplanır.. f ( i+ ) < f ( i ) ise hareket kabul edilir, değilse (a) ω = ep[ (f ( i+ ) f ( i ))/T] önceden seçilen ve program boyunca sabit olan bir T değeri için hesaplanır. (b) 0 < r < olacak biçimde bir r rasgele sayısı üretilir. (c) ω > r ise hareket kabul edilir, değilse reddedilir. 4., işlemleri yeni hareket noktası için yinelenir. 5. Hareketin durduğu önceden belirlenmiş olan s zaman adımında (yeterince büyük seçilmişse) fonksiyonun bir minimumu bulunmuş olacaktır. Bu tür bir algoritmanın üstünlüğü, f ( i+ ) > f ( i ) olması durumunda da harekete belli bir ölçüde izin vermesi ve böylece olası bir yerel minimumda takılmayı önlemesidir.ancak böyle bir algoritmada kritik olan şey T parametresinin seçimidir. T seçiminde iki uç durum, T çok büyük seçilirse f ( i+ ) > f ( i ) durumunda algoritmadaki (c) adımı her zaman gerçekleneceğinden hareketin sonlandığı yer fonksiyonun belli bir minimum değeri olmayacaktır. T çok küçük seçilirse f ( i+ ) > f ( i ) durumunda algoritmadaki (c) adımı hiç bir zaman gerçeklenmeyecek bu durumda hareketin sonlandığı yer fonksiyonun bulunan ilk minimumu olacaktır. Bu durumda bu tür bir algoritmanın ilk bölümdeki algoritmadan bir farkı olmayacaktır.. Bir boyutlu probleme uygulama f() = cos(4.5 0.) + + 0. şeklindeki fonksiyona Metropolis Algoritmasını uygulayarak fonksiyonun minimumunu arayalım. Fonksiyon Şekil de görüldüğü gibi birden fazla minimuma sahiptir: Minimum arama başlangıç noktası = 0.5 olmak üzere farklı T değerleri için Metropolis Algoritmasının verdiği hareket ve bu hareketler sırasndaki en küçük fonksiyon değeri (f ( )) ile bu değeri veren değerleri ( ) aşağıdaki şekillerden ve tablodan görülebilir. Şekillerdeki siyah noktalar hareket sırasında ziyaret edilen noktaları göstermektedir. Şekil den görüldüğü gibi büyük sıcaklık değerleri için hareket uzayın geniş bir bölgesinde yer alırken, küçük T değerleri için hareket uzayın dar bir bölgesinde oluşmaktadır. Şekil (b) (d) (f) den görüldüğü gibi küçük T değerleri için hareket = 0.5 başlangıç noktasında başlamış ve bu noktanın hemen yakınındaki minimumda devam ederek burada bitmiştir. Bu yerel
.5 0.5 0 0.5.5 Şekil : f() fonksiyonu T f ( ) 0 0 0.94840000.000870786 0 0 0.476000 0.89897 0 5 0.940888000.00077458 0 5 0.66767000 0.465044 0 0 0.664904000 0.466945 0 0 0.66758000 0.4649707 Tablo : Farklı T değerleri için Metropolis Algoritmasının f() için verdiği fonksiyon minimumları minimumda yer alan 500 adımlık hareket ile minimum iyi bir şekilde belirlenmiş ancak hareket yerel minimumun dışına çıkarak bulunmak istenen global minimuma ulaşamamıştır. Şekil (a) (c) (e) de ise büyük T değerleri için hareket = 0.5 başlangıç noktasında başlamış ve birçok yerel minimumdan geçmiştir. 500 adımlık hareket uzayın geniş bir bölgesinde oluştuğundan bu yerel minimumlardan en düşüğü hassas bir şekilde belirlenememiştir. Hareketler rastlantısal olduğundan (a) ve (e) de hareket fonksiyonun global minimumunu ziyaret etmiş (c) de ise etmemiştir. Hareket global minimuma ulaşsa dahi, tüm hareket uzayın geniş bir bölgesinde olduğundan global minimumu hassas bir şekilde belirleyememiştir. Fonksiyon minimumu bulma probleminde kullanılan Metropolis Algoritmasında bir kaç kritik nokta vardır. T değerinin seçimi Hareketin adım sayısının seçimi Rasgele hareketin oluşturulması (özellikle adım büyüklüğü seçimi) Tüm bu değişkenler hakkında birkaç deneme sonunda sağlıklı bir seçim yapılabilir. Simulated Annealing Metropolis Algoritmasında, program boyunca T parametresinin sabit kalmasının sakıncalarından bir boyutlu probleme uygulama kısmında bahsedilmişti. T nin küçük seçilmesi, hareketin yerel bir minimumdan kurtulamamasını, büyük seçilmesi ise hareket global minimumdan geçse dahi global minimumu veren noktayı hassas bir biçimde bulamamasını getiriyordu.
Simulated Annealing ile bu sorunlar giderilir. Program, uzayda belli bir başlangıç vektöründen ikinci kısımda anlatıldığı gibi yüksek bir T parametresi için hareket başlatır. Hareket sırasında ziyaret edilen noktalardan en küçük f ( ) değerini veren nokta bir sonraki hareketin başlangıç noktası olur. Bir sonraki harekette T değeri belli bir miktar azaltılır. T nin belli bir değerine varıldığında program sonlanır.. Algoritma Simulated Annealing ile fonksiyon minimumu bulmada kullanulabilecek olası bir algoritma şu şekildedir,. T için başlangıç değeri seçilir.. N boyutlu uzayda i başlangıç noktası (i = 0) seçilir, f ( i ) hesaplanır.. Nokta i+ = i + i şeklinde rasgele bir hareket gerçekleştirilir, f ( i+ ) hesaplanır. 4. f ( i+ ) < f ( i ) ise hareket kabul edilir, değilse (a) ω = ep [ (f ( i+ ) f ( i ))/T] programın bu adımı için sabit olan T değeri ile hesaplanır. (b) 0 < r < olacak biçimde bir r rasgele sayısı üretilir. (c) ω > r ise hareket kabul edilir, değilse reddedilir. 5.,4 işlemleri yeni hareket noktası için yinelenir. 6. Fonksiyonun en küçük değerini veren bulunur ( ) 7. T azaltılır 8. Yeni T için -6 arası işlemler, hareketin başlangıç noktası 6 da bulunan olacak şekilde uygulanır. 9. T, programın başında belirlenen değere indiğinde program durur. Bu algoritmanın Metropolis Algoritmasına göre üstünlüğü şuradadır: T nin çok büyük değeri için başlayan hareket uzaydaki bir çok noktayı gezer. Bir sonraki harekette T belli bir miktar azaltıldığında hareket yine uzayın büyük -ama bir önceki harekete göre daha küçük- bir bölümünde ve bir önceki harekette bulunan minimum noktasından başlayarak gerçekleşir. Eğer bu başlangıç noktası global minimum değilse program hareketi sırasında bir önceki hareketten biraz düşük olan T sayesinde bir çok yerel minimumu aşacak ve global minimumu bulacaktır. Belli bir T den daha düşük değerdeki T ler için ise hareket artık uzayın küçük bir kısmında ve hep global minimum civarında olacak böylece program sonlandığında global minimumu veren iyi bir hassasiyet ile belirlenmiş olacaktır.. Bir boyutlu probleme uygulama f() = cos(4.5 0.) + + 0. şeklindeki fonksiyona Simulated Annealing Algoritmasını uygulayarak fonksiyonun minimumunu arayalım. Fonksiyonun davranışı Şekil den görülebilir. Program boyunca hareketlerin verdiği minimum değerler aşağıdaki tabloda görülebilir: Fiziksel sistemin hızlı soğutulması sonucu sistem her zaman en düşük enerjili duruma gelmeyebilir. Örneğin su hızlı bir biçimde soğutulursa uzayda mükemmel bir düzene sahip kristallerden oluşan duruma erişemeyebilir. Fakat soğutma işlemi yavaş yavaş yapılırsa sistem en düşük enerjili taban durumuna erişecektir. Annealing anlamı budur, simulated annealing yöntemi ise bu mantıkla çalışır 4
T f ( ) 0 9 0.5877 0.8899880407 0 8 0.5877 0.8899880407 0 7 0.494 0.897666645 0 6 0.980648 0.9999868 0 5 0.9554.0004886 0 4 0.94545.00084489 0 0.94545.00084489 0 0.94545.00084489 0 0.94545.00084489 0 0 0.946674.0008599 0 0.946674.0008599 0 0.94686.00086076 0 0.94958.0008774 0 4 0.94965.0008746 0 5 0.94965.0008746 0 6 0.94965.0008746 0 7 0.94965.0008746 0 8 0.94965.0008746 0 9 0.95076.0008768 0 0 0.95076.0008768 Tablo : Simulated Annealing algoritması ile çalışan program boyunca farklı T değerleri için bulunan minimum değerler ve bu değerleri veren noktalar Tablo ve Şekil den görüldüğü gibi algoritma T parametresinin değeri azaldıkça fonksiyonun global minimumunu veren değerine doğru yaklaşmaktadır. Fonksiyonun gerçek global minimumu = 0.95067555 dadır. Program ile bulunan değerin gerçek değerden sapması 0 5 mertebesindedir. Simulated Annealing Algoritmasındaki bir kaç kritik nokta şunlardır: T başlangıç değerinin ve azalma hızının seçimi Hareket sırasındaki rasgele adım büyüklük aralığının seçimi References [] Metropolis, N., A. W. Rosenbluth, M. N. Rosenbluth, A. H. Teller, and E. Teller, 95, J. Chem. Phys., 087 [] Numerical Recipes in Fortran 77, Secon Edition, Volume, William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery 5
.5 0.5 0.5.5.5 0.5 0 0.5.5 (a) T = 0 0 (b) T = 0 0 4.5 0.5 0 0.5.5.5 0.5 0 0.5.5 (c) T = 0 0 (d) T = 0 0.5 0.5 0 0.5.5.5 0.5 0 0.5.5 (e) T = 0 5 (f) T = 0 5 Şekil : Farklı T değerleri için Metroplis Algoritmasının verdiği 500 adımlık hareketler. Hareket sırasında ziyaret edilen noktalar küçük siyah noktalarla verilmiştir. 6
4.5 0.5 0 0.5.5.5 0.5 0 0.5.5 (a) T = 0 9 (b) T = 0 4.5 0.5 0 0.5.5.5 0.5 0 0.5.5 (c) T = 0 0 (d) T = 0 4.5 0.5 0.5.5 (e) T = 0 0 Şekil : Simulated Annealing algoritması ile çalışan program boyunca farklı T değerleri için 500 adımlık hareketler. Hareket sırasında ziyaret edilen noktalar küçük siyah noktalarla verilmiştir. 7