Упражнение на логические ограничения
Ваш клиент заказал шесть товаров с доставкой в течение следующего месяца. Для перевозки всех товаров потребуется несколько рейсов. Грузоподъёмность вашего грузовика не превышает 25 000 фунтов. Из соображений денежного потока вы хотите отправить наиболее прибыльную комбинацию товаров, которая поместится в кузове.
| Товар | Вес (фунты) | Прибыль (USD) |
|---|---|---|
| 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))