|
|
||
|---|---|---|
| .. | ||
| Diophantine.ipynb | ||
| Genetic.ipynb | ||
| README.md | ||
README.md
Genetik Algoritmalar
Ders Öncesi Testi
Genetik Algoritmalar (GA), bir problemin optimal çözümünü elde etmek için bir popülasyonun evrim yöntemlerini kullanan evrimsel bir yaklaşıma dayalıdır. 1975 yılında John Henry Holland tarafından önerilmiştir.
Genetik Algoritmalar şu fikirlere dayanır:
- Problemin geçerli çözümleri genler olarak temsil edilebilir
- Çaprazlama, iki çözümü birleştirerek yeni bir geçerli çözüm elde etmemizi sağlar
- Seçim, bazı uygunluk fonksiyonları kullanılarak daha optimal çözümleri seçmek için kullanılır
- Mutasyonlar, optimizasyonu istikrarsızlaştırmak ve yerel minimumdan çıkmamızı sağlamak için eklenir
Bir Genetik Algoritma uygulamak istiyorsanız, aşağıdakilere ihtiyacınız var:
- Problemin çözümlerini genler g∈Γ kullanarak kodlama yöntemini bulmak
- Genler kümesi Γ üzerinde uygunluk fonksiyonu fit: Γ→R tanımlamak. Daha küçük fonksiyon değerleri daha iyi çözümlere karşılık gelir.
- İki geni birleştirerek yeni bir geçerli çözüm elde etmek için çaprazlama mekanizmasını tanımlamak crossover: Γ2→Γ.
- Mutasyon mekanizmasını tanımlamak mutate: Γ→Γ.
Çoğu durumda, çaprazlama ve mutasyon, genleri sayısal diziler veya bit vektörleri olarak manipüle eden oldukça basit algoritmalardır.
Genetik algoritmanın belirli bir uygulaması durumdan duruma değişebilir, ancak genel yapı şu şekildedir:
- Başlangıç popülasyonunu seç G⊂Γ
- Bu adımda gerçekleştirilecek işlemlerden birini rastgele seç: çaprazlama veya mutasyon
- Çaprazlama:
- Rastgele iki gen seç g1, g2 ∈ G
- Çaprazlama hesapla g=crossover(g1,g2)
- Eğer fit(g)<fit(g1) veya fit(g)<fit(g2) ise - popülasyondaki ilgili geni g ile değiştir.
- Mutasyon - rastgele bir gen seç g∈G ve onu mutate(g) ile değiştir
- fit değerinin yeterince küçük bir değere ulaşmasına veya adım sayısı sınırına ulaşılana kadar 2. adımdan itibaren tekrarla.
Tipik Görevler
Genetik Algoritmalar ile genellikle çözülen görevler şunlardır:
- Takvim optimizasyonu
- Optimal yerleştirme
- Optimal kesim
- Kapsamlı aramayı hızlandırma
✍️ Alıştırmalar: Genetik Algoritmalar
Aşağıdaki not defterlerinde öğrenmeye devam edin:
Genetik Algoritmaların kullanımına dair iki örneği görmek için bu not defterine gidin:
- Hazineyi adil bölme
- 8 Kraliçe Problemi
Sonuç
Genetik Algoritmalar, lojistik ve arama problemleri dahil birçok problemi çözmek için kullanılır. Bu alan, Psikoloji ve Bilgisayar Bilimi konularını birleştiren araştırmalardan ilham almıştır.
🚀 Meydan Okuma
"Genetik algoritmaların uygulanması basittir, ancak davranışlarını anlamak zordur." kaynak Sudoku bulmacası çözmek gibi bir genetik algoritma uygulaması bulun ve nasıl çalıştığını bir taslak veya akış diyagramı olarak açıklayın.
Ders Sonrası Testi
Gözden Geçirme ve Kendi Kendine Çalışma
Genetik algoritmalarla eğitilmiş sinir ağlarını kullanarak bilgisayarların Super Mario oynamayı nasıl öğrenebileceğini anlatan bu harika videoyu izleyin. Bilgisayarların bu tür oyunları oynamayı öğrenmesi hakkında daha fazla bilgi edineceğiz bir sonraki bölümde.
Ödev: Diofant Denklemi
Amacınız, tam sayı kökleri olan Diofant denklemini çözmek. Örneğin, a+2b+3c+4d=30 denklemini düşünün. Bu denklemi sağlayan tam sayı köklerini bulmanız gerekiyor.
Bu ödev bu gönderiden ilham alınmıştır.
İpuçları:
- Köklerin [0;30] aralığında olduğunu düşünebilirsiniz
- Gen olarak kök değerlerinin listesini kullanmayı düşünün
Başlangıç noktası olarak Diophantine.ipynb dosyasını kullanın.