14 mins

NextBillion.ai vs. Google Cloud Fleet Routing - Powerful Optimization Engine

Introduction

According to Smart Fleet Management Market Research Report 2023, The Global Smart Fleet Management Industry is expected to grow from USD 367.9 billion in 2025 to USD 605.7 billion by 2030, with a compound annual growth rate (CAGR) of 10.1% over the forecast period (2022- 2030). There is an increasing demand for efficient fleet management solutions that reduce operating costs, improve vehicle safety, and boost overall productivity. 

The integration of artificial intelligence (AI) and machine learning (ML) is driving the smart fleet management market. Fleet operators can use AI and ML to optimize operations, cut costs, and increase overall efficiency. This has resulted in the development of predictive maintenance solutions, route optimization software, and other AI-powered fleet management tools.

Optimization solutions help optimize routes, fuel usage, and vehicle maintenance to improve fleet efficiency and reduce costs. The efficacy of the Optimization engine is the deciding factor in the efficiency, cost-effectiveness, and overall performance of fleet management solutions.

NextBillion.ai’s Optimization Engine, which is an integral part of Route Optimization API and Google’s CFR are two prominent solutions available in the market.  Both of these solutions are used across the industry to address the challenges of optimizing fleet operations, such as route planning and vehicle allocation.

This technical article analyzes NextBillion.ai vs. Google CFR, exploring their respective optimization engines’ features, capabilities, and performance.

Feature Comparison of Optimization Engines: NextBillion.ai VS Google Cloud Fleet Routing

An optimization engine considers the input data, such as vehicles, jobs and shipments, to generate an optimized fleet route. NextBillion.ai’s and Google’s CFR  optimization engines work on this primary principle, each with its own custom parameters and working. 

Let’s compare the main objects available in NextBillion.ai’s Optimization Engine and Google CFR.

Understanding Input Objects in NextBillion.ai’s Optimization Engine

NextBillion.ai’s Optimization Engine provides users with customizable objects tailored to their specific needs, allowing for accurate route planning and optimization.

Locations Object

The `locations` object defines and organizes all the relevant geographical points that need to be considered during optimization. Users can assign a unique identifier to the set of locations, ensuring that each set of locations is uniquely identifiable within the optimization process. 

The `approaches` attribute adds a layer of context to each location, shedding light on the accessibility aspect. By specifying whether a location is curbside or not, this attribute guides the optimization engine in devising efficient route strategies, considering factors like parking availability and proximity to designated pick-up or drop-off points.

Example

"locations": {

     "id": 2,

     "location": [

"34.06675919,-118.30620984", "34.04268850,-118.28191077", "34.03434239,-118.28358834", "34.04238041,-118.23817754", "34.08431954,-118.25597762", "34.06892275,-118.29156827", "34.01103011,-118.19238067", "34.08659806,-118.17526366"

]

    "approaches": [
                    "curb",
                    "unrestricted",
                    "",
                    "curb"
                 ]
  }
  

Click here to learn more about locations object.

Jobs Object

This object describes the individual tasks or jobs to be completed in the optimization process. Users can set up various attributes for each job or task, offering greater flexibility and customization options. 

Let’s take a closer look at each attribute within the jobs object.

id: Think of this as the unique identifier for each job. It distinguishes one task from another within the system, ensuring clarity and organization.

description: This attribute allows for custom descriptions tailored to each job.

location_index: Specifies the index of the location where the job needs to be performed. It guides the optimization algorithm in routing vehicles to the correct destinations for task fulfillment.

delivery and pickup: These attributes describe the quantity involved in the job’s delivery or pickup step. These attributes support multidimensional quantities for efficient load management, whether delivering packages or picking up goods.

Refer to the tutorial on how to configure pickups and deliveries. 

service: Defines the time duration needed to complete the job. This attribute ensures tasks are completed within specified timeframes, from unloading cargo to servicing equipment.

time_windows: Specifies the time periods within which the job should be fulfilled. It allows flexible scheduling, ensuring tasks are completed within designated time windows.

skills: Defines the skills required to complete the job. Whether it’s specialized knowledge or technical expertise, this attribute ensures tasks are assigned to capable individuals or vehicles.

