12 mins

NextBillion.ai VS. Google CFR - Advanced Truck Routing Support

Introduction

Truck routing plays a critical role in logistics and transportation management, offering several important benefits:

  • Optimized Resource Utilization: Efficient truck routing helps minimize fuel consumption, reduce vehicle wear and tear, and maximize the utilization of resources such as drivers, vehicles, and equipment. By identifying the most efficient routes, companies can minimize empty miles and improve fleet efficiency.
  • Cost Reduction: Optimized truck routing leads to cost savings by reducing fuel, vehicle maintenance, and labor expenses. By minimizing travel time and distance, companies can lower operational costs and improve profitability.
  • Improved Customer Service: Timely and reliable deliveries are essential for customer satisfaction. Effective truck routing ensures that goods are delivered to customers on time and in optimal condition. Companies can enhance customer service and loyalty by minimizing delays and ensuring accurate arrival times.
  • Reduced Environmental Impact: Efficient truck routing reduces costs and minimizes transportation operations’ environmental impact. By optimizing routes to reduce fuel consumption and emissions, companies can contribute to environmental sustainability and comply with regulatory requirements.
  • Enhanced Safety: Truck routing helps improve safety by identifying routes that minimize traffic congestion, accidents, and other hazards. By avoiding high-risk areas and selecting safer routes, companies can protect their drivers, vehicles, and cargo from potential accidents and incidents.
  • Compliance with Regulations: Truck routing solutions can help companies ensure compliance with regulations such as weight restrictions, vehicle dimensions, and time-of-day restrictions. By incorporating regulatory requirements into route planning, companies can avoid fines, penalties, and legal issues.

Truck routing is crucial for optimizing logistics operations, reducing costs, improving customer service, promoting sustainability, ensuring safety, and achieving regulatory compliance in the transportation industry.

Two prominent players in routing APIs, NextBillion.ai and Google CFR (Cloud Fleet Routing), offer solutions for solving complex Vehicle Routing Problems (VRPs).

In this technical article, we dive into a comparative analysis of NextBillion.ai vs. Google CFR, exploring their features, capabilities, and performance in addressing the challenges of advanced truck routing scenarios.

Feature Comparison: NextBillion.ai vs. Google CFR

In a comparative analysis between NextBillion.ai’s Route Optimization Flexible API and Google’s CFR, examining their feature sets and user experience aspects is critical. Looking at these aspects, we can see how NextBillion.ai’s API stands out, particularly in advanced truck routing.

Let’s break down the differences based on the provided features and user experience aspects:

Feature Differences

NextBillion.ai offers advanced features compared to Google CFR. Some prominent ones are listed below: 

  1. Max Tasks per Vehicle: Google limits tasks based on travel time/duration, while NextBillion.ai allows for task limits, providing more flexibility in defining vehicle capabilities.
  2. Maximum Waiting Time: Google does not have a way to limit waiting time, while NextBillion.ai allows for setting maximum waiting times, enabling better control over task completion.
  3. Setup Time: NextBillion.ai allows for shipment setup times, which Google does not support, providing more realistic operations modeling.
  4. Depots: Google does not have a concept of depots; however, NextBillion.ai supports defining depots explicitly, offering a more accurate representation of operational bases.
  5. Customizable Objectives: NextBillion.ai offers more customizable objectives, including duration, distance, and custom costs, allowing for more tailored optimization criteria than Google’s single objective.
  6. Custom Costs: NextBillion.ai supports complex custom costs, providing more flexibility in modeling and optimizing routing scenarios.
  7. Routing Options: NextBillion.ai offers truck-specific routing options such as truck mode, truck size, weight considerations, and options to avoid U-turns and sharp turns, which Google does not provide.
  8. Relations: NextBillion.ai supports complex relations such as sequence and direct sequence, which Google does not offer.

User Experience Differences

NextBillion.ai offers a smoother and richer user experience than Google CFR. Some of the key differentiators are:

1. Ease of Use: NextBillion.ai automates many configurations, reducing the burden on users to specify detailed settings and making it more user-friendly than Google’s API.

2. Pricing: NextBillion.ai charges per unique location in a 24-hour period, allowing for multiple simulations and dry runs without additional cost, compared to Google’s per-shipment pricing model. NextBillion.ai also provides customizable pricing models that include options for per-task and per-order charges, ensuring tailored solutions to meet the diverse needs of users.

Check out the Pricing page for more information.

3. Customer Service: NextBillion.ai provides better customer service and custom feature development options, enhancing user support and flexibility.

4. Data Privacy: NextBillion.ai does not save user data, ensuring better privacy and security than Google’s data handling policies.

5. User-friendly Documentation: NextBillion.ai provides clear documentation and robust support resources, allowing developers to integrate the API easily into their applications. This streamlined integration process reduces development time and effort, allowing businesses to quickly reap the benefits of advanced truck routing. 

