การหาค่าเหมาะที่สุดแบบมีข้อจำกัด (Convex)

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

Jasmin Ludolf

Content Developer

การหาค่าเหมาะที่สุดแบบมีข้อจำกัด (Convex)

ฟังก์ชัน Convex

  • ข้อจำกัด: ข้อกำหนดบนตัวแปร
  • เส้น Indifference: แสดงชุดของตัวแปรที่ให้ผลลัพธ์เท่ากัน
  • หาจุดบนเส้น Indifference ที่ทำให้ฟังก์ชันวัตถุประสงค์มีค่าต่ำสุดหรือสูงสุด
การหาค่าที่เหมาะสมที่สุดใน Python เบื้องต้น

เส้น Indifference

หญิงสาวผมดำกำลังทำงานกับแล็ปท็อป

  • วิศวกรซอฟต์แวร์อิสระ
  • ให้คุณค่ากับการทำงาน ($w$) และเวลาพักผ่อน ($l$)

 

ฟังก์ชัน Utility:

  • $U(w, l)=w^{0.4}l^{0.6}$
การหาค่าที่เหมาะสมที่สุดใน Python เบื้องต้น

การพล็อตเส้น Indifference

import numpy as np
import matplotlib.pyplot as plt


w = np.linspace(1, 30, 100) l = np.linspace(1, 30, 100)
W, L = np.meshgrid(w, l)
F = W**0.4 * L**0.6
plt.figure(figsize=(8, 6))
contours = plt.contour(W, L, F, levels=[5, 10, 15, 20])
plt.clabel(contours)
plt.title('Indifference Curves for the function: w**0.4 * l**0.6') plt.xlabel('w') plt.ylabel('l') plt.grid(True) plt.show()
การหาค่าที่เหมาะสมที่สุดใน Python เบื้องต้น

เส้น Indifference

การแสดงผลเส้น Indifference

  • Alexia ไม่มีความต้องการเฉพาะเจาะจงสำหรับชุดค่า $w$ และ $l$ ที่ใช้
การหาค่าที่เหมาะสมที่สุดใน Python เบื้องต้น

ข้อจำกัดด้านเวลา

  • 24 ชั่วโมงต่อวัน
  • ข้อจำกัดเชิงเส้นแบบเท่ากัน

$$ \max_{w,l} w^{0.4}l^{0.6}$$ $$s.t.\ \ \ w+l = 24$$

  • เพิ่มข้อจำกัดลงในกราฟ:
    • l = 24 - w
    • plt.plot(w, l, color='red')

เส้น Indifference และข้อจำกัดเชิงเส้น เส้น Indifference ที่ระดับเหมาะที่สุดสัมผัสกับเส้นข้อจำกัด ที่จุดสัมผัส gradient ตั้งฉากกับเส้นข้อจำกัดและเส้นสัมผัส

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

การแก้ปัญหาด้วย SciPy

def utility_function(vars):
    w, l = vars
    return -(w**0.4 * l**0.6)


def constraint(vars): return 24 - np.sum(vars)
initial_guess = [12, 12] constraint_definition = {'type': 'eq', 'fun': constraint} result = minimize(utility_function, initial_guess, constraints=constraint_definition) print(result.x)
[ 9.60001122 14.39998878]
การหาค่าที่เหมาะสมที่สุดใน Python เบื้องต้น

มาฝึกกันเถอะ!

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

Preparing Video For Download...