priority: Sets the priority of the job. While it doesn’t dictate the sequence of tasks, it influences whether a job will be assigned, helping prioritize critical tasks within the optimization process.

setup: Specifies the setup duration needed for the job. Whether preparing equipment or completing pre-task requirements, this attribute accounts for additional time beyond the core task.

zones: Assign the job to specific zones. It ensures that vehicles allowed to operate in the designated zones are assigned to fulfill the job, optimizing routing and resource allocation.

Example

"jobs": [
  {
    "id": 1,
    "description": "Delivery to Warehouse A",
    "location_index": 3,
    "delivery": [10, 20],
    "service": 600,
    "time_windows": [[1656487800, 1656516600]],
    "skills": [101, 102],
    "priority": 30,
    "setup": 300,
    "zones": [1, 2]
  },
  {
    "id": 2,
    "description": "Service Appointment at Client X",
    "location_index": 8,
    "service": 900,
    "time_windows": [[1656500000, 1656520000]],
    "skills": [103],
    "priority": 50,
    "zones": [3]
  }
]

Vehicles Object

In fleet management and optimization, one of the key components that significantly impact efficiency and productivity is vehicles. The `vehicles` object provides a detailed blueprint of the vehicles utilized in fulfilling tasks within a fleet management system. 

Let’s take a closer look at each attribute within the vehicles object:

id: Think of this as the vehicle’s identification number, akin to a license plate. It ensures each vehicle is uniquely identifiable within the system.

description: Users can provide a brief overview of the vehicle description.

start_index and end_index: These attributes define the starting and ending points of the vehicle’s route. They specify the indices of the vehicle’s starting and final stop points within the location array, guiding its journey from point A to point B.

capacity: Here, you can define the vehicle’s carrying capacity. Whether it’s the maximum weight it can haul or the volume it can accommodate, this attribute ensures efficient load management.

time_window: This attribute specifies the time window during which the vehicle can perform tasks. It’s crucial for scheduling and ensuring tasks are completed within designated timeframes.

skills: Just like humans have skills and abilities, vehicles can too! This attribute allows you to define the capabilities of your vehicles, ensuring they’re assigned tasks compatible with their abilities.

max_tasks: Specifies the maximum number of tasks a vehicle can handle. This attribute helps optimize task allocation and ensures vehicles aren’t overloaded.

Read this tutorial on how to leverage max travel cost and max task under vehicles objects.

break: Everyone needs a break now and then, even vehicles! This attribute allows you to define break times for drivers, ensuring they’re well-rested and alert during their routes.

costs: This attribute delves into the financial aspect of vehicle usage. It allows you to define various costs associated with using the vehicle, such as fixed costs, hourly rates, and maximum travel costs. 

Read this tutorial to learn more about vehicle cost.

depot: Specifies the depot assigned to the vehicle. It acts as the starting point for the vehicle’s route, ensuring efficient routing and scheduling.

Refer to the tutorial on how to set up depots.

speed_factor: Adjusts the vehicle’s speed relative to normal speed. Whether you need to account for traffic conditions or vehicle performance, this attribute allows for flexible speed adjustments.

drive_time_layover_config: Configures driving time limitations and rest durations for drivers. It ensures compliance with regulations and promotes driver safety.

allowed_zones and restricted_zones: These attributes define the geographic zones where the vehicle is allowed or restricted to operate. They help optimize route planning and ensure vehicles stay within designated areas.

Example

{
  "vehicles": [
    {
      "id": 1,
      "description": "Delivery Van",
      "start_index": 0,
      "end_index": 0,
      "capacity": [50, 100],
      "time_window": [1656570000, 1656620000],
      "skills": [101, 102],
      "max_tasks": 5,
      "break": {
        "id": 1,
        "time_windows": [[1656487800, 1656516600]],
        "description": "Lunch Break",
        "service": 900
      },
      "costs": {
        "fixed_cost": 200,
        "per_hour_cost": 30,
        "per_km_cost": 0.15,
        "max_travel_cost": 1800
      },
      "depot": 1,
      "speed_factor": 1.5,
      "drive_time_layover_config": {
        "max_continuous_driving": 3600,
        "layover_duration": 600
      },
      "allowed_zones": [1, 2, 3],
      "restricted_zones": [4, 5]
    },
    {
      "id": 2,
      "description": "Service Truck",
      "start_index": 0,
      "end_index": 0,
      "capacity": [1000, 5000],
      "time_window": [1656570000, 1656620000],
      "skills": [103, 104],
      "max_tasks": 10,
      "costs": {
        "fixed_cost": 300,
        "per_hour_cost": 40,
        "per_km_cost": 0.2,
        "max_travel_cost": 2000
      },
      "depot": 2,
      "speed_factor": 1.8,
      "allowed_zones": [1, 2, 3, 4],
      "restricted_zones": []
    }
  ]
}

