GENETİK ALGORİTMALARA GİRİŞ (III) Nedim TUTKUN Düzce Üniversitesi Elektrik Elektronik Mühendisliği Bölümü nedimtutkun@duzce.edu.tr Düzce Üniversitesi Elektrik&Elektronik Mühendisliği Bölümü Konuralp 81620 Düzce
Bölüm Konu Başlıkları Seçim Strateji Çeşitleri Uygunluk Orantılı Seçim Elitizm Çaprazlama Mutasyon 2
Uygunluk Orantılı Seçim/Rulet Çemberi Seçim operatörü oldukça basittir: en iyi %50 yeniden çoğalma için seçilir ve geri kalanlar atılır. Bu pratik bir yöntemdir ancak çok yaygın değildir. Bunun bir nedeni, en iyiyi çoğaltmak (en kötüyü engellemek) olmasına rağmen, iyi ve çok iyi arasında herhangi bir ayrım yapmamasıdır. Ayrıca, çok daha düşük bir olasılık ile sadece zayıf çözümlerin bir sonraki kuşağa ilerlemesi yerine, (nüfusun genetik çeşitliliğini azaltarak) basit bir şekilde onları yok eder. Ayrıca, çok daha düşük bir olasılık ile sadece kötü çözümlerin bir sonraki kuşağa aktarılmasından ziyade, (popülasyonun genetik çeşitliliğini azaltarak) basit bir şekilde onları elimine eder. Daha yaygın bir seçim operatörü, uygunluk orantılı veya rulet çemberi seçimidir. 3
Uygunluk Orantılı Seçim/Rulet Çemberi Bu yaklaşım ile seçilme ihtimali bir bireyin uygunluğu ile orantılıdır. Herhangi bir bireyin uygunluk değeri ile orantılı bölme büyüklüğüne sahip bir popülasyonun tamamının rulet çemberini oluşturduğu düşünülürse rulet çemberi ile olan benzerlik ortaya çıkar. Çember döndükten sonra şekilsel olarak "top" içeri atılır. Herhangi bir bölmeye sonradan top gelme ihtimali bölmenin yayı ile orantılıdır ve bu ilgili bireyin uygunluğudur. Sırası ile 2.7, 4.5, 1.1, 3.2, 1.3 ve 7.3 uygunluk değerlerine sahip 6 bireyden (a, b, c, d, e ve f) oluşan bir topluluğa ilişkin yaklaşım Şekilde gösterilmektedir. 4
Uygunluk Orantılı Seçim/Rulet Çemberi Uygunluk Değerleri 7.3 2.7 4.5 a b c 1.3 3.2 1.1 d e f 5
Uygunluk Orantılı Seçim/Rulet Çemberi Bireysel Olasılık 0.363 0.134 0.224 a b c d 0.159 e 0.065 0.055 f 6
Uygunluk Orantılı Seçim/Rulet Çemberi Birikmeli Olasılık 1 0.134 0.358 0.413 a b c 0.637 0.572 d e f 7
Uygunluk Orantılı Seçim/Rulet Çemberi Sayı String Uygunluk p i q i r i 1 a 2.7 0.134 0.134 0.941287 2 b 4.5 0.224 0.358 0.073296 3 c 1.1 0.055 0.413 0.278547 4 d 3.2 0.159 0.572 0.534955 5 e 1.3 0.065 0.637 0.78424 6 f 7.3 0.363 1 0.846523 20.1 1 8
Uygunluk Orantılı Seçim/Rulet Çemberi Bu operatörü uygulamak, göründüğünden daha kolaydır. Popülasyonun uygunluk değerlerinin toplamı ile tekerleğin çevresi verilmiş olup, top değeri 0 ile bu toplam arasındaki rastgele bir sayı ile gösterilir. Topun hangi bireye ait bölmeye düşeceğini bulabilmek için, popülasyon üyelerinin uygunluğu toplanır, ancak elde edilen yeni toplam rastgele üretilen sayı değerini aştığı zaman işlem durur. Tam bu noktada, eklenen son birey seçilmiş bireydir. Algoritma aşağıda özetlenmiştir: 9
Uygunluk Orantılı Seçim/Rulet Çemberi Algoritmanın Tanımı: Adım 1: Popülasyondaki bütün üyelerin uygunluk değerlerini toplayın. N f sum = i f i Adım 2: 0 ila f sum arasında rastgele bir sayı üretin. (R s ) Adım 3: Popülasyon üyelerinin uygunluk değerlerini birbirine ekleyin. Eğer birikmeli toplam R s den büyük olduğunda hemen durun. Son eklenen üyeyi seçilmiş üye olarak alın ve kopyasını bir sonraki jenerasyona geçirin. 10
Uygunluk Orantılı Seçim/Rulet Çemberi Bir çift bireyin geçip geçmemesi veya çaprazlama olup olmamasını belirlemek için seçim mekanizması iki kez (Adım 2) uygulanır. Seçim, N birey (popülasyon büyüklüğü, çift olduğu varsayılarak) seçilene kadar devam edilir. Burada, kullanılan seçim tipi φ değeriyle gösterilmiş olup; φ = ѓ, uygunluk orantılı (rulet çemberi) seçim stratejisini göstermektedir. 11
Uygunluk Orantılı Seçim/Rulet Çemberi Uygunluk orantılı veya rulet çemberi seçimi en uygun birey dahi olsa her hangi bireyin seçimi garanti etmez. En uygun birey diğerlerine göre çok çok daha iyi olmadıkça nadiren seçilmeyebilir. Seçilmeyen birey atılır. Bu şekilde uygunluk orantılı seçim ile çözülmesi düşünülen problem için muhtemel en iyi çözüm atılmış olur. Bu durum dezavantajlı gibi görünse de algoritmayı yavaşlattığı ve erken yakınsama yapmadan önce arama uzayında daha çok keşif imkanı sağladığından bazı problemlerin çözümü için avantajlı olabilir. Arama uzayının keşfi ile bulunanların kullanılması arasındaki denge Genetik Algoritma teorisinde devam edegelen bir tartışma konudur. 12
Elitizm Elit üyenin her bir jenerasyonda tutulması elitizm olarak adlandırılır ve sadece seçilmesi yeterli olmayıp aynı zamanda kopyasının çaprazlama ya da mutasyon ile bozulumaması gerekir. Elitizm ne kadar fazla kullanırsa algoritmada o kadar iyileşme sağlanabilir. Ancak işin sonunda gerçek optimum değeri bulmak için algoritmanın başarısız olma ihtimali söz konusu olabilir. Çoğu uygulamada jenerasyonlar arasında en iyiyi veya elit üyeyi kaybetmeyerek arama hızı büyük ölçüde arttırılabilir. Burada, elitizm έ ile gösterilir (yalnızca 0 ya da 1 değerini alabilir); eğer έ=1 ise elitizm uygulanır, eğer έ=0 ise elitizm uygulanmaz. 13
Çaprazlama İşlemi Çaprazlama, arama uzayında yeni parçaların keşfini mümkün kılan farklı çözümlere ait bilginin bir araya gelmesine olanak sağlayan bir yöntemdir. Tek nokta çaprazlama seçilen string çiftleri rastgele bir yerden kesilir (1 ile L -1 arasında rasgele bir sayı olan R L ) ve 2 yavru string oluşturmak için parçaları değiştirilir. Yeni popülasyon yapılan seçim ve çaprazlama ile N bireyden oluşur (başlangıç popülasyonu ile aynı sayıda olur). Daha sonra elit üye dışında tüm popülasyon üzerinde mutasyon işlemi yapılır (eğer elitizm seçeneği uygulandı ise). Bu işlem yapıldıktan sonra, eski topluluk yenisi ile değiştirilir ve üretim sayacı olan g bir artırılır. 14
Çaprazlama İşlemi Temel Genetik Algoritma, rekombinasyon işlemi için tek nokta çaprazlama kullanır (doğal hayatta, 1 ilâ 8 arasında çaprazlama noktası olduğu bildirilmiştir. Seçilen çiftler P c olasılığı ile çaprazlama işlemine tabi tutulurlar. Burada ilk olarak 0-1 aralığında rastgele bir sayı olan R c, üretilir ve bireyler, ancak ve ancak R c P c olduğunda çaprazlanırlar. Aksi durumda çift, çaprazlama yapılmadan onaylanır. Genelde P c değerleri 0.4 ila 0.9 aralığındadır. (Eğer P c = 0.5 ise, yeni popülasyonun yarısı seçim ve çaprazlama ile diğer yarısı ise çaprazlamasız oluşturulur.) Çaprazlama olmaksızın popülasyonun ortalama uygunluk değeri ƒ ave, en uygun üyenin ƒ max uygunluk değerine eşit olmasına kadar artacaktır. 15
Çaprazlama: Tek Nokta Tek nokta çaprazlama için 1 ila L-1 arasında rastgele bir tamsayı (R L =4) üretilir. EBEVEYN 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 1 L=11 YAVRULAR 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 0 1 16
Mutasyon İşlemi Doğada birçok süreç mutasyona neden olur ve en basit olanı replikasyon sırasında olan hatadır. Basit bir binari gösterimde mutasyonu uygulamak kısmen kolaydır. Her bir yeni jenerasyon ile her ziyaret edilen stringdeki her bit pozisyonu ile tüm popülasyon taranır ve çok nadiren 1 değeri 0 değerine döndürülür veya tam tersi yapılır. Mutasyon olasılığı, P m binde bir mertebesindedir. Yani her bin bitten sadece bir tanesi mutasyona maruz kalır. Ancak Genetik Algoritma ile ilgili her şeyde olduğu gibi P m değerinin doğru ayarlanması probleme bağlıdır. Birçok araştırmacı P m değerini stringin bit uzunluğunun tersi P m = 1 L, bazıları ise P m = 1 N L olarak almaktadır. 17
Mutasyon İşlemi Literatürde pek çok mutasyon türü önerilmektedir. Bazı çalışmalarda her bir bit pozisyonu ziyaret edilmekte, pozisyondaki bit rastgele 0 veya 1 yapılmakta ve mevcut değer yeni değerle değiştirilmektedir. Mutasyon problemin herhangi bir yerel optimum noktaya yakınsamayı engelleyebilmek için tercih edilmektedir. Mutasyon oranları genellikle düşük tutulmaktadır. Bunun nedeni çaprazlama sonucu elde edilen uyum değeri yüksek dizileri kaybetmemektir. Değer değiştirme en basit mutasyon yöntemi olarak bilir. Burada stringdeki herhangi bir bitin değeri 1 iken 0 ya da tersi yapılarak uygulanır. Kaydırma, Yerleştirme ve Karşılıklı Değişim yöntemleri diğer bilinen mutasyon çeşitleridir. 18
Mutasyon: Bit Tersleme/Değer Değiştirme Bit terslemeli mutasyonda 1 ila L arasında rastgele bir tamsayı üretilir (R L =6) ve bu noktada bit değeri 0 ise 1, 1 ise 0 yapılır. A STRİNGİ 1 2 3 4 5 6 7 8 9 10 11 1 1 1 1 0 0 1 0 1 0 1 L=11 B STRİNGİ 1 2 3 4 5 6 7 8 9 10 11 1 1 1 1 0 1 1 0 1 0 1 19
Başlangıç Popülasyonu Başlangıç popülasyonunun genellikle rastgele seçildiği daha önce ifade edilmesine rağmen bu konuda başka yaklaşımların da mümkün olduğu bilinmektedir. Bu yaklaşımlardan biri her birey için bir dizi popülasyon oluşturmak ve daha sonra en yüksek performans gösteren bireyleri alarak bir popülasyon oluşturmaktır. Alternatif olarak, yaklaşık çözümleri bulmak için başka yöntemlerle tahminler yapılarak söz konusu algoritma böyle noktalardan başlatılabilir. Şimdiye kadar tamsayı olmayan çok parametreli problemlerin nasıl ele alınacağı tanımlanmıştır. Bundan sonraki aşamada, mutasyon, seçim, çaprazlama ve elitizm operatörlerinden oluşan işlemleri tek bir algoritmada bir araya getirilebilir. Basit GA bu amaçla kullanılan bir algoritmadır. 20
Basit Genetik Algoritma M 1. 1. k=1 lk uzunluğunda rastgele binary stringlerden oluşan bir başlangıç (g = 1) popülasyonu oluşturun. M burada bilinmeyenlerin sayısıdır ve l k ise herhangi bir bilinmeyen olan k ya ait binari string uzunluğudur. Genel olarak l k l j. 2. Bilinmeyen parametreleri saptamak için, popülasyondaki her i bireyini, z i,k, tamsayısı ile ve sonra r i,k reel sayılara dönüştürün. 3. Eldeki problem için her bir bireyi sırası ile test edin. Her bir bireyin performansını amaçç fonksiyonunu veya uygunluk fonksiyonu (Ω i ) kullanarak daha iyi çözümlerin daha yüksek bir uygunluğa karşılık geldiği bir f i uygunluğuna dönüştürün. 21
Basit Genetik Algoritma 4. Uygunluk orantılı seçim ile bireylere ait çiftleri seçin ve P c tek nokta çaprazlama olasılığını uygulayın. N tane bireyden oluşan yeni geçici bir popülasyon oluşana kadar tekrar edin. 5. Geçici popülasyondaki her bir stringin 0 larını nadiren 1 e çeviren veya tersini yapan mutasyon operatörü uygulayın. Herhangi bir bitin mutasyona uğrama ihtimali P m ile gösterilir ve bu değer çok küçüktür (ör. 0.001). 6. Eğer elitizm gerekiyorsa ve geçici popülasyon en azından elit bireyin uygunluk değerine sahip bir bireyin kopyasını içermiyor ise, geçici popülasyonun elit bireyini popülasyondaki her hangi bir birey ile rastgele değiştirin. 22
Basit Genetik Algoritma 7. Eski popülasyonu yeni geçici popülasyon ile değiştirin. 8. Jenerasyon sayacını birer birer artırın (örn. g = g + 1) ve G kadar jenerasyona ulaşıncaya kadar Adım 2 yi tekrar edin. 9. Herhangi bir bitin mutasyona uğrama ihtimali P m ile gösterilir ve çok küçüktür (ör. 0.001). 10. Eğer elitizm gerekli ise ve geçici topluluk en düşük seviyede uygunluğa sahip bir elit üyeden oluşan bir birey kopyası içermiyor ise, geçici topluluğun bir üyesini elit bir üyeyle değiştirin (rastgele olarak). 23
Basit Genetik Algoritma İlk Popülasyonu Oluştur Uygunluk Değerlerini Bul -Kod çöz G=G+1 Seçim Yap GA Operatörlerini Uygula -Çaprazlama -Mutasyon -Elitizm H Yeterli mi? E DUR 24
Basit Genetik Algoritma clear;clc; a=0;b=10; gens=100;bit=10;pm=0.001;pc=0. 65;N=100; x=[];x1=[];x2=[];x3=[];f=[];y= []; x=genbin(n,bit); y=binvreal(x,a,b); f=fitval(y); 25
Basit Genetik Algoritma (Basit Matlab kod) for g=1:gens fprintf('g: %.0f\n',g); x1=rulet(x,f); x2=xover(x1,pc); x3=mutate(x2,pm); x=x3; y=binvreal(x,a,b); f=fitval(y); end % for gener 26
Basit Genetik Algoritma [maxfit ind]=max(f); optxb=x(ind,:); % used to show it on the graphics optx=binvreal(optxb,a,b); clc; disp('the results:'); disp(optx); disp(fun(optx)); % plot the graph of the function test11(optx) 27
Basit Genetik Algoritma %Uygunluk fonksiyonu function y=fitval(x) y=100*sin(10*x).*exp(-x); ymin=min(y); y=y+1.01*abs(ymin); % optimize edilecek fonksiyon function y=fun(x) y=100*sin(10*x).*exp(-x); 28
Basit Genetik Algoritma opt_ x= 0.1466 opt_y=85.8903 29