Click here to Book a Demo.

In this Article

Summary of Feature Analysis

Feature

NextBillion.ai

Google CFR

Routing Flexibility

Provides extensive routing options tailored specifically for truck routing, including truck mode, truck size, weight considerations, and options to avoid U-turns and sharp turns.

Offers limited truck-specific routing options, lacking features such as truck mode and detailed truck attributes.

Customization and Objectives

Supports customizable objectives, allowing users to define optimization criteria such as duration, distance, and custom costs. Also, enables complex design and usage of custom costs for fine-tuning routing algorithms.

Provides a single objective of minimizing vehicle, penalty, and duration costs, with limited customization options compared to NextBillion.ai.

Depot Management

Supports explicit depot definition, simplifying routing modeling by providing a dedicated starting point for vehicles.

Lacks a concept of depots, requiring users to manage start points manually.

User Experience and Ease of Use

Offers automated configurations and streamlined user experience, reducing the burden on users to specify detailed settings.

Click to Book a Demo.

Requires users to manually configure many settings, which may be less user-friendly for complex routing scenarios.

Cost-Effectiveness

Charges are based on the number of unique locations in a 24-hour period, allowing for multiple simulations and dry runs without additional cost. Also, provides per-order, per-task and customizable pricing models.

Check out the Pricing page for more information.

Charges per shipment may become expensive for users conducting frequent simulations or optimizations involving many shipments.

Comparing API Structures of NextBillion.ai and Google CFR

This section will compare NextBillion.ai’s Route Optimization Flexible API to Google’s CFR API. By diving into the complexities of these two API services, we aim to provide readers with a thorough understanding of their respective features, capabilities, and overall architecture. 

This analysis will give users valuable insights into how each API is structured and functions, allowing them to make informed decisions when choosing the best truck routing and logistics solution for their needs.

Google CFR API Request Body

The following API represents an example request body of Google CFR service.


{
  "parent": "projects/${YOUR_GCP_PROJECT_ID}",
  "model": {
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 48.880942,
              "longitude": 2.323866
            },
            "duration": "250s",
            "timeWindows": [
              {
                "endTime": "1970-01-01T01:06:40Z",
                "startTime": "1970-01-01T00:50:00Z"
              }
            ]
          }
        ],
        "loadDemands": {
          "weight": {
            "amount": "10"
          }
        },
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 48.874507,
              "longitude": 2.30361
            },
            "duration": "150s",
            "timeWindows": [
              {
                "endTime": "1970-01-01T00:33:20Z",
                "startTime": "1970-01-01T00:16:40Z"
              }
            ]
          }
        ]
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 48.88094,
              "longitude": 2.323844
            },
            "duration": "251s",
            "timeWindows": [
              {
                "endTime": "1970-01-01T01:06:41Z",
                "startTime": "1970-01-01T00:50:01Z"
              }
            ]
          }
        ],
        "loadDemands": {
          "weight": {
            "amount": "20"
          }
        },
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 48.880943,
              "longitude": 2.323867
            },
            "duration": "151s",
            "timeWindows": [
              {
                "endTime": "1970-01-01T00:33:21Z",
                "startTime": "1970-01-01T00:16:41Z"
              }
            ]
          }
        ]
      }
    ],
    "vehicles": [
      {
        "loadLimits": {
          "weight": {
            "maxLoad": 50
          }
        },
        "endLocation": {
          "latitude": 48.86311,
          "longitude": 2.341205
        },
        "startLocation": {
          "latitude": 48.863102,
          "longitude": 2.341204
        },
        "costPerTraveledHour": 3600
      },
      {
        "loadLimits": {
          "weight": {
            "maxLoad": 60
          }
        },
        "endLocation": {
          "latitude": 48.86312,
          "longitude": 2.341215
        },
        "startLocation": {
          "latitude": 48.863112,
          "longitude": 2.341214
        },
        "costPerTraveledHour": 3600
      }
    ]
  }
}

NextBillion.ai Request Body

The following API represents an example request body of NextBillion.ai’s Route Optimization Flexible API service.

