Задача размещения производств с ограничениями — кейс, часть 1

Аналитика цепочек поставок на Python

Aaren Stubberfield

Supply Chain Analytics Mgr.

Контекст

Несколько способов удовлетворить региональный спрос

Вариант Преимущества Недостатки
Небольшие производства внутри региона Низкие транспортные расходы, минимальные пошлины Возможен избыток мощностей, нет эффекта масштаба
Крупные заводы с поставками в регионы Эффект масштаба Высокие транспортные расходы и пошлины

Аналитика цепочек поставок на Python

Модель размещения производств с ограничениями

  • Модель размещения производств с ограничениями$^{1}$
  • Цель — оптимизировать глобальную сеть цепочки поставок
    • Удовлетворить региональный спрос при минимальных затратах
    • Определить объём регионального производства
1 Chopra, Sunil, and Peter Meindl. _Supply Chain Management: Strategy, Planning, and Operations._ Pearson Prentice-Hall, 2007.
Аналитика цепочек поставок на Python

Модель размещения производств с ограничениями

Моделирование

  • Производство на региональных объектах
    • Два размера предприятий (малой / большой мощности)
  • Экспорт продукции в другие регионы
  • Открытие / закрытие производственных объектов

изображение глобуса с региональным производством

Аналитика цепочек поставок на Python

Переменные решения

Управляемые переменные:

  • $x_{ij}$ = объём продукции, произведённой в точке _i_ и отправленной в _j_
  • $y_{is}$ = 1, если предприятие в точке _i_ мощности _s_ открыто; 0, если закрыто
    • $s$ = малая или большая мощность
Аналитика цепочек поставок на Python

Целевая функция

Минимизировать $z = \sum_{i=1}^{n}(f_{is} y_{is}) + \sum_{i=1}^{n} \sum_{i=1}^{m} (c_{ij} x_{ij})$

  • $c_{ij}$ = стоимость производства и доставки с завода _i_ в регион _j_
  • $f_{is}$ = постоянные затраты на содержание завода _i_ мощности _s_
  • $n$ = количество производственных объектов
  • $m$ = количество рынков или региональных точек спроса
Аналитика цепочек поставок на Python
from pulp import *

# Initialize Class
model = LpProblem("Capacitated Plant Location Model", LpMinimize)

# Define Decision Variables
loc = ['A', 'B', 'C', 'D', 'E']
size = ['Low_Cap','High_Cap']
x = LpVariable.dicts("production",[(i,j) for i in loc for j in loc], 
                      lowBound=0, upBound=None, cat='Continous')
y = LpVariable.dicts("plant",[(i,s) for s in size for i in loc], cat='Binary')

# Define objective function 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]))
Аналитика цепочек поставок на Python

Итоги

Модель размещения производств с ограничениями:

  • Находит баланс между количеством производственных объектов
  • Переменные решения модели:
    • Объём производства в регионе и экспорта
    • Объекты большой или малой мощности: открыты или закрыты
  • Рассмотрена целевая функция
    • Суммирует переменные и постоянные производственные затраты
  • Рассмотрен пример кода
Аналитика цепочек поставок на Python

Давайте потренируемся!

Аналитика цепочек поставок на Python

Preparing Video For Download...