Teslim alma ve teslimat süresi aralığı kısıtlamaları

OptimizeToursRequest aşağıdakiler için kısıtlamalar uygular:

  • Gönderimlerin nasıl yapıldığını etkileyen gönderimler
  • Araç rotalarının hesaplanma şeklini etkileyen araçlar
  • Tüm dünyada bu, hem araçları hem de gönderimleri etkiliyor.

Bu kılavuzda, gönderimlerle ilgili önemli bir kısıtlamaya (zaman aralıkları) odaklanılmıştır.

Zaman aralıkları, belirtmek için OptimizeToursRequest mesajı (REST, gRPC) süreye dayalı sınırlamalar belirledi. Bu tür bir kısıtlama, sevkiyatın ne zaman ve nasıl gerçekleştirilebileceğinin yanı sıra teslim edilir. Bu kısıtlamalarla birlikte optimize edici, sevkiyatın zaman kısıtlamalarını en iyi şekilde karşılayabilecek araçlar.

Gönderim kısıtlamaları: zaman aralıkları

Teslim alma veya teslimatın Shipment.VisitRequest içinde gerçekleşeceği zamanı belirtirsiniz şu mesajı görebilirsiniz:

  • Mesajda timeWindows özelliğini kullanın (REST, gRPC)
  • TimeWindow mesajında başlangıç ve bitiş zamanını belirtin (REST, gRPC) ekleyin.

Zaman aralığı kısıtlamaları içeren örnek istek

Buradaki örnekte her biri ayrı bir gönderime sahip üç farklı gönderim gösterilmektedir teslimat aralığı. Kolaylık sağlaması açısından bu örnekte zaman aralıkları deliveries üzerinde ayarlanmaktadır. Ancak zaman aralıkları teslim almalara da uygulanabilir. Birden fazla zaman aralığı belirtilebilir ancak bu örnekte yayın başına yalnızca bir tane VisitRequest kullanılır.

Zaman aralıkları içeren örnek bir isteği inceleyin

{
  "populatePolylines": false,
  "populateTransitionPolylines": false,
  "model": {
    "globalStartTime": "2023-01-13T16:00:00Z",
    "globalEndTime": "2023-01-14T16:00:00Z",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T18:00:00Z",
                "endTime": "2023-01-13T19:00:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T18:00:00Z",
                "endTime": "2023-01-13T18:30:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 20.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:30:00Z",
                "endTime": "2023-01-13T18:00:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 50.0
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0
      }
    ]
  }
}
    

Zaman aralığı kısıtlamaları içeren örnek yanıt

Örnek yanıtta aracın başlangıç ve bitiş zamanı 17:35:50 ve 18:17:24. Bu zamanlar, optimize edicinin zamanı en aza indirdiğini gösterir. istekte belirtilen aracı costPerHour olarak çalıştırması gerekir. tüm zaman aralığı kısıtlamalarını karşılamalı. Başlangıç zamanı olarak 17:35:50 kullanılıyor aracın ziyaret edilen konumda ziyaretin zaman aralığı başlar. Bu değer, yanıtta sıfır olarak görünür waitDuration değerler.

Örnek isteğe ilişkin yanıtı zaman aralıkları

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-13T17:35:50Z",
      "vehicleEndTime": "2023-01-13T18:17:24Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-13T17:35:50Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2023-01-13T17:38:20Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-13T17:40:50Z",
          "detour": "300s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-13T17:50:09Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 1,
          "startTime": "2023-01-13T18:00:00Z",
          "detour": "796s"
        },
        {
          "startTime": "2023-01-13T18:07:35Z",
          "detour": "1520s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:35:50Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:38:20Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:40:50Z"
        },
        {
          "travelDuration": "409s",
          "travelDistanceMeters": 1371,
          "waitDuration": "0s",
          "totalDuration": "409s",
          "startTime": "2023-01-13T17:43:20Z"
        },
        {
          "travelDuration": "341s",
          "travelDistanceMeters": 1312,
          "waitDuration": "0s",
          "totalDuration": "341s",
          "startTime": "2023-01-13T17:54:19Z"
        },
        {
          "travelDuration": "205s",
          "travelDistanceMeters": 636,
          "waitDuration": "0s",
          "totalDuration": "205s",
          "startTime": "2023-01-13T18:04:10Z"
        },
        {
          "travelDuration": "339s",
          "travelDistanceMeters": 1276,
          "waitDuration": "0s",
          "totalDuration": "339s",
          "startTime": "2023-01-13T18:11:45Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 3,
        "travelDuration": "1294s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "1200s",
        "totalDuration": "2494s",
        "travelDistanceMeters": 4595
      },
      "routeCosts": {
        "model.vehicles.cost_per_hour": 27.711111111111112,
        "model.vehicles.cost_per_kilometer": 45.95
      },
      "routeTotalCost": 73.661111111111111
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 3,
      "travelDuration": "1294s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "1200s",
      "totalDuration": "2494s",
      "travelDistanceMeters": 4595
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-13T17:35:50Z",
    "latestVehicleEndTime": "2023-01-13T18:17:24Z",
    "totalCost": 73.661111111111111,
    "costs": {
      "model.vehicles.cost_per_hour": 27.711111111111112,
      "model.vehicles.cost_per_kilometer": 45.95
    }
  }
}
    

