พื้นฐานการสร้างโมเดลด้วย PuLP

Supply Chain Analytics ด้วย Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

PuLP คืออะไร

  • PuLP คือ framework สำหรับสร้างโมเดล Linear Programming (LP) และ Integer Programming (IP) ใน Python

  • ดูแลโดย COIN-OR Foundation (Computational Infrastructure for Operations Research)

  • PuLP เชื่อมต่อกับ Solver ต่าง ๆ

    • CPLEX
    • COIN
    • Gurobi
    • ฯลฯ
Supply Chain Analytics ด้วย Python

ตัวอย่าง PuLP – การจัดสรรทรัพยากร

  • เป็นที่ปรึกษาให้ร้านเบเกอรีที่ขายเค้ก 2 ประเภท
  • ช่วงเวลา 30 วัน
  • ทรัพยากรที่มี:
    • เตาอบ 1 เครื่อง
    • เบเกอร์ 2 คน
    • พนักงานแพ็คสินค้า 1 คน – ทำงานเพียง 22 วัน
Supply Chain Analytics ด้วย Python

ตัวอย่าง PuLP – การจัดสรรทรัพยากร

  • ทรัพยากรที่ใช้ต่างกันสำหรับเค้ก 2 ประเภท:
เค้ก A เค้ก B
เตาอบ 0.5 วัน 1 วัน
เบเกอร์ 1 วัน 2.5 วัน
พนักงานแพ็ค 1 วัน 2 วัน

.

เค้ก A เค้ก B
กำไร $20.00 $40.00
Supply Chain Analytics ด้วย Python

ตัวอย่าง PuLP – การจัดสรรทรัพยากร

  • เป้าหมายคือการ Maximize กำไร
    • กำไร = 20*A + 40*B
  • Subject to:
    • A ≥ 0
    • B ≥ 0
    • 0.5A + 1B ≤ 30
    • 1A + 2.5B ≤ 60
    • 1A + 2B ≤ 22
Supply Chain Analytics ด้วย Python

ขั้นตอนการสร้างโมเดลด้วย PuLP

  1. เริ่มต้นโมเดล
  2. กำหนดตัวแปรการตัดสินใจ
  3. กำหนดฟังก์ชันวัตถุประสงค์
  4. กำหนด Constraint
  5. แก้โมเดล
Supply Chain Analytics ด้วย Python

เริ่มต้นโมเดล - LpProblem()

LpProblem(name='NoName', sense=LpMinimize)
  • name = ชื่อของปัญหาที่ใช้ในไฟล์ .lp ที่ส่งออก เช่น "My LP Problem"
  • sense = กำหนดว่าจะ Maximize หรือ Minimize ฟังก์ชันวัตถุประสงค์
    • Minimize = LpMinimize (ค่าเริ่มต้น)
    • Maximize = LpMaximize
Supply Chain Analytics ด้วย Python

ตัวอย่าง PuLP – การจัดสรรทรัพยากร

  1. เริ่มต้นโมเดล
from pulp import *

# Initialize Class
model = LpProblem("Maximize Bakery Profits", LpMaximize)
Supply Chain Analytics ด้วย Python

กำหนดตัวแปรการตัดสินใจ - LpVariable()

LpVariable(name, lowBound=None, upBound=None, cat='Continuous', e=None)
  • name = ชื่อตัวแปรที่ใช้ในไฟล์ .lp ที่ส่งออก
  • lowBound = ขอบเขตล่าง
  • upBound = ขอบเขตบน
  • cat = ประเภทของตัวแปร
    • Integer
    • Binary
    • Continuous (ค่าเริ่มต้น)
  • e = ใช้สำหรับการสร้างโมเดลแบบ column-based
Supply Chain Analytics ด้วย Python

ตัวอย่าง PuLP – การจัดสรรทรัพยากร

  1. เริ่มต้น Class
  2. กำหนดตัวแปร
# Define Decision Variables
A = LpVariable('A', lowBound=0, cat='Integer')
B = LpVariable('B', lowBound=0, cat='Integer')
Supply Chain Analytics ด้วย Python

ตัวอย่าง PuLP – การจัดสรรทรัพยากร

  1. เริ่มต้น Class
  2. กำหนดตัวแปร
  3. กำหนดฟังก์ชันวัตถุประสงค์
# Define Objective Function
model += 20 * A + 40 * B
Supply Chain Analytics ด้วย Python

ตัวอย่าง PuLP – การจัดสรรทรัพยากร

  1. เริ่มต้น Class
  2. กำหนดตัวแปร
  3. กำหนดฟังก์ชันวัตถุประสงค์
  4. กำหนด Constraint
# Define Constraints
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22
Supply Chain Analytics ด้วย Python

ตัวอย่าง PuLP – การจัดสรรทรัพยากร

  1. เริ่มต้น Class
  2. กำหนดตัวแปร
  3. กำหนดฟังก์ชันวัตถุประสงค์
  4. กำหนด Constraint
  5. แก้โมเดล
# Solve Model
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
Supply Chain Analytics ด้วย Python

ตัวอย่าง PuLP – การจัดสรรทรัพยากร

from pulp import *

# Initialize Class
model = LpProblem("Maximize Bakery Profits",
                   LpMaximize)

# Define Decision Variables
A = LpVariable('A', lowBound=0,
                cat='Integer')
B = LpVariable('B', lowBound=0, 
                cat='Integer')

# Define Objective Function
model += 20 * A + 40 * B
# Define Constraints
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22

# Solve Model
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
Supply Chain Analytics ด้วย Python

สรุป

  • PuLP คือเครื่องมือสร้างโมเดล LP / IP ใน Python
  • ทบทวน 5 ขั้นตอนของกระบวนการสร้างโมเดลด้วย PuLP

    1. เริ่มต้นโมเดล
    2. กำหนดตัวแปรการตัดสินใจ
    3. กำหนดฟังก์ชันวัตถุประสงค์
    4. กำหนด Constraint
    5. แก้โมเดล
  • ฝึกตัวอย่างการจัดสรรทรัพยากรเสร็จสมบูรณ์

Supply Chain Analytics ด้วย Python

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

Supply Chain Analytics ด้วย Python

Preparing Video For Download...