Maliyet Modeli Parametreleri

OptimizeToursRequest mesajı (REST, gRPC), maliyetlerle ilgili çeşitli özellikler içerir. Bu maliyet parametreleri birlikte isteğin maliyet modelini temsil eder. Maliyet modeli, isteğin üst düzey optimizasyon hedeflerinin çoğunu yakalar. Örneğin:

  • Daha kısa rotalar yerine daha hızlı Vehicle rotalara öncelik verme veya bunun tam tersi
  • Bir Shipment yayınlamanın maliyetinin, Shipment'ın tamamlanmasının değerine değip değmeyeceğine karar verme
  • Yalnızca maliyet etkin olduğunda teslim alma ve teslim etme işlemlerini zaman aralıkları içinde gerçekleştirme

Maliyetleri içeren örnek bir isteğe bakın

{
  "model": {
    "globalStartTime": "2023-01-13T16:00:00-08:00",
    "globalEndTime": "2023-01-14T16:00:00-08:00",
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 100.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s"
          }
        ],
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.794465,
              "longitude": -122.394839
            },
            "duration": "150s"
          }
        ],
        "penaltyCost": 5.0
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s"
          }
        ],
        "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
      }
    ]
  }
}
    

Vehicle maliyet özellikleri

Vehicle mesajında (REST, gRPC) çeşitli maliyet özellikleri bulunur:

  • Vehicle.cost_per_hour: Bir aracın geçiş, bekleme, ziyaret ve ara verme süreleri dahil olmak üzere saat başına maliyetini temsil eder.
  • Vehicle.cost_per_kilometer: Aracın kat ettiği kilometre başına maliyeti temsil eder.
  • Vehicle.cost_per_traveled_hour: Bekleme, ziyaret ve ara verme süreleri hariç yalnızca bir aracın toplu taşımadayken işletme maliyetini temsil eder.

Bu maliyet parametreleri, optimizasyon aracının zaman ve kat edilen mesafe arasında denge kurmasına olanak tanır. Optimize edilen rotanın neden olduğu maliyetler, yanıt mesajında metrics.costs olarak görünür:

costPerHour arttıkça optimizatör, en kısa rotalar olmayabilecek daha hızlı rotalar bulmaya çalışır. Bu örnekte en hızlı rota en kısa rota olduğu için maliyet parametrelerinde yapılan değişikliklerin etkisi çok azdır.

Shipment maliyet özellikleri

Shipment mesajının (REST, gRPC) çeşitli maliyet parametreleri de vardır:

  • Shipment.penalty_cost, gönderimin atlanmasından kaynaklanan maliyeti temsil eder.
  • Shipment.VisitRequest.cost, belirli bir teslim alma veya teslimat işleminin maliyetini temsil eder. Bu özellik, öncelikle tek bir gönderim için birden fazla teslim alma veya teslimat seçeneği arasında maliyet dengelemesi yapmak amacıyla kullanılır.

Shipment maliyet parametreleri, Vehicle maliyet parametreleriyle aynı boyutsuz birimleri kullanır. Bir Shipment'nin tamamlanması için yapılan maliyet, ceza maliyetini aşarsa Shipment hiçbir Vehicle rotasına dahil edilmez ve bunun yerine yanıt mesajındaki skipped_shipments listesinde görünür.

ShipmentModel maliyet özellikleri

ShipmentModel mesajı (REST, gRPC), globalDurationCostPerHour adlı tek bir maliyet mülkü içerir. Bu maliyet, tüm araçların ShipmentRoute'lerini tamamlaması için gereken toplam süreye göre alınır. globalDurationCostPerHour değerini artırarak tüm gönderimlerin daha erken tamamlanmasına öncelik verebilirsiniz.

Rota Optimizasyonu yanıt maliyeti özellikleri

OptimizeToursResponse mesajında (REST, gRPC), ShipmentRoute'leri tamamlama sürecinde ortaya çıkan maliyetleri temsil eden maliyet özellikleri bulunur. metrics.costs ve metrics.totalCost özellikleri, yanıttaki tüm rotalarda oluşan maliyet birimlerinin sayısını temsil eder. Her routes girişinde, söz konusu rotanın maliyetlerini temsil eden routeCosts ve routeTotalCosts özellikleri bulunur.

Örnek istek için maliyetleri içeren bir yanıtı görüntüleme

