Bắt đầu ngayBắt đầu miễn phí

Sử dụng callback

Bạn muốn tìm hai điểm cực đại cao nhất của một hàm lợi nhuận và đã quyết định dùng callback để thu thập các nghiệm tối ưu tìm được rồi chọn ra hai giá trị lớn nhất.

Đầu tiên, bạn sẽ hoàn thiện hàm callback. Bạn sẽ kiểm tra xem giá trị mục tiêu mà basinhopping đang xét có được chấp nhận là điểm tối ưu hay không; nếu có, bạn sẽ thêm nó vào danh sách opt_values. Sau đó, bạn sẽ chạy basinhopping với hàm callback vừa định nghĩa.

basinhopping đã được import sẵn cho bạn. Giá trị khởi tạo x0, kwargs, và hàm profit đã được định nghĩa sẵ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

Xem khóa học

Hướng dẫn bài tập

  • Điền vào hàm callback để kiểm tra xem ứng viên x đang được xét ở vòng lặp hiện tại có thực sự được xem là điểm tối ưu hay không.
  • Thêm giá trị của hàm mục tiêu đã được tối thiểu hóa vào danh sách opt_values.
  • Chạy basinhopping với hàm callback phù hợp và tìm hai điểm cực đại cao nhất.

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.

opt_values = []

def callback(x, f, accept):
# Check if the candidate is an optimum  
    if ____:
# Append the value of the minimized objective to list opt_values      
        opt_values.append(____)

# Run basinhopping to find top two maxima  
result = basinhopping(lambda q: -profit(q), x0, callback=____, minimizer_kwargs=kwargs, niter=5, seed=3) 
top2 = sorted(list(set([round(f, 2) for f in opt_values])), reverse=True)[:2]
top2 = [-f for f in top2]

print(f"{result.message}\nThe highest two values are {top2}")
Chỉnh sửa và Chạy Mã