- Google Research의 Operations Research 팀이 정기 컨테이너선의 네트워크 설계·일정·컨테이너 경로를 함께 최적화하는 Shipping Network Design API를 공개함
- 이 문제는 선박의 항구 방문 순서, 도착·출발 시간, 컨테이너의 출발지-목적지 경로를 동시에 정해야 해 WorldLarge 기준 500척 선박·200개 항구 규모까지 복잡해짐
- 초기 접근인 이중 컬럼 생성과 CP-SAT는 소·중규모에서 증명 가능한 최적해를 찾았지만, 대규모 문제에는 큰 이웃 탐색과 가변 이웃 탐색을 결합한 휴리스틱이 필요했음
- LINERLIB 벤치마크에서 WorldSmall, EuropeAsia, Pacific, Mediterranean의 컨테이너 처리량은 각각 35%, 14%, 35%, 32% 늘었고, 사용 선박 수는 7%, 15%, 4%, 23% 줄어듦
- Google은 이 방법을 WorldLarge 규모의 네트워크 설계와 일정 문제를 풀 수 있는 첫 방법으로 보고, Shipping Network Design API를 향후 Operations Research APIs의 일부로 제공함
컨테이너 해운 네트워크를 동시에 최적화하는 문제
- 전 세계 상품의 90% 는 바다를 통해 이동하며, 대형 화물선은 길이 0.25마일, 무게 25만 톤, 1만2000개 컨테이너, 총 10억 달러 상당의 화물을 실을 수 있음
- 화물선은 항공기, 열차, 트럭과 달리 거의 계속 운항하고, 바다 위에서 순환 경로를 따라 움직임
- 비효율적인 경로와 일정은 컨테이너의 항구 체류, 선박의 해상 대기, 물류 흐름의 지연을 만들고 제품 가격에도 영향을 줌
- Google의 Shipping Network Design API는 이 문제에 대한 새 해법을 구현함
- 기존에 알려진 시도보다 더 빠르고 더 잘 확장됨
- 컨테이너 선사의 이익을 두 배로 만들고, 13% 더 많은 컨테이너를 운송하며, 15% 더 적은 선박으로 운영할 수 있음
LSNDSP가 함께 풀어야 하는 세 결정
- Liner Shipping Network Design and Scheduling Problem, 즉 LSNDSP는 세 가지 결정을 동시에 다룸
- 네트워크 설계: 선박이 항구를 어떤 순서로 방문할지 결정함
- 네트워크 일정: 선박이 언제 도착하고 떠날지 정함
- 컨테이너 경로 지정: 컨테이너가 출발지에서 목적지까지 어떤 여정을 거칠지 선택함
- 컨테이너 해운사는 세 문제를 모두 풀어야 하지만, 보통은 순차적으로 처리함
- 세 문제를 동시에 풀면 난도는 높아지지만 더 나은 해를 찾을 가능성이 커짐
- 네트워크 설계의 결과는 소수의 선박이 따르는 서비스 라인으로 이어짐
- 예를 들어 동아시아에서 수에즈 운하를 지나 남유럽으로 가는 경로가 될 수 있음
- 서비스 라인은 날짜와 함께 공개되어 화주가 언제 어디에 컨테이너를 준비해야 하는지 알 수 있음
항구 접안, 환적, 지연이 만드는 제약
- 컨테이너선은 원하는 때에 항구에 접안할 수 없고, 사전에 정해진 접안 슬롯을 사용해야 함
- 선박은 항구에 접근한 뒤 접안 가능 시점까지 해상 정박지에서 닻을 내리고 대기할 수 있음
- 항구가 혼잡하면 정박지에서 몇 시간 또는 며칠 동안 머물 수 있음
- 정확한 네트워크 일정은 단순히 어느 날 접안하는지가 아니라 어느 시간에 접안하는지까지 포함함
- 특정 시간에 맞추기 위해 속도를 높일 수 있음
- 연료 절감을 위해 속도를 낮추는 선택도 가능함
- 항구에 접안하면 크레인이 컨테이너를 내리고, 다음 항차에 실을 컨테이너를 다시 선박에 적재함
- 일정이 밀리면 예정된 컨테이너를 모두 싣기 전에 항구를 떠나는 cut-and-run이 발생할 수 있음
- 남은 컨테이너는 이후 선박이 싣게 됨
- 컨테이너가 출발지에서 목적지로 가는 중간 항구에서 시간을 보내는 경우를 환적이라고 부름
- 환적은 LSNDSP의 가능한 해 수를 더 크게 늘림
- 컨테이너 경로 생성에 작용하는 여러 제약 중 하나임
최적화 방법: 컬럼 생성에서 이웃 탐색까지
- 모든 최적화 문제는 변수, 변수에 대한 제약, 최소화 또는 최대화할 목적 함수로 구성됨
- 예: 선박과 항구는 변수
- 예: 선박에 실을 수 있는 컨테이너 수는 제약
- 예: 운송 컨테이너 수 최대화는 목적 함수
- 변수와 제약은 보통 행렬로 표현되며, 열은 변수, 행은 제약을 나타냄
- 대규모 문제를 분해하는 일반 기법으로 컬럼 생성을 사용함
- 처음에는 변수 일부만 고려함
- 이후 원래 문제를 더 잘 근사하기 위해 새 변수, 즉 새 열을 생성함
- Google은 문제를 분석해 어떤 열을 생성하는 것이 좋은지 예측하는 소프트웨어 라이브러리를 개발함
- 이 라이브러리는 수학적 프로그래밍 프레임워크인 MathOpt를 통해 오픈소스로 공개될 예정임
두 가지 기본 접근의 한계
- 이중 컬럼 생성은 네트워크 설계와 컨테이너 경로 지정을 서로 결합된 두 문제로 봄
- 각 문제는 가장 좋은 선택지를 고르는 주 선택 문제와 합리적 선택지를 찾는 보조 생성 문제로 구성됨
- 각 문제 쌍에 최단 경로 알고리듬을 적용해 합리적 선택지를 생성함
- 이후 선형계획 솔버 Glop을 사용해 각 문제의 최선 선택지를 고름
- 두 문제에 컬럼 생성을 동시에 적용하고, 한 문제의 중간 결과가 다른 문제의 진행에 영향을 주도록 함
- 증명 가능한 최적해를 찾을 수 있었지만 중간 규모 문제까지만 잘 확장됨
- CP-SAT 기반 구현도 시도함
- Google의 제약 프로그래밍 솔버 CP-SAT를 사용함
- 중간 규모 네트워크까지는 잘 작동했지만 전 세계 해운 문제 규모로는 확장되지 않음
- 두 접근 모두 소·중규모 문제에서는 증명 가능한 최적해를 찾았으나, 대규모 확장성이 부족했음
대규모 확장을 위한 휴리스틱
- 확장성을 높이기 위해 기존 해 주변의 이웃을 살펴 개선 기회를 찾는 로컬 탐색 변형 두 가지를 적용함
- 큰 이웃 탐색은 해의 일부를 고정한 뒤 앞의 방법들을 적용함
- 예: “이 선박은 격주 화요일에 Los Angeles를 방문한다” 같은 조건을 고정함
- 검색 공간을 줄여 확장성을 높임
- 가변 이웃 탐색은 네트워크와 일정 양쪽의 이웃을 탐색함
- 탐색을 병렬화하고 여러 머신에 분산해 많은 이웃을 동시에 평가함
- 검색 공간을 제한하면서 Operations Research와 해운 산업의 지식을 반영할 수 있음
- 두 접근 모두 유망한 해의 일부를 잠가두고, 이미 좋은 해에서 출발해 더 나은 해로 개선하는 점진적 방식을 사용함
- 이전 시도들은 문제 해결이 훨씬 어려워진다는 이유로 운송 시간을 고려하지 않았지만, Google은 운송 시간을 포함하면 해의 품질이 크게 개선되는 것을 확인함
LINERLIB 벤치마크 결과
- 성능 평가는 해운 네트워크 설계 문제를 위한 산업 벤치마크 LINERLIB를 사용함
- 벤치마크에는 컨테이너 해운 시나리오의 선대, 항구, 컨테이너 수요가 포함됨
- 테스트 시나리오는 WorldSmall, EuropeAsia, WorldLarge를 포함함
- WorldLarge는 500척 선박, 200개 항구, 약 14만 개 컨테이너를 포함함
- 최적화 목적은 단순히 컨테이너 수 최대화나 선박 수 최소화가 아님
- 컨테이너 수만 최대화하면 더 많은 선박을 투입해 운영비가 커질 수 있음
- 선박 수만 최소화하면 한 척으로 모든 컨테이너를 운송하는 식의 비현실적으로 긴 배송 시간이 나올 수 있음
- LINERLIB는 정시 배송 수익에서 항해 비용과 항구 컨테이너 처리 비용을 뺀 추정 이익으로 균형을 맞춤
- 기준선과 비교해 Google의 방법은 더 적은 선박으로 더 많은 컨테이너를 경로 지정함
- WorldSmall: 컨테이너 처리량 35% 증가, 선박 수 7% 감소
- EuropeAsia: 컨테이너 처리량 14% 증가, 선박 수 15% 감소
- Pacific: 컨테이너 처리량 35% 증가, 선박 수 4% 감소
- Mediterranean: 컨테이너 처리량 32% 증가, 선박 수 23% 감소
- LINERLIB의 경제적 가정에 기반하면 예상 이익률도 상당히 개선됨
API와 후속 공개 자료
- Google은 이 방법을 WorldLarge 규모의 네트워크 설계와 일정 문제를 풀 수 있는 첫 방법으로 봄
- 결과는 LSNDSP 벤치마크 페이지에서 더 자세히 확인할 수 있음
- Shipping Network Design API는 향후 추가될 Operations Research APIs 중 하나임