Phân tích Chuỗi Cung Ứng với Python
Aaren Stubberfield
Supply Chain Analytics Mgr.
Mô hình hóa

Ta nên kỳ vọng gì cho giá trị biến quyết định?
Sản lượng:
Nhà máy mở hay đóng:
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ùngslack = Nên bằng 0Tổ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ấtslack = Các vùng còn dư công suấtfrom 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])
# 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))
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?
Đã ôn lại:
shadow prices và slack)Phân tích Chuỗi Cung Ứng với Python