Shipments Object

The shipment object is used to set up shipment information that needs to be completed as a part of the optimization process.  Each shipment should have a pickup and corresponding delivery step with their custom attributes. 

Users can either define `jobs` or `shipments` objects to build the optimization problem. This ensures the optimization algorithm receives the inputs required to streamline operations efficiently.

Refer to the tutorial on how to configure the Shipments object.

Example

"shipments": [
  {
    "pickup": {
      "id": 1,
      "description": "Pickup from Supplier A",
      "location_index": 5,
      "service": 300,
      "time_windows": [[1656570000, 1656620000]],
      "setup": 600
    },
    "delivery": {
      "id": 1,
      "description": "Delivery to Warehouse B",
      "location_index": 10,
      "service": 180,
      "time_windows": [[1656570000, 1656620000]],
      "setup": 600,
      "amount": [10, 15],
      "skills": [102, 103],
      "priority": 70,
      "zones": [3, 5]
    }
 }
]

Exploring Advanced Attributes of NextBillion.ai's Optimization Engine

Apart from the above input objects, NextBillion.ai provides custom parameters that can be used to build an optimization input as per business requirements. Some of these parameters are as follows:

Options Object

The `options` parameter serves as a gateway to fine-tune the behavior of optimization algorithms within NextBillion.ai’s Optimization Engine. It’s like the control panel, where you can seamlessly tweak settings to align the solver’s output with your business objectives. This object comes with the following attributes:

  • Objective Configuration

This attribute lets you configure the primary objective of your optimization job. Whether you aim to minimize travel distance, optimize for time efficiency, or even factor in customized costs, the `objective` attribute enables you to tailor the optimization process to suit your needs precisely.

  • Constraint Definitions (constraint)

Efficient route planning isn’t just about optimization; it’s about adhering to constraints seamlessly. NextBillion.ai’s Optimization Engine manages soft and hard constraints, ensuring operational integrity. The following constraints can be added to the algorithm as per user requirements.

max_vehicle_overtime: Specify the permissible overtime for vehicles, mitigating schedule disruptions.

max_visit_lateness: Define acceptable delays for job completion after time windows, maintaining service standards.

max_activity_waiting_time: Enforce strict limits on waiting times between tasks, which is crucial for time-sensitive operations.

Learn more about soft constraints.

  • Routing Configuration (routing)

The routing attribute empowers users to fine-tune route specifications for optimal outcomes. The `routing` object can be used to define traveling mode (e.g., car or truck), factor in real-time traffic conditions, and customize truck dimensions, ensuring compatibility with road infrastructure and specifying truck weight for accurate load management. 

  • Additional Features

NextBillion.ai’s Optimization Engine offers additional functionalities for enhanced usability. Users can tailor routes by specifying objects or maneuvers to avoid, ensuring route feasibility. Caching results can accelerate the optimization, expediting route planning for repetitive scenarios.

By adopting NextBillion.ai’s Optimization Engine, you unlock a world of possibilities for efficient route planning tailored to your business objectives.

Solutions Object

The solution attribute facilitates seamless re-optimization by preserving previous optimization results. The solution attribute retains previous optimization outcomes when new orders necessitate route adjustments. It comprises an array of objects, each representing a distinct route from the prior optimization. This ensures continuity and efficiency in route planning even amidst changing operational demands.

Learn more about on how to leverage solutions attribute for re-optimization of new tasks.

Re-Optimization Support (unassigned)

