São as operações que deverão ser resolvidas no planejamento logístico. Apresentam as características como atividades de entrega/coleta, horário do cliente, peso/volume da operação, entre outros.
Parâmetros obrigatórios:
customerSite
- texto com o nome do site, local da operação.customerTimeWindows
- é a janela de horário que o cliente poderá receber a operação:start
- Horário de início que o cliente atua na operação. Formato timestamp: 1511901826456.end
- Horário de fim que o cliente atua na operação. Formato timestamp: 1511904661038.
depotSite
- depot de origem para a operação. Usado para identificar de qual depot o produto será embarcado no veículo até a entrega. No caso de operação de coleta, será qual o depot deverá desembarcar o produto.id
- texto único com o identificador da operação. Normalmente é a ordem de serviço ou algum id de fácil identificação em outros sistemas.product
- texto único com o nome do produto. Deve estar declarado em products.type
- tipo da operação, de entrega do produto ou coleta do produto. Deve ser um dos seguintes tipos: [ COLLECTION, DELIVERY ].volume
- número decimal com o volume do produto que será entregado/coletado na operação. É importante estar na mesma unidade em que foi utilizado em vehicleTypes. Por exemplo, metros cúbicos.weight
- número decimal com o peso do produto que será entregado/coletado na operação. É importante estar na mesma unidade em que foi utilizado em vehicleTypes. Por exemplo, kilogramas.
Exemplo com parâmetros obrigatórios:
Code Block |
---|
"operations": [
{
"customerSite": "MERCADO02GLICERIO",
"depotSite": "DEPOSITO01",
"type": "DELIVERY",
"customerTimeWindows": [
{
"end": 1583506800000,
"start": 1583499600000
}
],
"id": "NUMORDEM30",
"product": "HD_DIVERSOS",
"volume": 1,
"weight": 0.15
},
{
"customerSite": "MERCADO10SCAETANO",
"depotSite": "DEPOSITO01",
"type": "DELIVERY",
"customerTimeWindows": [
{
"end": 1583528400000,
"start": 1583492400000
}
],
"id": "NUMORDEM27",
"product": "HD_DIVERSOS",
"volume": 1,
"weight": 0.15
}
] |
Parâmetros opcionais:
customerHandlingDuration
- Número inteiro com o tempo em segundos que será gasto no cliente para realizar a operação. Conforme o tipo de atividade, se acumula ao tempo declarado nos parâmetrossiteLoadingFixedTime
esiteUnloadingFixedTime
de LogisticConstraints.depotTimeWindows
- é a janela de horário do depósito em que a operação deve ocorrer. Por exemplo, se for uma operação com atividade de delivery, o produto será carregado no veículo dentro do depósito neste intervalo de horário (na resposta da API aparecerá como Loading). Se for uma operação com atividade de collection, o produto chegará no depósito neste intervalo de horário (na resposta da API aparecerá como Unloading):start
- Horário de início que o depot atua na operação. Formato timestamp: 1511901826456.end
- Horário de fim que o depot atua na operação. Formato timestamp: 1511904661038.
depotHandlingDuration
- Número inteiro com o tempo em segundos que será gasto no depot para realizar a operação. Conforme o tipo de atividade, se acumula ao tempo declarado nos parâmetrossiteLoadingFixedTime
esiteUnloadingFixedTime
de LogisticConstraints.group
- Texto com o grupo de operações. Usado para agrupar operações de forma manual. As operações que possuem o mesmo valor serão executados juntos.preAllocatedVehicleName
- Texto com o nome do veículo que irá realizar a operação de forma pré-definida. Com isso a Planning API irá alocar esse veículo associado para colocar a operação em sua rota. Utilize esse parâmetro para exemplos em que um motorista favorito deverá atender um cliente ou um veículo específico precisa realizar a operação.priority
- Número inteiro da prioridade da operação. A escala de prioridade pode ser crescente ou decrescente que deve ser configurado no parâmetropriorityManagementType
comDECREASING_MANAGEMENT
ouGROWING_MANAGEMENT
do Optimization Profile.quantity
- Número decimal com a quantidade da operação. Apenas para descrição, não interfere no peso ou volume da operação ou no modo em que a operação é processada.
Exemplo com parâmetros opcionais:
Este exemplo apresenta 2 operações de entrega para serem realizadas no intervalo das 10:00 até as 12:00 da manhã (customerTimeWindows
). A operação no MERCADO01MOOCA
possui o depotTimeWindows
definido para realizar o carregamento no depósito entre 11:00 e 12:00 com duração de 10 minutos (depotHandlingDuration
).
Devido a esta característica, o caminhão só sairá do depósito 11:10 para realizar as duas operações e terá até 12:00 para realizar as duas operações.
Ambas operações são do mesmo "group": "A"
e serão atendidos pelo "preAllocatedVehicleName": "VUC01"
.
Code Block |
---|
"operations": [
{
"customerSite": "MERCADO01MOOCA",
"depotSite": "DEPOSITO01",
"preAllocatedVehicleName": "VUC01",
"priority": 20,
"type": "DELIVERY",
"customerTimeWindows": [
{
"start": 1583499600000,
"end": 1583506800000
}
],
"depotTimeWindows": [
{
"start": 1583503200000,
"end": 1583506800000
}
],
"depotHandlingDuration": 600,
"id": "NUMORDEM25",
"product": "HD_DIVERSOS",
"volume": 12,
"weight": 1,
"quantity": 10,
"group": "A"
},
{
"customerSite": "MERCADO02GLICERIO",
"depotSite": "DEPOSITO01",
"preAllocatedVehicleName": "VUC01",
"type": "DELIVERY",
"customerTimeWindows": [
{
"start": 1583499600000,
"end": 1583506800000
}
],
"customerHandlingDuration": 300,
"id": "NUMORDEM30",
"product": "HD_DIVERSOS",
"volume": 1,
"weight": 0.15,
"group": "A"
}
], |
Dependências do Optimization Profile:
Para o bom funcionamento do parâmetro priority
, é necessário que o optimization profile tenha os seguintes parâmetros ativados e configurados conforme a necessidade do negócio:
1- Em "valorization" é possível utilizar "NB_REJECTS_PER_PRIORITIES"
e "CRITICAL_PRIORITY_RESPECTED"
como fator para valorizar as operações com prioridade. O "NB_REJECTS_PER_PRIORITIES"
minimiza as operações rejeitadas conforme a prioridade. O "CRITICAL_PRIORITY_RESPECTED"
minimiza a sobreposição da prioridade crítica cujo valor é definido nos parâmetros 1764 e 1959.
Code Block |
---|
"valorization": [
[
"NB_REJECTS_PER_PRIORITIES"
],
[
"CRITICAL_PRIORITY_RESPECTED"
]
]
|
2- Em LogisticFeatures é necessário ter preenchido priorityManagementType
com DECREASING_MANAGEMENT
ou GROWING_MANAGEMENT
para definir a escala de prioridade para ser crescente ou decrescente:
Code Block |
---|
"logisticFeatures": {
"priorityManagementType": "DECREASING_MANAGEMENT"
},
|
3-Em parâmetros do solver, seguintes parâmetros configuram como são utilizadas as prioridades. Vai variar conforme o valor da prioridade usada pelo usuário em Operations. Neste exemplo foi considerado o valor 100 para a operações de mais alta prioridade.
1763
=100 - Brackets of priorities. This parameter specifies the way to group the similar priorities.1764
=100 - Level of the critical priority. When the solution's valorization is to minimize the overrun of the critical priority, this parameter specifies the level of the critical priority.1787
=100 - Highest priority level to assign to operations to meet a certification requirement in a problem with production constraints and priorities. In a production management context with prioritized operations, this parameter gives the highest priority level to assign to operations that meet a certification requirement.1959
=100 - Critical priority level for operations. This parameter specifies the level up to which operations are considered important in the context of rejected operations valorization by priority level.
Code Block |
---|
"parameters": {
"1763": {
"value": "100"
},
"1764": {
"value": "100"
},
"1787": {
"value": "100"
},
"1959": {
"value": "100"
}
}
|
Parâmetros não testados:
Ainda completar:
characteristics | [...] |
status | string Status of operation Enum: |
depotTimeWindowBlocked | boolean |
customerTimeWindowBlocked | boolean |