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

Doğuhan ELMA

50 views

Memetik algoritmalar (MA), genetik algoritmaların ve yerel arama algoritmalarının birleşimidir. İsmi, Richard Dawkins'in "meme" kavramından türetilmiştir. Dawkins, "meme" kavramını, kültürel bilgi birimlerini ifade etmek için kullanmıştır, bu kavram zamanla bir organizmadan diğerine aktarılır ve evrimleşir. Dawkins, genetik evrimin biyolojik özelliklerin nasıl evrimleştiğini açıkladığı gibi, memetik evrimin de kültürel özelliklerin nasıl evrimleştiğini açıkladığını belirtmiştir.

Memetik algoritmalarda, her birey bir çözümü temsil eder ve bu bireyler genetik operatörler (seçilim, çaprazlama ve mutasyon) aracılığıyla bir popülasyon içinde evrimleşir. Ancak, memetik algoritmalar, genetik algoritmalardan farklı olarak, her bireyin yerel arama algoritmaları kullanılarak daha da optimize edildiği bir adım içerir. Bu yerel arama adımı, bir "meme" olarak görülür ve bireyler arasında yayılır. Yani, her birey, kendi çözümünü iyileştirmek için bilgi kullanır.

Yerel arama adımı genellikle her nesil sonrası uygulanır ve bu da genetik algoritmalardan farklı olarak memetik algoritmalarda genellikle daha hızlı bir yakınsama sağlar. Memetik algoritmalarda çözüm genellikle daha iyi ve daha hızlı bir şekilde elde edilir çünkü algoritma, genetik algoritmaların genel arama yeteneğini ve yerel arama algoritmalarının yoğun arama yeteneğini birleştirir. Bu, memetik algoritmanın genellikle genetik algoritmadan daha iyi performans göstermesini sağlar.

Bir memetik algoritma, optimizasyon problemlerinin çözülmesi için geniş bir yelpazede uygulanabilir. Bu problemler, seyahat eden satış elemanı problemi, dizi hizalama problemleri, rota planlama problemleri ve daha fazlasını içerir. Ancak, memetik algoritmanın başarısı, genellikle yerel arama algoritmasının ve genetik operatörlerin doğru bir şekilde seçilmesine bağlıdır.

Bu örnekte, genetik algoritmanın ana hatlarına yerel arama adımını ekliyoruz.

import numpy as np

# Problem Parametreleri
num_variables = 10
population_size = 100
num_generations = 50
mutation_rate = 0.1
crossover_rate = 0.7

# Uygunluk Fonksiyonu
def fitness(individual):
    return sum(individual)

# Yerel Araştırma Fonksiyonu
def local_search(individual):
    for i in range(len(individual)):
        if individual[i] == 0:
            individual[i] = 1
            if fitness(individual) > fitness(individual):
                individual[i] = 0
    return individual

# Popülasyonu Başlat
population = np.random.randint(2, size=(population_size, num_variables))

# Her nesil için
for generation in range(num_generations):
    # Yeni popülasyonu sakla
    new_population = []
    
    # Her birey için
    for individual in population:
        # Yerel araştırma
        individual = local_search(individual)
        
        # Çaprazlama
        if np.random.random() < crossover_rate:
            other_individual = population[np.random.randint(population_size)]
            cross_point = np.random.randint(num_variables)
            individual[:cross_point], other_individual[:cross_point] = other_individual[:cross_point].copy(), individual[:cross_point].copy()
        
        # Mutasyon
        for i in range(num_variables):
            if np.random.random() < mutation_rate:
                individual[i] = 1 - individual[i]
        
        new_population.append(individual)
    
    # Popülasyonu güncelle
    population = np.array(new_population)

# En uygun bireyi yazdır
print("En uygun birey: ", max(population, key=fitness))

Bu örnek memetik algoritma, ikili değişkenlerden oluşan bir optimizasyon problemi çözmek üzere tasarlanmıştır. Algoritma, her bireyi bir bit dizisi olarak temsil eder ve bitlerin toplamını maksimize etmeye çalışır.

Algoritma ayrıca bir yerel arama adımı içerir. Bu adımda, bireyin her bir bitini bir seferde tersine çevirir ve bu terslemenin uygunluğu artırıp artırmadığını kontrol eder. Eğer bir tersleme uygunluğu artırırsa, o tersleme yapılır. Bu, bireyin kendi çözümünü iyileştirmek için kullandığı bir meme olarak düşünülebilir.

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...