Yanıtı yorumlama

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Route Optimization API, ilgili istekteki araçlar için rotalar döndürür. Gönderiler araçlara atanır veya isteğin özelliklerine bağlı olarak atlanabilir.

Bir OptimizeToursResponse mesajı (REST, gRPC) iki ana üst düzey özelliğe sahiptir:

  • routes[], her aracın kendisine atanmış gönderilerle birlikte rotalarını gösterir. Her Route, ilgili rotanın özelliklerini yansıtan metrikleri içerir.
  • metrics, tüm araçlar ve rota planları genelinde yanıtın tamamına ait toplanmış metriklerdir. Üst düzey metrikler, rota başına metriklerle aynı özellikleri içerir ve değerler tüm rotalar genelinde toplanır.

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

  1. skippedShipments[], herhangi bir araçla yapılmayan gönderileri listeler. Belirtilen kısıtlamalar dahilinde gerçekleştirilemeyen veya kargo maliyeti, ceza maliyetini aşan kargolar atlanabilir. Örneğin, bir gönderinin teslim alınması veya teslimatı için çok dar bir timeWindow varsa bir aracın gerekli zaman aralığında ziyareti gerçekleştirmesi mümkün olmayabilir veya maliyet açısından verimli olmayabilir.
  2. validationErrors[], isteğin solvingMode değeri VALIDATE_ONLY olarak ayarlandığında isteği geçersiz kılan veya çözülmesini imkansız hale getiren hataları belirtir. Normal DEFAULT_SOLVE modunda, doğrulama hataları yanıt gövdesi yerine hata mesajında gösterilir. VALIDATE_ONLY Çözümleme modunun aynı anda birden fazla hata bildirebileceğini unutmayın. Bu özellik, isteklerdeki hataları hızlı bir şekilde ayıklamak için kullanışlıdır.

Rota özellikleri

Her routes[] girişi bir ShipmentRoute mesajıdır (REST, gRPC). Her ShipmentRoute, istekteki belirli bir araç için rota atamasını temsil eder. İlgili ShipmentRoute özellikleriyle ilgili önemli Vehicle bilgiler şunlardır:

  • vehicleIndex, ilgili istek mesajındaki Vehicle öğesinin sıfır tabanlı dizinidir. REST yanıtlarında, değer sıfır olduğunda bu özellik atlanır.
  • vehicleStartTime, aracın rotasına başlaması gereken zamandır.
  • vehicleEndTime, aracın rotasını tamamlamasının beklendiği zamandır.

Yanıt olarak routes şu şekilde görünür:

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

Her ShipmentRoute, aracın tamamlayacağı visits öğelerinin sıralı bir listesini içerir. Her bir Visit (REST, gRPC), ilgili istekten gelen bir VisitRequest (REST, gRPC) değerini temsil eder. Önemli Visit özellikler:

  • shipmentIndex, bu ziyaretin ait olduğu gönderinin ilgili istekteki sıfır tabanlı dizinidir.
  • Ziyaret bir teslim alma işlemi olduğunda isPickup doğru, ziyaret bir teslimat olduğunda yanlış olur. REST yanıtlarında, değer yanlış olduğunda bu özellik atlanır.
  • visitRequestIndex, ilgili istekteki VisitRequest öğesinin Shipment.pickups veya Shipment.deliveries öğesinden sıfır tabanlı dizinidir ve Visit öğesini temsil eder. REST yanıtlarında değer sıfır olduğunda bu özellik atlanır.
  • startTime, ziyaretin başlamasının beklendiği zamandır.
  • loadDemands, Visit işlemini tamamlamak için yükleme türünü istenen yükleme miktarıyla eşler. Yük miktarları, teslimat ziyaretleri için negatiftir ve araçtan kaldırılan yükü temsil eder.

Bir örnek Visit şu şekilde görünür:

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

