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

Rasgele Arama Algoritması


Doğuhan ELMA

232 views

Rastgele arama, Stokastik Optimizasyon ve Global Optimizasyon alanlarına aittir. Rastgele arama, sürekli bir alanı aramak için türevler gerektirmediği için doğrudan bir arama yöntemidir. Bu temel yaklaşım, Yönlendirilmiş Rastgele Arama ve Uyarlanabilir Rastgele Arama gibi küçük iyileştirmeler sağlayan tekniklerle ilgilidir.
Rastgele Arama stratejisi, tekdüze bir olasılık dağılımı kullanarak tüm arama uzayından çözümleri örneklemektir. Gelecekteki her örnek, kendisinden önce gelen örneklerden bağımsızdır.

Rasgele arama (random search), optimizasyon problemlerini çözmek için kullanılan basit ve yaygın bir yöntemdir. Optimizasyon problemi, bir fonksiyonun belirli bir kriteri en iyi şekilde yerine getiren değişkenlerin değerlerini bulma amacını taşır. Rasgele arama yöntemi, çözüm alanındaki rastgele noktalardan başlayarak adım adım iyileştirmeler yapar ve en iyi çözümü bulmaya çalışır.

Rasgele arama algoritması (Random Search Algorithm), optimizasyon problemlerinin çözülmesi için kullanılan bir yöntemdir. Bu algoritmanın temel fikri, arama uzayı içinde rasgele noktalar seçerek global optimum çözümü bulmaktır.

Rasgele arama algoritması, özellikle yüksek boyutlu arama alanlarında veya arama alanının özellikleri hakkında fazla bilgi bulunmayan durumlarda kullanışlıdır. Burada, algoritma arama alanını tamamen keşfeder ve bir sonraki adımı belirlemek için herhangi bir geçmiş bilgiye dayanmaz. Bu nedenle, arama tamamen rasgeledir.

Bu algoritma özellikle basit ve kolay uygulanabilir olmasıyla bilinir. Ancak, büyük veya karmaşık problemlerde genellikle verimsizdir çünkü optimal çözümü bulmak için uzun süreler gerekebilir. Bu tür durumlar için genellikle daha sofistike algoritmalar (örneğin, gradient descent, genetic algorithms, simulated annealing vb.) kullanılır.

  1. Rasgele arama algoritması aşağıdaki gibi basit bir örnekle anlatılabilir:
  2. Bir hedef sayı seçilir ve kullanıcıdan bu sayıyı tahmin etmesi istenir.
  3. Kullanıcı her seferinde rasgele bir sayı seçer.
  4. Her tahmin sonrası, tahminin hedef sayıya eşit olup olmadığı kontrol edilir.
  5. Tahmin hedef sayıya eşit olana kadar bu işlem tekrarlanır.
import random

def random_search(guess):
    target = random.randint(1, 100)  # hedef sayıyı seç
    while True:
        if guess == target:
            return f"Tebrikler! Hedef sayı: {target}. Tahminin: {guess}"
        else:
            guess = random.randint(1, 100)  # yeni bir tahmin yap

print(random_search(50))

Bu örnekte, kullanıcı hiçbir bilgiye dayanmadan tamamen rasgele tahminler yapar. Bu nedenle bu işlem, rasgele arama algoritmasının bir örneğidir. Ancak, bu algoritmanın verimsizliği de bu örnekte görülür: Kullanıcının hedef sayıyı bulabilmesi için çok sayıda tahmin yapması gerekebilir.

Yukardaki kodun daha iyi anlaşılması için yaptığı adımlar aşagıdakı videodadır.

Videodada kodun akışı göründüğü gibi tahmin ederken söylediği sayıları tekrar söylemekte buda her defasında tahmin uzayını 100 olacak şekilde birakmaktadir.

 

Aşağıda, rasgele arama ile bir fonksiyonun minimum değerini bulan basit bir Python kod örneği verilmiştir:

import random

# Eniyileme yapılacak fonksiyon
def target_function(x):
    return x ** 2 - 4 * x + 4

# Rasgele arama fonksiyonu
def random_search(iterations, search_range):
    best_solution = None
    best_fitness = float('inf')  # Başlangıçta en iyi değeri sonsuz olarak ayarlıyoruz

    for _ in range(iterations):
        # Rasgele bir çözüm üretiyoruz
        solution = random.uniform(search_range[0], search_range[1])
        
        # Fonksiyon değerini hesaplıyoruz
        fitness = target_function(solution)
        
        # En iyi değeri güncelliyoruz
        if fitness < best_fitness:
            best_solution = solution
            best_fitness = fitness

    return best_solution, best_fitness

if __name__ == "__main__":
    # Rasgele arama için parametreleri ayarlıyoruz
    iterations = 1000  # Rasgele arama iterasyon sayısı
    search_range = (-10, 10)  # Çözüm aralığı

    # Rasgele arama ile en iyi çözümü buluyoruz
    best_solution, best_fitness = random_search(iterations, search_range)

    # Sonuçları ekrana yazdırıyoruz
    print("En iyi çözüm:", best_solution)
    print("En iyi değer:", best_fitness)

Çıktı:

En iyi çözüm: 1.99883970419563
En iyi değer: 1.3462863535096403e-06

Akış Şeması:

1.png

Koordinatsal Görsel:

1.png

Rasgele arama yöntemiyle bulunan çıktılar şunlardır:

En iyi çözüm (best_solution): Rasgele arama yöntemi, çözüm alanında rastgele noktalardan başlayarak adım adım iyileştirmeler yapar ve her iterasyonda en iyi çözümü günceller. Bu nedenle, best_solution değişkeni, en iyi çözümün değerini tutar. Örneğin, best_solution değeri, fonksiyonun minimum noktasının yaklaşık değeri olacaktır.

En iyi değer (best_fitness): best_fitness değişkeni, rasgele arama yöntemi ile elde edilen en iyi çözümün fonksiyon değerini tutar. Yani, best_solution değerini target_function fonksiyonuna uygulayarak elde edilen sonucu ifade eder. Bu değer, fonksiyonun minimum değerine yaklaşık olarak karşılık gelir.

Rasgele arama yöntemi, optimizasyon problemlerini çözmek için basit ve yaygın kullanılan bir yöntemdir. Ancak, çözüm alanında rastgele gezinirken, herhangi bir garanti vermez ve en iyi çözüme ulaşmak için yeterli zamanı ve kaynağı kullanmaz. Bu nedenle, rasgele arama, çok boyutlu ve karmaşık optimizasyon problemlerinde genellikle yetersiz kalmaktadır.

Rasgele arama yöntemi, genellikle optimize edilecek fonksiyonun yapısı ve çözüm alanının basit olduğu durumlarda başlangıçta kullanılabilecek basit bir optimizasyon yöntemidir. Ancak, daha büyük ve karmaşık problemler için daha etkili optimizasyon algoritmaları, örneğin genetik algoritmalar, parçacık sürü optimizasyonu veya diferansiyel evrim gibi yöntemler tercih edilir. Bu algoritmalar, daha az iterasyonla daha iyi sonuçlar elde etmeye yardımcı olabilir.

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