Recommendations for Splitting Large Matrices
Assume that the large matrix MxN is a matrix that exceeds the Routing API limits. When M is the number of starts and N is the number of destinations, the matrix should be split for computation as suggested in the table below to get results within an optimal response time.
|Matrix dimension type||Split method||Example|
|Large vector 1xN||Maximize the number of destinations per request.||Split vector 1x5043 into 50 1x100 requests and one (1) 1x43 request. This results in a total of 51 requests.|
|Large vector Mx1||Maximize the number of starts per request.||Split vector 5043x1 into 50 100x1 requests and one (1) 43x1 request. This results in a total of 51 requests.|
|Large matrix MxN, where N > 1 and M > 100*N||Maximize the number of starts per request with one destination.||Split the matrix 5043x20 into 20 separate instances of 50 100x1 requests and one (1) 43x1 request. The total is calculated as follows: 20*(50+1) = 1020 requests.|
|Large matrix MxN, where M > 1 and N > 1||Maximize number of starts and destinations per request.||Split the matrix 3000x4043 into 200 separate instances of 40 15x100 requests and one (1) 15x43 request. The total is calculated as follows: 200*(40+1) = 8200 requests.|
If you need to further improve your response times, group the destinations that are close to each other in requests. The closer destinations are to each other in a request, the shorter the response time tends to be. This is an approach that you can use in cases where you maximize the number of destinations.
You can use a similar approach in cases where you maximize the number of starts by grouping starts that are close to each other in requests.