Zacznij terazZacznij za darmo

Znajdź globalne optimum

Masz do dyspozycji następujący problem maksymalizacji zysku i jesteś proszony(-a) o znalezienie globalnego maksimum.

\(\Pi= -\frac{1}{4}q^4 + 11q^3 - 160q^2 + 900q\)

\(0\) jest naturalnym ograniczeniem dolnym dla wielkości produkcji. Zauważono, że przy \(q=30\) zysk jest ujemny, więc \(30\) jest dobrym kandydatem na ograniczenie górne.

Znajdź globalne optimum tego problemu.

Funkcja basinhopping została już zaimportowana.

To ćwiczenie jest częścią kursu

Wprowadzenie do optymalizacji w Pythonie

Zobacz kurs

Instrukcje do ćwiczenia

  • Zdefiniuj słownik kwargs zawierający argumenty nazwane z ograniczeniami \(0\) i \(30\).
  • Uruchom basinhopping, przekazując jako cel wartość ujemną funkcji profit oraz punkt startowy x0 do minimalizatora kwargs.

Interaktywne ćwiczenie praktyczne

Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.

def profit(q): 
	return -q**4 / 4 + 11 * q**3 - 160 * q**2 + 900 * q
  
x0 = 0

# Define the keyword arguments for bounds
kwargs = {"bounds": [(____, ____)]} 

# Run basinhopping to find the optimal quantity
result = basinhopping(____ q: -profit(q), ____, ____=kwargs)

print(f"{result.message}")
print(f"The maximum according to basinhopping(x0={x0}) is at {result.x[0]:.2f}\n")
Edytuj i uruchom kod