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ırEgzersiz talimatları
- Mevcut iterasyonda incelenen
xadayının gerçekten optimum kabul edilip edilmediğini kontrol etmek içincallbackfonksiyonunu doldur. - En küçüklenen amacın değerini
opt_valueslistesine 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}")