The unassigned attribute complements the re-optimization feature by accommodating tasks overlooked in earlier optimization cycles. During re-optimization, tasks that couldn’t be assigned in previous iterations find a place within the unassigned attribute. The system ensures comprehensive task allocation by maintaining consistency between the unassigned section in the request and the previous optimization result.

Refer to the tutorial on Re-optimization of unassigned task.

Handling Task Relations

The `relations` parameter enables users to define intricate task dependencies for optimized route planning. Users can establish task relationships by configuring individual relation objects within the relations attribute. While honoring these relations, it’s essential to note that time windows might be occasionally violated, and soft constraints lose their effectiveness.

Read this tutorial to learn more about Relations parameter.

Custom Cost Matrix

The `cost_matrix` attribute offers granular control over traveling costs between geographic coordinates. Users can specify customized costs for traveling between each pair of geographic points mentioned in the location array. This feature is particularly effective when travel_cost is set to customized, empowering users with fine-grained cost management capabilities.

Refer to this tutorial on how to use Custom Cost Matrix.

Zone Geometry Definition

The `zones` attribute enables precise delineation of geographical zones for route planning. Define the geometry of zones involved in the optimization process using geoJSON polygons, multi-polygons, or geofences created through NextBillion.ai’s Geofence API. This ensures accurate allocation of tasks to respective zones, optimizing route planning efficiency.

With these advanced attributes, NextBillion.ai’s Optimization Engine offers unparalleled flexibility and precision in route planning and optimization, catering to diverse business requirements and operational complexities.

Unsure if our product is the right fit for your organization?  Book a demo and let us demonstrate how our solution can address your specific pain points.

Understanding Input Objects in Google Cloud Fleet Routing

The model object in Google CFR (Cloud Fleet Routing) is a component that describes the shipments and vehicles involved in the optimization process. Let’s break down each property of the model object in detail:

Parent

This property defines the parent project ID within which the optimization model is created and stored. It helps organize and manage optimization models within the Google CFR framework.

Model Object

This parent object describes the shipments and vehicle data for the optimization process. Both the Shipment and Vehicles objects are nested under the model object. 

Shipments

Shipments represent the individual tasks or jobs that need to be fulfilled, such as delivering goods or providing services. Each shipment object contains information about deliveries (drop-offs) and pickups (pick-ups), including arrival locations, durations, and time windows.

  • Deliveries

It specifies the delivery details of the shipment. Contains information about the delivery location (latitude and longitude), duration (time required for delivery), and time windows (specified time intervals during which the delivery can be made).

  •  Pickups

Specifies the pickup details of the shipment. Contains information about the pickup location (latitude and longitude), duration (time required for pickup), and time windows (specified time intervals during which the pickup can be made).

  • Load Demands

Defines the load demands or requirements associated with the shipment. Specify the load demands regarding weight, volume, or other dimensions required for fulfilling the shipment. This property helps ensure that vehicles have sufficient capacity to accommodate the shipments they carry.

Vehicles

Vehicles represent the resources for transporting shipments from pickup to delivery locations. Each vehicle object contains information about its load limits (maximum load it can carry) and start/end locations.

  • Load Limits

It defines the maximum load the vehicle can carry, typically in terms of weight. This property helps ensure that the vehicle’s capacity is not exceeded when assigning shipments for transportation.

  • Start Location

Defines the latitude and longitude coordinates of the location from which the vehicle will begin its route. This property helps optimize the vehicle’s route planning by considering its initial position.

  • End Location

Defines the latitude and longitude coordinates of the location where the vehicle’s route will end. This property helps optimize the vehicle’s route planning by considering its final destination.

Example 

The following example showcases a sample input request for Google Cloud Fleet Routing.

{
  "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
        }
      },
      {
        "loadLimits": {
          "weight": {
            "maxLoad": 60
          }
        },
        "endLocation": {
          "latitude": 48.86312,
          "longitude": 2.341215
        },
        "startLocation": {
          "latitude": 48.863112,
          "longitude": 2.341214
        }
      }
    ]
  }
}


Performance Metrics Comparison: NextBillion.ai VS Google CFR

Below is a comparison table highlighting key features and aspects of NextBillion.ai and Google Cloud Fleet Routing (CFR). 

 