{
    "description": "Test",
    "locations": {
        "id": 1,
        "location": [
            "34.083950,-118.318640",
            "34.054927,-118.323726",
            "34.075525,-118.361588",
            "34.076350,-118.338519",
            "34.090425,-118.338933",
            "34.076646,-118.376969",
            "34.094986,-118.300885",
            "34.018780,-118.317919",
            "33.996658,-118.261708",
            "34.059244,-118.376969",
            "34.057106,-118.361326"
        ]
    },
    "jobs": [
        {
            "id": 1,
            "location_index": 0,
            "service": 120,
            "pickup": [
                1
            ],
            "skills": [
                1
            ],
            "time_windows": [
                [
                    1693393200,
                    1693394100
                ]
            ]
        },
        {
            "id": 2,
            "location_index": 1,
            "service": 120,
            "skills": [
                1
            ],
            "pickup": [
                1
            ],
            "time_windows": [
                [
                    1693387800,
                    1693388700
                ]
            ]
        },
        {
            "id": 3,
            "location_index": 2,
            "service": 120,
            "pickup": [
                1
            ],
            "skills": [
                2
            ],
            "time_windows": [
                [
                    1693396800,
                    1693397700
                ]
            ]
        },
        {
            "id": 4,
            "location_index": 3,
            "service": 120,
            "skills": [
                1
            ],
            "pickup": [
                1
            ],
            "time_windows": [
                [
                    1693402200,
                    1693403100
                ]
            ]
        },
        {
            "id": 5,
            "location_index": 4,
            "service": 120,
            "skills": [
                2
            ],
            "pickup": [
                1
            ],
            "time_windows": [
                [
                    1693400400,
                    1693401300
                ]
            ]
        }
    ],
    "shipments": [
        {
            "pickup": {
                "description": "Shipment Pickup 1",
                "id": 1,
                "location_index": 5,
                "time_windows": [
                    [
                        1693397400,
                        1693397760
                    ]
                ]
            },
            "delivery": {
                "description": "Shipment Delivery 1",
                "id": 1,
                "location_index": 6,
                "time_windows": [
                    [
                        1693400700,
                        1693401300
                    ]
                ]
            },
            "skills": [
                2,
                3
            ],
            "amount": [
                3
            ]
        },
        {
            "pickup": {
                "description": "Shipment Pickup 2",
                "id": 2,
                "location_index": 7,
                "time_windows": [
                    [
                        1693429200,
                        1693430100
                    ]
                ]
            },
            "delivery": {
                "description": "Shipment Delivery 2",
                "id": 2,
                "location_index": 8,
                "time_windows": [
                    [
                        1693432800,
                        1693433700
                    ]
                ]
            },
            "skills": [
                2,
                3
            ],
            "amount": [
                2
            ]
        }
    ],
    "vehicles": [
        {
            "id": 1,
            "start_index": 10,
            "skills": [
                1
            ],
            "capacity": [
                10
            ],
            "time_window": [
                1693382400,
                1693411200
            ]
        },
        {
            "id": 2,
            "depot": 0,
            "skills": [
                2,
                3
            ],
            "capacity": [
                10
            ],
            "time_window": [
                1693382400,
                1693411200
            ]
        }
    ],
    "depots": [
        {
            "description": "Depot 1",
            "id": 0,
            "location_index": 9
        }
    ],
    "options": {
        "objective": {
            "travel_cost": "distance"
        },
        "routing": {
            "mode": "truck",
            "truck_size": "210, 210, 320",
            "truck_wieght": 12000,
            "traffic_timestamp": 1693387800
        }
    }
}'

API Request Body Structure Comparison

Let’s compare the two request bodies for advanced truck routing solutions in detail.

Specification

NextBillion.ai

Google CFR

API Structure

NextBillion.ai’s request body is more detailed, encompassing locations, jobs, shipments, vehicles, depots, and options.

The CFR request body follows a hierarchical structure with a “parent” field and a “model” object containing shipments and vehicles.

Locations and Jobs

Includes explicit definitions for locations and jobs, allowing for more granular control over routing constraints.

Does not explicitly define locations and jobs in the request body.

Time Windows

Specifies time windows for pickups, deliveries, and jobs, enabling precise scheduling.

Time windows are defined in ISO 8601 format within the “deliveries” and “pickups” objects.

Skills and Capacities

Allows assignment of skills to jobs and vehicles, along with specifying vehicle capacities.

Does not include fields for skills or explicit vehicle capacities in the request body.

Objective and Routing Options

Offers flexibility in defining objectives such as travel cost and routing options like truck size and weight.

Objective and routing options are not explicitly specified in the request body but may be configured through other means.

Depots

Supports depot definition, essential for specifying starting points for vehicles.

Depot information is not included in the request body but may be inferred from the start locations of vehicles.

Google CFR and NextBillion.ai provide powerful APIs for advanced truck routing solutions, each with strengths and capabilities. While CFR offers a simpler request structure, NextBillion.ai provides more detailed control over routing parameters, including explicit definitions for locations, jobs, time windows, skills, capacities, depots, and routing options.

Businesses may choose between the two based on their specific requirements, preference for granularity, and ease of integration with existing systems.

Google CFR API Response

The following API Response represents the Google CFR API response for the API request mentioned in the previous section.

