MulaiMulai sekarang secara gratis

Menggunakan callback

Anda ingin menemukan dua maksimum tertinggi dari sebuah fungsi profit dan Anda memutuskan untuk menggunakan callback untuk mengumpulkan titik optimum yang ditemukan, lalu memilih dua nilai teratas.

Pertama, Anda akan melengkapi fungsi callback. Anda akan memeriksa apakah nilai objektif yang saat ini diperiksa oleh basinhopping diterima sebagai optimum, dan jika ya, tambahkan ke daftar opt_values. Setelah itu Anda akan menjalankan basinhopping dengan fungsi callback yang baru saja Anda definisikan.

basinhopping telah diimpor untuk Anda. Tebakan awal, x0, kwargs, dan fungsi profit telah didefinisikan untuk Anda.

Latihan ini adalah bagian dari kursus

Pengantar Optimasi di Python

Lihat Kursus

Petunjuk latihan

  • Lengkapi fungsi callback untuk memeriksa apakah kandidat x yang diperiksa pada iterasi saat ini memang dianggap optimum.
  • Tambahkan nilai objektif yang diminimalkan ke daftar opt_values.
  • Jalankan basinhopping dengan fungsi callback yang sesuai dan temukan dua maksimum teratas.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

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}")
Edit dan Jalankan Kode