容量制約付き工場配置 - 事例 P2

Pythonで学ぶサプライチェーン分析

Aaren Stubberfield

SuSupply Chain Analytics Mgr.

容量制約付き工場配置モデル

モデリング

  • 地域拠点での生産
    • 2つの工場規模(小/大)
  • 他地域への出荷
  • 生産拠点の開閉

地域生産の地球の画像

Pythonで学ぶサプライチェーン分析

意思決定変数

操作変数:

  • x$_{\text{ij}}$ = 立地_i_で生産し_j_へ配送する量
  • y$_{\text{is}}$ = 立地_i_・容量_s_の工場が稼働なら1、停止なら0
    • s = _小_ または _大_ の容量
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...