Python 的供應鏈分析
Aaren Stubberfield
Supply Chain Analytics Mgr.
PuLP 是用 Python 撰寫的線性規劃(LP)與整數規劃(IP)建模框架。
由 COIN-OR 基金會(運籌研究計算基礎設施)維護。
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 *
# Initialize Class
model = LpProblem("Maximize Bakery Profits", LpMaximize)
LpVariable(name, lowBound=None, upBound=None, cat='Continuous', e=None)
name = 輸出 .lp 檔中的變數名稱lowBound = 下界upBound = 上界cat = 變數型別e = 供欄式建模使用# Define Decision Variables
A = LpVariable('A', lowBound=0, cat='Integer')
B = LpVariable('B', lowBound=0, cat='Integer')
# Define Objective Function
model += 20 * A + 40 * B
# Define Constraints
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22
# Solve Model
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
from pulp import *
# Initialize Class
model = LpProblem("Maximize Bakery Profits",
LpMaximize)
# Define Decision Variables
A = LpVariable('A', lowBound=0,
cat='Integer')
B = LpVariable('B', lowBound=0,
cat='Integer')
# Define Objective Function
model += 20 * A + 40 * B
# Define Constraints
model += 0.5 * A + 1 * B <= 30
model += 1 * A + 2.5 * B <= 60
model += 1 * A + 2 * B <= 22
# Solve Model
model.solve()
print("Produce {} Cake A".format(A.varValue))
print("Produce {} Cake B".format(B.varValue))
回顧 PuLP 建模流程 5 步:
已完成資源排程範例
Python 的供應鏈分析