- Solicitud HTTP
- Parámetros de ruta de acceso
- Cuerpo de la solicitud
- Cuerpo de la respuesta
- Permisos de autorización
- Permisos de IAM
Envía un OptimizeToursRequest
que contiene un ShipmentModel
y muestra un OptimizeToursResponse
que contiene ShipmentRoute
, que son un conjunto de rutas que deben realizar los vehículos para minimizar el costo general.
Un modelo ShipmentModel
consta principalmente de Shipment
que se deben llevar a cabo y Vehicle
que se pueden usar para transportar los Shipment
. Los ShipmentRoute
asignan Shipment
a Vehicle
. Más específicamente, asignan una serie de Visit
a cada vehículo, donde un Visit
corresponde a un VisitRequest
, que es una recolección o entrega para un Shipment
.
El objetivo es proporcionar una asignación de ShipmentRoute
a Vehicle
que minimice el costo total cuando este tiene muchos componentes definidos en el ShipmentModel
.
Solicitud HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*/locations/*}: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á automáticamente una región. |
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 muestra una respuesta antes de que transcurra el período de tiempo de espera o se alcance la fecha límite del servidor para las solicitudes síncronas, lo que ocurra primero. Para las solicitudes asíncronas, el servidor generará una solución (si es posible) antes de que haya transcurrido el tiempo de espera. Una duración en segundos con hasta nueve dígitos decimales, que terminan en “ |
model |
Modelo de envío para resolver. |
solvingMode |
De forma predeterminada, el modo de resolució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 la anterior. El modelo se ve limitado cuando se compila 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 cumplir con algunas suposiciones básicas de validez:
Si la solución inyectada no es factible, no se muestra necesariamente un error de validación y, en su lugar, puede devolverse un error que indica inviabilidad. |
injectedSolutionConstraint |
Limita el algoritmo de optimización para encontrar una solución final que sea similar a la solución anterior. Por ejemplo, se puede usar para inmovilizar partes de rutas que ya se completaron o que deben completarse, pero no deben modificarse. Si la solución inyectada no es factible, no se muestra necesariamente un error de validación y, en su lugar, puede devolverse un error que indica inviabilidad. |
refreshDetailsRoutes[] |
Si el campo no está vacío, las rutas proporcionadas se actualizarán sin modificar la secuencia subyacente de visitas o los tiempos de viaje; solo se actualizarán otros detalles. Esto no resuelve el modelo. A partir de noviembre de 2020, solo se propagan los polilíneas de las rutas no vacías y se requiere que Es posible que los campos Este campo no se debe usar junto con
|
interpretInjectedSolutionsUsingLabels |
Si es verdadero:
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 las visitas de ruta o las rutas completas de una solución insertada puede tener un efecto en las restricciones implícitas, lo que puede provocar cambios en la solución, errores de validación o inviabilidad. NOTA: El llamador debe asegurarse de que cada |
considerRoadTraffic |
Ten en cuenta la estimación del tráfico para calcular los campos |
populatePolylines |
Si es verdadero, las polilíneas se propagarán en las |
populateTransitionPolylines |
Si es verdadero, las polilíneas se propagarán en la respuesta |
allowLargeDeadlineDespiteInterruptionRisk |
Si se establece, 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 (pero aún pequeño). |
useGeodesicDistances |
Si esta preferencia se establece como "true", 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 mediante distancias geodésicas con una velocidad definida por |
label |
Etiqueta que se puede usar para identificar esta solicitud, informada 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 de 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 contiene una instancia de OptimizeToursResponse
.
Permisos de 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.