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 aşağıdakiler gibi üst düzey optimizasyon hedeflerinin çoğunu yakalar:

  • Daha kısa rotalar yerine daha hızlı Vehicle rotalarına veya tam tersi şekilde öncelik verilmesi
  • 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 özelliği

Vehicle mesajının (REST, gRPC) çeşitli maliyet özellikleri vardır:

  • Vehicle.cost_per_hour: Bir aracın geçiş, bekleme, ziyaret ve ara süreleri dahil olmak üzere saat başına işletme 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 transfer sırasındaki 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 özelliği

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

  • Shipment.penalty_cost, gönderimi atlama nedeniyle oluşan 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'yi tamamlamak 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 ş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] için 5 birim ceza maliyeti var. Bu değer, örnek yanıttaki toplam model.shipments.penalty_cost anahtarıyla eşleşir. Vehicle ürününün 40,0 costPerHour ve 10,0 değerine kıyasla penaltyCost düşük olan sevkiyat costPerKilometer, gönderimi tamamlamaktan daha uygun maliyetli olmasını sağlar.

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

Çeşitli OptimizeToursRequest mesajı (REST, gRPC) özellikleri yumuşak kısıtlamaları temsil eder. Bu kısıtlamalar, karşılanamadıklarında maliyete neden olur.

Örneğin, araç LoadLimit (REST, gRPC) kısıtlamalarında softMaxLoad ve costPerUnitAboveSoftMax özellikleri bulunur. Bunlar birlikte, softMaxLoad değerini aşan yük birimleriyle orantılı bir maliyete neden olur. Böylece, sınırın yalnızca maliyet açısından anlamlı olması durumunda aşılmasına izin verilir.

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 esnek sınırlama maliyetleri, diğer maliyet parametreleriyle aynı boyutsuz birimler kullanılarak 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.