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 merupakan bagian dari kursus
Pengantar Optimasi di Python
Instruksi latihan
- Lengkapi fungsi
callbackuntuk memeriksa apakah kandidatxyang diperiksa pada iterasi saat ini memang dianggap optimum. - Tambahkan nilai objektif yang diminimalkan ke daftar
opt_values. - Jalankan
basinhoppingdengan fungsi callback yang sesuai dan temukan dua maksimum teratas.
Latihan interaktif langsung praktik
Cobalah latihan ini dengan melengkapi kode contoh ini.
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}")