RT-W2: 피킹 경로 AI 최적화 - 알고리즘 구현

🎯 알고리즘 구현 개요

RT-W1에서 설계한 DBSCAN 클러스터링 + TSP 근사(S-shape/Return) 를 실제 Python 함수로 구현하고, 여기에 교대 시간대에 따른 목표 함수 전환 로직을 추가합니다. 초반에는 경제성(이동거리 최소화), 후반에는 납기 준수(우선순위 배치)를 강조하도록 가중치를 동적 조정합니다.

📝 피킹 배치 최적화 구현
from sklearn.cluster import DBSCAN import numpy as np def optimize_batch(order_pool, picker_state, wms_map): coords = get_sku_coords(order_pool, wms_map) labels = DBSCAN(eps=5.0, min_samples=2).fit_predict(coords) batches = group_by_cluster(order_pool, labels) for batch in batches: path_s = s_shape_route(batch.locations) path_r = return_route(batch.locations) batch.path = min(path_s, path_r, key=total_distance) return sorted(batches, key=lambda b: b.priority)
⏰ 교대 시간대별 목표 함수 전환
def get_objective_weight(shift_elapsed, shift_total): ratio = shift_elapsed / shift_total w_economy = max(0.2, 1.0 - ratio) # 후반부로 갈수록 감소 w_deadline = min(0.8, ratio) # 후반부로 갈수록 증가 return w_economy, w_deadline
🌅 교대 초반
0 ~ 4h
경제성 우선. 이동 거리 최소화 → 피커 피로·비용 절감. 상대적으로 납기 여유 있는 주문까지 동일 배치에 포함.
w_economy
0.8~1.0
w_deadline
0.0~0.5
🌇 교대 후반
4 ~ 8h
납기 준수 우선. Priority=1(당일) 주문을 먼저 배치해 SLA 미달 리스크 차단. 거리 증가는 일부 감수.
w_economy
0.2 (floor)
w_deadline
0.5~0.8 (cap)
🧪 1월 초기 테스트 결과
⚠ 목표 30% 미달 · 클러스터링 품질 개선 필요
피킹 이동 거리
−18.3%
목표 −30% 대비 11.7%p 미달
실루엣 계수
0.42
목표 0.65 (RT-W3에서 개선 예정)
테스트 규모
500건/일
50×50 격자 · SKU 3,000종