Yük talepleri ve sınırları

loadDemands mülkü ShipmentModel.shipments.Shipment altında, loadLimits mülkü ise ShipmentModel.vehicles.Vehicle altında tanımlanır.

Yük talepleri ve sınırlamaları, kapasiteyi yönetmek için kullanabileceğiniz bir tür kısıtlamadır. Bu kısıtlama, gönderinin zorunlu kapasitesini ve aracın maksimum kapasitesini belirtir. Bu sayede, rota atamalarını bu kısıtlamalara göre optimize edebilirsiniz.

Yük talepleri ve sınırlar aşağıdaki gibi hedefleri destekleyebilir:

  • Araçların aşırı yüklenmesini önleyin.
  • Gönderiler teslim alınırken ve teslim edilirken araç yüklerinin nasıl değiştiğini izleyin.
  • Ağır hizmet tipi araçların ağır yük kargolarıyla eşleştirilmesine öncelik verin.

Yük talepleri ve sınırlar aşağıdaki özelliklerde belirtilir:

  • loadDemands, belirli bir gönderimin gerektirdiği kapasite miktarını belirtir.
  • loadLimits, belirli bir araç için maksimum kapasiteyi belirtir.

Yapı

Şemada gösterildiği gibi, yük talepleri ve sınırlar aşağıdaki gibi yapılandırılmıştır:

Essentials kontrol listesi

Aşağıdaki yapılacaklar listesi, yüklemeyle ilgili olası hataları önleyen temel bilgileri açıklar. Bu liste, isteğinizi doğrulamanıza ve yanıtınızla ilgili sorunları gidermenize yardımcı olabilir.

Özellikler

Bu bölümde, yük talepleri ve sınırları için aşağıdaki özellikler açıklanmaktadır:

  • Yük türü: Yük talepleri ile sınırlar arasında paylaşılan bir özelliktir.
  • Load ve LoadLimit: Sırasıyla yükleme isteklerinde ve yükleme sınırlarında bulunan benzersiz özellikler.

Yükleme türü

Yük türü, kargolara ve araçlara eşit şekilde uyguladığınız bir dize anahtarıdır. Tek bir yükleme türü, gönderinin yükleme talebinin yanı sıra aracın yükleme sınırı için geçerlidir.

Yükleme türleri, Protocol Buffers harita türü söz dizimini kullanır. Yük türünü adlandırırken yükün türünü ve birimini açıklayan tanımlayıcıları kullanın. Örneğin: weightKg, volume_gallons, palletcount veya frequencyDaily.

Load ve LoadLimit

Load ve LoadLimit nesneleri, kargolar ve araçlar için kapasite şartlarını tanımlayan belirli özellikler içerir. Aşağıdaki tabloda bu özellikler açıklanmaktadır:

Nesne Ebeveyn Mülk Tesis türü Mülk açıklaması
Load loadDemands amount dize (int64 biçimi) Belirtilen türde gönderinin kapasite şartını tanımlar.
LoadLimit loadLimits maxLoad dize (int64 biçimi) Belirtilen türdeki aracın maksimum yük kapasitesini tanımlar.

Örnekler

Bu bölümde üç tür örnek ele alınmıştır:

  • Yük taleplerinin ve sınır özelliklerinin yapısını gösteren kod örnekleri.
  • API isteğinde yük taleplerini ve sınırlarını kullanmanın bir yolunu gösteren örnek bir senaryo.
  • Örnek senaryoda ayarlanan değerleri içeren bir istek örneği.

Kod örnekleri

Aşağıdaki örnekte, loadDemands türünü dize olarak ve amount özelliğini int64 biçiminde dize olarak ayarlayabileceğiniz bir yük talebinin yapısı gösterilmektedir:

{
  "model": {
    "shipments": [ ...
      {
        "loadDemands": {
          "MATCHING_LOAD_TYPE": {
            "amount": "YOUR_LOAD_AMOUNT"
          }
        }
      }
    ],
    "vehicles": [ ...
    ]
  }
}

Aşağıdaki örnekte, loadLimits türünü dize olarak, maxLoad mülkünü ise int64 biçiminde dize olarak ayarlayabileceğiniz en temel yükleme sınırı yapısı gösterilmektedir:

