結合多個限制式的練習
你正在為一個倉儲網路規劃配銷方案。這個網路有兩個倉庫(W1 和 W2),每個倉庫都能出貨 3 種不同產品(A、B、C)。W1 規模較小,每週最多可以出貨:產品 A 為 10 件,或產品 B 為 15 件,或產品 C 為 20 件。你的目標是最小化總成本。
主控台中已列印名為 demand 的 Pandas DataFrame,包含各產品的每月需求。此外,已提供 PuLP 模型的程式碼,用來初始化模型、定義決策變數、目標函式,並加入讓各產品總出貨量等於其需求的限制式。
本練習屬於課程
Python 的供應鏈分析
練習說明
- 完成限制式的程式碼,用來在 4 週的期間內描述倉庫 W1 的出貨上限。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Initialize, Define Decision Vars., Objective Function, and Constraints
model = LpProblem("Distribution Planning", LpMinimize)
wh = ['W1','W2']
prod = ['A', 'B', 'C']
X = LpVariable.dicts("ship", [(w, p, c) for c in cust for p in prod for w in wh],
lowBound=0, cat="Integer")
model += lpSum([X[(w, p, c)]*costs.loc[(w, p), c] for c in cust for p in prod for w in wh])
for c in cust:
for p in prod:
model += lpSum([X[(w, p, c)] for w in wh]) == demand.loc[p, c]
# Define Dependent Demand Constraints
model += ((1/10) * lpSum([X[('W1', 'A', c)] for c in cust])
+ ____ * lpSum([X[(____, ____, c)] for c in cust])
+ ____ * lpSum([X[(____, ____, ____)] for c in cust])) <= ____