在案例练习中添加逻辑约束
继续汽车制造的"有限产能工厂选址"模型案例研究。已提供 4 个 Pandas 数据框 demand、var_cost、fix_cost 和 cap,分别包含各地区需求量(千辆)、单位产量的变动成本(千美元)、固定生产成本(千美元)以及产能(千辆)。还创建了两个 Python 列表 loc 和 size,分别包含可选地点以及两种工厂产能类型。以上变量均已打印到控制台以供查看。用于初始化模型、定义决策变量、创建目标函数与约束的代码已为您准备好。
本练习是课程的一部分
Python 供应链分析
练习说明
- 添加一个逻辑约束:如果美国的高产能工厂开启,则德国必须同时开启一个低产能工厂。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Initialize, Define Decision Vars., Object. Fun., and Constraints
model = LpProblem("Capacitated Plant Location Model", LpMinimize)
loc = ['USA', 'Germany', 'Japan', 'Brazil', 'India']
size = ['Low_Cap','High_Cap']
x = LpVariable.dicts("production_", [(i,j) for i in loc for j in loc],
lowBound=0, upBound=None, cat='Integer')
y = LpVariable.dicts("plant_",
[(i,s) for s in size for i in loc], cat='Binary')
model += (lpSum([fix_cost.loc[i,s] * y[(i,s)] for s in size for i in loc])
+ lpSum([var_cost.loc[i,j] * x[(i,j)] for i in loc for j in loc]))
for j in loc:
model += lpSum([x[(i, j)] for i in loc]) == demand.loc[j,'Dmd']
for i in loc:
model += lpSum([x[(i, j)] for j in loc]) <= lpSum([cap.loc[i,s]*y[(i,s)]
for s in size])
# Define logical constraint
model += ____ - ____ <= ____