Задача планирования логистики 2
Вы снова выступаете консультантом производителя кухонных плит и помогаете спланировать логистику. На этот раз нужно составить план на следующие шесть месяцев (янв.–июн.). По-прежнему доступны два склада (Нью-Йорк и Атланта) и четыре региональных клиента (Восток, Юг, Средний Запад, Запад). Стоимость доставки со каждого склада каждому региональному клиенту указана в таблице ниже. Ваша цель — определить количество отгрузок с каждого склада каждому клиенту, обеспечивающее минимальные затраты.
| Клиент | Нью-Йорк | Атланта |
|---|---|---|
| Восток | $211 | $232 |
| Юг | $232 | $212 |
| Средний Запад | $240 | $230 |
| Запад | $300 | $280 |
Для вас уже созданы: словарь Python costs, содержащий стоимости модели, и три списка — months, warehouse и customers. Значения costs выведены на экран; остальные списки вы можете изучить в консоли. Модель также уже инициализирована.
Это упражнение является частью курса
Аналитика цепочек поставок на Python
Инструкции к упражнению
- Определите переменные решения в модели: сначала используйте генератор списка для итерации по спискам
months,warehouseиcustomers, чтобы создать список ключей. Затем передайте этот список ключей вLpVariable.dicts()для определения нужных переменных. - Задайте целевую функцию, суммировав все затраты на доставку с конкретного склада конкретному клиенту за шесть месяцев.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Define decision variables
key = [(m, w, ____) for m in months for w in warehouse for c in customers]
var_dict = LpVariable.dicts('num_of_shipments',
key,
lowBound=____, cat=____)
# Use the LpVariable dictionary variable to define objective
model += lpSum([costs[(w, c)] * ____[(____, ____, ____)]
for m in months for w in warehouse for c in customers])