- Solicitud HTTP
- Parámetros de ruta
- Cuerpo de la solicitud
- Cuerpo de la respuesta
- Permisos de autorización
- Permisos de IAM
Envía un OptimizeToursRequest que contiene un ShipmentModel y devuelve un OptimizeToursResponse que contiene ShipmentRoutes, que son un conjunto de rutas que deben realizar los vehículos para minimizar el costo general.
Un modelo de ShipmentModel consta principalmente de Shipment que deben llevarse a cabo y Vehicle que se pueden usar para transportar los Shipment. Los ShipmentRoutes asignan Shipments a los Vehicles. Más específicamente, asignan una serie de Visits a cada vehículo, donde un Visit corresponde a un VisitRequest, que es un retiro o una entrega para un Shipment.
El objetivo es proporcionar una asignación de ShipmentRoute a Vehicle que minimice el costo total, en el que el costo tiene muchos componentes definidos en ShipmentModel.
Solicitud HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
La URL usa la sintaxis de la transcodificación gRPC.
Parámetros de ruta de acceso
| Parámetros | |
|---|---|
parent |
Obligatorio. Proyecto o ubicación de destino para realizar una llamada. Formato:
Si no se especifica una ubicación, se elegirá una región automáticamente. |
Cuerpo de la solicitud
El cuerpo de la solicitud contiene datos con la siguiente estructura:
| Representación JSON |
|---|
{ "timeout": string, "model": { object ( |
| Campos | |
|---|---|
timeout |
Si se establece este tiempo de espera, el servidor devuelve una respuesta antes de que transcurra el período de tiempo de espera o se alcance el plazo del servidor para las solicitudes síncronas, lo que ocurra primero. En el caso de las solicitudes asíncronas, el servidor generará una solución (si es posible) antes de que se agote el tiempo de espera. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
model |
Es el modelo de envío que se debe resolver. |
solvingMode |
De forma predeterminada, el modo de solución es |
searchMode |
Es el modo de búsqueda que se usa para resolver la solicitud. |
injectedFirstSolutionRoutes[] |
Guía el algoritmo de optimización para encontrar una primera solución similar a una solución anterior. El modelo se restringe cuando se crea la primera solución. Los envíos que no se realizan en una ruta se omiten de forma implícita en la primera solución, pero se pueden realizar en soluciones sucesivas. La solución debe satisfacer algunas suposiciones básicas de validez:
Si la solución insertada no es factible, no necesariamente se muestra un error de validación, sino que se puede mostrar un error que indique que no es factible. |
injectedSolutionConstraint |
Restringe el algoritmo de optimización para encontrar una solución final que sea similar a una solución anterior. Por ejemplo, se puede usar para inmovilizar partes de rutas que ya se completaron o que se deben completar, pero no se deben modificar. Si la solución insertada no es factible, no necesariamente se muestra un error de validación, sino que se puede mostrar un error que indique que no es factible. |
refreshDetailsRoutes[] |
Si no está vacío, se actualizarán las rutas proporcionadas sin modificar su secuencia subyacente de visitas ni los tiempos de viaje: solo se actualizarán otros detalles. Esto no resuelve el modelo. Desde el 2020/11, esto solo completa las polilíneas de las rutas no vacías y requiere que Los campos Este campo no se debe usar junto con
|
interpretInjectedSolutionsUsingLabels |
Si es verdadero, haz lo siguiente:
Esta interpretación se aplica a los campos Si es verdadero, las etiquetas de las siguientes categorías deben aparecer como máximo una vez en su categoría:
Si un Quitar visitas a rutas o rutas completas de una solución insertada puede afectar las restricciones implícitas, lo que puede generar cambios en la solución, errores de validación o inviabilidad. NOTA: El llamador debe asegurarse de que cada |
considerRoadTraffic |
Considera la estimación del tráfico para calcular los campos |
populatePolylines |
Si es verdadero, se completarán las polilíneas en las respuestas de |
populateTransitionPolylines |
Si es verdadero, las polilíneas y los tokens de ruta se propagarán en la respuesta |
allowLargeDeadlineDespiteInterruptionRisk |
Si se configura este parámetro, la solicitud puede tener un plazo (consulta https://grpc.io/blog/deadlines) de hasta 60 minutos. De lo contrario, el plazo máximo es de solo 30 minutos. Ten en cuenta que las solicitudes de larga duración tienen un riesgo de interrupción significativamente mayor (aunque sigue siendo pequeño). |
useGeodesicDistances |
Si es verdadero, las distancias de viaje se calcularán con distancias geodésicas en lugar de distancias de Google Maps, y los tiempos de viaje se calcularán con distancias geodésicas y una velocidad definida por |
label |
Es la etiqueta que se puede usar para identificar esta solicitud y que se devuelve en |
geodesicMetersPerSecond |
Cuando |
maxValidationErrors |
Trunca la cantidad de errores de validación que se muestran. Por lo general, estos errores se adjuntan a una carga útil de error INVALID_ARGUMENT como un detalle de error BadRequest (https://cloud.google.com/apis/design/errors#error_details), a menos que solvingMode=VALIDATE_ONLY: consulta el campo |
Cuerpo de la respuesta
Si se ejecuta de forma correcta, el cuerpo de la respuesta incluye una instancia de OptimizeToursResponse.
Alcances de la autorización
Requiere el siguiente alcance de OAuth:
https://www.googleapis.com/auth/cloud-platform
Permisos de IAM
Se requiere el siguiente permiso de IAM en el recurso parent:
routeoptimization.locations.use
Para obtener más información, consulta la documentación de IAM.