Định vị nhà máy có ràng buộc - nghiên cứu tình huống P3

Phân tích Chuỗi Cung Ứng với Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

Mô hình định vị nhà máy có ràng buộc

Mô hình hóa

  • Sản xuất tại cơ sở vùng
    • Hai quy mô nhà máy (thấp / cao)
  • Xuất sản lượng sang vùng khác
  • Mở / đóng cơ sở sản xuất

hình quả địa cầu với sản xuất theo vùng

Phân tích Chuỗi Cung Ứng với Python

Miền giá trị kỳ vọng

Ta nên kỳ vọng gì cho giá trị biến quyết định?

Sản lượng:

  • Cao ở các vùng có chi phí biến đổi và vận chuyển thấp
  • Tối đa ở vùng có chi phí cố định tương đối thấp

Nhà máy mở hay đóng:

  • Chọn nhà máy công suất cao ở vùng có nhu cầu lớn
  • Chọn nhà máy công suất cao ở vùng có chi phí cố định tương đối thấp
Phân tích Chuỗi Cung Ứng với Python

Phân tích độ nhạy của ràng buộc

Tổng sản lượng = Tổng nhu cầu:

  • shadow prices = Mức đổi chi phí tổng khi tăng nhu cầu của một vùng
  • slack = Nên bằng 0

Tổng sản lượng ≤ Tổng công suất sản xuất:

  • shadow prices = Mức đổi chi phí tổng khi tăng công suất
  • slack = Các vùng còn dư công suất
Phân tích Chuỗi Cung Ứng với Python
from pulp import *
import pandas as pd

# Initialize Class
model = 
    LpProblem("Capacitated Plant Location Model",
               LpMinimize)

# Define Decision Variables
loc = ['A', 'B', 'C', 'D', 'E']
size = ['Low_Cap','High_Cap']
x = LpVariable.dicts(
                "production_", 
                [(i,j) for i in loc for j in loc],
                 lowBound=0, upBound=None, 
                 cat='Continuous')

y = LpVariable.dicts(
               "plant_", 
               [(i,s) for s in size for i in loc], 
                cat='Binary')
# Define Objective Function
model += 
  (lpSum([fix_cost.loc[i,s]*y[(i,s)] 
          for s in size for i in loc])
 + lpSum([var_cost.loc[i,j]*x[(i,j)] 
          for i in loc for j in loc]))

# Define the Constraints
for j in loc: model += 
  lpSum([x[(i, j)] 
        for i in loc]) == demand.loc[j,'Dmd']
for i in loc: model += 
  lpSum([x[(i, j)] for j in loc]) <= lpSum(
             [cap.loc[i,s]*y[(i,s)]for s in size])
Phân tích Chuỗi Cung Ứng với Python
# Solve
model.solve()

# In Decision Variables và Giá trị Hàm mục tiêu print(LpStatus[model.status]) o = [{'prod':"{} to {}".format(i,j), 'quant':x[(i,j)].varValue} for i in loc for j in loc] print(pd.DataFrame(o)) o = [{'loc':i, 'lc':y[(i,size[0])].varValue, 'hc':y[(i,size[1])].varValue} for i in loc] print(pd.DataFrame(o)) print("Objective = ", value(model.objective))
# In Giá bóng và Độ chùng o = [{'name':name, 'shadow price':c.pi, 'slack': c.slack} for name, c in model.constraints.items()] print(pd.DataFrame(o))
Phân tích Chuỗi Cung Ứng với Python

Câu hỏi kinh doanh

Câu hỏi thường gặp:

  • Chi phí kỳ vọng của mô hình mạng chuỗi cung ứng này là bao nhiêu?

  • Nếu nhu cầu tăng ở một vùng, cần thêm bao nhiêu lợi nhuận để bù chi phí sản xuất và vận chuyển đến vùng đó?

  • Vùng nào còn dư năng lực sản xuất cho nhu cầu tương lai?

Phân tích Chuỗi Cung Ứng với Python

Tóm tắt

Đã ôn lại:

  • Miền giá trị kỳ vọng cho biến quyết định
  • Diễn giải đầu ra phân tích độ nhạy (shadow pricesslack)
  • Mã để giải và xuất kết quả
  • Câu hỏi kinh doanh có khả năng xuất hiện
Phân tích Chuỗi Cung Ứng với Python

Rất tốt! Đến lượt bạn

Phân tích Chuỗi Cung Ứng với Python

Preparing Video For Download...