01-12-2006 Ümit Akıncı Fonksiyon Optimizasyonunda Genetik Algoritmalar 1 Fonksiyon Optimizasyonu Fonksiyon optimizasyonu 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 (~x) fonksiyonunun sayısal yöntemlerle minimumunu bulmak oldukça zor bir problemdir1 . Fonksiyonun alabileceği değerler uzayı büyük olduğunda bu problem daha da zorlaşır. Bu tip problemler için daha önce simulated annealing yöntemi incelenmişti ve orada minimizasyon probleminin numerik çözümündeki güçlüklerden de bahsedilmişti. f (~x) fonksiyonunun minimumunu bulmak ile −f (~x) fonksiyonunun maksimumunu bulmak aynı şey olduğu için genel olarak fonksiyonun optimumunu bulma probleminden bahsedilebilir. 2 Temel Kavramlar Genetik Algoritma 1975 de[1] ortaya atılmış ve 90’ların ortasından itibaren çeşitli problemlerde ve disiplinlerde yaygın olarak kullanılmaya başlanmıştır. Temelde doğadaki evrim ile birebir benzerdir, temelini canlıların evriminden almıştır. Problemin aranan çözümü -simulated annealing de olduğu gibi- olası çözümlerin arasından probleme bağlı geliştirilen algoritma ile aranır. Bu arama, olası çözümlerin bulunduğu uzayda rasgele elemanlardan başlayan ve aranan elemana (çözüme) doğru giden bir harekettir. Hareketi algoritma belirler. Genetik algoritmada bu uzayın elemanları (olası çözümler) ikilik (binary) ya da başka bir sistemde (Gray vb.) yazılmış kromozom benzeri dizilerle temsil edilir. Problem çözümlerinin temsili problem bağımlıdır. Bu olası çözümlerin oluşturduğu topluluk popülasyondur. Algoritma ile popülasyon evrim geçirir ve ve her evrim basamağında popülasyon elemanları olan çözümler aranan çözüme biraz daha yaklaşır. Algoritmada iki şey belirlenmiş olmalıdır 1. Problem çözümlerinin kodlanması 2. Problem çözümlerinin aranan çözüme yakınlığının ölçüsü olan uygunluk fonksiyonu (fitness function) 2.1 Kodlama İkilik sistemdeki kodlama kullanılan kodlama yöntemlerinden biridir. Onluk sistem günlük hayatta genelde kullanılan sistemdir abcd = a103 + b102 + c102 + d100 (1) 1 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 1 Burada a, b, c, d, [0, 9] aralığında rakamlardır. Benzer olarak ikilik sistemde yazılmış bir dizinin onluk sistemdeki değeri xyzt = x23 + y22 + z22 + t20 (2) dir ve burada x, y, z, t, [0, 1] aralığında rakamlardır. Genelde kullanılan onluk sistemdeki sayılar ikilik sisteme çevrilerek elde edilen diziler genetik algoritma ile çözümde kullanılabilir. Örneğin, 13 = 1 ∗ 23 + 1 ∗ 22 + 0 ∗ 21 + 1 ∗ 20 , 2.2 13 ≡ 1101. (3) Uygunluk fonksiyonu Popülasyondaki bir elemanın (olası bir çözümün) aranan elemana (gerçek (aranan) çözüme) yakınlığının ölçüsünü verecek şekilde seçilmiş fonksiyondur. Optimizasyon problemlerinde bu fonksiyon, optimumu aranan fonksiyon olarak seçilebilir. f (~x) fonksiyonunun maksimum değeri aranıyor olsun. Başlangıç popülasyonunda -çözüm aralığında rasgele seçilmiş- bulunan N tane eleman ~x1 , ~x2 , . . . , ~xN ≡ {~xi }, i = 1 . . . N bulunsun. fi ≡ f (~xi ) olmak üzere, i. elemanın uygunluğu, f¯ = N X fi (4) i=1 olmak üzere fi f¯ (5) ile verilir. Bu durumda f¯ popülasyonun uygunluğunun bir ölçüsü olacaktır. 3 Algoritma Algoritma, var olan bir popülasyonu (olası çözümleri) aşağıdaki adımlarla uygunluğu daha yüksek olan bir popülasyona (gerçeğe daha yakın olası çözümlere) evirir. Burada özel olarak genetik algoritmanın fonksiyon optimizasyonunda kullanımı verilecektir. f (~x) fonksiyonunun [a, b] aralığında maksimumu aranıyor olsun. 1. Başlangıç popülasyonunun oluşturulması, ve uygunlukların hesaplanması • {~xi }, i = 1 . . . N ∀xi ∈ [a, b] • Tüm ~xi ler seçilen kodlamaya göre kodlanır • Tüm ~xi ler için fi ve buradan da sistemin uygunluğu f¯ (4) den hesaplanır, böylece popülasyondaki tüm elemanlar için uygunluklar (fi /f¯) hesaplanabilir 2. Popülasyonun evrimi • Popülasyondaki uygunluğu yüksek elemanlar seçilerek ara popülasyon oluşturulur, bunun için bir yol şudur: – (x, y 0 − 9 arası rakamlar olmak üzere) uygunluğu x.y olan elemandan 1.0 olasılığıyla x tane eleman, 0.y olasılığıyla x + 1 tane eleman ara popülasyona alınır. 2 – Yani bu elemandan ara popülasyona x tane alınır, bir tane daha alınma olasılığı 0.y dir. 2 – Uygunluğu 0.y olan elemanda ara popülasyona 0.y olasılığıyla alınır • Ara popülasyondan rasgele seçilen iki eleman pb olasılığıyla birleştirilerek iki yeni eleman oluşturulur (crossover) – A, B iki eleman olmak üzere, her ikiside rasgele bir yerden bölünür. A dan, A1 , A2 ve B den, B1 , B2 olmak üzere iki parça oluşur. A1 ile B1 , A2 ile B2 aynı uzunluktadır. Yeni iki eleman A1 ile B2 nin ve B1 ile A2 nin birleşiminden oluşacaktır. Örneğin 00111 ve 11000 şeklindeki iki eleman 3. noktalarından birleştirilerek 00100 ve 11011 şeklinde iki yeni eleman oluşturur. – Bu birleşmenin olup olmayacağı pb oalsılığıyla belirlenir, yani r, [0, 1] aralığında rasgele bir sayı olmak üzere r < pb ise birleşme olur, değilse olmaz. Son durumda iki eleman da aynen sonraki popülasyona alınacaktır. – Oluşan elemanlar pm olasılığıyla mutasyona uğrar. Mutasyon sonucu bir elemandaki bir bit ters çevrilir. Örneğin 000111 şeklindeki bir eleman mutasyon sonucu 001111 şeklinde dönüşebilir. Burada 3. bit ters çevrilmiştir. 3. Ara popülasyondan yukarıdaki gibi oluşturulan N elemanlı sonraki popülasyon yine 2. deki işlemlerle evrilir. Seçilen durma kriteri gerçekleştiğinde elde edilen popülasyon elemanları aranan çözümü temsil eden elemanlar olacaktır. pb ve pm olasılıkları program boyunca sabittir ve tipik değerleri sırasıyla 0.7 − 0.8, 0.05 − 0.1 civarındadır. 4 Bir Boyutlu Probleme Uygulama f = 20 + 20cos(2.2x + 0.1) + x fonksiyonunun (0, 31) aralığında tamsayı maksimumunu arayalım. Gerçek çözüm x = 31 dir. Programda pb = 0.7, pm = 0.1, N = 10 elemanlı popülasyonlar ve 100 evrim basamağı kullanılmıştır. Çözüm uzayı 32 elemanlıdır ve 0 − 31 arası tamsayıları içerir. Kodlama ikilik tabanda yapılmıştır ve 5 bitlik diziler kullanılmıştır. Uygunluk fonksiyonu olarak maksimumu aranan f fonksiyonu kullanılmıştır. Programda üretilen başlangıç poopülasyonu ve uygunluk değerleri tablodadır. ilk adımda uygunluk değeri yüksek olan 29(4), 26(2), 19(3), 13(1), 10(1) elemanlarından parantez içinde belirtiklen sayılarda ara popülasyona seçilmiş ve bunlardan rasgele seçilen elemanların pb olasılığıyla birleşmesi ve oluşan elemanların pm olasılııyla mutasyon geçirmesi sonucu bir sonraki popülasyon elemanları 31(1), 29(1), 27(2), 25(3), 21(1) yine parantez içinde belirtilen sayılarda oluşturulmuştur. Ilk adım sonrasında popülasyonun uygunluk değeri 42.88 e yükselmiştir. İlk popülasyonda olmayan 31, 27, 25, 21, 18, 14 olası çözümlerinin ortaya çıkması birleşme ve mutasyon sonucudur, 1, 7 gibi ilk popülasyonda olan ve uygunluğu düşük olan çözümlerin de elenmiş olması yine algoritmadaki seçim ile olmuştur ve doğadaki ”doğal seleksiyon” ile birebir benzerdir. 2r [0, 1] arası üretilen rasgele sayı olmak üzere r < 0.y ise alınır 3 60 50 40 30 20 10 0 5 10 15 20 25 30 x Şekil 1: f = 20 + 20cos(2.2x + 0.1) + x fonksiyonunun (0, 31) aralığındaki davranışı x 7 29 1 19 10 19 13 29 26 19 kodlama 00111 11101 00001 10011 01010 10011 01101 11101 11010 10011 fi /f¯ 0.24 1.92 0.25 0.96 0.33 0.96 0.48 1.92 1.98 1.96 Tablo 1: Örnek problem için başlangıç popülasyonu ve elemanların uygunluk değerleri, popülasyonun uygunluk değeri 30.55 Program boyunca popülasyonun uygunluk değerinin değişimi aşağıdaki grafikte görülebilir. Evrim sürecinde zaman ilerledikçe popülasyondaki elemanların temsil ettiği çözümler de gerçek (aranan) çözüme yaklaşmaktadır. Popülasyonun içerdiği elemanların gerçek (aranan) çözüme yakınlığının ölçüsü olan popülasyonun uygunluk değerinin zamanla değişiminden (Şekil 2) bu görülebilir. Şekil 3 den de ilerleyen evrim basamaklarında, popülasyon elemanı olan olası çözümlerin (şekildeki siyah noktalar), gerçek çözüme yaklaştığı görülebilir. References [1] Holland J., Adaptation in natural and artificial systems, 1975, University of Michigan Pres. 4 65 60 55 50 45 0 20 40 60 80 100 Şekil 2: 100 adımlık evrim boyunca popülasyonların uygunluk değerlerinin zamanla değişimi 5 60 60 50 50 40 40 30 30 20 20 10 10 0 5 10 15 20 25 30 0 (b) t = 5 50 50 40 40 30 30 20 20 10 10 10 15 20 25 30 0 15 (c) t = 10 (d) t = 50 50 50 40 40 30 30 20 20 10 10 10 10 x 60 5 5 x 60 0 15 (a) t = 0 60 5 10 x 60 0 5 x 15 20 25 30 0 5 10 15 x x (e) t = 75 (f) t = 100 20 25 30 20 25 30 20 25 30 Şekil 3: Evrim boyunca farklı zaman adımlarında popülasyondaki elemanların temsil ettiği çözümler 6