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ında (REST, gRPC) iki ana üst düzey özellik bulunur:

  • 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 gönderimler 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üm modunun aynı anda birden fazla hata bildirebileceğini unutmayın. Bu, isteklerde hızlı bir şekilde hata 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, teslimat olduğunda ise yanlış olur. REST yanıtlarında, değer yanlış olduğunda bu özellik atlanır.
  • visitRequestIndex, ilgili istekteki Shipment.pickups veya Shipment.deliveries'den gelen VisitRequest'nin sıfır tabanlı dizinidir ve Visit'i 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şleminin tamamlanması için gereken yükleme miktarıyla yükleme türünü 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 gitmesi 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ıyla yük türünü 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 ShipmentRouteTeslim Alma ve Teslim Etme Durak Sırası Optimizasyonu ve ShipmentRoute referans belgelerine (REST, gRPC) bakın. Transition mesajının routePolyline ve routeToken özellikleri hakkında daha fazla bilgi için Geçiş Polylineleri 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ımı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 gönderimde, gönderim 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 mülkü ve ShipmentRoute.metrics mülkü 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
    }
  }
}