Her ShipmentRoute, belirli bir araçla visits arasında seyahati temsil eden transitions öğelerinin sıralı bir listesini içerir. Önemli Transition mesajı (REST, gRPC) özellikleri şunlardır:

  • startTime, aracın geçişi gerçekleştirmeye başlayacağı zamandır.
  • travelDuration, geçişin tamamlanması için aracın hareket etmesi gereken süredir.
  • travelDistanceMeters, geçişin tamamlanması için aracın katetmesi gereken mesafeyi (metre cinsinden) ifade eder.
  • trafficInfoUnavailable, geçiş için trafik verilerinin kullanılabilir olup olmadığını gösterir.
  • waitDuration, aracın bir sonraki Visit'ına başlamadan önce bekleyerek geçirdiği boşta kalma süresini gösterir. Bu durum, aşağıdaki Visit start_time nedeniyle oluşabilir.
  • totalDuration, seyahat, bekleme, mola ve gecikme süreleri dahil olmak üzere geçişin toplam süresidir.
  • vehicleLoads, bu geçiş sırasında araç tarafından taşınan yük miktarını yük türüyle eşler.

Bir örnek Transition şu şekilde görünür:

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

vists ve transitions arasındaki ilişki hakkında daha fazla bilgi için ShipmentRoute referans belgelerine (REST, gRPC) ve Teslim Alma ve Teslim Etme Durak Sırası Optimizasyonu başlıklı makaleye bakın. Transition mesajının routePolyline ve routeToken özellikleri hakkında daha fazla bilgi için Geçiş Polilinleri ve Rota Jetonları başlıklı makaleyi inceleyin.

Metrik özellikleri

Metrics mesajı (REST, gRPC) çözümün tamamını özetler. Bazı önemli Metrics özellikleri:

  • totalCost, rotaları tamamlarken oluşan toplam maliyettir. Maliyet Modeli Parametreleri'ndeki maliyetler hakkında daha fazla bilgi edinin.
  • usedVehicleCount, çözümde kullanılan toplam araç sayısıdır. Optimizasyon aracı, araçların kullanılmasının gereksiz olduğunu belirlediğinde araçlar boş rotalara sahip olabilir.
  • skippedMandatoryShipmentCount, "zorunlu" olan atlanan gönderilerin sayısıdır. Zorunlu bir sevkiyatta, sevkiyat atlanırsa ortaya çıkacak bir penaltyCost belirtilmiyor. Zorunlu gönderimler, belirtilen kısıtlamalar altında performansları mümkün değilse atlanabilir. Maliyet Modeli Parametreleri bölümünde maliyetler hakkında daha fazla bilgi edinin.

Ek metrikler AggregatedMetrics mesajları (REST, gRPC) olarak raporlanır. AggregatedMetrics mesaj türü, Metrics.aggregatedRouteMetrics özelliği ve ShipmentRoute.metrics özelliği için kullanılır. Metrics.aggregatedRouteMetrics, OptimizeToursResponse içindeki tüm ShipmentRoute'lerde toplanan metrikleri içerir. Her ShipmentRoute.metrics mülkü, söz konusu ShipmentRoute ile ilgili metrikleri içerir.

Önemli AggregatedMetrics özellikleri şunlardır:

  • performedShipmentCount, araçların tüm rotaları boyunca gerçekleştirdiği gönderi sayısıdır.
  • travelDuration, araçların rotalarını tamamlarken yolda geçirdiği toplam süredir.
  • waitDuration, araçların rotalarını tamamlarken bekleyerek geçirdiği toplam süredir.
  • delayDuration, araçların toplam gecikme süresidir. Bu değer, istekte TransitionAttributes kullanılmadığı sürece genellikle sıfırdır.
  • breakDuration, araçların rotalarını tamamlarken molalarda geçirdiği toplam süredir.
  • visitDuration, araçların rotalarını tamamlarken ziyaret gerçekleştirerek geçirdiği toplam süredir. Bu, geçerli araca atanmış Visit değerlerine karşılık gelen VisitRequest değerleri için tüm VisitRequest.duration değerlerinin toplamıdır.
  • totalDuration, araçların rotalarını tamamlamak için gereken toplam süredir.
  • travelDistanceMeters, araçların rotalarını tamamlarken katettikleri toplam mesafedir.
  • maxLoads, yük türlerini araçların rotalarının herhangi bir noktasında taşıdığı maksimum yük miktarıyla eşler.

Örnek bir Metrics mesajı şu şekilde görünür:

{
  "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
    }
  }
}

Eksiksiz örnek

İstek Oluşturma bölümündeki istek için tam bir örnek yanıt şu şekilde görünür:

{
  "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
    }
  }
}