Maliyet Modeli Parametreleri

OptimizeToursRequest mesajı (REST, gRPC), maliyetler ile 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 birçoğunu yakalar. Örneğin:

  • Daha kısa rotalar yerine veya tam tersi daha hızlı Vehicle rotalarına öncelik verme
  • Shipment yayınlama maliyetinin Shipment tamamlama değerine değip değmeyeceğine karar verme
  • Teslim alma ve teslimat işlemlerini yalnızca zaman aralıkları içinde yapmak maliyet açısından verimlidir

Maliyetleri içeren örnek bir isteği inceleyin

{
  "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 özelliği

Vehicle mesajında (REST, gRPC) birkaç maliyet özelliği bulunur:

  • Vehicle.cost_per_hour: Toplu taşıma, bekleme, ziyaret ve mola süreleri dahil olmak üzere araç kullanımının saatlik maliyetini temsil eder.
  • Vehicle.cost_per_kilometer: Aracın katettiği kilometre başına maliyeti temsil eder.
  • Vehicle.cost_per_traveled_hour: Bekleme, ziyaret ve mola süreleri hariç, bir aracı yalnızca hareket halindeyken kullanma maliyetini temsil eder.

Bu maliyet parametreleri, optimize edicinin zamanla katedilen mesafe ile karşılaştırmalar yapması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, optimize edici en kısa rotalar olmayabilecek daha hızlı rotalar bulmaya çalışır. Bu örnekte en hızlı rota en kısa rotadır. Bu nedenle, maliyet parametrelerindeki değişikliklerin çok az etkisi vardır.

Shipment maliyet özelliği

Shipment mesajında (REST, gRPC) birkaç maliyet parametresi de vardır:

  • Shipment.penalty_cost, sevkiyatın atlanması ile ortaya çıkan maliyeti temsil eder.
  • Shipment.VisitRequest.cost, belirli bir teslim alma veya teslimat maliyetini temsil eder. Bu maliyet esasen tek bir gönderimde birden fazla teslim alma veya teslimat seçeneği arasında maliyet dengesini sağlamak için kullanılır.

Shipment maliyet parametreleri, Vehicle maliyet parametreleriyle aynı boyutsuz birimleri kullanır. Tamamlanan Shipment maliyeti, ceza maliyetini aşıyor. Shipment, hiçbir Vehicle rotasına dahil edilmez ve yanıt mesajındaki skipped_shipments listesinde görünür.

ShipmentModel maliyet özelliği

ShipmentModel mesajı (REST, gRPC) globalDurationCostPerHour adlı tek bir maliyet özelliği içerir. Bu maliyet, tüm araçların ShipmentRoute görevlerini tamamlaması için gereken toplam süreye göre hesaplanır. globalDurationCostPerHour artırıldığında tüm gönderimlerin daha erken tamamlanmasına öncelik verilir.

Rota Optimizasyonu yanıt maliyeti özellikleri

OptimizeToursResponse mesajı (REST, gRPC), ShipmentRoute tamamlama sürecinde tahakkuk eden maliyetleri temsil eden maliyet özelliklerine sahiptir. metrics.costs ve metrics.totalCost özellikleri, yanıttaki tüm rotalarda uygulanan maliyet birimlerinin sayısını gösterir. Her routes girişinde, söz konusu rotanın maliyetlerini temsil eden routeCosts ve routeTotalCosts özellikleri bulunur.

Örnek isteğe verilen yanıtı maliyetlerle birlikte görüntüleyin

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

{
  "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 tahakkuk eden maliyeti temsil eder. skippedShipments özelliği hangi gönderimlerin atlandığını listeler.

Bu örnekte, örnek istekteki yalnızca model.shipments[1] atlanır. model.shipments[1], 5 birimlik bir ceza maliyetine sahip. Bu, örnek yanıttaki toplam model.shipments.penalty_cost anahtarıyla eşleşiyor. Vehicle'nin 40.0 costPerHour ve 10.0 costPerKilometer ile kıyaslandığında gönderimin penaltyCost düşük olması, gönderimi tamamlamaktan daha uygun maliyetli olmasını sağlar.

Gelişmiş konu: maliyetler ve yazılım kısıtlamaları

Bazı OptimizeToursRequest mesajı (REST, gRPC) özelliği hafif kısıtlamaları temsil eder. Bunlar, karşılanamaması durumunda maliyete neden olan kısıtlamalardır.

Örneğin, araç LoadLimit (REST, gRPC) kısıtlamalarının softMaxLoad ve costPerUnitAboveSoftMax özellikleri vardır. Bunların tümü, softMaxLoad sınırını aşan yükleme birimleriyle orantılı bir maliyet oluşturur. Böylece sınırın yalnızca maliyet açısından mantıklı olduğu durumlarda aşılmasına izin verilir.

Benzer şekilde, TimeWindow kısıtlamaları (REST, gRPC) soft_start_time ve soft_end_time özelliklerine sahiptir. Bunlara TimeWindow göre kısıtlanan etkinliğin ne kadar erken veya geç gerçekleştiğine bağlı olarak uygulanan cost_per_hour_before_soft_start_time ve cost_per_hour_after_soft_end_time özellikleri bulunur.

Tüm maliyet modeli parametrelerinde olduğu gibi esnek kısıtlama maliyetleri, diğer maliyet parametreleriyle aynı boyutsuz birimlerle ifade edilir.

LoadLimit kısıtlamaları, Yükleme Talepleri ve Sınırları bölümünde ayrıntılı olarak ele alınmaktadır. TimeWindow kısıtlamaları, Teslim Alma ve Teslimat Süresi Aralığı Kısıtlamaları bölümünde ayrıntılı olarak ele alınmaktadır.