Yanıtı yorumlama

Route Optimization API'si, ilgili araçlar için rotaları döndürür isteği gönderin. Sevkiyatlar araçlara atanır veya kullanım durumuna göre atlanabilir. özellikleri.

Bir OptimizeToursResponse mesajında (REST, gRPC) iki ana üst düzey düzey bulunur: özellikler:

  • routes[], atanmış gönderimleri olan her aracın rotalarıdır. Her biri Route, söz konusu rotanın özelliklerini yansıtan metrikleri içerir.
  • metrics, yanıtın tamamı için ve rota planları hazırlar. Üst düzey metrikler aşağıdakilerle aynı özellikleri içerir: Tüm Rotalar genelinde toplanan değerlerle birlikte Rota başına metrikler.

Bazı özellikler, optimizasyon sonuçlarına bağlı olarak her zaman doldurulmayabilir:

  1. skippedShipments[], hiçbir araç tarafından yapılmayan gönderileri listeler. Bir gönderi, belirtilen süre içinde gerçekleştirilemiyorsa atlanabilir. ve kargoyu gerçekleştirme maliyetinin ceza maliyetini aşması durumunda. Örneğin, bir gönderinin teslim alma veya teslimat süresi çok dar timeWindow Bir aracın şunları yapması mümkün olmayabilir veya gerekli zaman aralığında ziyareti gerçekleştirebilir.
  2. validationErrors[], isteği geçersiz kılan hataları belirtir. isteğin solvingMode değeri, VALIDATE_ONLY. Normal DEFAULT_SOLVE modunda doğrulama hataları yanıt gövdesi yerine bir hata mesajında görünür. Lütfen VALIDATE_ONLY çözme modu, aynı anda birden fazla hatayı bildirebilir. Bu, isteklerde hızlıca hata ayıklamak için kullanışlıdır.

Rota özellikleri

Her routes[] girişi bir ShipmentRoute mesajıdır (REST, gRPC). Her biri ShipmentRoute, belirli bir araca ait rota atamasını gösterir: talep ediyor. İlişkili olduğu ile ilgili önemli ShipmentRoute özellikleri Vehicle şunlardır:

  • vehicleIndex, karşılık gelenVehicle istek mesajıyla karşılaşırsınız. Değer sıfır olduğunda REST yanıtları bu özelliği atlar.
  • vehicleStartTime, aracın rotasına başlaması gereken zamandır.
  • vehicleEndTime, aracın çalışmasını tamamlaması beklenen zamandır yol gösterir.

Yanıt olarak routes şöyle görünecek:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        ...
      ],
      "transitions": [
        ...
      ],
      "metrics": {
        ...
      },
      ...
    }
  ],
  ...
}

Her ShipmentRoute, aracın sunduğu visits öğelerinin sıralı bir listesini içerir. belirir. Her Visit (REST, gRPC) bir VisitRequest'yi temsil eder (REST, gRPC) kaldırın. Önemli Visit mülkler şunları içerir:

  • shipmentIndex, bu ziyaretin ait olduğu gönderinin sıfır tabanlı endeksidir ekleyin.
  • Bir ziyaret teslim alma olduğunda isPickup doğru, ziyaret bir ziyaret olduğunda ise yanlıştır teslimat. Değer yanlış olduğunda REST yanıtları bu özelliği atlar.
  • visitRequestIndex, VisitRequest için sıfır tabanlı dizindir İlgili istekte Shipment.pickups veya Shipment.deliveries Visit temsil eder. REST yanıtları, değeri sıfırdır.
  • startTime, ziyaretin başlaması beklenen zamandır.
  • loadDemands, yükleme türünü şu işlemin tamamlanması için istenen yükleme miktarıyla eşler: Visit. Yük tutarları, yükü temsil eden teslimat ziyaretleri için negatiftir araçtan kaldırılması.

Visit örneğini inceleyin:

{
  "routes": [
    {
      ...
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        ...
      ],
    },
    ...
  ],
  ...
}

Her ShipmentRoute, aşağıdakileri temsil eden transitions içeren sıralı bir liste içerir: visits arasında seyahat etme süresidir. Önemli Transition mesajı (REST, gRPC) mülkleri şunları içerir:

  • startTime, aracın yürütmeye başlayacağı zamandır için geçerlidir.
  • travelDuration, aracın gitmesi gereken süredir tamamlamanız gerekir.
  • travelDistanceMeters, aracın yapması gereken metre cinsinden mesafedir seyahat etmesini sağlar.
  • trafficInfoUnavailable, için geçerlidir.
  • waitDuration, aracın beklemedeyken harcadığı boşta kalma süresini temsil eder Visit etkinliği başlıyor. Bu durum,start_time Takip edilen kişi sayısı: Visit
  • totalDuration, seyahat dahil olmak üzere geçişin toplam süresidir. bekleme, ara ve gecikme süreleridir.
  • vehicleLoads, yükleme sırasında aracın taşıdığı yük miktarını eşler bahsedeceğim.

