Klonal Seçim Algoritması (Clonal Selection Algorithm, CSA)
Klonal Seçim Algoritması (Clonal Selection Algorithm, CSA), bağışıklık sistemlerinin klonal seçim prensibini taklit eden bir bağışıklık algoritmasıdır. Bu prensip, antikorların (çözüm adayları) klonlanmasını, mutasyona uğramasını ve seçilmesini içerir.
Klonal Seçim Algoritması'nın kavramlarını ve aşamalarını aşağıda bulabilirsiniz:
1. Başlangıç Popülasyonunun Oluşturulması: Algoritma, rastgele oluşturulmuş bir dizi antikor (çözüm adayı) ile başlar.
2. Klonlama: Her bir antikor, uygunluğuna (kalitesine) bağlı olarak klonlanır. Yüksek uygunluğa sahip antikorlar, daha fazla kopyalanır.
3. Mutasyon (Hiper-Mutasyon): Klonlanan antikorlar, çeşitliliği artırmak ve potansiyel olarak daha iyi çözümler bulmak için mutasyona uğrar. Bu süreçte, antikorların genlerinde rastgele değişiklikler yapılır.
4. Seçilim (Klonal Seçilim): Mutasyon sonrası, en uygun antikorlar (yani en iyi çözümler) seçilir ve geri kalanlar atılır. Bu süreçte, genellikle bir elenme ve/veya yerine koyma stratejisi kullanılır.
5. Yeniden Çeşitlendirme: Bazı durumlarda, yeni rastgele antikorlar eklenir veya düşük uygunluğa sahip antikorlar atılır. Bu adım, popülasyon çeşitliliğini artırır ve yerel optimumlara takılmayı önler.
Bu adımlar, belirli bir durma kriterine (örneğin belirli bir iterasyon sayısı veya belirli bir uygunluk değeri) kadar tekrarlanır. Sonunda, en uygun antikor (en iyi çözüm) seçilir.
Klonal Seçim Algoritması, genellikle global optimizasyon, özellik seçimi, makine öğrenmesi ve veri madenciliği gibi alanlarda karmaşık problemlerin çözümünde etkilidir. Bununla birlikte, bu algoritmanın performansı, parametrelerin (örneğin klonlama oranı ve mutasyon oranı) doğru şekilde ayarlanmasına bağlıdır. Bu parametreler, probleme ve uygulamaya göre değişebilir.
Klonal Seçim Algoritması'nın Python'da bir örneğini bulabilirsiniz. Bu örnekte, amaç -5 ile 5 arasında bir x değeri bulmak ki bu x değeri x^2 fonksiyonunu minimize eder. Bu, bir tipik tek hedefli optimizasyon problemidir.
import numpy as np # Uygunluk fonksiyonu (affinity) def fitness(x): return x**2 # Mutasyon def mutate(x): return x + np.random.normal() # Klonlama def clone(x, rate): return [x for _ in range(rate)] # Klonal seçim algoritması def clonal_selection(n_generations, pop_size, clone_rate): # Başlangıç popülasyonunu oluşturma population = np.random.uniform(-5, 5, pop_size) # Her nesil için for gen in range(n_generations): # Klonlama clones = [clone(x, clone_rate) for x in population] # Mutasyon mutated = [mutate(x) for sublist in clones for x in sublist] # Klonlar ve orijinal popülasyonu birleştirme total_population = np.append(population, mutated) # Seçilim population = sorted(total_population, key=fitness)[:pop_size] # En uygun çözümü döndürme return population[0] # Algoritmanın çağrılması best_solution = clonal_selection(100, 10, 10) print("En iyi çözüm: ", best_solution)
En iyi çözüm: -0.0001163233837012639
Bu kodda, fitness fonksiyonu çözümün kalitesini belirler. mutate fonksiyonu, bir çözümün genlerinde rastgele değişiklikler yapar. clone fonksiyonu, bir çözümü belirli bir oranda kopyalar. clonal_selection fonksiyonu, algoritmanın temel döngüsünü içerir: her nesil için, çözümler klonlanır, mutasyona uğrar ve en uygun olanlar seçilir.
Bu algoritmanın performansı, parametrelerin (nesil sayısı, popülasyon boyutu ve klonlama oranı) değerlerine bağlıdır. Bu değerler, probleme ve uygulamaya göre ayarlanmalıdır.
0 Comments
Recommended Comments
There are no comments to display.