Розміщення потужностей із обмеженнями — кейс P1

Аналітика ланцюга постачань у 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$ = завод із потужністю low або high
Аналітика ланцюга постачань у 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...