有容量限制的廠址選擇-案例研究 P2

Python 的供應鏈分析

Aaren Stubberfield

SuSupply Chain Analytics Mgr.

有容量限制的廠址選擇模型

建模

  • 區域設施的生產
    • 兩種廠規模(低/高)
  • 將產量外銷至其他區域
  • 生產設施開/關

帶有各區域生產的地球圖

Python 的供應鏈分析

決策變數

可控變數:

  • x$_{\text{ij}}$ = 在據點 _i_ 生產並運送至 _j_ 的數量
  • y$_{\text{is}}$ = 若據點 _i_、容量 _s_ 的工廠開啟為 1,關閉為 0
    • s = lowhigh 容量的工廠
Python 的供應鏈分析

限制式

  • 總產量 = 總需求
    • $\sum_{i=1}^{n}$ x$_{ij}$ = D$_{\text{j}}$,其中 $j = 1, ..., m$
    • $n$ = 生產設施數量
    • $m$ = 市場或區域需求點數量
Python 的供應鏈分析

限制式

  • 總產量 ≤ 總產能
    • $\sum_{j=1}^{m}$ x$_{ij}$ ≤ $\sum_{s=1}$ K$_{is}$y$_{is}$
    • K$_{is}$ = 據點 _i_、規模 _s_ 的潛在產能
Python 的供應鏈分析
from pulp import *

# 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]))
Python 的供應鏈分析

程式碼範例(續)

# 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])
Python 的供應鏈分析

重點整理

有容量限制的廠址選擇模型:

  • 限制式
    • 總產量 = 總需求
    • 總產量 ≤ 總產能
Python 的供應鏈分析

複習時間

Python 的供應鏈分析

Preparing Video For Download...