BaşlayınÜcretsiz Başlayın

Callback kullanma

Bir kâr fonksiyonunun en yüksek iki maksimumunu bulmak istiyorsun ve bulunan optimumları toplamak, ardından en iyi iki değeri seçmek için callback kullanmaya karar verdin.

Önce callback fonksiyonunu tamamlayacaksın. basinhopping tarafından şu anda incelenen amacın değerinin optimum olarak kabul edilip edilmediğini kontrol edecek ve eğer öyleyse bunu opt_values listesine ekleyeceksin. Sonrasında, az önce tanımladığın callback fonksiyonu ile basinhopping'i çalıştıracaksın.

basinhopping senin için içe aktarıldı. Başlangıç tahmini x0, kwargs ve profit fonksiyonu senin için zaten tanımlandı.

Bu egzersiz

Python ile Optimizasyona Giriş

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • Mevcut iterasyonda incelenen x adayının gerçekten optimum kabul edilip edilmediğini kontrol etmek için callback fonksiyonunu doldur.
  • En küçüklenen amacın değerini opt_values listesine ekle.
  • Uygun callback fonksiyonu ile basinhopping'i çalıştır ve en yüksek iki maksimumu bul.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

opt_values = []

def callback(x, f, accept):
# Check if the candidate is an optimum  
    if ____:
# Append the value of the minimized objective to list opt_values      
        opt_values.append(____)

# Run basinhopping to find top two maxima  
result = basinhopping(lambda q: -profit(q), x0, callback=____, minimizer_kwargs=kwargs, niter=5, seed=3) 
top2 = sorted(list(set([round(f, 2) for f in opt_values])), reverse=True)[:2]
top2 = [-f for f in top2]

print(f"{result.message}\nThe highest two values are {top2}")
Kodu Düzenle ve Çalıştır