เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

การใช้ callback

เป้าหมายคือหาค่าสูงสุดสองอันดับแรกของฟังก์ชันกำไร โดยใช้ callback เพื่อเก็บรวบรวมค่าที่เหมาะสมที่สุดที่พบ แล้วเลือกสองค่าที่สูงที่สุด

ขั้นแรก ให้เติมฟังก์ชัน callback ให้สมบูรณ์ โดยตรวจสอบว่าค่าของ objective ที่ basinhopping กำลังพิจารณาอยู่นั้นได้รับการยอมรับว่าเป็นค่าที่เหมาะสมที่สุดหรือไม่ และหากใช่ ให้เพิ่มค่านั้นลงในลิสต์ opt_values จากนั้นให้รัน basinhopping พร้อมกับฟังก์ชัน callback ที่กำหนดไว้

ได้นำเข้า basinhopping ให้แล้ว ค่าเริ่มต้น x0, kwargs และฟังก์ชัน profit ได้กำหนดไว้ให้แล้วเช่นกัน

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การหาค่าที่เหมาะสมที่สุดใน Python เบื้องต้น

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เติมฟังก์ชัน callback เพื่อตรวจสอบว่าตัวเลือก x ที่พิจารณาในรอบปัจจุบันได้รับการยืนยันว่าเป็นค่าที่เหมาะสมที่สุดจริงหรือไม่
  • เพิ่มค่าของ objective ที่ถูก minimize ลงในลิสต์ opt_values
  • รัน basinhopping พร้อมกับฟังก์ชัน callback ที่เหมาะสม แล้วหาค่าสูงสุดสองอันดับแรก

แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ

ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์

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}")
แก้ไขและรันโค้ด