Jump to content
  • entries
    55
  • comments
    2
  • views
    59,207

Yinelenen Yerel Arama (Iterated Local Search)


Doğuhan ELMA

157 views

Yinelenen Yerel Arama (Iterated Local Search), yerel arama algoritmasının bir çeşididir ve genellikle bir dizi iterasyon boyunca çalışır. Her iterasyonda, algoritma mevcut çözümü 'bozar' ve yeni bir başlangıç noktası oluşturur. Ardından, bu yeni başlangıç noktasından, bir yerel arama stratejisi kullanarak daha iyi bir çözüm bulmaya çalışır. Bu süreç, belirli bir durma kriteri karşılanana kadar tekrarlanır.

Yinelenen Yerel Aramanın temel fikri, yerel bir maksimuma (veya minimuma) ulaştığında, çözümü bir miktar bozup tekrar bir yerel arama başlatarak yerel optimumdan kaçmaktır. Bu, genellikle arama alanında daha fazla çeşitlilik sağlar ve algoritmanın genel maksimuma (veya minimuma) ulaşmasına yardımcı olur.

Bu algoritma genellikle aşağıdaki adımları içerir:

  1. Başlangıç çözümünü oluşturun.
  2. Yerel arama uygulayın ve yerel bir optimum bulun.
  3. Perturbasyon uygulayın (mevcut çözümü bir miktar 'bozun').
  4. Yeni bir yerel arama başlatın.
  5. Durma kriteri karşılanana kadar adımları 3 ve 4'ü tekrarlayın.
import random

# Amaç fonksiyonu
def amac_fonksiyonu(x):
    return x**2

# Yerel arama algoritması
def yerel_arama(en_iyi):
    yeni_cozum = en_iyi + random.uniform(-0.05, 0.05)
    if amac_fonksiyonu(yeni_cozum) < amac_fonksiyonu(en_iyi):
        en_iyi = yeni_cozum
    return en_iyi

# Yinelenen yerel arama algoritması
def yinelenen_yerel_arama():
    # Başlangıç çözümünü oluşturun
    en_iyi = random.uniform(-10, 10)

    # Başlangıç çözümünde yerel arama yapın
    en_iyi = yerel_arama(en_iyi)

    # İterasyonları gerçekleştirin
    for i in range(100):
        # Bir bozma oluşturun
        aday = en_iyi + random.uniform(-1, 1)

        # Yeni çözüm üzerinde yerel arama yapın
        aday = yerel_arama(aday)

        # Eğer yeni çözüm daha iyiyse kabul edin
        if amac_fonksiyonu(aday) < amac_fonksiyonu(en_iyi):
            en_iyi = aday

    return en_iyi

# Algoritmayı çalıştırın
en_iyi_cozum = yinelenen_yerel_arama()
print(f"Bulunan en iyi çözüm {en_iyi_cozum} değeri {amac_fonksiyonu(en_iyi_cozum)}")

Bu kod, belirli bir adım büyüklüğü ve iterasyon sayısı ile sınırlı basit bir yerel arama algoritması ve yinelenen yerel arama algoritmasıdır. Daha karmaşık hedef fonksiyonları, yerel arama stratejileri ve bozma yöntemleri üzerinde çalışırken bu kodu genişletebilirsiniz.

Akış Diagramı:

1.png

Animasyon:

 

0 Comments


Recommended Comments

There are no comments to display.

Guest
Add a comment...

×   Pasted as rich text.   Restore formatting

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