컬리나 물류 업계에선 최적화 분야의 문제를 자주 풀게 됩니다. 대표적인 스타트업인 컬리에선 물류 최적화를 어떻게 푸는지 글이 나와 공유드립니다. 저도 최적화 문제를 풀었던 경험이 있어서 흥미롭게 봤고, 과정을 잘 정리해주어요. 이 내용은 두번째 글에 대한 내용입니다! 제 프로필에 보시면 첫 글에 대한 정리도 있습니다
이번 글은 조금 더 시뮬레이션에 초점을 맞춥니다
✨️ 추천드리고 싶은 분
- 최적화 분야에 관심이 있는 분(Operation Research 등)
- 유전 알고리즘에 대해 궁금하신 분
- 시뮬레이션 과정이 궁금하신 분
내용 퀵 요약
- 가상의 물류 센터를 구축하고 실험을 통해 유전 알고리즘의 실효성을 검증한 과정 소개
- Digital Twin : 가상의 물류 센터
- 구축할 때 똑같이 구현하면 되는 부분(non-stochastic)과 확률적으로 결정되는(stochastic) 부분도 존재함
- 그룹화 - 피킹 - 분배에서 피킹은 명확한 규칙이 존재함(같은 구역에 있는 상품만 담도록 한다)
- 작업자가 바구니를 얼마나 채울지는 작업자의 판단에 달려있음 -> 확률적으로 결정되는 부분
바구니를 얼마나 채워야 할까?
- 바구니가 찼다는 판단을 위해 무게나 부피를 파악함. 컬리 상품들의 특징이 가볍고, 카트를 끌고 다니기에 부피가 더 중요한 정보
- 임의의 부피 값 Y를 정하고, 부피의 총합이 Y를 초과하기 전까지 바구니에 상품을 넣고 계속 반복함
부피 값의 분포 추정하기
- Y는 확률 변수고, 어떤 분포를 따르는지 알면 Y를 정해줄 수 있음
- 과거 값이 전체가 아니기에 알려진 값을 토대로 추정해야 함
- 바구니 안 상품들의 총 부피를 히스토그램으로 표현하니 Weibull 분포와 비슷함
- MLE를 활용해 분포에 적합한지 추정
- Weibull 분포에 Mixture 분포를 사용해 맞지 않는 부분을 보정함
추정된 바구니 수 vs 실제 바구니 수
- Y를 랜덤으로 뽑고, 부피의 누적합이 Y를 초과하기 전까지 바구니에 상품을 넣음
- 만들어진 바구니 수와 실제 데이터와 비교 - 변동을 잘 포착함
바구니를 얼마나 빠르게 처리해야 할까?
- 처리 속도에 영향을 주는 변수
- Digital Twin 방식에 따라 몇 가지를 통제하기로 함. 바구니 안의 총 상품 수와 바구니 안의 고유 상품 수로 회귀분석을 수행함
- 통제한 상태에서 잘 계산할 수 있으며, R-squared가 0.8 이상
Digital Twin
- AnyLogic을 사용해 실측 사이즈의 QPS 구현함
- 동일한 주문 그룹에 대한 총 처리 시간의 차이를 파악함 -> 하나의 그룹에 대해서 약 3% 감소
- 센터 작업자분들이 체감될 변화라고 함
실제로 적용한 후의 데이터도 있으면 좋겠네요-!