Jump to content
Üyelik kaydınızı yaparak son yazılan içeriklerden haberdar olun! ×
  • entries
    55
  • comments
    2
  • views
    435,728

Bağışıklık Ağı Algoritması (Immune Network Algorithm, aiNet)


Doğuhan ELMA

300 views

Bağışıklık Ağı Algoritması (Immune Network Algorithm, aiNet), yapay bağışıklık sistemi algoritmalarının bir alt kümesidir. Bu algoritmalar, doğal bağışıklık sistemlerinin biyolojik süreçlerinden ilham alır. İnsan bağışıklık sistemi, vücudumuzu virüsler, bakteriler ve diğer patojenlerden korumak için bir dizi karmaşık mekanizma kullanır. Bu mekanizmalar arasında, antijenleri (yani patojenleri) tanıma ve onlara yanıt verme yeteneği bulunur.

Bağışıklık Ağı Algoritması, bağışıklık sisteminin "hafıza" fonksiyonunu taklit eder. Doğal bağışıklık sistemi, önceden karşılaşılan patojenlere karşı daha hızlı ve etkili bir yanıt verme yeteneğine sahiptir. Bu "hafıza" işlevi, bağışıklık sisteminin zaman içinde öğrenme yeteneğini sağlar. 

Bağışıklık Ağı Algoritması, bu fikri taklit eder ve bir veri kümesi üzerinde öğrenme yeteneği sağlar. Bu algoritma, bir veri kümesindeki her bir veri noktasını bir "antijen" olarak düşünür. Algoritma, bu antijenleri tanımak ve onlara yanıt vermek için "antikorlar" oluşturur. Antikorlar, zaman içinde değiştirilir ve geliştirilir, böylece algoritma antijenleri (veri noktalarını) daha etkili bir şekilde tanır ve sınıflandırır.

Bağışıklık Ağı Algoritması, çeşitli makine öğrenmesi ve optimizasyon problemleri için kullanılabilir. Örneğin, bu algoritma, veri kümesi içindeki benzer veri noktalarını bulmak için kümeleme problemleri üzerinde çalışabilir. Ayrıca, veri noktalarının belirli sınıflara ait olup olmadığını tahmin etmek için sınıflandırma problemleri üzerinde de çalışabilir.

Bağışıklık Ağı Algoritması'nın ana adımları genellikle şunları içerir:

1. Başlangıçta, rastgele bir antikor kümesi oluşturulur.
2. Her bir antikor, veri kümesindeki her bir veri noktasına (antijene) karşı bir uyum fonksiyonu kullanılarak değerlendirilir. Uyum fonksiyonu, genellikle antikorun antijenle ne kadar iyi eşleştiğini ölçer.
3. En uygun antikorlar, yeni antikorlar oluşturmak için çoğaltılır (klonlanır).
4. Yeni oluşturulan antikorlar, daha iyi bir uyum sağlamaları için mutasyona uğrar.
5. Bu adımlar, belirli bir durdurma kriteri karşılanana kadar tekrarlanır. Durdurma kriteri genellikle belirli bir sayıda iterasyon veya belirli bir uyum seviyesi olabilir.

Bağışıklık Ağı Algoritması, genetik algoritmalara benzer bir şekilde çalışır, ancak bağışıklık sisteminin biyolojik süreçlerinden ilham alır. Bu, onu benzersiz ve ilginç kılar ve çeşitli uygulamalar için yararlı kılar.

 

# Gerekli kütüphaneleri import ediyoruz.
import numpy as np
import matplotlib.pyplot as plt

# Optimizasyonu yapmak istediğimiz hedef fonksiyonunu tanımlıyoruz.
def objective_function(x):
    return x**2  # Bu örnekte kare fonksiyonunu optimize etmeye çalışıyoruz.

# Populasyon parametrelerini belirleyelim.
population_size = 100  # Populasyon boyutu
lower_bound = -10  # Rastgele seçim için alt sınır
upper_bound = 10  # Rastgele seçim için üst sınır

# Rastgele bir başlangıç populasyonu oluşturuyoruz.
population = np.random.uniform(low=lower_bound, high=upper_bound, size=population_size)

# Her bir antikorun uygunluğunu hesaplıyoruz.
fitness = objective_function(population)

# Algoritmanın çalıştırılacağı iterasyon sayısını belirleyelim.
num_iterations = 100

# Ana döngüyü başlatıyoruz.
for i in range(num_iterations):
    # En uygun antikorları seçiyoruz.
    best_indices = np.argpartition(fitness, population_size//2)[:population_size//2]
    best_antibodies = population[best_indices]
    
    # Seçtiğimiz en iyi antikorları çoğaltıyoruz.
    clones = np.repeat(best_antibodies, 2)
    
    # Çoğalttığımız antikorları mutate ediyoruz.
    mutations = np.random.normal(loc=0.0, scale=0.1, size=len(clones))
    clones += mutations
    
    # Yeni ve eski populasyonları birleştiriyoruz.
    population = np.concatenate((population, clones))
    
    # Yeni populasyonun uygunluk değerlerini hesaplıyoruz.
    fitness = objective_function(population)
    
    # En uygun antikorları seçiyoruz.
    best_indices = np.argpartition(fitness, population_size)[:population_size]
    population = population[best_indices]
    fitness = fitness[best_indices]
    
    # İterasyon sonuçlarını yazdırıyoruz.
    best_fitness = fitness[0]
    best_antibody = population[0]
    print(f"Iteration {i}: Best fitness = {best_fitness}, Best antibody = {best_antibody}")

Bu kod parçası, Bağışıklık Ağı Algoritması'nın temel bir uygulamasını sağlar. Her iterasyonda, en uygun antikorlar seçilir, çoğaltılır ve mutasyona uğratılır. Daha sonra, en uygun antikorları seçmek için yeni ve eski populasyonları birleştirir. Bu işlem, belirtilen iterasyon sayısı kadar tekrarlanır. Her iterasyonda, algoritma optimal çözüme bir adım daha yaklaşır. Sonunda, en iyi uygunluk değerine ve karşılık gelen antikora sahip oluruz. Bu değerler, her iterasyon sonunda yazdırılı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...