ПочатиПочніть безкоштовно

Використання callback

Ви хочете знайти два найбільші максимуми функції прибутку та вирішили використати callback, щоб зібрати знайдені оптимуми, а потім вибрати дві найвищі величини.

Спочатку завершіть функцію callback. Перевірте, чи значення цільової функції, яке зараз розглядає basinhopping, приймається як оптимум. Якщо так, додайте його до списку opt_values. Після цього запустіть basinhopping із щойно визначеною функцією зворотного виклику.

basinhopping уже імпортовано для вас. Початкове припущення x0, kwargs і функцію profit уже визначено.

Ця вправа є частиною курсу

Вступ до оптимізації в Python

Переглянути курс

Інструкції до вправи

  • Заповніть функцію callback, щоб перевірити, чи кандидат x, розглянутий у поточній ітерації, справді вважається оптимумом.
  • Додайте значення мінімізованої цільової функції до списку opt_values.
  • Запустіть basinhopping з відповідною функцією зворотного виклику й знайдіть два найбільші максимуми.

Інтерактивна практична вправа

Спробуйте виконати цю вправу, доповнивши цей зразок коду.

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}")
Редагувати та запускати код