Zaman aralıklarında aracın visits numarası sıralanmıştır, böylece en erken teslim edilen zaman aralıkları belirlenir.

  1. shipments[2], 17:50'de teslim edildi
  2. shipments[1], 18:00'de teslim edildi
  3. shipments[0], 18:07'de teslim edildi

Örnek istek sabit zaman aralığı kısıtlamalarını belirtiyor. tamamlanması gereken teslimatları belirleyebilirsiniz. Bir gönderimin VisitRequests zaman aralığından herhangi birinde tamamlanması mümkün değilse veya uygun maliyetli değilse optimizatör gönderimi atlar. Gönderimde penaltyCost, optimize edici bunu yanıt olarak raporlanan maliyetlere ekler. metrics. Aksi takdirde, OptimizeToursResponse mesajının (REST, gRPC) skippedMandatoryShipmentCount özelliği artar.

shipment[1]'nin zaman aralığını birkaç saat daha geçe (18:00 yerine 21:00'e) kaydırarak zaman aralıklarını değiştirirseniz sonuçlar aşağıdaki örneklerde gösterildiği gibi farklı olur.

İzin verilmeyen zaman aralıklarına sahip örnek bir isteği inceleyin memnun etmek

{
  "populatePolylines": false,
  "populateTransitionPolylines": false,
  "model": {
    "globalStartTime": "2023-01-13T16:00:00Z",
    "globalEndTime": "2023-01-14T16:00:00Z",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T18:00:00Z",
                "endTime": "2023-01-13T19:00:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T21:00:00Z",
                "endTime": "2023-01-13T21:30:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 20.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:30:00Z",
                "endTime": "2023-01-13T18:00:00Z"
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 50.0
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0
      }
    ]
  }
}
    

İkinci örnek isteğe verilen yanıta bakın: bir gönderinin atlandığı zaman aralıkları

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-13T17:37:49Z",
      "vehicleEndTime": "2023-01-13T18:09:49Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-13T17:37:49Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-13T17:40:19Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-13T17:49:38Z",
          "detour": "0s"
        },
        {
          "startTime": "2023-01-13T18:00:00Z",
          "detour": "946s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:37:49Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:40:19Z"
        },
        {
          "travelDuration": "409s",
          "travelDistanceMeters": 1371,
          "waitDuration": "0s",
          "totalDuration": "409s",
          "startTime": "2023-01-13T17:42:49Z"
        },
        {
          "travelDuration": "372s",
          "travelDistanceMeters": 1348,
          "waitDuration": "0s",
          "totalDuration": "372s",
          "startTime": "2023-01-13T17:53:48Z"
        },
        {
          "travelDuration": "339s",
          "travelDistanceMeters": 1276,
          "waitDuration": "0s",
          "totalDuration": "339s",
          "startTime": "2023-01-13T18:04:10Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "1120s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "800s",
        "totalDuration": "1920s",
        "travelDistanceMeters": 3995
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 39.95,
        "model.vehicles.cost_per_hour": 21.333333333333332
      },
      "routeTotalCost": 61.283333333333331
    }
  ],
  "skippedShipments": [
    {
      "index": 1
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "1120s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "800s",
      "totalDuration": "1920s",
      "travelDistanceMeters": 3995
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-13T17:37:49Z",
    "latestVehicleEndTime": "2023-01-13T18:09:49Z",
    "totalCost": 81.283333333333331,
    "costs": {
      "model.shipments.penalty_cost": 20,
      "model.vehicles.cost_per_hour": 21.333333333333332,
      "model.vehicles.cost_per_kilometer": 39.95
    }
  }
}
    

