Maliyet modeli parametreleri

Avrupa Ekonomik Alanı (AEA) geliştiricileri

OptimizeToursRequest mesajı (REST, gRPC), maliyetlerle ilgili bir dizi özellik 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 veya bunun tam tersine öncelik verme
  • Shipment teslim etme maliyetinin, Shipment tamamlanmasının değerine değip değmeyeceğine karar verme
  • Yalnızca uygun maliyetli olduğunda belirli zaman aralıklarında teslim alma ve teslimat işlemleri gerçekleştirme

Maliyetleri içeren örnek bir istek

{
  "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ı saatlik çalıştırma maliyetini (geçiş, bekleme, ziyaret ve mola süreleri dahil) gösterir.
  • Vehicle.cost_per_kilometer: Araçla gidilen kilometre başına maliyeti gösterir.
  • Vehicle.cost_per_traveled_hour: Bekleme, ziyaret ve mola süreleri hariç olmak üzere yalnızca transit halindeyken bir aracı çalıştırma maliyetini gösterir.

Bu maliyet parametreleri, optimizasyon aracının zaman ve gidilen mesafe arasında denge kurmasına olanak tanır. Optimum rota nedeniyle oluşan maliyetler, yanıt mesajında metrics.costs olarak görünür:

costPerHour arttıkça optimizasyon aracı, en kısa rotalar olmayabilecek daha hızlı rotalar bulmaya çalışır. Bu örnekte en hızlı rota en kısa rota olduğundan maliyet parametrelerindeki değişikliklerin etkisi azdır.

Shipment maliyet özellikleri

Shipment mesajında (REST, gRPC) maliyetle ilgili çeşitli parametreler de bulunur:

  • Shipment.penalty_cost, gönderimin atlanması nedeniyle oluşan maliyeti gösterir. Bir kargonun penalty_cost parametresinin ayarlanmaması, kargoyu zorunlu kılar. Bu durumda kargo yalnızca belirtilen kısıtlamalar nedeniyle tamamlanamıyorsa atlanır.
  • Shipment.VisitRequest.cost, belirli bir teslim alma veya teslimatın maliyetini gösterir. Bu özellik, öncelikle tek bir gönderim için birden fazla teslim alma veya teslimat seçeneği arasında maliyet değişimi yapılmasını sağlamak amacıyla kullanılır.

Shipment maliyet parametreleri, Vehicle maliyet parametreleriyle aynı boyutsuz birimleri kullanır. Shipment tamamlanması için gereken maliyet, ceza maliyetini aştığında Shipment, herhangi 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) tek bir maliyet özelliği olan globalDurationCostPerHour içerir. Bu maliyet, tüm araçların ShipmentRoute'lerini tamamlaması için gereken toplam süreye göre belirlenir. Artırma globalDurationCostPerHour, tüm gönderilerin daha erken tamamlanmasına öncelik verir.

Rota Optimizasyonu yanıt maliyeti özellikleri

OptimizeToursResponse mesajı (REST, gRPC), ShipmentRoute işlemlerinin tamamlanması sürecinde oluşan maliyetleri temsil eden maliyet özelliklerine sahiptir. metrics.costs ve metrics.totalCost özellikleri, yanıttaki tüm rotalarda oluşan maliyet birimlerinin sayısını gösterir. 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ün

{
  "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ıttaki ü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 gösterir. skippedShipments özelliği, hangi gönderilerin atlandığını listeler.

Bu örnekte, örnek isteğinde yalnızca model.shipments[1] atlanır. model.shipments[1], örnek yanıttaki toplam model.shipments.penalty_cost anahtarıyla eşleşen 5 birimlik bir ceza maliyetine sahiptir. Gönderinin Vehicle'nın 40,0 costPerHour ve 10,0 costPerKilometer değerlerine kıyasla düşük olması, gönderiyi tamamlamak yerine atlamayı daha uygun maliyetli hale getirir.penaltyCost

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

Çeşitli OptimizeToursRequest mesaj (REST, gRPC) özellikleri, esnek kısıtlamaları temsil eder. Bu kısıtlamalar, karşılanamadıklarında maliyete neden olan kısıtlamalardır.

Örneğin, araç LoadLimit (REST, gRPC) kısıtlamaları softMaxLoad ve costPerUnitAboveSoftMax özelliklerine sahiptir. Birlikte, softMaxLoad'yı aşan yük birimleriyle orantılı bir maliyete neden olurlar ve sınırın yalnızca maliyet açısından mantıklı olduğu durumlarda aşılmasına izin verirler.

Benzer şekilde, TimeWindow kısıtlamaları (REST, gRPC) soft_start_time ve soft_end_time özelliklerine sahiptir. Bunlara karşılık gelen cost_per_hour_before_soft_start_time ve cost_per_hour_after_soft_end_time, kısıtlanmış etkinliğin TimeWindow ile ilgili olarak ne kadar erken veya geç gerçekleştiğine bağlı olarak ortaya çıkar.

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

LoadLimit kısıtlamaları Yük 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 Zaman Aralığı Kısıtlamaları başlıklı makalede ayrıntılı olarak ele alınmaktadır.