{
  "routes": [
    {
      "vehicleStartTime": "1970-01-01T00:02:11Z",
      "vehicleEndTime": "1970-01-01T01:15:34Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "1970-01-01T00:16:40Z",
          "detour": "0s",
          "arrivalLoads": [
            {
              "type": "weight"
            }
          ]
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "1970-01-01T00:27:35Z",
          "detour": "725s",
          "arrivalLoads": [
            {
              "type": "weight",
              "value": "10"
            }
          ]
        },
        {
          "startTime": "1970-01-01T00:50:00Z",
          "detour": "1345s",
          "arrivalLoads": [
            {
              "type": "weight",
              "value": "30"
            }
          ]
        },
        {
          "shipmentIndex": 1,
          "startTime": "1970-01-01T00:58:43Z",
          "detour": "1444s",
          "arrivalLoads": [
            {
              "type": "weight",
              "value": "20"
            }
          ]
        }
      ],
      "travelSteps": [
        {
          "duration": "869s",
          "distanceMeters": 4243
        },
        {
          "duration": "505s",
          "distanceMeters": 2480
        },
        {
          "duration": "0s"
        },
        {
          "duration": "273s",
          "distanceMeters": 986
        },
        {
          "duration": "760s",
          "distanceMeters": 3099
        }
      ],
      "vehicleDetour": "4403s",
      "endLoads": [
        {
          "type": "weight"
        }
      ],
      "transitions": [
        {
          "travelDuration": "869s",
          "travelDistanceMeters": 4243,
          "loads": [
            {
              "type": "weight"
            }
          ]
        },
        {
          "travelDuration": "505s",
          "travelDistanceMeters": 2480,
          "loads": [
            {
              "type": "weight",
              "value": "10"
            }
          ]
        },
        {
          "travelDuration": "0s",
          "loads": [
            {
              "type": "weight",
              "value": "30"
            }
          ]
        },
        {
          "travelDuration": "273s",
          "travelDistanceMeters": 986,
          "loads": [
            {
              "type": "weight",
              "value": "20"
            }
          ]
        },
        {
          "travelDuration": "760s",
          "travelDistanceMeters": 3099,
          "loads": [
            {
              "type": "weight"
            }
          ]
        }
      ]
    },
    {
      "vehicleIndex": 1,
      "vehicleStartTime": "1970-01-01T00:00:00Z",
      "vehicleEndTime": "1970-01-01T00:00:00Z",
      "vehicleDetour": "0s"
    }
  ]
}

NextBillion.ai API Response

The following API Response represents NextBillion.ai’s Route Optimization API response for the API request mentioned in the previous section.