Bu örnekte, daha sonraki zaman aralığı shipment[1] değerinin atlanmasına neden olmuştur. Çünkü sevkiyatın tamamlanması için gereken ekstra çalışma süresi belirtilen süre içinde teslimat, gönderimin ceza maliyetini aştı. shipment[1] için ceza maliyeti metrics.costs dilinde ve dizininde görünüyor skippedShipments konumunda görünüyor.

Esnek zaman aralığı kısıtlamaları

Maliyet Modeli Parametreleri bölümünde kısaca belirtildiği gibi, zaman aralıkları yumuşak kısıtlamalar olarak gösterilebilir. Geçici kısıtlamalar, aşağıdaki gibi katı kısıtlamalardan farklıdır:

  • Katı kısıtlamalar: İhlal edilemez ve optimize edici bir bir adımı atlamak anlamına gelirse bile, kısıtlamayı ihlal eden bir gönderim.
  • Esnek kısıtlamalar: İhlal edilebilir. Bu durum, optimize edicinin yumuşak kısıtlamayı ihlal eden bir çözüm sunmaktır. Ancak optimizatör, her bir ihlal için bir maliyet de uygular. Bu maliyeti ek mülk sağlar. Bu, genellikle bir sonraki mağaza için etkinliğin gerçekleştiği zaman aralığından önceki veya sonraki her saat için

Zaman aralıkları, şu yerine softStartTime veya softEndTime kullanılarak yumuşatılır: Sırasıyla startTime veya endTime costPerHourBeforeSoftStartTime veya costPerHourAfterSoftEndTime.

Teslim almaların veya teslimatların gerçekleşmesi gerektiğinde yumuşak zaman aralığı kısıtlamalarından yararlanın Ancak bu süre içinde teslim alma veya teslimat şarttır. İşletme hedeflerini ifade etmek için katı ve yumuşak zaman aralığı kısıtlamalarını birlikte kullanabilirsiniz. Örneğin:

  • Kısıtlı zaman aralığı: Müşterinin çalışma saatlerini gösterir, örneğin şuradan: 09:00 - 17:00 arası.
  • Geçici zaman aralığı: Teslimat veya teslim alma için zaman aralığını belirtir. müşteriye gönderilen bildirimle eşleşir (ör. 09:00-13:00).

Bu örnekte, zamanı geldiğinden dolayı daha önce atlanan kargo çok geç başlayan pencerenin başlangıç zamanı kısıtlaması yumuşatılmıştır. Diğer gönderimlerin zaman aralığının bitiş zamanları da uzatıldı.

Zor ve sakin zamanları içeren örnek bir isteğe bakın pencereler

{
  "populatePolylines": false,
  "populateTransitionPolylines": false,
  "model": {
    "globalStartTime": "2023-01-13T16:00:00Z",
    "globalEndTime": "2023-01-14T16:00:00Z",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T18:00:00Z",
                "softEndTime": "2023-01-13T19:00:00Z",
                "costPerHourAfterSoftEndTime": 2.0
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s",
            "timeWindows": [
              {
                "softStartTime": "2023-01-13T21:00:00Z",
                "endTime": "2023-01-13T21:30:00Z",
                "costPerHourBeforeSoftStartTime": 2.0
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 20.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s",
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:30:00Z",
                "softEndTime": "2023-01-13T18:00:00Z",
                "costPerHourAfterSoftEndTime": 2.0
              }
            ]
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 50.0
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0
      }
    ]
  }
}
    

