배송 거리뿐 아니라 고객별 도착 가능 시간, 대기, 지각 비용을 함께 고려하는 경로 최적화입니다.
왜 이 문제가 생길까
배송 경로를 거리만으로 최적화하면 가까운 고객을 먼저 들렀다가 예약 시간이 있는 고객에게 늦을 수 있습니다. 반대로 너무 일찍 도착하면 운전자가 기다려야 합니다. 실제 배차에는 이동 시간, 차량 용량, 하역 시간, 고객 시간창이 함께 들어갑니다.
시스템은 무엇을 구분해야 할까
주문마다 서비스 가능 시작·종료 시각, 하역 소요 시간, 수량, 우선순위를 저장합니다. 반드시 지켜야 하는 계약 시간창과 지각 시 비용을 감수할 수 있는 선호 시간창을 구분합니다. 도착 시각뿐 아니라 서비스 시작 시각과 대기 시간을 계산해야 합니다. 운행 중 교통이 바뀌면 전체 경로를 매번 뒤엎기보다 이미 약속한 방문과 기사 휴식 규칙을 고정한 상태에서 남은 구간만 재계획합니다.

현장에서 적용하면
A 고객은 오전 9시부터 받을 수 있고 B 고객은 9시 30분까지 받아야 합니다. A가 가까워도 먼저 가면 20분 기다려 B에 늦을 수 있습니다. 이때 B를 먼저 들른 뒤 A로 가는 경로가 거리는 조금 길어도 서비스 수준은 높습니다. 배차 화면에는 총거리 외에 예상 지각, 대기, 차량 적재율을 같이 보여 줍니다.

도입할 때 놓치기 쉬운 점
지도상의 평균 이동 시간만 쓰면 출근 시간 정체를 놓칩니다. 서비스 시간과 주차 시간을 0으로 놓는 것도 비현실적입니다. 최적화 결과가 현장 기사에게 납득되려면 왜 방문 순서가 바뀌었는지 설명하고 수동 예외를 기록할 수 있어야 합니다.
시작 전 점검할 세 가지
- 고객별 하드·소프트 시간창이 구분됐는가
- 도착·대기·하역 시간을 모두 계산하는가
- 실행 중 재계획의 고정 조건이 정해졌는가
참고 자료: Google OR-Tools의 시간창 차량 경로 예제
#배송최적화 #차량경로 #VRPTW #시간창 #배차 #물류 #경로최적화 #운영최적화 #납기관리 #최적화알고리즘