Розробка AI-системи оптимізації розміщення товарів на складі

Статичне ABC-слотування дає 20-35% скорочення пробігу збирача одразу після впровадження. Але вже через три тижні 30% SKU змінюють клас — збирач їде в дальню зону кожне п'яте замовлення. Ми вирішуємо це завдання за допомогою ML-прогнозування активності та математичної оптимізації переміщень. Результа

Напрямки AI-розробки

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1302
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    998
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1267
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    714
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1006

Статичне 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 дні.

Процес робіт

  1. Аналітика — збір даних, визначення обмежень
  2. Проєктування — архітектура ML-пайплайну та інтеграції
  3. Розробка — реалізація моделей, інтерфейсу рекомендацій
  4. Тестування — A/B-тест на історичних даних та в пілоті
  5. Деплой — розгортання в контурі замовника, моніторинг

Строки орієнтовно

Від 2 до 4 місяців залежно від обсягу SKU (до 50 000) та складності інтеграції з WMS. Вартість розраховується індивідуально — зв'яжіться для отримання оцінки.