Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
GENETİK ALGORİTMALARA GİRİŞ
(III)
Nedim TUTKUN
Düzce Üniversitesi
Elektrik Elektronik Mühendisliği Bölümü
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
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
5
Uygunluk Orantılı Seçim/Rulet Çemberi
2.7
4.5
1.1 3.2
1.3
7.3
Uygunluk Değerleri
a
b
c
d
e
f
6
Uygunluk Orantılı Seçim/Rulet Çemberi
0.134
0.224
0.055
0.159
0.065
0.363
Bireysel Olasılık
a
b
c
d
e
f
7
Uygunluk Orantılı Seçim/Rulet Çemberi
0.134 0.358
0.413
0.572 0.637
1
Birikmeli Olasılık
a
b
c
d
e
f
8
Uygunluk Orantılı Seçim/Rulet Çemberi
Sayı String Uygunluk pi qi ri
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
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.
fsum= 𝑓𝑖𝑁𝑖
Adım 2: 0 ila fsum arasında rastgele bir sayı üretin. (Rs)
Adım 3: Popülasyon üyelerinin uygunluk değerlerini birbirine ekleyin.
Eğer birikmeli toplam Rs’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
Uygunluk Orantılı Seçim/Rulet Çemberi
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
Elitizm
Ç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 RL) 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 Pc olasılığı ile çaprazlama işlemine tabi
tutulurlar. Burada ilk olarak 0-1 aralığında rastgele bir sayı olan Rc, üretilir
ve bireyler, ancak ve ancak Rc ≤ Pc olduğunda çaprazlanırlar. Aksi
durumda çift, çaprazlama yapılmadan onaylanır. Genelde Pc değerleri 0.4
ila 0.9 aralığındadır. (Eğer Pc = 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 İşlemi
16
Çaprazlama: Tek Nokta
EBEVEYN
1 0 1 0 0 0 1 0 1 0 1
1 1 1 1 1 1 1 1 1 1 1
YAVRULAR
1 0 1 0 1 1 1 1 1 1 1
1 1 1 1 0 0 1 0 1 0 1
Tek nokta çaprazlama için 1 ila L-1 arasında rastgele bir
tamsayı (RL=4) üretilir.
L=11
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ığı, Pm binde
bir mertebesindedir. Yani her bin bitten sadece bir tanesi mutasyona
maruz kalır. Ancak Genetik Algoritma ile ilgili her şeyde olduğu gibi Pm
değerinin doğru ayarlanması probleme bağlıdır. Birçok araştırmacı Pm
değerini stringin bit uzunluğunun tersi 𝑃𝑚 =1
𝐿, bazıları ise 𝑃𝑚 =
1
𝑁 𝐿 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 İşlemi
19
Mutasyon: Bit Tersleme/Değer Değiştirme
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
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
Bit terslemeli mutasyonda 1 ila L arasında rastgele bir tamsayı
üretilir (RL=6) ve bu noktada bit değeri 0 ise 1, 1 ise 0 yapılır.
L=11
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
Başlangıç Popülasyonu
1. 1. 𝑙𝑀𝑘=1 𝑘
uzunluğunda rastgele binary stringlerden oluşan bir
başlangıç (g = 1) popülasyonu oluşturun. M burada bilinmeyenlerin
sayısıdır ve lk ise herhangi bir bilinmeyen olan k’ya ait binari string
uzunluğudur. Genel olarak lk ≠ lj.
2. Bilinmeyen parametreleri saptamak için, popülasyondaki her i
bireyini, zi,k, tamsayısı ile ve sonra ri,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 fi uygunluğuna dönüştürün.
21
Basit Genetik Algoritma
4. Uygunluk orantılı seçim ile bireylere ait çiftleri seçin ve Pc 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 Pm 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 Pm 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
24
E
Uygunluk Değerlerini Bul
İlk Popülasyonu
Oluştur
Seçim Yap
GA Operatörlerini Uygula
Yeterli mi?
DUR
G=G+1
-Çaprazlama
-Mutasyon
-Elitizm
H
Basit
Genetik
Algoritma
-Kod çöz
25
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);
26
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
27
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)
28
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);
29
Basit Genetik Algoritma
opt_ x= 0.1466 opt_y=85.8903