逻辑约束练习
您的客户下单了 6 个产品,要求在下个月内交付。您需要安排多车次运输才能送达全部产品。每辆卡车的承载上限为 25,000 磅。出于现金流考虑,您希望在不超载的前提下,装载组合的总利润最大。
| Product | Weight (lbs) | Profitability ($US) |
|---|---|---|
| A | 12,583 | 102,564 |
| B | 9,204 | 130,043 |
| C | 12,611 | 127,648 |
| D | 12,131 | 155,058 |
| E | 12,889 | 238,846 |
| F | 11,529 | 197,030 |
我们已为您创建了两个 Python 字典 weight 和 prof,以及一个列表 prod,分别包含每个产品的重量、利润和名称。您可以在控制台中查看它们。
本练习是课程的一部分
Python 供应链分析
练习说明
- 添加一个约束,确保卡车的总重量小于等于 25,000 磅。
- 再添加一个约束,使模型在 D、E、F 三个产品中至多只选择一个(即最多选择一个)。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Initialized model, defined decision variables and objective
model = LpProblem("Loading Truck Problem", LpMaximize)
x = LpVariable.dicts('ship_', prod, cat='Binary')
model += lpSum([prof[i] * x[i] for i in prod])
# Define Constraint
model += lpSum([weight[i] * x[i] for i in prod]) ____ ____
model += ____
model.solve()
for i in prod:
print("{} status {}".format(i, x[i].varValue))