Temel yapı (ShipmentModel, Shipment ve Vehicle)

ShipmentModel, "Shipment" mesaj türüne sahip bir "shipments" nesnesi ve "Vehicle" mesaj türüne sahip bir "vehicles" nesnesi içerir.

Rota Optimizasyonu API'nin amacı, bir araç filosu için bir dizi konumu ziyaret edecek rotalar planlamaktır. OptimizeToursRequest nesnesi, bu araçların ve konumların özelliklerini tanımlar ve her uç noktanın istek gövdesinin birincil yapısıdır.

OptimizeToursRequest nesnesinin temel yapısı aşağıdaki gibidir:

Bu dokümanda aşağıdaki ileti türleri açıklanmaktadır:

  • ShipmentModel: Gönderimlerin, mevcut araçların ve aralarındaki ilişkileri açıklayan diğer nesnelerin listesini tutar.
  • Shipment: Bir aracın ziyaret edeceği konumları tanımlar. Bu noktalar, teslim alınacak ve teslim edilecek gerçek paketleri veya araç sürücüsünün hizmet verdiği yerleri temsil edebilir.
  • Vehicle: Kargo konumları arasındaki nakliye aracını belirtir. Her araç, gerçek bir araca veya yaya olarak hareket eden bir kişiye karşılık gelir.

ShipmentModel

ShipmentModel, rota optimizasyon probleminin öğelerini içerir. Kısıtlamaları dikkate alıp genel maliyeti en aza indirirken bir dizi araç tarafından gerçekleştirilebilecek bir dizi gönderi içerir.

Aşağıdaki tabloda, ShipmentModel ile ilgili bazı özellikler açıklanmaktadır:

Özellikler Açıklama
shipments ve vehicles Bir veya daha fazla gönderinin ve aracın ayrıntılarını içeren zorunlu nesneler.
globalStartTime ve globalEndTime Tüm araçların tüm gönderimleri tamamlaması gereken zaman aralığının başlangıç ve bitiş zamanını belirtir. Bu özellikler gerekli olmasa da optimizatör zaman kısıtlamalarına uyulduğunda en iyi şekilde çalıştığından bunları eklemeniz önerilir.

ShipmentModel özelliğindeki özelliklerin tam listesi için referans dokümanlarına bakın.

ShipmentModel Örnek

Bu örnekte, köpek bakım hizmeti sunuyorsunuz ve isteğinizi oluşturmaya başlıyorsunuz. Gönderimleri ve araçları daha sonra tanımlayacaksınız ancak çalışma saatlerinizi ve saatlik işletme maliyetinizi ayarlayarak başlamak istiyorsunuz.

Bu örnekte, isteğinizde ShipmentModel mülk değerleri şunlardır:

Mülk Değer Açıklama
globalStartTime 2024-02-13T00:00:00.000Z Çalışma saatlerinin başlangıç tarihi ve saati.
globalEndTime 2024-02-14T06:00:00.000Z Çalışma saatlerinin bitiş tarihi ve saati.

Aşağıda, örnek senaryo değerlerini içeren bir ShipmentModel mesajının kod örneği verilmiştir.

{
  "model": {
    "shipments": [
      ...
    ],
    "vehicles": [
      ...
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

Shipment

Shipment mesaj türü, teslim edilebilecek bir gönderinin veya bir rotada gerçekleştirilebilecek hizmetin mülk yapısını tanımlar.

Gerçek bir gönderim, bir "shipments" nesnesi içinde bulunan bir "Shipment" mesajına eşittir.

Diyagramda gösterildiği gibi:

Shipment mesajı için en az bir pickups veya deliveries nesnesi gerekir. Bu nesnelerin tanımı şu şekildedir:

Aşağıdaki tabloda, Shipment mesajındaki pickups ve deliveries yapılandırmasına göre farklı senaryolar açıklanmaktadır.

Senaryo Açıklama
Yalnızca pickups Yalnızca gönderimi teslim aldığınız varsayılır.
Yalnızca deliveries Gönderimi önceden yüklediğiniz veya bir hizmet sunduğunuz varsayılır.
Hem pickups hem de deliveries Atanan araç, önce teslim alma, ardından teslim etme işlemini tamamlamalıdır. Teslimat işlemini yalnızca teslim alma işlemini gerçekleştiren araç yapabilir.
Birden fazla pickups veya deliveries Bir gönderimde pickups veya deliveries için birden fazla seçenek listelenirse optimizatör, maliyeti ve kısıtlamaları karşılamayı en aza indirme esasına göre kullanılacak bir teslim alma ve bir teslimat seçeneği seçer.

Shipment içindeki özelliklerin tam listesi için referans dokümanlarına bakın.

Shipment Örnek

Bu örnekte, köpekleri evlerinden alıp gündüz bakım merkezinize götürdüğünüz bir köpek bakım hizmeti sunuyorsunuz. İki köpeğin teslim alma konumunu işletmeniz olarak, teslimat konumunu ise ev olarak ayarlamak istiyorsunuz:

  • İlk köpek evi San Francisco'daki Coit Kulesi'ndedir. Bu konumun koordinatları 37,8024 enlem ve -122,4058 boylamdır.
  • İkinci köpeğin evi San Francisco'daki South Sunset Playground Park'ta bulunuyor. Bu konumun koordinatları 37,7359 enlem ve -122,5011 boylamdır.
  • Köpek bakım merkeziniz San Francisco'daki Mission Dolores Park'ta. Bu konumun koordinatları 37,759773 enlem ve -122,427063 boylamdır.

Aşağıda, shipments nesnesinin örnek koordinatları içeren iki Shipmentileti türü barındırdığı bir Shipment iletisinin kod örneği verilmiştir.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
    ...
    ]
  }
}

