Знайдіть глобальний оптимум
Вам надано задачу максимізації прибутку. Потрібно знайти глобальний максимум.
\(\Pi= -\frac{1}{4}q^4 + 11q^3 - 160q^2 + 900q\)
\(0\) — природна нижня межа для кількості, а при \(q=30\) прибуток від'ємний, тож \(30\) — добра кандидатка на верхню межу.
Знайдіть глобальний оптимум для цієї задачі.
basinhopping уже імпортовано для вас.
Ця вправа є частиною курсу
Вступ до оптимізації в Python
Інструкції до вправи
- Створіть словник іменованих аргументів
kwargsз межами \(0\) та \(30\). - Запустіть
basinhopping, використавши як цільову функцію від'ємне значенняprofit, а початкове припущенняx0передайте мінімізатору черезkwargs.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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")