Tìm nghiệm tối ưu toàn cục
Bạn được cung cấp bài toán tối đa hóa lợi nhuận sau và cần tìm giá trị cực đại toàn cục.
\(\Pi= -\frac{1}{4}q^4 + 11q^3 - 160q^2 + 900q\)
\(0\) là cận dưới tự nhiên cho sản lượng và bạn quan sát thấy tại \(q=30\) lợi nhuận âm, nên \(30\) là ứng viên tốt cho cận trên.
Hãy tìm nghiệm tối ưu toàn cục cho bài toán này.
basinhopping đã được nhập sẵn cho bạn.
Bài tập này là một phần của khóa học
Nhập môn Tối ưu hóa với Python
Hướng dẫn bài tập
- Tạo dictionary
kwargscho các đối số từ khóa, với các cận là \(0\) và \(30\). - Chạy
basinhopping, với hàm mục tiêu là số âm củaprofitvà truyền giá trị khởi tạox0vàokwargscủa minimizer.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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")