Vehicle

Vehicle ileti türü, bir rotada kargo gerçekleştirebilen bir aracın mülk yapısını tanımlar.

Gerçek bir araç, bir "vehicles" nesnesi içinde bulunan bir "Vehicle" mesajına eşittir.

Şemada gösterildiği gibi:

Aşağıdaki tabloda, Vehicle öğesinin bazı alakalı özellikleri açıklanmaktadır.

Özellikler Açıklama
startLocation ve endLocation Optimize edilmiş nihai rotanın bir parçası olan araçların başlangıç ve bitiş konumu. Tanımlanmamışsa varsayılan olarak ilk kargo alma ve son kargo teslimat konumları kullanılır.
costPerHour, costPerKilometer, costPerTraveledHour Araca özel maliyet parametreleri. API'nin optimize edilmiş bir rota döndürmesi için isteğinizde en az bir maliyet parametresi bulundurmanız önerilir. Maliyetler hakkında daha fazla bilgi edinmek için Maliyet modeli temel kavramına bakın.
startTimeWindows ve endTimeWindows Bir aracın bir rotada çalışabileceği dönemleri tanımlayın. Bu tarihler, ShipmentModel'de ayarlanan globalStartTime ve globalEndTime zaman aralığına uygun olmalıdır. Bu özellik gerekli olmasa da optimizatör zaman kısıtlamalarına uyulduğunda en iyi şekilde çalıştığından bu özelliği eklemeniz önerilir.

Vehicle Örnek

Bu örnekte, köpek bakım hizmeti veriyorsunuz ve aracınızın günün başında ve sonunda konumunu ve ne kadar benzin harcadığını tanımlamak istiyorsunuz. ShipmentModel nesnesinin globalStartTime ve globalEndTime mülklerinde tanımladığınız saatlerle eşleştiği için aracın çalışma saatlerini belirtmeniz gerekmez.

Bu örnekte, isteğinizde Vehicle mülk değerleri şunlardır:

Mülk Değer Açıklama
startLocation latitude: 37.759773, longitude: -122.427063 Aracınızın rotasının başlangıç koordinatları. Bu bilgiler, San Francisco'daki Mission Dolores Park'ta bulunan köpek bakım merkezinizin konumuyla eşleşiyor.
endLocation latitude: 37.759773, longitude: -122.427063 Aracınızın rotasının bitiş koordinatları. Bu bilgiler, San Francisco'daki Mission Dolores Park'ta bulunan köpek bakım merkezinizin konumuyla eşleşiyor.
costPerHour 27 Köpek bakım aracınızı kullanan sürücüye ne kadar ücret ödediğiniz. Şoföre saat başına 27 dolar ödersiniz.

Aşağıda, örnek senaryo değerlerini içeren bir Vehicle mesajının kod örneği verilmiştir.

{
  "model": {
    "shipments": [
    ...
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ]
  }
}

Vehicle özelliğindeki özelliklerin tam listesi için referans dokümanlarına bakın.

Tam istek örneği

Aşağıdaki kod örneğinde, bu belgede gösterilen ShipmentModel, Shipment ve Vehicle örnekleri birleştirilerek eksiksiz bir istek örneği sağlanmaktadır.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ],
    "globalStartTime": "2024-02-13T00:00:00.000Z",
    "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}