Статичне ABC-слотування дає 20-35% скорочення пробігу збирача одразу після впровадження. Але вже через три тижні 30% SKU змінюють клас — збирач їде в дальню зону кожне п'яте замовлення. Ми вирішуємо це завдання за допомогою ML-прогнозування активності та математичної оптимізації переміщень. Результат: зниження часу комплектації на 15-25% відносно статичного ABC та скорочення трудозатрат на переслотування вдвічі.
Наша команда має 10+ років досвіду в AI для складської логістики та реалізувала понад 50 проєктів інтеграції WMS та аналітики. Замовте попередній аудит — за 2 дні зробимо розрахунок ефекту для вашого складу (зазвичай економія становить суттєву суму для складу з 10 000+ SKU).
Як працює AI-система оптимізації розміщення товарів на складі?
Система об'єднує три компоненти: ML-модель прогнозу активності кожного SKU, оптимізатор на цілочисельному програмуванні (IP) для вибору переміщень та аналіз афінності для спільного зберігання. Замість статичного ABC-XYZ вона адаптується до змін асортименту щотижня.
Чому статичний ABC-XYZ перестає працювати через місяць?
Класичний ABC-XYZ ділить товари на групи за оборотністю та варіативністю. Але він не враховує сезонні тренди, промо-акції та зміни в поведінці покупців. Через 3-4 тижні «гарячі» SKU зміщуються — збирач їде в дальню зону кожне п'яте замовлення. ML-модель LightGBM прогнозує майбутню активність за 30+ ознаками: лаги, тренди, коефіцієнти варіації, категорійні особливості. Точність прогнозу на 30% вища, ніж у історичного середнього (див. останні дослідження).
Завдання слотування
Цілі розміщення:
- мінімізувати сумарний пробіг при збиранні замовлень
- скоротити час комплектації термінових замовлень
- забезпечити ергономіку: важкі/великі в нижніх комірках
- розділити несумісні категорії (алкоголь, хімія, їжа)
Принцип ABC-XYZ (базовий шар):
| Клас | Оборот | Варіація | Розміщення |
|---|---|---|---|
| AX | Високий | Стабільний | «Золота зона» — найближча до зони пакування |
| AY | Високий | Нестабільний | Близько до зони збирання |
| AZ | Високий | Непередбачуваний | Середня зона, резервний запас |
| BX/BY | Середній | Будь-яка | Середня зона |
| CX/CY/CZ | Низький | Будь-яка | Дальня зона, високі стелажі |
Як ML прогнозує «гарячість» SKU?
ML-модель передбачає кількість відборок кожного SKU на наступні 30 днів. На основі прогнозу ми ранжуємо товари та перераховуємо їх оптимальне положення. Типовий pipeline:
import lightgbm as lgb import pandas as pd from datetime import datetime, timedelta def predict_sku_activity(order_history, sku_features, forecast_horizon_days=30): """ Прогноз кількості відборок по SKU на наступні N днів. Використовується для перерахунку слотування. """ # Ознаки часового ряду df = order_history.groupby(['sku', 'date'])['qty_picked'].sum().reset_index() df = df.sort_values(['sku', 'date']) features = [] for sku in df['sku'].unique(): sku_df = df[df['sku'] == sku].set_index('date')['qty_picked'] # Лагові ознаки feat = { 'sku': sku, 'avg_picks_7d': sku_df.tail(7).mean(), 'avg_picks_30d': sku_df.tail(30).mean(), 'avg_picks_90d': sku_df.tail(90).mean(), 'trend': sku_df.tail(14).mean() - sku_df.tail(28).head(14).mean(), 'cv': sku_df.tail(30).std() / (sku_df.tail(30).mean() + 0.001), **sku_features.get(sku, {}) # категорія, вага, габарити } features.append(feat) X = pd.DataFrame(features).drop('sku', axis=1).fillna(0) # LightGBM для прогнозу середньоденної активності model = lgb.LGBMRegressor(n_estimators=200, learning_rate=0.05) # (попередньо навчена модель) predicted_daily_picks = model.predict(X) return dict(zip([f['sku'] for f in features], predicted_daily_picks)) Як математична оптимізація обирає переміщення?
Переміщувати всі SKU дорого та неефективно. Ми вирішуємо задачу цілочисельного програмування: обираємо топ-200 переміщень із максимальною економією часу. Обмеження: пропускна здатність команди.
Ефект від переміщення розраховується як (старий час відбору - новий час відбору) * частота. Новий час симулюється за прогнозованою частотою та цільовою коміркою. Ранжуємо всі SKU за ефектом, потім вирішуємо задачу з обмеженням.
import pulp def select_moves(sku_benefits, sku_current_slots, slot_candidates, max_moves=200): """ sku_benefits: {sku: expected_travel_savings_hours_per_week} Вибрати max_moves переміщень з максимальною сумарною економією """ prob = pulp.LpProblem("slotting_optimization", pulp.LpMaximize) move_vars = {sku: pulp.LpVariable(f"move_{sku}", cat='Binary') for sku in sku_benefits} # Об'єктив: максимальна економія prob += pulp.lpSum(sku_benefits[sku] * move_vars[sku] for sku in sku_benefits) # Обмеження: не більше max_moves переміщень prob += pulp.lpSum(move_vars.values()) <= max_moves prob.solve(pulp.PULP_CBC_CMD(msg=0)) return [sku for sku, var in move_vars.items() if var.value() > 0.5] Спільне зберігання (Affinity Analysis)
Товари, які часто замовляються разом — зберігати поруч. Використовуємо Apriori (алгоритм market basket analysis) на історії замовлень: поріг lift > 2.0 та підтримка > 5%. В результаті отримуємо 15-20 кластерів афінності. Обмеження: несумісні категорії (хімія та їжа) не розміщуємо разом.
Порівняння підходів до слотування
| Підхід | Зниження пробігу | Частота перерахунку | Трудозатрати на переслотування |
|---|---|---|---|
| Ручне розміщення | 0-10% | Разове | Високі |
| Статичний ABC-XYZ | 15-25% | Раз на квартал | Середні |
| ABC-XYZ + ML прогноз | 20-30% | Щотижня | Низькі (автоматичний відбір) |
| ML + IP + Affinity | 25-35% | Щотижня | Мінімальні (200 переміщень) |
ML + integer programming дає на 30% більший економічний ефект, ніж статичне ABC, при цьому трудозатрати на переслотування знижуються вдвічі. Для складу з 10 000 SKU економія може досягати суттєвої величини, а для великих розподільчих центрів — ще значніше лише за рахунок скорочення пробігу.
Що входить у проєкт впровадження
- Аудит поточного слотування та WMS-інтеграції
- Розробка ML-моделі прогнозування та оптимізатора
- Інтеграція з WMS через API (документація, доступи)
- Пілотний запуск на 1 місяць із моніторингом KPI
- Навчання команди та передача model card
- Гарантія досягнення цільових показників (закріплюється в договорі)
Отримайте консультацію по вашому складу — ми допоможемо оцінити потенціал системи. Замовте попередній аудит за 2 дні.
Процес робіт
- Аналітика — збір даних, визначення обмежень
- Проєктування — архітектура ML-пайплайну та інтеграції
- Розробка — реалізація моделей, інтерфейсу рекомендацій
- Тестування — A/B-тест на історичних даних та в пілоті
- Деплой — розгортання в контурі замовника, моніторинг
Строки орієнтовно
Від 2 до 4 місяців залежно від обсягу SKU (до 50 000) та складності інтеграції з WMS. Вартість розраховується індивідуально — зв'яжіться для отримання оцінки.







