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 hizmet araçlarının ağır yük gönderileriyle 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ı

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

Essentials yapılacaklar listesi

Aşağıdaki kontrol listesinde, yüklemeyle ilgili olası hataları önlemek için gerekli bilgiler açıklanmaktadır. Bu liste, isteğinizi doğrulamanıza ve yanıtınızla ilgili sorunları gidermenize yardımcı olabilir.

Yük türleri, gönderiler ve araçlar arasında

Özellikler

Bu bölümde, yük talepleri ve sınırlarıyla ilgili özellikler açıklanmaktadır. Bunlar şunlardı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 türü

Yük türü, gönderilere ve araçlara eşit olarak uyguladığınız bir dize anahtardır. Tek bir yük türü, gönderinin yük talebinin yanı sıra aracın yük sınırı için de geçerlidir.

Yük 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, gönderiler ve araçlar için kapasite koşullarını tanımlamak üzere 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ürdeki 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ı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.
  • Bir istek örneği. Bu örnek, örnek senaryoda ayarlanan değerleri içerir.

Kod örnekleri

Aşağıdaki örnekte, loadDemands türünü dize, amount özelliğini ise 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, yük sınırının en temel yapısı gösterilmektedir. Burada loadLimits türünü dize, maxLoad özelliğini ise int64 biçiminde dize olarak ayarlayabilirsiniz:

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

Örnek senaryo

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

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

Bu örnekte, isteğinizdeki özellik değerleri şunlardır:

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 dizisi kullanılmaktadır.
loadDemands amount sayı 1. gönderim: 1
2. gönderim: 3
Tanımlanan yük türünün miktarını belirtir. Bu örnekte iki gönderim tanımlı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 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, her bir dogUnit'nın bir köpek kafesini temsil ettiği ve maksimum kapasitesi 6 dogUnit olan tek bir aracınız var.

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ç, rotaya 6 boşlukla başlar. Bu boşluklar, aracın yük sınırlarını temsil eder. İlk gönderim için bir köpek, ikinci gönderim için üç köpek yeri gerekiyor. Aracın son durumunda 6 yerden 4'ü dolu, 2'si ise boş kalır.

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

  • Araç 6 köpeğe kadar taşıma kapasitesine sahip olduğundan ve yalnızca 4 köpek alacağınız için optimize edici, köpekleri taşıyacak araç için rota oluşturmada sorun yaşamayacaktır.

  • 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öpeklerin sayısı yük sınırından fazlaysa optimizasyon aracı alma işlemlerinden birini atlar veya uygun bir araca atar.

Önceden tanımlanmış türler 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 veya genişlik ya da yüksekliklerini sınırlamak için doğrusal ölçülere değiştirebilirsiniz. Bu esneklik sayesinde yük taleplerini ve sınırlarını kendi ihtiyaçlarınıza göre ayarlayabilirsiniz.

İ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 örnekten farklı olarak, bir gönderinin birden fazla yük talebi olabileceğini 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.

Soft yükleme sınırları

Bir aracın loadLimits bölümüne softMaxLoad ve costPerUnitAboveSoftMax ekleyerek yük sınırlarını esnek kısıtlamalar olarak ayarlayabilirsiniz. Bu, optimizasyon aracının, yük sınırına sıkı sıkıya uymak yerine rotanın tamamlanmasına öncelik vererek bir maliyet karşılığında aracın maksimum yükünü aşmasına olanak tanır.

Hem kesin hem de esnek yük sınırı belirlemek için maxLoad ve softMaxLoad öğelerini birlikte kullanabilirsiniz. Bu durumda, softMaxLoad aşılabilen yükü, maxLoad ise aşılamayan sabit bir sınırı belirler. İkisi 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 birimi başına maliyet. Bu alan, softMaxLoad kullanılırken 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 öğesinin esnek kısıtlama özelliklerinin yapısı gösterilmektedir:

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