{
  "model": {
    "shipments": [ ...
    ],
    "vehicles": [ ...
      {
        "loadLimits": {
          "MATCHING_LOAD_TYPE": {
            "maxLoad": "YOUR_MAX_LOAD"
          }
        }
      }
    ]
  }
}

Örnek senaryo

Bu bölümde, köpek bakım merkezi işletmenizin olduğu ve sınırlı sayıda kafes bulunan bir araçta birkaç köpeği taşımak için bir rotayı optimize ettiğiniz bir senaryo açıklanmaktadır.

Her gönderim, belirli sayıda köpek aldığınız bir durağı temsil eder. Bu örnekte her gönderinin farklı bir teslimat noktası vardır (baktığınız köpeklerin evi) ve tüm gönderilerde aynı teslimat noktası (köpek bakım merkezinizin bulunduğu bina) vardır.

Bu örnekte, isteğinizde yer alan özellik değerleri aşağıdaki gibidir:

Ebeveyn Mülk Tür Değer Senaryo
loadDemands yükleme türü dize dogUnit Gönderinin yük türünü tanımlar. Bu örnekte, her dogUnit değerinin bir köpeği temsil ettiği dogUnit kullanılmaktadır.
loadDemands amount sayı 1. gönderim: 1
2. gönderim: 3
Tanımlanmış yükleme türünün miktarını belirtir. Bu örnekte, iki gönderim tanımı yapıyorsunuz. İlkinde bir köpek, ikincisinde ise 3 köpek alıyorsunuz.
loadLimits yükleme türü dize dogUnit Araca uygulanan yük sınırı türünü tanımlar. Sınırın alakalı olması için bu, gönderinin yükleme türüyle eşleşmelidir.
loadLimits maxLoad sayı 6 Aracın taşıyabileceği maksimum yük türünü belirtir. Bu örnekte, maksimum kapasitesi 6 dogUnit olan yalnızca bir aracınız vardır. Her dogUnit, bir köpek kafesini temsil eder.

Aşağıdaki şemada aracın yük sınırları, her gönderinin yük talepleri ve her gönderinin aracın yük sınırlarını nasıl kullandığı gösterilmektedir:

Araç, yola aracın yük sınırlarını temsil eden 6 boş alanla başlar. İlk gönderim için bir köpek, ikinci gönderim için üç köpek alanı gerekir. Aracın son durumu, 6 yerden 4'ünün dolu olduğu ve iki yerin boş olduğu durumdur.

Bu örnekte, her gönderinin yükleme talepleri ve aracın yükleme sınırları aşağıdaki etkileri gösterir:

  • Araç 6'ya kadar köpek taşıyabileceğinden ve yalnızca 4 köpek aldığınız için optimizatör, aracın köpekleri taşıması için bir rota oluşturmakta sorun yaşamaz.

  • Aracın 6 dogUnit yük sınırı olması, bu araçta yalnızca iki köpek daha taşıyabileceğiniz anlamına da gelir.

  • Köpek sayısı yükleme sınırından fazlaysa optimizatör, alışlardan birini atlar veya uygun bir araca atar.

Önceden tanımlanmış türlerin bulunmadığını unutmayın. Bu örnekte, köpeklerin ağırlığını sınırlamak için yükleme türünü köpek birimlerinden ağırlık birimlerine veya genişliklerini ya da boylarını sınırlamak için doğrusal ölçümlere değiştirebilirsiniz. Bu esneklik, yükleme taleplerini ve sınırlarını kendi ihtiyaçlarınıza göre özelleştirmenize olanak tanır.

İstek örneği

Aşağıdaki örnekte, örnek senaryo değerlerini içeren temel bir optimizeTours isteğinin yapısı gösterilmektedir:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "One bernese mountain dog",
        "loadDemands": {
          "dogUnit": {
            "amount": "1"
          }
        }
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ],
        "label": "Three chihuahuas",
        "loadDemands": {
          "dogUnit": {
            "amount": "3"
          }
        }
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "loadLimits": {
          "dogUnit": {
            "maxLoad": "6"
          }
        },
        "costPerKilometer": 1.0
      }
    ]
  }
}

Bu örnekteki durumdan farklı olarak, bir gönderinin birden fazla yükleme talebi ve bir aracın birden fazla yükleme sınırı olabileceğini unutmayın. Bu sayede, filonuzun rotalarını optimize ederken dikkate alınacak karmaşık kısıtlamalar sağlayabilirsiniz.