Transition örneğini inceleyin:

{
  "routes": [
    {
      ...
      "transitions": [
        ...
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        ...
      ],
      ...
    }
  ],
  ...
}

vists ile transitions arasındaki ilişki şurada açıklanmıştır: Teslim Alma ve Teslimatı Durdurma Siparişi Optimizasyonu ve ShipmentRoute referans belgeleri (REST, gRPC).

Metrik özellikleri

Metrics mesajı (REST, gRPC) tüm çözümü özetler. Önemli Metrics özelliklerinden bazıları şunlardır:

  • totalCost, rotaları tamamlamak için ödenen toplam maliyettir. Devamını okuyun Maliyet Modeli Parametreleri'ndeki maliyetler hakkında bilgi edinin.
  • usedVehicleCount, çözümde kullanılan toplam araç sayısıdır. Optimize Edici, bu araçların araç kullanımının gerekli değildir.
  • skippedMandatoryShipmentCount, atlanan gönderimlerin sayısıdır "zorunlu"dur. Zorunlu bir gönderim, aşağıdaki koşulları karşılayan bir penaltyCost belirtmiyor: atlanırsa uygulanır. Zorunlu gönderimler performansları belirtilen kısıtlamalar altında uygun değilse atlanır. Maliyet Modeli Parametreleri bölümünde maliyetler hakkında daha fazla bilgi edinebilirsiniz.

Ek metrikler AggregatedMetrics mesajları (REST, gRPC) ekleyin. AggregatedMetrics mesaj türü şunun için kullanılır: Metrics.aggregatedRouteMetrics özelliği ve ShipmentRoute.metrics için Metrics.aggregatedRouteMetrics mülkü, tüm mülklerde toplanmış metrikleri içeriyor OptimizeToursResponse içinde ShipmentRoute. Her ShipmentRoute.metrics mülkü, söz konusu ShipmentRoute ile ilgili metrikleri içerir.

Önemli AggregatedMetrics özellikleri şunlardır:

  • performedShipmentCount, araçlar tarafından gerçekleştirilen gönderimlerin sayısıdır tercih ediyor.
  • travelDuration, araçların taşıma sırasında geçirdiği toplam süredir. tavsiye eder.
  • waitDuration, araçların tamamlama sırasında beklerken geçirdiği toplam süredir takip edebilirsiniz.
  • delayDuration araçlar için toplam gecikme süresidir. Bu genelde istekte TransitionAttributes kullanılmıyorsa sıfırdır.
  • breakDuration, araçların aralarda geçirdiği toplam süredir tavsiye eder.
  • visitDuration, aracın araç ziyaretleri için ziyaret ettiği toplam süredir. tavsiye eder. Bu, toplamda VisitRequest için VisitRequest.duration değeri Visit saniyelere karşılık geliyor ilgili araca atanır.
  • totalDuration, araçların tamamlanması için gereken toplam süredir. gösterir.
  • travelDistanceMeters, araçların seyahat ederken katettiği toplam mesafedir. tavsiye eder.
  • maxLoads, yükleme türlerini dosyanın taşıdığı maksimum yük miktarıyla eşleştirir herhangi bir noktada izlememiz lazım.

Metrics mesajının görünümü aşağıdaki gibidir:

{
  "routes": [
    ...
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}

Tam örnek

Construct a Request (İstek Oluşturma) isteği için eksiksiz bir örnek yanıt örneğin:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T00:00:00Z",
      "vehicleEndTime": "2024-02-13T00:38:42Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T00:00:00Z",
          "detour": "0s"
        },
        {
          "startTime": "2024-02-13T00:19:31Z",
          "detour": "0s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1171s",
          "travelDistanceMeters": 9004,
          "waitDuration": "0s",
          "totalDuration": "1171s",
          "startTime": "2024-02-13T00:00:00Z"
        },
        {
          "travelDuration": "1151s",
          "travelDistanceMeters": 9599,
          "waitDuration": "0s",
          "totalDuration": "1151s",
          "startTime": "2024-02-13T00:19:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 1,
        "travelDuration": "2322s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "0s",
        "totalDuration": "2322s",
        "travelDistanceMeters": 18603
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 18.603
      },
      "routeTotalCost": 18.603
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 1,
      "travelDuration": "2322s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "0s",
      "totalDuration": "2322s",
      "travelDistanceMeters": 18603
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T00:00:00Z",
    "latestVehicleEndTime": "2024-02-13T00:38:42Z",
    "totalCost": 18.603,
    "costs": {
      "model.vehicles.cost_per_kilometer": 18.603
    }
  }
}