约束组合练习
您正在为一个仓库网络制定配送计划。该网络有两个仓库(W1 和 W2),每个仓库都可发运三种不同类型的产品(A、B 和 C)。W1 规模较小,每周最多可选择发运以下三者之一:10 件产品 A,或 15 件产品 B,或 20 件产品 C。您的目标是最小化总成本。
控制台中已打印一个名为 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])) <= ____