Anasayfa / Bilgisayar Mühendisliği / Genetik Algoritma

Genetik Algoritma

Genetik Algoritma ve Evrimsel Hesaplama

Genetik algoritma populasyon tabanlı stokastik bir algoritmadır. Her birey problemin çözümü olmaya adaydır. Bireyleri değerlendirme fonksiyonu probleme yönelik olarak çalışan en önemli kısımdır. Doğal seçim işlemi, uygunluk değeri en yüksek bireyin seçilmesini sağlar.

Populasyon: Çözüm kümesini oluşturan bireylerin tümüdür.

Mutasyon: Bir kromozomda rasgele yapılan değişikliktir.

Mating: Bireyler arasındaki eşlemedir.

Kromozom: Çözüm için kullanılan bireylerdir.

Populasyon→Eşleme Havuzu→Seçilen eşler→Eşleme→Yeni Nesil→Yeni Populasyon

Algoritmanın Çalışması

1- Başlangıç populasyonunu oluştur.

2- Her kromozomu uygunluk fonksiyonunda değerlendir.

3- Yeni populasyonlar için yeni kromozomlar oluştur. (Seçme, Çaprazlama, Mutasyon, Elitizm)

4- 2. ve 3. adımı bir çözüm bulunancaya kadar ya da belirli iterasyona gelene kadar tekrarla.

5- En iyi kromozomu çözüm olarak al.

Genetik Algoritmanın Performansını Etkileyen Faktörler

-Kromozom sayısı artarsa çalışma süresi artar. Azaltmak çeşitliliği yok eder.

– Mutasyon oranı yüksek bir değer olursa kararlı noktaya erişmek zor olur.

– Kaç noktalı çaprazlama yapılacağı faydası açısından önemlidir.

– Bireylerin değerlendirilmesi performansı etkiler.

– Uygunluk değerlendirmesinin yapılışı: Eğer tam bir değerlendirme fonksiyonu oluşturulmamışsa çalışma süresi uzar hatta hiçbir zaman çözüm bulunamayabilir.

Genetik Algoritmanın Avantajları

– Tek çözüm değil birden fazla optimum çözüm elde edilir.

– Çok sayıda parametrelerle çalışma imkanı olması.

– Amaç fonksiyonunu geniş bir spektrumda araştırması

– Karmaşık amaç fonksiyonu parametrelerini optimize eder.

İşlemler

– Çözümün vey bireyin gösterimi ve başlangıç populasyonunun oluşturulması

– Bireylerin değerlendirilmesi

– Bireylerin yeni topluluk için seçilmesi

– Yeni bir jenerasyon oluşturma

Populasyon Oluşturma

Bilinen bir çözüm kümesi alınır. Rasgele bireyler oluşturulur. Belirli kriterleri sağlayan bireyler oluşur.

Bireylerin Değerlendirilmesi

Kromozomların çözüme uygunluk değerleri belirlenir. Her bir problem için uygun bir değerlendirme fonksiyonu kullanılması gerekir. Tüm bireyler için değerlendirme yapılır. Probleme yönelik çalışan kısımdır.

Yeni Populasyon Oluşturma

Birey seçme, Elitizm, Seçilen iki bireyi çaprazlama, Bir bireyin herhangi bir geninin mutasyon işlemiyle rasgele değiştirilmesi.

Belirli sayıda en iyi olan bireyler ile yeni populasyon oluşturulur. Kötü bireyler populasyona katılmaz.

Rasgele Birey Seçme

Birey 1 f(x):45                %25 B1

Birey 2 f(x):21               %25 B2

Birey 3 f(x):9                 %25 B3

Birey 4 f(x):75               %25 B4

Rulet Tekerleği Birey Seçme

Birey 1 f(x):45            45/(21+75+9+45)=%30

Birey 2 f(x):21            21/(21+75+9+45)=%14

Birey 3 f(x):9              9/(21+75+9+45)=%6

Birey 4 f(x):75             75/(21+75+9+45)=%50

Turnuva Seçimi

Rasgele seçilen iki bireyden uygunluk derecesi yüksek olan bir sonraki populasyona aktarılır. İşlem populasyondaki kromozom sayısı kadar tekrarlanır.

Elitizm

Belirli sayıdaki en iyi birey hiçbir işleme tabii tutulmadan doğrudan yeni jenerasyona aktarılır. Elit birey sayısı arttıkça çözümdeki çeşitlilik azalır. Elit birey alınmazsa yeni jenerasyonun en iyi bireyi bir öncekinin en iyi bireyinden daha kötü olabilir.

Seçilen İki Bireyin Çaprazlanması

Rasgele çaprazlama noktaları seçilir. Yeni bireylerden ikiside populasyona aktarılabilir. Yeni elde edilen bireyden uygunluk seviyesi daha yüksek olan alınabilir.

Adsız

Mutasyon

Herhangi bir sebep olmadan bir genin rasgele değiştirilmesidir. Populasyona çeşitlilik kazandırır. Mutasyon oranı 0.01 ile 0.0001 arasında seçilir.

Adsız

**Genetik algoritmayla ilgili örnek bir problemi ve çözümünü bir sonraki yazımda paylaşacağım. Umarım işinize yarar.

Kolay gelsin..

Hakkında Ali Demirci

Ben Ali Demirci... 1991 Ankara doğumluyum. Ankara da yaşıyorum. Fırsat buldukça öğrendiklerimi burada paylaşıyorum. Java ile haşır neşirim. Android'den asla vazgeçemem. Öğrenmeye bayılırım. Yeni şeyler öğrendiğimde, geçmişteki projelerimde keşke böyle yapsaydım diye çok üzülmüşümdür. O yüzden öğrenmekten korkmayın. Takıldığınız yerleri mutlaka sorun. Biliyorsam yanıt veririm. Bilmiyorsam yol gösteririm. Teşekkürler :)

Kontrol Et

Regex Nedir? Nasıl Kullanılır?

Regex(Regular Expression) yani düzenli ifadeler, metinlerde aranan bir tümceyi kolayca bulmamızı sağlayan bir çeşit algoritmadır. Yani …