Las demandas y los límites de carga son un tipo de restricción que puedes usar para administrar la capacidad. Especifican la capacidad requerida de un envío y la capacidad máxima de un vehículo, lo que te permite optimizar las asignaciones de ruta en función de estas restricciones.
Las demandas y los límites de carga pueden respaldar objetivos como los siguientes:
- Evita que los vehículos se sobrecarguen.
- Supervisa cómo cambian las cargas de los vehículos a medida que se retiran y entregan los envíos.
- Restringe la cantidad de veces que un vehículo puede visitar una ubicación específica.
Las demandas y los límites de carga se especifican en estas propiedades:
loadDemands
especifica la cantidad de capacidad que necesita un envío en particular.loadLimits
especifica la capacidad máxima de un vehículo determinado.
Estructura
Como se muestra en el diagrama, las demandas y los límites de carga se estructuran de la siguiente manera:
loadDemands
es una propiedad deShipment
. UnShipment
puede tener varias demandas de carga.loadLimits
es una propiedad deVehicle
. UnVehicle
puede tener varios límites de carga.
Propiedades
En esta sección, se describen las propiedades de las demandas y los límites de carga, que son los siguientes:
- Tipo de carga: Es una propiedad compartida entre las demandas y los límites de carga.
Load
yLoadLimit
: Son propiedades únicas presentes en las demandas de carga y los límites de carga, respectivamente.
Tipo de carga
Los tipos de carga son claves de cadena que identifican el tipo de demanda de carga de un envío y los límites de carga de un vehículo. Los tipos de carga tienen las siguientes características importantes:
- Definidos por el usuario: Los tipos de carga son los que defines. No hay variables del sistema predefinidas para los tipos de carga.
- Compartido: Los tipos de carga se comparten entre los envíos y los vehículos. Esto significa que un envío consumirá la capacidad de un vehículo hasta su límite solo cuando sus tipos de carga coincidan. Si un vehículo no especifica ningún límite de carga para un tipo en particular, puede transportar una cantidad ilimitada de ese tipo de carga.
Las claves de cadena que representan los tipos de carga usan la sintaxis del tipo de mapa de Protocol Buffers. Estas claves de cadena no deben ser nulas para evitar problemas. Cuando asignes un nombre a un tipo de carga, se recomienda usar identificadores que describan el tipo de carga y su unidad. Por ejemplo: weightKg, volume_gallons, palletcount o frequencyDaily.
Load
y LoadLimit
Los objetos Load
y LoadLimit
contienen propiedades específicas para definir los requisitos de capacidad de los envíos y los vehículos. En la siguiente tabla, se describen estas propiedades:
Objeto | Madre o padre | Propiedad | Tipo de propiedad | Descripción de la propiedad |
---|---|---|---|---|
Load |
loadDemands |
amount |
cadena (formato int64) | Define el requisito de capacidad del envío en el tipo especificado. |
LoadLimit |
loadLimits |
maxLoad |
cadena (formato int64) | Define la capacidad de carga máxima del vehículo en el tipo especificado. |
Ejemplos
En el siguiente ejemplo, se muestra la estructura de una demanda de carga en la que puedes establecer el tipo loadDemands
como una cadena y la propiedad amount
como una cadena en el formato int64:
"loadDemands": {
"MATCHING_LOAD_TYPE ": {
"amount": "YOUR_LOAD_AMOUNT "
}
}
En el siguiente ejemplo, se muestra la estructura más básica de un límite de carga, en la que puedes establecer el tipo loadLimits
como una cadena y la propiedad maxLoad
como una cadena en formato int64:
"loadLimits": {
"MATCHING_LOAD_TYPE ": {
"maxLoad": "YOUR_MAX_LOAD "
}
}
Probar
Usa los ejemplos de código anteriores para crear una situación ficticia. En esta situación, tienes un envío que pesa 10 kilogramos y un vehículo que puede transportar 100 kilogramos:
En el ejemplo de
loadDemands
, define el tipo de carga comoweightKg
.Una vez que lo hagas, el tipo de carga del ejemplo de
loadLimits
también se propagará y compartirá el tipo de carga. Recuerda que los tipos deloadDemands
yloadLimits
deben coincidir para que el envío consuma los límites del vehículo.En el mismo ejemplo de
loadDemands
, establece la propiedadamount
en10
.Esto significa que el envío pesa 10 kilogramos.
En el ejemplo de
loadLimits
, establece la propiedadmaxLoad
en100
.Esto significa que el vehículo puede transportar un máximo de 100 kilogramos.
Recuerda que no hay un conjunto de tipos predefinidos. En este ejemplo, podrías cambiar los kilogramos a puntos o a mediciones lineales en lugar de peso. Esta flexibilidad te permite adaptar las demandas y los límites de carga a tus necesidades específicas.
Ejemplo de solicitud
En el siguiente ejemplo, se muestra la estructura de una solicitud optimizeTours
básica con loadDemands
en un envío y loadLimits
en un vehículo:
{ "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 00.000000, "longitude": 00.000000 } } ], "deliveries": [ { "arrivalLocation": { "latitude": 00.000000, "longitude": 00.000000 } } ], "loadDemands": { "MATCHING_LOAD_TYPE ": { "amount": "YOUR_LOAD_AMOUNT " } } } ], "vehicles": [ { "startLocation": { "latitude": 00.000000, "longitude": 00.000000 }, "endLocation": { "latitude": 00.000000, "longitude": 00.000000 }, "costPerKilometer": 1.0, "loadLimits": { "MATCHING_LOAD_TYPE ": { "maxLoad": "YOUR_MAX_LOAD " } } } ] } }
Recuerda que un envío puede tener varias demandas de carga y un vehículo puede tener varios límites de carga, lo que te permite proporcionar restricciones complejas que se deben tener en cuenta cuando se optimizan las rutas de tu flota.