{
  "description": "Test",
  "result": {
    "code": 0,
    "summary": {
      "cost": 33703,
      "routes": 2,
      "unassigned": 2,
      "setup": 0,
      "service": 600,
      "duration": 3387,
      "waiting_time": 14536,
      "priority": 0,
      "delivery": [
        3
      ],
      "pickup": [
        8
      ],
      "distance": 33774
    },
    "unassigned": [
      {
        "id": 2,
        "type": "pickup",
        "location": [
          34.01878,
          -118.317919
        ],
        "reason": "cannot be completed due to time constraint",
        "long_id": "2"
      },
      {
        "id": 2,
        "type": "delivery",
        "location": [
          33.996658,
          -118.261708
        ],
        "reason": "cannot be completed due to time constraint",
        "long_id": "2"
      }
    ],
    "routes": [
      {
        "vehicle": 1,
        "cost": 10874,
        "steps": [
          {
            "type": "start",
            "arrival": 1693388405,
            "duration": 0,
            "service": 0,
            "waiting_time": 0,
            "location": [
              34.057106,
              -118.361326
            ],
            "location_index": 10,
            "load": [
              0
            ],
            "distance": 0
          },
          {
            "type": "job",
            "arrival": 1693388700,
            "duration": 295,
            "service": 120,
            "waiting_time": 0,
            "location": [
              34.054927,
              -118.323726
            ],
            "location_index": 1,
            "id": 2,
            "load": [
              1
            ],
            "distance": 3578,
            "long_id": "2"
          },
          {
            "type": "job",
            "arrival": 1693389384,
            "duration": 859,
            "service": 120,
            "waiting_time": 3816,
            "location": [
              34.08395,
              -118.31864
            ],
            "location_index": 0,
            "id": 1,
            "load": [
              2
            ],
            "distance": 7996,
            "long_id": "1"
          },
          {
            "type": "job",
            "arrival": 1693393637,
            "duration": 1176,
            "service": 120,
            "waiting_time": 8563,
            "location": [
              34.07635,
              -118.338519
            ],
            "location_index": 3,
            "id": 4,
            "load": [
              3
            ],
            "distance": 10875,
            "long_id": "4"
          },
          {
            "type": "end",
            "arrival": 1693402320,
            "duration": 1176,
            "service": 0,
            "waiting_time": 0,
            "location": [
              34.07635,
              -118.338519
            ],
            "location_index": 3,
            "load": [
              3
            ],
            "distance": 10875
          }
        ],
        "service": 360,
        "duration": 1176,
        "waiting_time": 12379,
        "priority": 0,
        "delivery": [
          0
        ],
        "pickup": [
          3
        ],
        "distance": 10875,
        "geometry": "ywznEjmlqUBG@G@GAEEE??MIw@[q@WLoA??@KB[JmAB_@?U@[???a@???iABiD??@u@?c@@aB@iB@g@???S??@_A??BsF@aB?s@?k@??@o@@m@???g@?U??BgBB{E??DcF??@s@@qD@aB@[??@gA???y@?]BuB???}@?W??@m@?Q?W??@{@?]?K@M???iA?A?Q?U?I@_@??BuE@qA??@W?c@DcB???u@???y@???M@}B@mA@[?A?g@@y@@s@??@c@@_A?A?S?U??@aB@g@?e@@q@?A?c@@uA???k@?A@m@?A?cC??@u@@{@??@o@?sA???W?A?Q?I?Y@m@@g@?E?AAA?g@??@[BUBUDUFYVmA??@GH_@RgA`@}B@?\\mB`@sB??X{ADU??FU??Ny@??ZgBReA??DQRgADSFW?ABKFc@BW??D[F}@@IH_B?AZqFNaCNsC?ADm@?AD_ABO?A_@C^B@U@SB]@I??BQF_@@Au@]A?YMSK??ICOI??QIyAo@uAo@??UMcJaE_Bs@[OeAe@w@_@??[M]OuGyCYMUKe@Mc@M??IC??@gA?G?A?q@S@_A?gA???iE@m@???mB?mC?k@?A?S?iJ?e@?{A@aD?eA????_AA}B???u@?e@?As@?A?{J@{J?wE@eJ???aA@???Q?A?aB?I?kA?M?eAAqA?gA???eA???mA?c@?Q?kAIAYCY?OA}B@mE?g@???wA@??iA???S?gB???kA???oG@??uD???]???eA?e@?Q?]??p@?x@?X?pA???xA???X???d@???\\?@?b@?n@???j@???\\?hC???\\?zA??_B@??A`@@B?@?@?@DDBB@@@B?N?@?R?N?b@?b@?@?J?K???e@???c@?O?S?QACAACCCCAA?A?A?AAC@a@~AA???p@?@?vA???d@???j@???nA?nA?N?@@lB?@?h@?X?`@?nB?d@?p@?bA?h@?@?d@?@?b@?H?@?d@???f@???l@???V?l@???t@?Z???b@??AZ?@@zA?hB???x@?P?n@???X???h@???n@??V@N@??N@??D?T@??RDNBNDLDLDDBJFTL??PLTJNF??RF@?@@N@TBV@N???fA?xA???b@?@?tBAp@DlAJTBV@r@???N???pB?P?@?t@?D???B?d@?f@Ad@El@I@?D?b@EXA@?J?L?X?D???F?NB??@?p@JJVHV??FRJ\\@FH^D`@?B?B@T@J?@?TEN?XAV???L??APCVCVWnC[dDEf@CXCZARAp@?rC?@@nA???J?NALA\\DNA|@?@?nA?^???^AXANANAN?JAJ?N??@r@??@hA???d@?d@???x@?tC???b@?@?x@??@lA?@?Z???h@?r@???p@??a@???",
        "long_vehicle_id": "1"
      },
      {
        "vehicle": 2,
        "cost": 22829,
        "steps": [
          {
            "type": "start",
            "arrival": 1693397271,
            "duration": 0,
            "service": 0,
            "waiting_time": 0,
            "location": [
              34.059244,
              -118.376969
            ],
            "location_index": 9,
            "load": [
              0
            ],
            "distance": 0
          },
          {
            "type": "pickup",
            "arrival": 1693397542,
            "duration": 271,
            "service": 0,
            "waiting_time": 0,
            "location": [
              34.076646,
              -118.376969
            ],
            "location_index": 5,
            "id": 1,
            "load": [
              3
            ],
            "description": "Shipment Pickup 1",
            "distance": 2255,
            "long_id": "1"
          },
          {
            "type": "job",
            "arrival": 1693397700,
            "duration": 429,
            "service": 120,
            "waiting_time": 0,
            "location": [
              34.075525,
              -118.361588
            ],
            "location_index": 2,
            "id": 3,
            "load": [
              4
            ],
            "distance": 3807,
            "long_id": "3"
          },
          {
            "type": "delivery",
            "arrival": 1693398543,
            "duration": 1152,
            "service": 0,
            "waiting_time": 2157,
            "location": [
              34.094986,
              -118.300885
            ],
            "location_index": 6,
            "id": 1,
            "load": [
              1
            ],
            "description": "Shipment Delivery 1",
            "distance": 11651,
            "long_id": "1"
          },
          {
            "type": "job",
            "arrival": 1693401093,
            "duration": 1545,
            "service": 120,
            "waiting_time": 0,
            "location": [
              34.090425,
              -118.338933
            ],
            "location_index": 4,
            "id": 5,
            "load": [
              2
            ],
            "distance": 15726,
            "long_id": "5"
          },
          {
            "type": "end",
            "arrival": 1693401879,
            "duration": 2211,
            "service": 0,
            "waiting_time": 0,
            "location": [
              34.059244,
              -118.376969
            ],
            "location_index": 9,
            "load": [
              2
            ],
            "distance": 22899
          }
        ],
        "service": 240,
        "duration": 2211,
        "waiting_time": 2157,
        "priority": 0,
        "delivery": [
          3
        ],
        "pickup": [
          5
        ],
        "distance": 22899,
        "geometry": "gf{nEbooqU?I??AUC{@Co@AU??[???i@A??i@?A?O???Q?G???OMA?K?Q?}@AK???U?gB?cB?W@??OH??}AA??}@@c@???u@@??M?cA@w@@??Q?]@??a@@??W???S?[@??Y?c@@{@@??W?]@I?k@???U@??aA@??mA@A?kBBaA@uA@q@@i@@??]?Y@??sABG?G???k@@Y???g@@I???]???a@???OII?[@??m@@??O?Q?y@Bg@ZWRUP?@MLi@d@??OJOHQFWDc@D??OBMBMDOFSHOH???@MF_Ad@UL??kCrAa@T??i@XA?YNULaB|@YLw@`@g@V??i@X??OAEAGCEAAECGAG?IA_@??F[QIGCKG??KG???{@BgC?aB?g@AiA??P@??v@ALAVA?q@???IAO?k@?W?Q?G???_@???M???a@?]?m@???y@?Y?K???W?[???a@?s@?A?e@???m@???e@?k@???q@???i@???a@?c@Aa@?i@?A?c@???cA?]???a@?A?a@Ag@???y@?i@?A?k@?}@?e@?A?]???]?e@???m@Ae@???o@?_@??Ag@@k@Ag@???w@???a@???_@???Q?A?S?S???Y?c@??As@?A?k@?A?aA?S???I?a@?i@???e@???o@?i@???o@?c@?k@?o@???O???U??Am@?A?e@?e@?[?S???U???O???W?A?[???M?o@t@???\\???R?@?F?G???S?A?]???u@????kA?W???_@??AS???S???c@???U?K?A?qA???i@???a@?]AQ???g@?mA?i@???c@??AgA???i@?S???_@?sA?e@?A?a@?A?m@?w@?A?c@???Y???MA[?e@???]?[?i@???s@?A?_@???]?_@???{@?A?c@???_@?m@Ag@???}@???g@?UAc@?_@?e@?c@?qA?a@@i@?mA?A?S?A?g@?g@?a@???c@???eA?g@???e@?M???c@?A?i@?yA???c@???k@?]???_@???gA?e@AaA??@_@?AAa@???y@???c@?A?s@???a@?c@?Y???e@?K?A?w@?q@???u@???w@?U???c@?A?o@???yEAgB?}@?o@???q@?A?uB???o@???m@?a@Ac@?o@?o@?Y?q@???s@?i@???[??AmA?A?y@???e@???uC???y@?c@?A?e@AiA??As@???O@K?K@O@O@O@Y?_@???_@?oA??@_A??DK@K@K@Q?W???K???mA?W?AAy@?c@?k@@U@U??@]BYN{ALqA^wD??BSDq@@Y?QASGK?A?U?MA?AU?C?CEa@I_@AGK]GSIWKU?AIY?C??EOESE]?AEa@?E??AM?I?E?A?G?U?o@??@cC?c@?_A???w@AU@g@???cB???Q?A?qA?c@?A?S???U@_@???k@???wB?m@?o@??AiB?m@?m@?o@??AuB???m@?e@???c@???m@?u@???m@???g@???a@???y@???uA???Q?A?aB?I?kA?M?eAAqA?gA???eA???mA?c@?Q?kAIAYCY?OA}B@mE?g@???wA@??iA???S?gB???kA???oG@??uD???]???eA?e@?Q?]??c@?y@AU???w@?A?S?U?g@?a@?qA???U?e@?e@?mA???k@???SAe@?K??@m@???U???]?_A?A?u@?o@@}@AO???A?S??AmA?m@?iD?w@?A?s@?wB?AAk@?g@?o@Au@???k@???o@?e@?A?k@?iA???W?A?o@?g@???m@???mB?A?M?O?G??A[?o@???c@?_@?Q???C?O?qA?s@m@???aA?y@?QAM?U???S?U???O?C?I@K@A?G?wAA??c@?U@oA?yC?_@?_B@kD?iJ@W?eA@??eB???eB?wB?a@?A?{A?{A?k@?yD@iB???@z@?R?S??A{@hB???xDAj@?zA?zA?`@?@?vB?dB?bB?@??t@???v@?b@??@nA???b@?@?J?bA?p@?@?bC?Z??@zD?lA?f@@bA?jA@j@?@?h@?@?x@???T?L?Z??@hA?@@v@???p@?|@?t@AfA?L???R?N???h@?z@???fA?b@?z@?^?jC?@?V??@hA???pG?l@?b@???`@?j@???l@?X?@?^???j@?@?x@???vA?X???|@?n@??@dA???V?pA?xC???b@?fA???dA???l@?z@?l@???r@???p@??@nBAl@?l@?hA?t@???V?N???P???R???P?d@???\\?@?n@?v@?b@???~@???|@?xE??@bC?@?L?lA?J?@?~@?@?d@?\\?~@??ApA???b@???v@?h@?r@?lA?b@?@?z@@r@???X?h@???N?fA??@t@?d@?p@?lA???r@@^???V?@?\\?jA?lA?J???rA?l@?r@???xDAbA?^?tA?r@@fA???V?@?n@?p@?`@?@?z@??@\\?@?t@?x@?@???z@?p@?@?|@f@?@?L?TA??X?p@AT???dA?L?T?lA?@?r@???h@???R???V?dB???Z?x@???`@?@?\\?`A?V?T?nA???X?J?R?rAAt@?@?RLP?hBA??XA@?pA@??V?\\?Z???z@@??`F@~HC~@?N?|H???jBC|A?zE@??^?T???zB?B?r@?zGA??|G?tC?h@???Z?lA?vE?~A?f@?`@A??F?b@???v@?hF@??b@?X???xE?pBA??b@???^A??nA?bC?hD?^???N???N???LAPALANK??LAD???VILEB?FCJELAJAHAJ@V???\\JlCt@b@L??d@L??jBf@tCx@`@L`@L\\HbAZjAZZHVF??h@L`@H??Ar@??Ax@?f@AZ?@AlAA|B?L?x@???t@??EbB???b@AVApA??CtEA^???H?T?P?hA?@AL?J???\\Az@?V?N?@Al@?V???|@CtB???\\?x@AfA??AZ??A`BApDAr@EbF??CzE??CfB?T???f@Al@??An@?j@???r@A`BCrFA~@???R??Af@??AhBA`B?b@At@ChD???hA?^?@AZ?TC^??KlACZAJKlAA@IbAEd@??Ir@??ADCf@U|B??O`BEVCRE^Ed@?@AVCX??Ev@CXC\\?@A\\??CVEr@?@I~AA^IrA??K`B?@GbAATAT?@G`AEf@??ARIrAGfA??Ef@??G|AEh@AZ??Eh@AREn@??Ch@??GfAGbAItAGjA??Gv@E~@IvA?@Ev@??IhACh@MlBE~@??Er@??Ex@Cb@??CVAX?V@ZBd@?@Bd@@TBn@Bz@??@T?H",
        "long_vehicle_id": "2"
      }
    ]
  },
  "status": "Ok",
  "message": ""
}

