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
Instrukcje do ćwiczenia
- Zdefiniuj słownik
kwargszawierający argumenty nazwane z ograniczeniami \(0\) i \(30\). - Uruchom
basinhopping, przekazując jako cel wartość ujemną funkcjiprofitoraz punkt startowyx0do minimalizatorakwargs.
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")