Örnek isteğe verilen yanıtı sabit ve geçici zaman aralıkları

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-13T17:48:35Z",
      "vehicleEndTime": "2023-01-13T18:24:28Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-13T17:48:35Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2023-01-13T17:51:05Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-13T17:53:35Z",
          "detour": "300s"
        },
        {
          "startTime": "2023-01-13T18:00:00Z",
          "detour": "300s"
        },
        {
          "shipmentIndex": 1,
          "startTime": "2023-01-13T18:07:42Z",
          "detour": "493s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-13T18:17:27Z",
          "detour": "873s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:48:35Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:51:05Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-13T17:53:35Z"
        },
        {
          "travelDuration": "235s",
          "travelDistanceMeters": 795,
          "waitDuration": "0s",
          "totalDuration": "235s",
          "startTime": "2023-01-13T17:56:05Z"
        },
        {
          "travelDuration": "212s",
          "travelDistanceMeters": 791,
          "waitDuration": "0s",
          "totalDuration": "212s",
          "startTime": "2023-01-13T18:04:10Z"
        },
        {
          "travelDuration": "335s",
          "travelDistanceMeters": 1204,
          "waitDuration": "0s",
          "totalDuration": "335s",
          "startTime": "2023-01-13T18:11:52Z"
        },
        {
          "travelDuration": "171s",
          "travelDistanceMeters": 665,
          "waitDuration": "0s",
          "totalDuration": "171s",
          "startTime": "2023-01-13T18:21:37Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 3,
        "travelDuration": "953s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "1200s",
        "totalDuration": "2153s",
        "travelDistanceMeters": 3455
      },
      "routeCosts": {
        "model.shipments.deliveries.time_windows.cost_per_hour_after_soft_end_time": 0.58166666666666667,
        "model.shipments.deliveries.time_windows.cost_per_hour_before_soft_start_time": 5.7433333333333332,
        "model.vehicles.cost_per_hour": 23.922222222222221,
        "model.vehicles.cost_per_kilometer": 34.55
      },
      "routeTotalCost": 64.797222222222217
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 3,
      "travelDuration": "953s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "1200s",
      "totalDuration": "2153s",
      "travelDistanceMeters": 3455
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-13T17:48:35Z",
    "latestVehicleEndTime": "2023-01-13T18:24:28Z",
    "totalCost": 64.797222222222217,
    "costs": {
      "model.vehicles.cost_per_kilometer": 34.55,
      "model.shipments.deliveries.time_windows.cost_per_hour_before_soft_start_time": 5.7433333333333332,
      "model.shipments.deliveries.time_windows.cost_per_hour_after_soft_end_time": 0.58166666666666667,
      "model.vehicles.cost_per_hour": 23.922222222222221
    }
  }
}
    

Yalnızca zor zaman aralığı kısıtlamaları içeren örneğin tamamen atlandığı shipment[1], teslim zaman aralığının yumuşatılması teslimin teslim edilmesine neden olur başlangıç zamanından önce. Benzer şekilde, diğer gönderimlerin bitiş zamanlarını esnetmek, shipment[2]'ün zaman aralığı sona erdikten sonra teslim edilmesine olanak tanıdı.

Aynı zamanda hem maliyetler hem de toplam sevkiyatlar değişti:

  • totalCost: 81,283'ten 64,797'ye düşerek
  • toplam tamamlanan gönderim sayısı: 2'den 3'e yükseldi

Optimize edici, zaman aralığı nedeniyle daha az pahalı bir çözüm buldu. kısıtları önceki örneğe göre gevşetilmiştir.

Son olarak, metrics.costs özelliği kısıtın çarpımına ve maksimum maliyetin uzunluğuna bağlı olarak, teslim edilen zaman aralığı kaçırılmış olabilir. Yani:

  • costPerHourBeforeSoftStartTime / 2.0 ve
  • Gerçek teslimat ile zaman aralığının başlangıcı arasındaki süre: 2,83583 saat

Sonuç:

model.shipments.deliveries.time_windows.cost_per_hour_before_soft_start_time: 5,6716666666666669.

Bu metrikler, katı kısıtlamalar ile yumuşak kısıtlamalar arasındaki dengeyi görmek için maliyet analizi yapmanıza olanak tanır. Bu analizleri, kısıtlamalarınızı belirli işletme kurallarınıza daha uygun olacak şekilde ayarlamak için kullanabilirsiniz. Bu durumda toplam maliyet 20,0 sürümünün shipment[1].penalty_cost değerinden daha az. Optimize Edici, Search Ads 360'ta teslimatın beklenenden erken yapılmasının daha uygun maliyetli olduğunu kargoyu atlamaktır.