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'sinin amacı, bir dizi konumu ziyaret etmek için bir araç filosunun rotalarını planlamaktır. OptimizeToursRequest nesnesi, bu araçların ve konumların özelliklerini açıklar ve her uç noktanın istek gövdesinin birincil yapısıdır.

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

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

  • ShipmentModel: Gönderilerin, mevcut araçların ve ilişkilerini açıklayan diğer nesnelerin listesini içerir.
  • Shipment: Bir araç tarafından ziyaret edilecek konumları açıklar. Bunlar, alınacak ve teslim edilecek gerçek paketleri veya araç sürücüsünün hizmet verdiği yerleri temsil edebilir.
  • Vehicle: Gönderi konumları arasındaki ulaşım şeklini açıklar. Her araç, gerçek bir araca veya yürüyerek hareket eden bir kişiye karşılık gelir.

ShipmentModel

ShipmentModel, rota optimizasyonu sorununun öğelerini içerir. Kısıtlamaları göz önünde bulundurarak ve genel maliyeti en aza indirerek bir dizi araçla 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önderi ve araç ayrıntılarını içeren zorunlu nesneler.
globalStartTime ve globalEndTime Tüm araçların tüm gönderileri tamamlaması gereken zaman aralığının başlangıcını ve bitişini gösterir. Bu özellikler zorunlu olmasa da optimizasyon aracı, zaman kısıtlamalarına uyulduğunda en iyi şekilde çalıştığından bu özellikleri eklemeniz önerilir.

ShipmentModel içindeki özelliklerin tam listesi için referans belgelerine bakın.

ShipmentModel Örnek

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

Bu örnekte, isteğinizdeki ShipmentModel özelliği 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ü, bir rotada teslim edilebilecek bir gönderinin veya gerçekleştirilebilecek bir hizmetin mülk yapısını tanımlar.

Gerçek hayattaki bir kargo, bir "shipments" nesnesi içinde yer alan bir "Shipment" mesajına eşittir.

Diyagramda gösterildiği gibi:

  • Shipment iletilerinde gerçek hayattaki bir gönderi veya hizmetle ilgili tüm bilgiler yer alır.
  • Tüm Shipment iletileri shipments alanında belirtilir.
  • shipments alanı bir veya daha fazla Shipment mesajı içeriyor.

Bir Shipment mesajı için en az bir pickups veya deliveries nesnesi gerekir. Bu nesnelerin tanımları şunlardır:

  • pickups, bir kargonun teslim alma konumunu tanımlar.
  • deliveries, bir gönderinin teslimat konumunu tanımlar.
  • Hem pickups hem de deliveries, konumları ve diğer ayrıntıları tanımlayan bir VisitRequest mesaj türü içerir.

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

Senaryo Açıklama
Yalnızca pickups Yalnızca kargoyu teslim aldığınız varsayılır.
Yalnızca deliveries Gönderiyi önceden yüklediğiniz veya bir hizmet sunduğunuz varsayılır.
Hem pickups hem de deliveries Atanan araç, önce teslim alma, ardından teslimat işlemini tamamlamalıdır. Yalnızca teslim alma işlemini gerçekleştiren araç teslimat işlemini gerçekleştirebilir.
Birden fazla pickups veya deliveries Bir kargoda pickups veya deliveries için birden fazla olasılık listeleniyorsa optimizasyon aracı, maliyeti en aza indirmeye ve kısıtlamaları karşılamaya dayalı olarak kullanılacak bir teslim alma seçeneği ve bir teslimat seçeneği belirler.

Shipment içindeki özelliklerin tam listesi için referans belgelerine bakın.

Shipment Örnek

Bu örnekte, köpekleri evlerinden alıp gündüz bakım merkezine götürdüğünüz bir köpek gündüz bakım hizmeti sunduğunuzu varsayalım. İki köpeğin teslim alınacağı yeri belirlemek ve teslimat yerini işletmeniz olarak ayarlamak istiyorsunuz:

  • İlk köpeğin evi, San Francisco'daki Coit Kulesi'nde bulunuyor. Bu konumun koordinatları enlem 37.8024 ve boylam -122.4058'dir.
  • İkinci köpeğin evi, San Francisco'daki South Sunset Playground Park'ta. Bu konumun koordinatları enlem 37.7359 ve boylam -122.5011'dir.
  • Köpek bakım merkeziniz San Francisco'daki Mission Dolores Park'ta bulunuyor. Bu konumun koordinatları enlem 37.759773 ve boylam -122.427063'tür.

Aşağıda, Shipment mesajının bir kod örneği verilmiştir. Bu örnekte, shipments nesnesi, örnek koordinatlara sahip iki Shipment mesaj türü içerir.

{
  "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 gönderim yapabilen bir aracın mülk yapısını tanımlar.

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

Diyagramda gösterildiği gibi:

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

Özellikler Açıklama
startLocation ve endLocation Son optimize edilmiş rotanın parçası olan araçların başlangıç ve bitiş konumu. Tanımlanmamışsa varsayılan olarak ilk kargo teslim 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 olması ö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 içinde ayarlanan globalStartTime ve globalEndTime zaman aralığında olmalıdır. Bu özellik zorunlu olmasa da optimizasyon aracı, zaman kısıtlamalarına uyulduğunda en iyi şekilde çalıştığından eklenmesi önerilir.

Vehicle Örnek

Bu örnekte, bir köpek gündüz bakım hizmetiniz var ve günün başında ve sonunda aracınızın konumunu ve ne kadar yakıt harcadığını tanımlamak istiyorsunuz. ShipmentModel nesnesindeki globalStartTime ve globalEndTime özelliklerinde tanımladığınız saatlerle eşleştiği için aracın çalışma saatlerini belirtmeniz gerekmez.

Bu örnekte, isteğinizdeki Vehicle özelliği 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ı. Bunlar, 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ı. Bunlar, San Francisco'daki Mission Dolores Park'ta bulunan köpek bakım merkezinizin konumuyla eşleşiyor.
costPerHour 27 Köpek gündüz bakım aracınızı sürmesi için sürücüye ne kadar ödeme yaptığınız. Sürücüye saatlik 27 ABD doları ödüyorsunuz.

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 içindeki özelliklerin tam listesi için referans belgelerine bakın.

Tam istek örneği

Aşağıdaki kod örneğinde, bu belgede gösterilen ShipmentModel, Shipment ve Vehicle örneklerini birleştiren eksiksiz bir istek ö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": [
      {
        "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"
  }
}