Začněte nyníZačněte zdarma

Použití callbacku

Chceš najít dvě nejvyšší maxima funkce zisku a rozhodl/a ses použít callback ke shromáždění nalezených optim a výběru dvou nejvyšších hodnot.

Nejprve dokončíš funkci callback. Zkontroluješ, zda je hodnota účelové funkce, kterou basinhopping právě zkoumá, přijata jako optimum – a pokud ano, připojíš ji do seznamu opt_values. Poté spustíš basinhopping s právě definovanou callback funkcí.

basinhopping je již naimportován. Počáteční odhad x0, kwargs a funkce profit jsou již pro tebe definovány.

Toto cvičení je součástí kurzu

Introduction to Optimization in Python

Zobrazit kurz

Pokyny k cvičení

  • Doplň funkci callback tak, aby ověřila, zda je kandidát x zkoumaný v aktuální iteraci skutečně vyhodnocen jako optimum.
  • Připoj hodnotu minimalizované účelové funkce do seznamu opt_values.
  • Spusť basinhopping s odpovídající callback funkcí a najdi dvě nejvyšší maxima.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

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}")
Upravit a spustit kód