Yük talepleri ve sınırları

loadDemands özelliği ShipmentModel.shipments.Shipment altında, loadLimits özelliği ise ShipmentModel.vehicles.Vehicle altında tanımlanır.

Yük talepleri ve sınırları, kapasiteyi yönetmek için kullanabileceğiniz bir kısıtlama türüdür. Bu kısıtlama, bir gönderinin gerekli kapasitesini ve bir 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 yük sevkiyatlarında ağır hizmet araçlarının eşleştirilmesine öncelik verin.

Yük talepleri ve sınırları şu özelliklerde belirtilir:

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

Yapı

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

Essentials kontrol listesi

Aşağıdaki yapılacaklar listesinde, yükle ilgili olası hataları önleyen temel bilgiler açıklanmaktadır. 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ıyla ilgili özellikler açıklanmaktadır:

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

Yükleme kapağı

Yük türü, gönderilere ve araçlara eşit şekilde uyguladığınız bir dize anahtarıdır. Bir gönderinin yük talebi ve bir aracın yük sınırı için tek bir yük türü geçerlidir.

Yük türleri, protokol arabellekleri eşleme 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, gönderiler ve araçlar için kapasite gereksinimlerini tanımlayan belirli özellikler içerir. Aşağıdaki tabloda bu özellikler açıklanmaktadır:

Nesne Ebeveyn Mülk Tesis türü Tesis 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) Aracın belirtilen türdeki maksimum yük kapasitesini tanımlar.

Örnekler

Bu bölümde üç tür örnek ele alınmaktadı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 senaryo.
  • Örnek senaryoda ayarlanan değerleri içeren 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, maxLoad özelliğini ise int64 biçiminde dize olarak ayarlayabileceğiniz bir yük sınırının en temel 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 hizmeti veren bir işletmeniz olduğu ve sınırlı sayıda kafes bulunan bir araçta birkaç köpeği taşımak için rotayı optimize ettiğiniz bir senaryo açıklanmaktadır.

Her gönderi, belirli sayıda köpek aldığınız bir durağı temsil eder. Bu örnekte, her gönderinin farklı bir teslim alma konumu (bakımını yaptığınız köpeklerin evi) ve tüm gönderilerin aynı teslimat konumu (köpek bakım merkezinizin binası) vardır.

Bu örnekte, isteğinizdeki özellik değerleri aşağıdaki gibidir:

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

Aşağıdaki diyagramda 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 tükettiği gösterilmektedir:

Araç, rotaya aracın yük sınırlarını temsil eden 6 boş alanla başlar. İlk sevkiyatta bir köpek için, ikinci sevkiyatta ise üç köpek için yer gerekiyor. Aracın son durumunda 6 alandan 4'ü dolu, 2'si boş.

Bu örnekte, her sevkiyatın yük talepleri ve aracın yük sınırları aşağıdaki etkilere sahiptir:

  • Araç 6 köpeğe kadar taşıyabildiğinden ve siz yalnızca 4 köpek aldığınızdan, optimize edici aracın köpekleri taşıması için rota oluştururken sorun yaşamaz.

  • Araçta 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ük sınırından fazlaysa optimize edici, toplama işlemlerinden birini atlar veya uygun bir araca atar.

Önceden tanımlanmış bir tür grubu olmadığını unutmayın. Bu örnekte, köpeklerin ağırlığını sınırlamak için yük türünü köpek birimlerinden ağırlık birimlerine değiştirebilir veya genişliklerini ya da yüksekliklerini sınırlamak için doğrusal ölçümlere değiştirebilirsiniz. Bu esneklik, yük taleplerini ve sınırlarını özel ihtiyaçlarınıza göre uyarlamanıza 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 örnektekinin aksine, bir gönderinin birden fazla yük talebi ve bir aracın birden fazla yük sınırı olabileceğini unutmayın. Bu sayede, filonuzun rotalarını optimize ederken dikkate alınması gereken karmaşık kısıtlamalar sağlayabilirsiniz.

Yumuşak yükleme sınırları

Bir aracın loadLimits öğesine softMaxLoad ve costPerUnitAboveSoftMax ekleyerek yük sınırlarını esnek kısıtlamalar olarak ayarlayabilirsiniz. Bu sayede optimize edici, aracın maksimum yükünü aşabilir ve yük sınırına sıkı sıkıya uymak yerine rotanın tamamlanmasına öncelik verebilir.

Hem katı hem de esnek bir yükleme sınırı belirlemek için maxLoad ve softMaxLoad öğelerini birlikte kullanabilirsiniz. Bu durumda softMaxLoad, aşılabilecek yükü belirlerken maxLoad, aşılamayacak kesin bir sınır belirler. Her ikisi de kullanıldığında maxLoad, softMaxLoad değerinden büyük olmalıdır.

Özellikler

Aşağıdaki tabloda, yük talepleri ve sınırları için esnek kısıtlama özellikleri açıklanmaktadır.

Ebeveyn Mülk adı Tesis türü Tesis açıklaması
loadLimits softMaxLoad dize (int64 biçimi) Bir araç için tercih edilen maksimum yük. Aracın yükü bu değeri aşarsa maliyet oluşur.
loadLimits costPerUnitAboveSoftMax sayı softMaxLoad üzerindeki yükün birim başına maliyeti. softMaxLoad kullanılırken bu alan zorunludur. Maliyetler hakkında daha fazla bilgi edinmek için Maliyet modeli temel kavramına bakın.

Kod örneği

Aşağıdaki örnekte, loadLimits için esnek kısıtlama özelliklerinin yapısı gösterilmektedir:

{
   "loadLimits": {
        "LOAD_TYPE": {
          "softMaxLoad": "LOAD_AMOUNT",
          "costPerUnitAboveSoftMax": COST_PER_UNIT
        }
      }
}