Google Maps Route Optimization API client library for assigning tasks and routes to vehicle fleets while optimizing against custom objectives and constraints.
npx @tessl/cli install tessl/pypi-google-maps-routeoptimization@0.1.0A Python client library for Google's Route Optimization API that assigns tasks and routes to vehicle fleets while optimizing against custom objectives and constraints. This library provides comprehensive fleet management capabilities including route planning, task assignment, vehicle constraints handling, and optimization algorithms that consider factors like delivery windows, vehicle capacities, driver schedules, and traffic conditions.
pip install google-maps-routeoptimizationfrom google.maps import routeoptimization_v1Alternative import (equivalent):
from google.maps import routeoptimizationSpecific component imports:
from google.maps.routeoptimization_v1 import (
RouteOptimizationClient,
RouteOptimizationAsyncClient,
OptimizeToursRequest,
OptimizeToursResponse,
BatchOptimizeToursRequest
)
from google.maps.routeoptimization_v1.types import (
Shipment,
Vehicle,
ShipmentModel,
Location,
TimeWindow
)from google.maps import routeoptimization_v1
# Create a client
client = routeoptimization_v1.RouteOptimizationClient()
# Create a simple optimization request
request = routeoptimization_v1.OptimizeToursRequest(
parent="projects/your-project-id",
model=routeoptimization_v1.ShipmentModel(
shipments=[
routeoptimization_v1.Shipment(
display_name="Package 1",
pickups=[{
"location": {"lat_lng": {"latitude": 37.7749, "longitude": -122.4194}},
"time_windows": [{"start_time": {"seconds": 0}, "end_time": {"seconds": 86400}}]
}],
deliveries=[{
"location": {"lat_lng": {"latitude": 37.7849, "longitude": -122.4094}},
"time_windows": [{"start_time": {"seconds": 0}, "end_time": {"seconds": 86400}}]
}]
)
],
vehicles=[
routeoptimization_v1.Vehicle(
display_name="Vehicle 1",
start_location={"lat_lng": {"latitude": 37.7649, "longitude": -122.4294}},
end_location={"lat_lng": {"latitude": 37.7649, "longitude": -122.4294}}
)
]
)
)
# Make the request
response = client.optimize_tours(request=request)
# Process the optimized routes
for route in response.routes:
print(f"Vehicle {route.vehicle_index}: {len(route.visits)} stops")The API follows Google Cloud client library patterns:
RouteOptimizationClient) and asynchronous (RouteOptimizationAsyncClient) clientsShipmentModel, Shipment, Vehicle, and related classesgoogle.api_core.exceptions for standardized error handlingCore single-request route optimization functionality for optimizing vehicle tours against custom objectives and constraints.
def optimize_tours(
request: OptimizeToursRequest,
*,
retry: Optional[Retry] = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
metadata: Sequence[Tuple[str, Union[str, bytes]]] = ()
) -> OptimizeToursResponse: ...Batch processing capabilities for optimizing multiple route optimization requests as long-running operations with Cloud Storage integration.
def batch_optimize_tours(
request: BatchOptimizeToursRequest,
*,
retry: Optional[Retry] = gapic_v1.method.DEFAULT,
timeout: Union[float, object] = gapic_v1.method.DEFAULT,
metadata: Sequence[Tuple[str, Union[str, bytes]]] = ()
) -> operation.Operation: ...Comprehensive data model for representing route optimization problems including shipments, vehicles, constraints, time windows, and optimization parameters.
class ShipmentModel: ...
class Shipment: ...
class Vehicle: ...
class Location: ...
class TimeWindow: ...
class BreakRule: ...
class DistanceLimit: ...Client instantiation, authentication, and configuration options for both synchronous and asynchronous operation modes.
class RouteOptimizationClient:
def __init__(self, *, credentials: Optional[ga_credentials.Credentials] = None, ...): ...
@classmethod
def from_service_account_info(cls, info: dict, *args, **kwargs): ...
@classmethod
def from_service_account_file(cls, filename: str, *args, **kwargs): ...
class RouteOptimizationAsyncClient:
def __init__(self, *, credentials: Optional[ga_credentials.Credentials] = None, ...): ...