Feature

NextBillion.ai

Google CFR

Optimization Engine

Offers a comprehensive optimization engine with advanced algorithms and customization options.

Provides optimization capabilities for fleet management tasks such as routing and scheduling.

Supported Objects

Location, Jobs, Vehicle, Relations, Custom Cost Matrix

Model (Shipments, Vehicles)

Customization

Allows customization of optimization parameters such as job details, vehicle constraints, and cost matrices.

Offers limited customization options compared to NextBillion.ai.

Scalability

Offers scalable solutions suitable for small to large fleets and complex optimization scenarios.

Designed to handle optimization tasks for varying fleet sizes and operational requirements.

Integration

Supports integration with existing fleet management systems and IoT devices.


Refer to NB.ai’s Integration Hub for more details. 

Supports seamless integration with Google’s ecosystem but may offer limited connectivity with other third-party services.

Ease of Use

User-friendly interface and intuitive API for easy implementation and usage.

Offers a user-friendly interface within the Google Cloud Platform environment.

Cost

Pricing model 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.

Pricing is based on per-shipment charges, which may become expensive for users conducting frequent simulations or optimizations involving many shipments.

Soft and Hard Constraints

Offers soft and hard constraints for enhanced flexibility and use-case.

Doesn’t support soft and hard constraints explicitly. 

Truck Routing

Supports advanced truck routing parameters for better fleet management. 


Refer to our Trucking Solutions page for more information.

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

 

Comparing both the optimization engines, NextBillion.ai’s Optimization Engine offers a more detailed and customizable approach to fleet optimization, allowing users to specify job details, vehicle constraints, custom cost matrices, and relationship constraints between jobs. 

On the other hand, Google CFR’s Model object provides essential information about shipments and vehicles but offers less granularity in terms of customization options for optimization.

Why does NextBillion.ai's Optimization Engine Stand Out?

NextBillion.ai’s Optimization Engine offers unparalleled capabilities to meet diverse business needs and overcome complex routing challenges. Here’s why our Optimization Engine is the preferred choice:

1. Extensive Constraint Support: With over 50 constraints at your disposal, our Optimization Engine precisely mirrors real-world scenarios. Whether it’s adhering to time windows, vehicle capacities, or specific delivery constraints, our optimization engine accommodates a wide range of constraints to ensure realistic and efficient route planning. 

Learn more about how to configure soft-constraints.

2. Customizable Objective Functions: We understand that optimizing for travel costs is just one aspect of route planning. That’s why our Optimization Engine offers customizable objective functions to align with your unique business goals. Whether you aim to minimize the number of vehicles used, optimize task completion time, achieve equal task distribution, or maintain consistent travel costs across routes, our platform empowers you to define objectives tailored to your specific needs.

Refer to the tutorial on how to configure custom objectives to achieve equal task distribution.

3. Advanced Task Sequencing: Our Optimization Engine offers advanced task sequencing capabilities beyond simple route optimization. Whether it’s arranging task sequences to accommodate complex business constraints or defining job-shipment connections to ensure tasks follow your specified preferences, our API provides the flexibility and precision needed to orchestrate optimal task sequences, both direct and indirect.

Read this tutorial on task sequencing to learn more about it.

4. Advanced Truck Routing Support: NextBillion.ai offers a wide range of features designed specifically for truck routing, such as extensive customization options, truck-specific routing modes, and depot management functionality. Its affordable pricing model and user-friendly interface make it an appealing option for users looking for advanced truck routing solutions. 

Explore our Trucking Solutions page for detailed information.

 

In essence, NextBillion.ai’s Optimization Engine sets itself apart with its robust support for constraints, customizable objective functions, and sophisticated task sequencing capabilities. By leveraging our platform, businesses can streamline operations, optimize resource utilization, and achieve greater efficiency in route planning and task execution.

 

Book a demo today to check out our optimization engine in action. 

In This Article

About Author
Gaurav Bubna

Gaurav is the co-founder of NextBillion.ai. He leads product innovation, aligning vision with customer experience. With an IIT Bombay background and experience at Grab, Ola, and more, he drives category-defining products.