Fonksiyon Optimizasyonunda Genetik Algoritmalar 1 Fonksiyon

advertisement
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
Download