İçeriğe atla
Üyelik kaydınızı yaparak son yazılan içeriklerden haberdar olun! ×

Yapay Zeka

  • makale
    55
  • yorum
    2
  • görüntüleme
    717.221

Klonal Seçim Algoritması (Clonal Selection Algorithm, CSA)


Doğuhan ELMA

340 görünüm

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 Yorum


Önerilen Yorumlar

Görüntülenecek yorum yok.

Misafir
Yorum ekle...

×   Zengin metin olarak yapıştırıldı.   Bunun yerine düz metin olarak yapıştır

  Yalnızca 75 emojiye izin verilir.

×   Bağlantınız otomatik olarak gömüldü.   Bunun yerine bağlantı olarak görüntüle

×   Önceki içeriğiniz geri yüklendi.   Düzenleyiciyi temizle

×   Görüntüleri doğrudan yapıştıramazsınız. URL'den resim yükleyin veya ekleyin.

×
×
  • Create New...