§ 1문제 정의
배송지 100만 개를 어디서 출발할까? 각 배송지에는 받고 싶은 제품 ID가 있고, 그 제품을 가진 센터는 평균 16곳뿐이다. 가장 가까운 센터에 미리 묶어두는 것이 핵심.
배송지를 센터별 큐로 분배한다. 그다음 트럭은 매번 가장 가까운 센터로 이동해 TH개의 물건을 차례로 골라 싣는다(센터→배송지1→배송지2→…). 적재 한도 TH는 5번의 sub-task 실험 결과 20이 최적.
점수 함수가 적재량에 비례하기 때문에 50을 다 채우는 건 손해다. 빈 트럭 이동 비용은 그대로 두고 적재 비용을 줄이는 trade-off에서 균형점이 20 부근에 있다.
트럭은 비어 있을 때 가장 싸다. 50을 채우지 마라 — 20에서 멈춰라.
§ 2예제 시각화 — 4개 센터, 20개 배송지
FIG. 3 — truck cycle: pickup → 4 deliveries → repeat
STEP 01 / 6
SPACE play/pause · ← → step · R reset
§ 3알고리즘 골격
sendCenterList(…):
backup centers, build product→centers index
sendDeliveryList(…):
for each delivery:
center = nearest center that has product
push delivery into deliByCenter[center]
solve(truck):
while there are deliveries:
center = nearest center with remaining deliveries
# pick TH=20 closest deliveries inside that center, NN chain
pickups = nearestChain(truck, deliByCenter[center], TH=20)
truckLoading(center, productsOf(pickups))
for d in pickups: truckMove(d)