API Response Structure Comparison

Let’s compare the API response structure based on various aspects.

Specification

NextBillion.ai

Google CFR

Data Organization

Organized with a summary section containing overall optimization metrics and detailed information about each route, including steps, service, duration, waiting time, priority, deliveries, pickups, distance, and geometry.

Organized in a nested structure with routes containing details about vehicle routes, visits, travel steps, transitions, and other related information.

Routing Information

Provides detailed steps for each route, including start, job (pickup/delivery), and end steps, along with arrival times, durations, services, waiting times, locations, loads, distances, and descriptions.

Provides detailed information about each vehicle’s route, including start and end times, visits (with pickup/delivery details), travel steps, vehicle detour, end loads, and transitions.

Unassigned Shipments

Includes details about unassigned shipments, such as ID, type (pickup/delivery), location, reason for being unassigned, and long ID.

Does not explicitly include information about unassigned shipments.

Metrics

Provides summary metrics like total cost, routes count, unassigned shipments count, setup time, service time, total duration, waiting time, priority, and counts of deliveries/pickups.

Metrics like costs, distances, and durations are included within the route structures.

Geometry

Includes detailed geometry information for each route.

Geometry information (e.g., coordinates) is not explicitly provided within the route structure.

Overall Structure

Provides a comprehensive overview of the optimization results with summary metrics and detailed route information.

