การหาค่าสูงสุดของ utility
Bill เป็นนักเรียนเปียโนที่กำลังจัดสรรชั่วโมงการศึกษาดนตรีคลาสสิก \(c\) และดนตรีสมัยใหม่ \(m\) โดยความชอบของเขาแสดงด้วยฟังก์ชัน utility เดียวกับที่เพิ่งพล็อตไป:
\(U(c, m)=c^{0.7}m^{0.3}\)
ชั่วโมงการศึกษารวมกันได้ 2 ชั่วโมงต่อวัน (\(c+m=2\)) ช่วย Bill หาแผนการศึกษาที่เหมาะสมที่สุด
ได้โหลด np และ minimize ไว้ให้แล้ว รวมถึงได้ import symbols, diff และ solve จาก SymPy กำหนด c และ m เป็น symbols และนิยามฟังก์ชัน utility U ไว้ให้แล้วเช่นกัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การหาค่าที่เหมาะสมที่สุดใน Python เบื้องต้น
คำแนะนำการฝึกหัด
- นิยามฟังก์ชัน utility โดยแกะค่า
varsและส่งคืนค่าฟังก์ชันที่ติดลบ - นิยามฟังก์ชันเงื่อนไข
- ตั้งค่าเงื่อนไขโดยระบุ
typeและfun - ทำการ optimize และดึงผลลัพธ์ของ
cและm
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define the utility function
def utility_function(vars):
____
return ____
# Define the constraint function
def constraint(vars):
return ____
initial_guess = [12, 12]
# Set up the constraint
constraint_definition = {____}
# Perform optimization
result = ____
____ = result.____
print("Optimal study hours for classical music:", round(c, 2))
print("Optimal study hours for modern music:", round(m, 2))