Pythonで学ぶサプライチェーン分析
Aaren Stubberfield
Supply Chain Analytics Mgr.
PuLP はPythonで書かれた線形計画(LP)/整数計画(IP)のモデリングフレームワーク
COIN-OR Foundation(Operations Researchの計算基盤)が保守
PuLP は各種ソルバーと連携
CPLEXCOINGurobi| Cake A | Cake B | |
|---|---|---|
| Oven | 0.5 days | 1 day |
| Bakers | 1 day | 2.5 days |
| Packers | 1 day | 2 days |
.
| Cake A | Cake B | |
|---|---|---|
| Profit | $20.00 | $40.00 |
LpProblem(name='NoName', sense=LpMinimize)
name = 出力 .lp ファイルで使う問題名(例: "My LP Problem")sense = 目的関数の最大化/最小化LpMinimize(既定)LpMaximizefrom pulp import *
# クラスの初期化
model = LpProblem("Maximize Bakery Profits", LpMaximize)
LpVariable(name, lowBound=None, upBound=None, cat='Continuous', e=None)
name = 出力 .lp ファイルで使う変数名lowBound = 下限upBound = 上限cat = 変数タイプe = 列指向モデリングに使用# 意思決定変数を定義
A = LpVariable('A', lowBound=0, cat='Integer')
B = LpVariable('B', lowBound=0, cat='Integer')
# 目的関数を定義
model += 20 * A + 40 * B
# 制約を定義
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22
# モデルを解く
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
from pulp import *
# クラスの初期化
model = LpProblem("Maximize Bakery Profits",
LpMaximize)
# 意思決定変数を定義
A = LpVariable('A', lowBound=0,
cat='Integer')
B = LpVariable('B', lowBound=0,
cat='Integer')
# 目的関数を定義
model += 20 * A + 40 * B
# 制約を定義
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22
# モデルを解く
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
PuLPの5ステップを確認
リソーススケジューリング例を完了
Pythonで学ぶサプライチェーン分析