More focused on providing detailed information about individual routes and visits.

In summary, while both responses provide detailed information about truck routing optimization results, the NextBillion.ai response structure seems more comprehensive and organized, offering a broader range of metrics and detailed information about each route’s steps and geometry.

NextBillion.ai’s API offers an advanced truck routing solution designed to revolutionize logistics operations for companies seeking efficiency and optimization.

Explore NextBillion.ai’s Route Optimization Flexible API Tutorials to learn more about the API parameters.

Why NextBillion.ai stands out?

NextBillion.ai offers a comprehensive, user-friendly, and highly customizable truck routing solution that empowers companies to optimize their logistics operations effectively. With detailed route information, robust summary metrics, and the flexibility to adapt to specific requirements, NextBillion.ai is the ideal choice for companies seeking to streamline their logistics processes and achieve operational excellence.

1. Comprehensive Optimization: NextBillion.ai’s API provides a comprehensive optimization solution that considers various factors like costs, distances, durations, waiting times, and priority. This holistic approach ensures that companies can maximize resources and streamline operations effectively.

2. Detailed Route Information: With NextBillion.ai, users can access detailed route information, including step-by-step breakdowns of each route. This includes arrival times, service durations, waiting times, pickup/delivery locations, travel distances, and detailed geometry data. Such granularity gives companies full visibility into their logistics processes, facilitating better decision-making and resource allocation.