{
  "routes": [
    {
      "vehicleStartTime": "2023-01-14T00:00:00Z",
      "vehicleEndTime": "2023-01-14T00:28:22Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2023-01-14T00:00:00Z",
          "detour": "0s"
        },
        {
          "shipmentIndex": 2,
          "isPickup": true,
          "startTime": "2023-01-14T00:02:30Z",
          "detour": "150s"
        },
        {
          "startTime": "2023-01-14T00:08:55Z",
          "detour": "150s"
        },
        {
          "shipmentIndex": 2,
          "startTime": "2023-01-14T00:21:21Z",
          "detour": "572s"
        }
      ],
      "transitions": [
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:00:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2023-01-14T00:02:30Z"
        },
        {
          "travelDuration": "235s",
          "travelDistanceMeters": 795,
          "waitDuration": "0s",
          "totalDuration": "235s",
          "startTime": "2023-01-14T00:05:00Z"
        },
        {
          "travelDuration": "496s",
          "travelDistanceMeters": 1893,
          "waitDuration": "0s",
          "totalDuration": "496s",
          "startTime": "2023-01-14T00:13:05Z"
        },
        {
          "travelDuration": "171s",
          "travelDistanceMeters": 665,
          "waitDuration": "0s",
          "totalDuration": "171s",
          "startTime": "2023-01-14T00:25:31Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "902s",
        "waitDuration": "0s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "800s",
        "totalDuration": "1702s",
        "travelDistanceMeters": 3353
      },
      "routeCosts": {
        "model.vehicles.cost_per_kilometer": 33.53,
        "model.vehicles.cost_per_hour": 18.911111111111111
      },
      "routeTotalCost": 52.441111111111113
    }
  ],
  "skippedShipments": [
    {
      "index": 1
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "902s",
      "waitDuration": "0s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "800s",
      "totalDuration": "1702s",
      "travelDistanceMeters": 3353
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2023-01-14T00:00:00Z",
    "latestVehicleEndTime": "2023-01-14T00:28:22Z",
    "totalCost": 57.441111111111113,
    "costs": {
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.shipments.penalty_cost": 5
    }
  }
}
    

Örnek yanıtta üst düzey metrics.costs öğeleri şunlardır:

{
  "metrics": {
    ...
    "costs": {
      "model.vehicles.cost_per_hour": 18.911111111111111,
      "model.vehicles.cost_per_kilometer": 33.53,
      "model.shipments.penalty_cost": 5
    }
  }
}

model.shipments.penalty_cost değeri, atlanan gönderimler nedeniyle oluşan maliyeti temsil eder. skippedShipments mülkü, hangi gönderimlerin atlandığını listeler.

Bu örnekte, örnek istekteki yalnızca model.shipments[1] atlanır. model.shipments[1], 5 birim ceza maliyetine sahiptir. Bu değer, örnek yanıttaki toplam model.shipments.penalty_cost anahtarıyla eşleşir. Gönderimin Vehicle'un 40,0 costPerHour ve 10,0 costPerKilometer değerine kıyasla düşük penaltyCost değeri, gönderimi tamamlamaktan daha uygun maliyetli hale getirir.

Gelişmiş konu: maliyetler ve yumuşak kısıtlamalar

Bazı OptimizeToursRequest mesaj (REST, gRPC) özellikleri, karşılanamadıklarında maliyete neden olan yumuşak kısıtlamaları temsil eder.

Örneğin, araç LoadLimit (REST, gRPC) kısıtlamalarında softMaxLoad ve costPerUnitAboveSoftMax özellikleri bulunur. Bu maliyetler birlikte, softMaxLoad'ü aşan yük birimleriyle orantılı bir maliyete neden olur. Bu da sınırın yalnızca maliyet açısından mantıklı olduğu durumlarda aşılmasına olanak tanır.

Benzer şekilde, TimeWindow kısıtlamaları (REST, gRPC) soft_start_time ve soft_end_time özelliklerine sahiptir. Bu özellikler, kısıtlanmış etkinliğin TimeWindow'ye göre ne kadar erken veya geç gerçekleştiğine bağlı olarak ortaya çıkan karşılık gelen cost_per_hour_before_soft_start_time ve cost_per_hour_after_soft_end_time ile birlikte kullanılır.

Tüm maliyet modeli parametrelerinde olduğu gibi, yumuşak kısıtlama maliyetleri de diğer maliyet parametreleriyle aynı boyutsuz birimlerde ifade edilir.

LoadLimit kısıtlamaları Yük Talepleri ve Sınırları bölümünde ayrıntılı olarak ele alınmıştır. TimeWindow kısıtlamaları Arama ve Teslimat Zaman Aralığı Kısıtlamaları bölümünde ayrıntılı olarak ele alınmıştır.