Maliyet Modeli Parametreleri

OptimizeToursRequest mesajı (REST, gRPC), maliyetler ile ilgili birçok özellik 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
  • Shipment yayınlama maliyetinin, Shipment tamamlama değerine değip değmeyeceğine karar vermek
  • Teslim alma ve teslimat işlemlerini yalnızca zaman aralıkları dahilinde yapmak uygun maliyetli bir yöntemdir.

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ının (REST, gRPC) çeşitli maliyet özellikleri vardır:

  • Vehicle.cost_per_hour: Toplu taşıma, bekleme, ziyaret ve mola süreleri dahil saat başına araç kullanma 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ç, aracı yalnızca nakliye sırasında kullanma maliyetini temsil eder.

Bu maliyet parametreleri, optimize edicinin zamanda-seyahat edilen mesafeden ödün vermeden ödüller vermesine olanak tanır. Optimize edilmiş rotanın aldığı 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 etkisi çok azdır.

Shipment maliyet özelliği

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

  • Shipment.penalty_cost, gönderimin atlanması sonucu ortaya çıkan maliyeti temsil eder.
  • Shipment.VisitRequest.cost, belirli bir teslim alma veya teslimat maliyetini temsil eder. Bu maliyet, öncelikli olarak tek bir kargo için birden fazla teslim alma veya teslimat seçeneği arasındaki maliyet dengesini sağlamak amacıyla kullanılır.

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

ShipmentModel maliyet özelliği

ShipmentModel mesajı (REST, gRPC) tek bir maliyet özelliği (globalDurationCostPerHour) içerir. Bu maliyet, tüm araçların ShipmentRoute işlemlerini tamamlaması için gereken toplam süreye göre belirlenir. 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'leri tamamlama sürecinde tahakkuk eden maliyetleri temsil eden maliyet özellikleri içerir. metrics.costs ve metrics.totalCost özellikleri, yanıttaki tüm rotalarda karşılaşılan maliyet birimlerinin sayısını temsil eder. Her routes girişinde, söz konusu rotanın maliyetlerini temsil eden routeCosts ve routeTotalCosts özellikleri bulunur.

Maliyetleri içeren örnek isteğe verilen yanıtı 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 ş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, gönderimlerin atlanması nedeniyle oluşan maliyeti temsil eder. skippedShipments özelliği, hangi gönderimlerin atlandığını listeler.

Bu örnekte, örnek istekteki yalnızca model.shipments[1] atlanmıştı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.

İleri düzey konu: maliyetler ve hafif kısıtlamalar

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

Örneğin, araç LoadLimit (REST, gRPC) kısıtlamaları softMaxLoad ve costPerUnitAboveSoftMax özelliklerine sahiptir. 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 mantıklı olması durumunda aşılmasına izin verilir.

Benzer şekilde TimeWindow kısıtlamaları (REST, gRPC), soft_start_time ve soft_end_time özelliklerine sahiptir ve bunlara karşılık gelen cost_per_hour_before_soft_start_time ve cost_per_hour_after_soft_end_time özellikleri, kısıtlamalı etkinliğin TimeWindow'a göre ne kadar erken veya geç gerçekleştiğine bağlı olarak ortaya çıkar.

Tüm maliyet modeli parametrelerinde olduğu gibi esnek sınırlama maliyetleri, diğer maliyet parametreleriyle aynı boyutsuz birimler olarak 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.