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:
- Başlangıç çözümünü oluşturun.
- Yerel arama uygulayın ve yerel bir optimum bulun.
- Perturbasyon uygulayın (mevcut çözümü bir miktar 'bozun').
- Yeni bir yerel arama başlatın.
- 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ı:
Animasyon:
0 Comments
Recommended Comments
There are no comments to display.