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ı özelliklere sahiptir 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 gerçekleştirilmeyen 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 kısa 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 bir hata mesajında gösterilir. VALIDATE_ONLY Çözüm 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 aracın rota atamasını temsil eder. İlgili ShipmentRoute özellikleriyle ilişkili önemli Vehicle özellikleri ş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 içinde 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 Visit (REST, gRPC), ilgili isteğin VisitRequest (REST, gRPC) öğesini 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şlemiyse isPickup doğru, teslimat işlemiyse yanlış olur. REST yanıtları, değer yanlış olduğunda bu özelliği atlar.
  • visitRequestIndex, Visit öğesinin temsil ettiği ilgili istekteki Shipment.pickups veya Shipment.deliveries öğesinden gelen VisitRequest öğesinin sıfır tabanlı dizinidir. REST yanıtlarında değer sıfır olduğunda bu özellik atlanır.
  • startTime, ziyaretin başlaması beklenen zamandır.
  • loadDemands, Visit tamamlamak için gereken yükleme miktarıyla yükleme türünü eşler. Yükleme tutarları, 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'ı başlatmadan ö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çta taşınan yük miktarıyla eşleşen harita yükü türünü gösterir.

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 ile transitions arasındaki ilişki hakkında daha fazla bilgi için ShipmentRoute referans belgeleri (REST, gRPC) ve Teslim alma ve teslimat durak sırası optimizasyonu başlıklı makaleyi inceleyin. Transition mesajının routePolyline ve routeToken özellikleri hakkında daha fazla bilgi için Polylines ve Rota Jetonlarını Geçiş Yapma 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 bölümünde 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ın rotaları boş olabilir.
  • skippedMandatoryShipmentCount, "zorunlu" olan atlanan gönderilerin sayısıdır. Zorunlu bir gönderimde, gönderim atlanırsa ortaya çıkacak bir penaltyCost belirtilmez. Zorunlu gönderimler, belirtilen kısıtlamalar altında performansları mümkün değilse atlanabilir. Maliyetler hakkında daha fazla bilgiyi Maliyet Modeli Parametreleri başlıklı makalede bulabilirsiniz.

Ek metrikler AggregatedMetrics mesajları (REST, gRPC) olarak raporlanır. AggregatedMetrics ileti 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 özellik, 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'lere karşılık gelen VisitRequest.duration'ların tüm VisitRequest 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 isteğe verilen eksiksiz örnek yanıt şu şekildedir:

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