3. Unassigned Shipment Handling: NextBillion.ai’s API goes the extra mile by providing insights into unassigned shipments, including reasons for being unassigned and their locations. This feature empowers companies to address potential operational bottlenecks or inefficiencies, ultimately leading to smoother and more reliable logistics workflows.

4. Robust Summary Metrics: NextBillion.ai offers robust summary metrics, giving companies a quick overview of their optimization results. From total costs and durations to counts of deliveries, pickups, and unassigned shipments, these metrics offer valuable insights into the overall efficiency and effectiveness of the routing solution.

5. Customizable Solutions: NextBillion.ai understands that every company has unique requirements and constraints. Therefore, the API is designed to be highly customizable, allowing users to tailor the optimization process according to their specific needs. Whether it’s adjusting priority settings, incorporating time constraints, or optimizing for different cost factors, NextBillion.ai provides the flexibility to adapt to diverse logistical challenges.

6. Ease of Integration: NextBillion.ai’s API is user-friendly and easy to integrate into existing systems and workflows. Whether it’s integrating with fleet management software, transportation management systems, or custom-built logistics platforms, the API seamlessly integrates to enhance existing capabilities without disrupting operations.

Book a Demo Today!

NextBillion.ai's Advantages for Advanced Truck Routing

NextBillion.ai’s API offers several advantages over Google’s CFR API for advanced truck routing scenarios, including greater flexibility, efficiency, cost-effectiveness, and user experience, making it a more beneficial option for users seeking advanced truck routing solutions.

1. Flexibility and Customization

NextBillion.ai’s API offers more flexibility and customization, allowing for more accurate modeling of truck routing scenarios with advanced features such as custom objectives, costs, and routing options.

2. Efficiency and Scalability

NextBillion.ai’s automated configurations and advanced algorithms make it more efficient and scalable, particularly for optimizations involving large numbers of vehicles or shipments, compared to Google’s API, which may require more manual intervention.

3. Cost-Effectiveness

NextBillion.ai’s pricing model, based on unique locations in a 24-hour period, allows for cost-effective testing and experimentation without incurring additional charges, making it suitable for iterative optimization processes. Additionally, NextBillion.ai provides customizable pricing models that include options for per-task and per-order charges, ensuring tailored solutions to meet the diverse needs of our users.

4. Enhanced User Experience

NextBillion.ai’s user-friendly interface, comprehensive feature set, and better customer service contribute to an overall enhanced user experience, particularly for users with advanced truck routing requirements. 

Read NextBillion.ai’s Truck Routing Solutions to learn more about advanced features.

In conclusion, both NextBillion.ai and Google CFR offer solutions for advanced truck routing, but each has its own strengths and limitations. NextBillion.ai provides comprehensive features tailored specifically for truck routing, including extensive customization options, truck-specific routing modes, and depot management capabilities. Its cost-effective pricing model and user-friendly interface make it a compelling choice for users seeking advanced truck routing solutions. 

On the other hand, while Google CFR provides a solid foundation for VRP optimization, it may fall short in addressing the diverse needs and complexities of advanced truck routing scenarios. Therefore, the choice between NextBillion.ai and Google CFR ultimately depends on the specific requirements and priorities of the users.

Explore NextBillion.ai’s entire range of Truck Routing Solutions.

About Author
Shivangi Singh

Shivangi is a Senior Technical Writer with over four years of experience in the industry. She is a technology enthusiast who enjoys reading about science, quantum physics and other fields.