전역 최적해 찾기
다음 이익 극대화 문제의 전역 최대값을 구해 보세요.
\(\Pi= -\frac{1}{4}q^4 + 11q^3 - 160q^2 + 900q\)
수량의 자연스러운 하한은 $0$이고, $q=30$에서 이익이 음수임을 관찰했으므로 $30$을 상한의 후보로 사용할 수 있어요.
이 문제의 전역 최적해를 찾으세요.
basinhopping은 이미 임포트되어 있어요.
이 연습은 강의의 일부입니다
Python으로 배우는 Optimization 입문
연습 안내
- 경계가 $0$과 $30$이 되도록 키워드 인자 딕셔너리
kwargs를 정의하세요. - 목적함수를
profit의 음수로 두고, 초기 추정값x0를 사용해kwargs를 최소화기에 전달하여basinhopping을 실행하세요.
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
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")