Project archive · 02 · Picking station

QPS 투입·배치 최적화

station들이 링 컨베이어로 이어진 피킹 설비에서 어떤 SKU를 어느 station에 둘지와 주문 박스를 어떤 순서로 투입할지를 정하는 두 엔진입니다. 배치는 친화도와 냅색 DP로, 순서는 이산사건 시뮬레이션 위의 Tabu Search로 풉니다. 계산은 Python 서버에서 하고 이 페이지는 결과를 그립니다.

합성 데이터 (생성)서버 계산 · api.taeheelee.comAllocation 엔진Reorder 엔진
모드
탐색 예산
옵션
 
준비

SKU → station 배치

단계별 부하 (Allocation 9단계)

링 컨베이어 시뮬레이션

투입 순서 이른 → 늦은 (막대 = 한 주문이 한 station에서 피킹)bypass: 대기열(5) 만석으로 지나침대기 (도착 후 시작까지)

탐색 수렴

무작위 다중 샘플링 (최선값)Tabu Search (최선값)

투입 순서 (IN_SEQ)

모델이 하는 일

레시피의 참조 구현(numpy + 표준 라이브러리)을 서버에서 그대로 돌립니다. 주문·SKU·station은 전부 이 데모가 생성한 것이고, 실제 설비·센터·테이블 이름은 없습니다.

1 · 친화도

함께 주문되는 SKU 찾기

주문×SKU 이진 행렬 X에서 C = XᵀX로 동시 주문 횟수를 구하고, 2회 이상인 쌍에 Jaccard × ln(1+C) 점수를 줍니다. 같은 station에 모일수록 박스가 들르는 station 수가 줄어듭니다.

2 · 배치

앵커 시딩 + 5라운드 냅색 DP

서로 멀리 떨어진 SKU를 station마다 씨앗으로 심고, 채움률 0.2 → 1.0 다섯 라운드로 모든 station을 같이 채웁니다. 라운드마다 station 하나의 남은 셀과 목표 부하 안에서 가치 = load + α·친화도를 최대화하는 정확한 2차원 0/1 냅색을 풉니다. 끝으로 친화도 이동과 부하 균형 스왑으로 다듬습니다. PP SKU가 아닌 것은 PP station에 못 들어갑니다.

3 · 순서

시뮬레이션 위의 Tabu Search

박스는 station 0 앞에서 k × interval초에 투입되어 링을 돕니다. station마다 작업자 1명·대기열 5, 피킹은 SKU 수 × 10초, 이동 3초. 대기열이 차면 bypass해 한 바퀴 더 돕니다. 목적은 makespan + bypass이고, 무작위 샘플링으로 초기해를 잡은 뒤 위치쌍 swap 이웃을 평가하는 Tabu Search(tenure 50, aspiration 없음)로 줄입니다. 최종 순서는 best 순열을 다시 돌려 첫 피킹 시작 시각 순으로 매깁니다.

4 · 운영

대안 제시와 재정렬

배치 계획 때는 station 수를 하나씩 늘려 가며 대안을 만들고 예상 소요 시간과 투입 공수(시간 × station 수)를 같이 줍니다. 운영 중에는 이미 투입된 주문을 고정 prefix로 두고 나머지만 다시 탐색하며, 현장 실행성을 위해 같은 box type이 이어지도록 구간 단위로 묶는 후처리를 둘 수 있습니다. 이 후처리는 시뮬레이션을 다시 보지 않으므로 makespan이 늘 수 있습니다.