Jump to content
  • entries
    55
  • comments
    2
  • views
    281

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


Doğuhan ELMA

65 views

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.

Guest
Add a comment...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...