Вправа на логічне обмеження
Ваш клієнт замовив шість продуктів для доставки протягом наступного місяця. Щоб доставити всі продукти, доведеться відправити кілька вантажівок. Є обмеження за вагою: 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))