GENETİK ALGORİTMALAR (GA) Genetik algoritmalar, canlıların çiftleşmesi sonucunda kendi özelliklerini bir sonraki nesle aktarma yeteneklerini, güçlü olanın yaşama şansının yüksek olması ve bazı durumlarda önceden nasıl olacağı bilinmeyen değişimlerin bir hesaplama yöntemi içerisinde bir arada kullanılması sonucunda ortaya çıkmış bir yöntemdir. GA GA yöntemi ilk olarak, John Holland ve arkadaşlarının yaptığı çalışmalarda 1970’li yıllarda ortaya çıkmıştır (SGA). GA’nın temel amacı, fazla sayıda sınırlama içeren ve karmaşık optimizasyon sorunlarının çözümlerini, yazılımlar yardımıyla araştırmaktır. Konuyla ilgili Goldberg, 1989 yılında “Genetic Algorithms in Search, Optimization, and Machine Learning” adlı klasik sayılacak eseri yayınlamıştır. Bu eserle birlikte, konu üzerine yapılan çalışmalar büyük hız kazanmıştır. GA nedir? GA, rastsal arama tekniklerini kullanarak çözüm bulmaya çalışan, parametre kodlama esasına dayanan bir arama tekniğidir. Bir veri grubu içinde özel bir veriyi bulmak için kullanılır. GA – Klasik Optimizasyon GA parametrelerin kendileri ile değil, parametre takımının kodlanmış bir haliyle uğraşırlar. GA amaç fonksiyonunun türevlerini ve bir takım ek bilgileri değil, doğrudan amaç fonksiyonunun kendisini kullanırlar. Genetik algoritmalar aramaya tek bir noktadan değil, noktalar kümesinden başlar. Bu nedenle çoğunlukla yerel en iyi çözümde sıkışıp kalmazlar. GA’da deterministlik değil rastlantısal geçiş kuralları kullanılır. GA Adımları 1. 2. 3. 4. 5. 6. Başlangıç popülasyonunu rastlantısal olarak üret. Popülasyon içindeki tüm kromozomların amaç fonksiyonu değerlerini hesapla. Tekrar üreme, çaprazlama ve mutasyon operatörlerini uygula. Oluşturulan her yeni kromozomun amaç fonksiyonu değerlerini bul. Amaç fonksiyonu değerleri kötü olan kromozomlar popülasyondan çıkar. 3-5 arasındaki adımlar tekrar et. Akış Diyagramı Kodlama Türleri Çaprazlama Türleri Mutasyon Türleri GA terimleri Gen Kalıtsal molekülde bulunan ve organizmanın karakterlerinin tayininde rol oynayan kalıtsal birimlere denir. Yapay sistemlerde gen, kendi başına anlamlı bilgi taşıyan en küçük birim olarak tanımlanır. Kromozom (Birey) Birden fazla genin bir araya gelerek oluşturduğu diziye denir. Kromozomlar, alternatif aday çözümleri gösterirler. GA terimleri Popülasyon Kromozomlardan oluşan topluluğa denir. Popülasyon, geçerli alternatif çözüm kümesidir. Popülasyondaki birey sayısı (kromozom) genelde sabit tutulur. GA’da popülasyondaki birey sayısı ile ilgili genel bir kural yoktur. Popülasyondaki kromozom sayısı arttıkça çözüme ulaşma süresi (iterasyon sayısı) azalır. GA terimleri Kodlama Kodlama GA’nın çok önemli bir kısmını oluşturmaktadır. Probleme GA uygulanmadan önce, verinin uygun şekilde kodlanması gerekmektedir. Kurulan genetik modelin hızlı ve güvenilir çalışması için bu kodlamanın doğru yapılması gerekmektedir. GA kodlama türleri İkili Kodlama Her kromozom ikili diziye sahiptir { 0, 1 } Bu dizideki her bit, çözümün belli karakteristiğini temsil eder veya tüm dizi bir sayıyı temsil eder. Kodlamada en sık kullanılan yöntemdir. Örnek { 10101001 } GA kodlama türleri Permütasyon Kodlama Düzenleme problemlerinde kullanılır. Burada her kromozom, sayıları bir sırada temsil etmektedir. Permütasyon kodlama, gezgin satıcı ve çizelgeleme problemleri için kullanışlıdır. Kromozom A 78941 Kromozom B 87914 GA kodlama türleri Değer Kodlama Gerçek sayılar gibi karmaşık değerlerin kullanıldığı problemlerde, ikili kodlama zor olduğu için doğrudan değer kodlanması kullanılabilir Kromozom A 1.2324 3.5354 4.6465 3.5556 Kromozom B Doğu, Batı, Güney, Kuzey GA kodlama türleri Ağaç Kodlama Bu yöntem gelişen, değişen programlar veya ifâdeler için kullanılır. Örneğin GA. Ağaç kodlamada her kromozom, bâzı nesnelerin (örneğin fonksiyonlar ya da programlama dilindeki komutlar gibi) ağacıdır. / z g 3 (z/3)-g Seçim türleri Rulet-Çember Seçimi En basit seçim yöntemi olarak bilinmektedir. Uygulanışı : Tüm fertler birbirine bitişik bir şekilde düz bir çizgi üzerine dizilirler. Her bir ferde ilişkin bölümün uzunluğu, onun uygunluk değeri kadar olur. Rasgele sayı üretilir ve rasgele sayı hangi bölüm içerisine gelirse, o bölümün ait olduğu fert seçilir. İşlem ulaşılacak popülasyonun gerekli adedi elde edilene kadar devam eder. Seçim türleri Rank Seçimi En iyi kromozomun uygunluk değeri çok yüksek ise, Rulet-Çemberi seçim yöntemi problem yaratabilir(Sürekli yüksek olasılığa sahip kromozom seçilecek). Bu nedenle, Rank seçim yöntemi uygulanabilir. Popülasyon uygunluk değerine göre tersten sıralanır. Yani en iyi kromozom N adetlik bir popülasyonda N değerini alır Seçim bu değerlere göre yapılır. Rulet-Çember Seçimi Rank Seçimi Öncesi Rank Seçimi Sonrası Seçim türleri Kararlı Hal Seçimi (Yerine Geçme) Bu seçimin ana düşüncesi, kromozomların büyük kısmının bir sonraki nesilde hayatta kalmak zorunda olmasıdır. Yeni çocuklar oluşturmak için her nesilde UD yüksek birkaç kromozom seçilir. UD düşük bâzı kromozomlar atılır ve yeni çocuk onun yerine yerleştirilir. Popülasyonun geri kalan kısmı yeni nesilde hayattadır. Bu yöntemde alt popülasyon oluşturulduktan sonra uygunluklar hesaplanır, en kötü kromozomlar yerlerini başlangıç popülasyonundaki en iyi kromozomlara bırakır. Çaprazlama Çaprazlama, iki kromozomun (çözümün) birbirleri arasında gen alışverişinde bulunup iki yeni kromozom oluşturmasıdır. Genetik algoritmadaki en önemli parametrelerden bir tanesidir. İkili yöntemle kodlanmış değişkenlerin yaptıkları üreme faaliyeti, kromozomların çaprazlamasına benzemesi dolayısıyla böyle adlandırılmaktadır. Eğer kodlamada gerçek değerler kullanılıyorsa, klasik çaprazlama yöntemi yerine daha farklı yöntemler kullanılmaktadır. Seçim yöntemi ile yapay seçim sonucunda elde edilen yeni popülasyon dizisinden rastsal olarak iki kromozom seçilir ve karşılıklı çaprazlama işlemine tâbi tutulur. 1-Noktalı Çaprazlama (İkili Kod) Pc (0.6, 0.9) aralığındadır N-Noktalı Çaprazlama (İkili Kod) Düzenli Çaprazlama (İkili Kod) Tek Aritmetik Çaprazlama (Değer Kod) Atalar x1,…,xn ve y1,…,yn (k) gelişigüzel seçilir x1 , ..., xk , yk (1 ) xk , ..., xn child1 : Diğer child için tersidir. = 0.5 için Basit Aritmetik Çaprazlama (Değer Kod) x , ..., x , y (1 ) x , ..., y (1 ) x 1 k k 1 k 1 n n = 0.5 için Bütün Aritmetik Çaprazlama (Değer Kod) a x (1 a) y = 0.5 için Sıralama çaprazlama (OX) (Permutasyon Kod) Çaprazlama noktası seç, aynısını kopyala Gerisini 1,9,3,8,2 sırasıyla ikinciden al Parçasal eşleşmeli çaprazlama (PMX) (Permutasyon Kod) Adım 1 Adım 2 Adım 3 Çevrim Çaprazlama (CX) (Permutasyon Kod) Adım 1: Çevrimleri bul Adım 2: Değişimli çevrimleri çocuğa kopyala Mutasyon pm =mutasyon oranı (1/pop_buyuk and 1/ Kromozom_uzunlugu) Mutasyon Oranı, mutasyon olasılığını gösteren orandır. Amaç mevcut kromozomların genlerinin bir ya da birkaçını değiştirerek yeni kromozomlar elde etmektir. Genelde mutasyon olasılığı (0.01 gibi) düşük tutulmaktadır. Bu nedenle mutasyon etkileri kromozomlarda az görülmektedir. Mutasyon sırasında kromozomdaki gen sayısı değişmez, sabit kalır. Mutasyon yapılmasının bir başka amacı da, popülasyondaki çeşitliliğin azalmamasını sağlamaktır İkili kodda mutasyon Değer kodda mutasyon x x1 , ..., xl x x1, ..., xl xi , xi LBi ,UBi Permutasyon kodda mutasyon Ekleme mutasyon Yer değiştirme mutasyon Ters mutasyon Karışık mutasyon GA Çevrimi Çaprazlama Nesil i X1i 1 1 0 0 f = 36 X2i 0 1 0 0 f = 44 X3i 0 0 0 1 f = 14 X4i 1 1 1 0 f = 14 X5i 0 1 1 1 f = 56 X6i 1 0 0 1 f = 54 X6i 1 0 00 1 0 1 00 00 X2i X1i 0 11 00 00 1 0 11 11 11 X5i X2i 0 1 0 0 0 1 1 1 X5i Nesil (i + 1) X1i+1 1 0 0 0 f = 56 X2i+1 0 1 0 1 f = 50 X3i+1 1 0 1 1 f = 44 X4i+1 0 1 0 0 f = 44 X5i+1 0 1 1 0 f = 54 X6i+1 0 1 1 1 f = 56 Mutasyon X6'i 1 0 0 0 X2'i 0 1 0 1 0 X1'i 1 0 1 1 1 1 1 X1"i X5'i 0 1 0 1 0 1 X2i 0 1 X5i 0 1 1 1 0 0 1 0 X2"i Örnek: Fonksiyon Maksimizasyonu Problem Amaç : f(x)=x², x[0, 31] şeklinde verilen bir fonksiyonun. : Verilen aralıkta fonksiyonun maksimizasyonu. Adım 1: x’in 0 ve 1'lerden oluşan 2 tabanındaki gösterilimi yapılmaktadır 0 : “00000” 31 : “11111” olacaktır. Adım 2: Toplumun birey sayısı n:4 olarak seçilmiştir. Toplumu oluşturan dört birey, her biri 5 bit uzunluğunda birer kromozomla temsil edildiği için toplam 20 kere yazı tura atmak suretiyle belirlenmiştir. Birey 1: 01101, x = 13 , x² = 169 Birey 2: 11000, x = 24 , x² = 576 Birey 3: 01000, x=8, x² = 64 Birey 4: 10011, x = 19 , x² = 361 Adım 3: Belirlenen bireyler için f(x)=x² ile uygunluk değerlerini hesaplanır. Dört bireyin toplam uygunluk değerleri; 169 + 576 + 64 + 361 = 1170 Her bir bireyin rulet tekerleğinde kaplayacağı alan; Birey 1: 169 / 1170 = 0.14 : %14 Birey 2: 576 / 1170 = 0.49 : %49 Birey 3: 64 / 1170 = 0.06 : %6 Birey 4: 361 / 1170 = 0.31 : %31 Bu değerler, rulet tekerleğinin her çevrilişinde hangi olasılıkla hangi bireyin seçileceğini belirtir. Adım 4: Toplumda ki birey sayısının sabit kaldığı varsayıldığından, rulet tekerleği 4 kere çevrilerek çiftleşme havuzu oluşturulur. Birey 1 : 1 kere Birey 2 : 2 kere Birey 3 : 0 kere Birey 4 : 1 kere Elde edilen çiftleşme havuzu şu şekildedir; Aday 1 : 01101 (Birey 1) Aday 2 : 11000 (Birey 2) Aday 3 : 11000 (Birey 2) Aday 4 : 10011 (Birey 4) Adım 5: Çiftleşme havuzu belirlendikten sonra iki aşamalı çaprazlama uygulanır. İlk aşamada adaylar çiftleşmek üzere rasgele olarak eşlenirler. Rasgele eşleştirme sonucunda ( Aday 1, Aday 2) ve (Aday 3, Aday 4) ikili grupları oluşturulur. İkinci aşamada her ikili grup için birer kere zar atılarak çaprazlaşmanın oluşacağı nokta belirlenir. Zar atılarak 1. Grup için k=4 ve 2. Grup içinde k=2 olarak belirlenmiştir. Çiftleşme grubu 1: (k=4) Aday 1 : 0110/1 Aday 2 : 1100/0 Çiftleşme grubu 2 : (k=2) Aday 3 : 11/000 Aday 4 : 10/011 oluşan Birey 1 : 01100 oluşan Birey 2 : 11001 oluşan Birey 3 : 11011 oluşan Birey 4 : 10000 Adım 6: Son aşama olan mutasyon işlemi bitler düzeyinde uygulanır. Birey 3’ün 2 numaralı bitinde mutasyon işlemi tapılmaktadır. Oluşan Birey 3 : 11011 Mutasyon sonucu oluşan Birey 3 : 10011 Bu adımın tamamlanmasıyla bir sonraki kuşağı oluşturacak toplumun bireyleri belirlenmiş olur. Yeni toplum şu şekildedir; Birey 1 : 01100, Birey 2 : 11001, Birey 3 : 10011, Birey 4 : 10000, x=12, x=25, x=19, x=16, x²=144 x²=625 x²=361 x²=256 Bu örnekte tek bir iterasyon yapılmış ve başlangıç toplumundan bir sonraki kuşak oluşturulmuştur ancak genetik algoritmanın çalışmasının tam olarak gözlenebilmesi için tek bir iterasyon yeterli değildir. Problem : Rasgele seçilmiş 8 bitlik 4 bireyden en iyi bireyi oluşturmak. Başlangıç : a : 00000110 b : 11101110 c : 00100000 d : 00110100 Amaç : 11111111 Uygunluk kriteri: Her dizinin barındırdığı 1 değeri Çaprazlama : Rasgele Mutasyon : Rasgele GA Örnek (Özet) max x2 x={0,1,…,31} Çaprazlama Mutasyon