As demandas e os limites de carga são um tipo de restrição que pode ser usado para gerenciar a capacidade. Eles especificam a capacidade necessária de um envio e a capacidade máxima de um veículo, o que permite otimizar as alocações de rota com base nessas restrições.
As demandas e os limites de carga podem ajudar a alcançar objetivos como:
- Evitar a sobrecarga de veículos.
- Monitore como as cargas dos veículos mudam à medida que os envios são coletados e entregues.
- Restringir o número de vezes que um veículo pode visitar um local específico.
As demandas e os limites de carga são especificados nestas propriedades:
loadDemands
especifica a quantidade de capacidade necessária para um envio específico.loadLimits
especifica a capacidade máxima de um determinado veículo.
Estrutura
Conforme mostrado no diagrama, as demandas e os limites de carga são estruturados da seguinte maneira:
loadDemands
é uma propriedade deShipment
. UmShipment
pode ter várias demandas de carga.loadLimits
é uma propriedade deVehicle
. UmVehicle
pode ter vários limites de carga.
Propriedades
Esta seção descreve as propriedades para limites e demandas de carga, que são os seguintes:
- Tipo de carga:uma propriedade compartilhada entre as demandas e os limites de carga.
Load
eLoadLimit
:propriedades exclusivas presentes nas demandas de carregamento e nos limites de carregamento, respectivamente.
Tipo de carga
Os tipos de carga são chaves de string que identificam o tipo de demanda de carga de um envio e os limites de carga de um veículo. Os tipos de carga têm estas características importantes:
- Definidos pelo usuário:os tipos de carga são definidos por você. Não há variáveis predefinidas do sistema para tipos de carga.
- Compartilhado:os tipos de carga são compartilhados entre remessas e veículos. Isso significa que uma remessa vai consumir a capacidade de um veículo até o limite apenas quando os tipos de carga corresponderem. Se um veículo não especificar nenhum limite de carga para um tipo específico, ele poderá transportar uma quantidade ilimitada desse tipo de carga.
As chaves de string que representam os tipos de carga usam a sintaxe do tipo de mapa de Protocol Buffers. Para evitar problemas, essas chaves de string não podem ser nulas. Ao nomear um tipo de carga, é recomendável usar identificadores que descrevam o tipo da carga e a unidade dela. Por exemplo: weightKg, volume_gallons, palletcount ou frequencyDaily.
Load
e LoadLimit
Os objetos Load
e LoadLimit
contêm propriedades específicas para definir os requisitos de capacidade de remessas e veículos. A tabela a seguir descreve essas propriedades:
Objeto | Com filhos | Propriedade | Property type | Descrição da propriedade |
---|---|---|---|---|
Load |
loadDemands |
amount |
string (formato int64) | Define o requisito de capacidade do envio no tipo especificado. |
LoadLimit |
loadLimits |
maxLoad |
string (formato int64) | Define a capacidade de carga máxima do veículo no tipo especificado. |
Exemplos
O exemplo a seguir mostra a estrutura de uma demanda de carga em que você pode definir o
tipo loadDemands
como uma string e a propriedade amount
como uma string
no formato int64:
"loadDemands": {
"MATCHING_LOAD_TYPE ": {
"amount": "YOUR_LOAD_AMOUNT "
}
}
O exemplo a seguir mostra a estrutura mais básica de um limite de carga, em que você
pode definir o tipo loadLimits
como uma string e a propriedade maxLoad
como uma string no formato int64:
"loadLimits": {
"MATCHING_LOAD_TYPE ": {
"maxLoad": "YOUR_MAX_LOAD "
}
}
Faça um teste
Use os exemplos de código acima para criar um cenário fictício. Nesse cenário, você tem um envio de 10 kg e um veículo que pode transportar 100 kg:
No exemplo
loadDemands
, defina o tipo de carga comoweightKg
.Depois disso, o tipo de carga no exemplo
loadLimits
também será preenchido, compartilhando o tipo de carga. Os tipos deloadDemands
eloadLimits
precisam ser iguais para que a remessa consuma os limites do veículo.No mesmo exemplo
loadDemands
, defina a propriedadeamount
como10
.Isso significa que o pacote pesa 10 kg.
No exemplo
loadLimits
, defina a propriedademaxLoad
como100
.Isso significa que o veículo pode transportar no máximo 100 kg.
Não há conjuntos de tipos predefinidos. Neste exemplo, você pode mudar de quilogramas para pontos ou para medidas lineares em vez de peso. Essa flexibilidade permite que você adapte as demandas de carga e os limites às suas necessidades específicas.
Exemplo de solicitação
O exemplo a seguir mostra a estrutura de uma solicitação optimizeTours
básica
com loadDemands
em um envio e loadLimits
em um veí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 " } } } ] } }
Lembre-se de que um frete pode ter várias demandas de carga e um veículo pode ter vários limites de carga, permitindo que você forneça restrições complexas para considerar ao otimizar as rotas da frota.