Pythonで学ぶサプライチェーン分析
Aaren Stubberfield
Supply Chain Analytics Mgr.
需要見込み
| 曜日 | 必要ドライバー数 |
|---|---|
| 0 = 月曜 | 11 |
| 1 = 火曜 | 14 |
| 2 = 水曜 | 23 |
| 3 = 木曜 | 21 |
| 4 = 金曜 | 20 |
| 5 = 土曜 | 15 |
| 6 = 日曜 | 8 |
質問:
制約:
| 手順 | 定義 |
|---|---|
| 意思決定変数 | X$_{\text{i}}$ = 曜日 _i_ に勤務するドライバー数 |
| 目的関数 | 最小化 z = X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ + X$_{\text{6}}$ |
| 制約 | X$_{\text{0}}$ ≥ 11 |
| X$_{\text{1}}$ ≥ 14 | |
| X$_{\text{2}}$ ≥ 23 | |
| X$_{\text{3}}$ ≥ 21 | |
| X$_{\text{4}}$ ≥ 20 | |
| X$_{\text{i}}$ ≥ 0 (i = 0, ..., 6) |
| 手順 | 定義 |
|---|---|
| 意思決定変数 | X$_{\text{i}}$ = 曜日 _i_ に勤務するドライバー数 |
| 目的関数 | 最小化 z = X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ + X$_{\text{6}}$ |
| 制約 | X$_{\text{0}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ + X$_{\text{6}}$ ≥ 11 |
| X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ + X$_{\text{6}}$ ≥ 14 | |
| X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{6}}$ ≥ 23 | |
| X$_{\text{0}}$ + X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ ≥ 21 | |
| X$_{\text{1}}$ + X$_{\text{2}}$ + X$_{\text{3}}$ + X$_{\text{4}}$ + X$_{\text{5}}$ ≥ 15 | |
| X$_{\text{i}}$ ≥ 0 (i = 0, ..., 6) |
# Initialize Class
model = LpProblem("Minimize Staffing",
LpMinimize)
days = list(range(7))
# Define Decision Variables
x = LpVariable.dicts('staff_', days,
lowBound=0, cat='Integer')
# Define Objective
model += lpSum([x[i] for i in days])
# Define Constraints
model += x[0] + x[3] + x[4] + x[5] + x[6] >= 11
model += x[0] + x[1] + x[4] + x[5] + x[6] >= 14
model += x[0] + x[1] + x[2] + x[5] + x[6] >= 23
model += x[0] + x[1] + x[2] + x[3] + x[6] >= 21
model += x[0] + x[1] + x[2] + x[3] + x[4] >= 20
model += x[1] + x[2] + x[3] + x[4] + x[5] >= 15
model += x[2] + x[3] + x[4] + x[5] + x[6] >= 8
# Solve Model
model.solve()
Pythonで学ぶサプライチェーン分析