ÎncepețiÎncepe gratuit

Folosirea callback

Vrei să găsești cele două maxime principale ale unei funcții de profit și ai decis să folosești callback pentru a colecta optimele găsite și a selecta apoi cele mai mari două valori.

Mai întâi, vei completa funcția callback. Vei verifica dacă valoarea obiectivului examinată în prezent de basinhopping este acceptată ca optim și, dacă da, o vei adăuga la lista opt_values. Apoi vei rula basinhopping cu funcția callback pe care tocmai ai definit-o.

basinhopping a fost deja importat pentru tine. Valoarea inițială x0, kwargs și funcția profit au fost deja definite pentru tine.

Acest exercițiu face parte din cursul

Introducere în optimizare în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Completează funcția callback pentru a verifica dacă valoarea candidată x examinată în iterația curentă este considerată un optim.
  • Adaugă valoarea obiectivului minimizat la lista opt_values.
  • Rulează basinhopping cu funcția callback corespunzătoare și găsește cele mai mari două maxime.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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}")
Editează și rulează codul