मांग और सीमाएं लोड करें

loadDemands प्रॉपर्टी को ShipmentModel.shipments.Shipment के तहत और loadLimits प्रॉपर्टी को ShipmentModel.vehicles.Vehicle के तहत तय किया जाता है.

लोड की मांग और सीमाएं, एक तरह की पाबंदी होती है. इनका इस्तेमाल क्षमता को मैनेज करने के लिए किया जा सकता है. इस शर्त से, शिपमेंट की ज़रूरी क्षमता और वाहन की ज़्यादा से ज़्यादा क्षमता के बारे में पता चलता है. इससे, इन शर्तों के आधार पर रूट असाइनमेंट को ऑप्टिमाइज़ किया जा सकता है.

लोड की गई मांग और सीमाएं, इन जैसे लक्ष्यों को पूरा करने में मदद कर सकती हैं:

  • वाहनों में ज़्यादा सामान न लादें.
  • शिपमेंट पिक अप और डिलीवर किए जाने पर, वाहन के लोड में होने वाले बदलावों पर नज़र रखें.
  • ज़्यादा वज़न वाले सामान को ले जाने के लिए, ज़्यादा क्षमता वाले वाहनों को प्राथमिकता दें.

लोड की मांग और सीमाएं, इन प्रॉपर्टी में बताई गई हैं:

  • loadDemands एट्रिब्यूट, किसी शिपमेंट के लिए ज़रूरी क्षमता की जानकारी देता है.
  • loadLimits से, किसी वाहन की ज़्यादा से ज़्यादा क्षमता के बारे में पता चलता है.

स्ट्रक्चर

डायग्राम में दिखाए गए तरीके से, लोड की मांग और सीमाएं इस तरह से तय की जाती हैं:

  • loadDemands, Shipment की प्रॉपर्टी है. एक Shipment में लोड की कई मांगें हो सकती हैं.
  • loadLimits, Vehicle की प्रॉपर्टी है. किसी Vehicle के लिए, लोड करने की कई सीमाएं सेट की जा सकती हैं.

Essentials की चेकलिस्ट

यहां दी गई चेकलिस्ट में, लोड करने से जुड़ी संभावित गड़बड़ियों को रोकने के लिए ज़रूरी जानकारी दी गई है. इस सूची से, आपको अपने अनुरोध की पुष्टि करने और जवाब से जुड़ी समस्या हल करने में मदद मिल सकती है.

प्रॉपर्टी

इस सेक्शन में, लोड की मांगों और सीमाओं के लिए प्रॉपर्टी के बारे में बताया गया है. ये प्रॉपर्टी यहां दी गई हैं:

  • लोड टाइप: यह लोड की मांग और सीमाओं के बीच शेयर की गई प्रॉपर्टी है.
  • Load और LoadLimit: ये ऐसी यूनीक प्रॉपर्टी हैं जो लोड की मांग और लोड की सीमाओं में मौजूद होती हैं.

लोड टाइप

लोड टाइप, एक स्ट्रिंग की होती है. इसे शिपमेंट और वाहनों, दोनों पर एक जैसा लागू किया जाता है. शिपमेंट की लोड डिमांड के साथ-साथ वाहन की लोड लिमिट पर भी एक ही लोड टाइप लागू होता है.

लोड टाइप, प्रोटोकॉल बफ़र मैप टाइप सिंटैक्स का इस्तेमाल करते हैं. लोड टाइप का नाम देते समय, ऐसे आइडेंटिफ़ायर का इस्तेमाल करें जिनसे लोड के टाइप और उसकी यूनिट के बारे में पता चले. उदाहरण के लिए: weightKg, volume_gallons, palletcount या frequencyDaily.

Load और LoadLimit

Load और LoadLimit ऑब्जेक्ट में, शिपमेंट और वाहनों के लिए क्षमता से जुड़ी ज़रूरी शर्तों को तय करने वाली खास प्रॉपर्टी होती हैं. इस टेबल में इन प्रॉपर्टी के बारे में बताया गया है:

ऑब्जेक्ट Parent प्रॉपर्टी प्रॉपर्टी किस तरह की है प्रॉपर्टी की जानकारी
Load loadDemands amount string (int64 फ़ॉर्मैट) इससे यह तय होता है कि तय किए गए टाइप के हिसाब से, शिपमेंट की क्षमता कितनी होनी चाहिए.
LoadLimit loadLimits maxLoad string (int64 फ़ॉर्मैट) इससे, तय किए गए टाइप के हिसाब से वाहन की ज़्यादा से ज़्यादा लोड क्षमता के बारे में पता चलता है.

उदाहरण

इस सेक्शन में, तीन तरह के उदाहरण दिए गए हैं:

  • कोड सैंपल, जिनमें लोड डिमांड और सीमा से जुड़ी प्रॉपर्टी के स्ट्रक्चर के बारे में बताया गया है.
  • उदाहरण के तौर पर एक ऐसा परिदृश्य जिसमें एपीआई अनुरोध में लोड की मांग और सीमाएं इस्तेमाल करने का एक तरीका दिखाया गया है.
  • अनुरोध का उदाहरण, जिसमें उदाहरण के तौर पर दिए गए सिनेरियो में सेट की गई वैल्यू शामिल हैं.

कोड सैंपल

यहां दिए गए उदाहरण में, लोड डिमांड का स्ट्रक्चर दिखाया गया है. इसमें loadDemands टाइप को स्ट्रिंग के तौर पर और amount प्रॉपर्टी को int64 फ़ॉर्मैट में स्ट्रिंग के तौर पर सेट किया जा सकता है:

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

यहां लोड लिमिट का सबसे बुनियादी स्ट्रक्चर दिखाया गया है. इसमें loadLimits टाइप को स्ट्रिंग के तौर पर सेट किया जा सकता है. साथ ही, maxLoad प्रॉपर्टी को int64 फ़ॉर्मैट में स्ट्रिंग के तौर पर सेट किया जा सकता है:

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

उदाहरण के तौर पर

इस सेक्शन में, एक ऐसे उदाहरण के बारे में बताया गया है जिसमें आपका डॉगी डेकेयर का कारोबार है. आपको कुछ कुत्तों को एक वाहन में ले जाना है. हालांकि, आपके पास पिंजरों की संख्या सीमित है. ऐसे में, आपको कुत्तों को ले जाने के लिए रास्ता ऑप्टिमाइज़ करना है.

हर शिपमेंट, एक स्टॉप को दिखाता है. यहां से आपको कुछ कुत्ते पिक अप करने होते हैं. इस उदाहरण में, हर शिपमेंट के लिए पिकअप करने की जगह अलग-अलग है. यह उन कुत्तों का घर है जिनकी देखभाल की जाती है. साथ ही, सभी शिपमेंट के लिए डिलीवरी की जगह एक ही है. यह आपके डॉगी डेकेयर की बिल्डिंग है.

इस उदाहरण के लिए, आपके अनुरोध में प्रॉपर्टी की वैल्यू ये हैं:

Parent प्रॉपर्टी टाइप मान स्थिति
loadDemands लोड टाइप स्ट्रिंग dogUnit शिपमेंट के लिए लोड का टाइप तय करता है. इस उदाहरण में dogUnit का इस्तेमाल किया गया है. यहां हर dogUnit एक कुत्ते को दिखाता है.
loadDemands amount संख्या पहला शिपमेंट: 1
दूसरा शिपमेंट: 3
यह तय करता है कि तय किए गए लोड टाइप की कितनी मात्रा है. इस उदाहरण में, दो शिपमेंट तय किए जा रहे हैं. पहले शिपमेंट में एक कुत्ते को पिक अप किया जा रहा है, जबकि दूसरे में तीन कुत्तों को पिक अप किया जा रहा है.
loadLimits लोड टाइप स्ट्रिंग dogUnit इससे वाहन पर लागू होने वाली लोड लिमिट के टाइप के बारे में पता चलता है. यह ज़रूरी है कि यह शिपमेंट के लोड टाइप से मेल खाए, ताकि सीमा लागू हो सके.
loadLimits maxLoad संख्या 6 इससे पता चलता है कि वाहन, किस तरह के लोड को ज़्यादा से ज़्यादा कितनी मात्रा में ले जा सकता है. इस उदाहरण में, आपके पास सिर्फ़ एक वाहन है, जिसमें ज़्यादा से ज़्यादा छह dogUnit रखे जा सकते हैं. यहां हर dogUnit का मतलब एक डॉग क्रेट है.

यहां दिए गए डायग्राम में, वाहन की लोड करने की सीमाएं, हर शिपमेंट की लोड करने की ज़रूरतें, और हर शिपमेंट के लिए वाहन की लोड करने की सीमाओं का इस्तेमाल करने का तरीका दिखाया गया है:

वाहन, रास्ते पर छह खाली जगहों के साथ शुरू होता है. ये जगहें, वाहन की लोड लिमिट को दिखाती हैं. पहले शिपमेंट में एक कुत्ते के लिए जगह चाहिए, जबकि दूसरे शिपमेंट में तीन कुत्तों के लिए जगह चाहिए. आखिर में, वाहन में छह में से चार सीटें भर गई हैं और दो सीटें खाली हैं.

इस उदाहरण में, हर शिपमेंट की लोड डिमांड और वाहन की लोड लिमिट का असर इस तरह पड़ता है:

  • ऑप्टिमाइज़र को कुत्तों को ले जाने के लिए वाहन का रूट जनरेट करने में कोई समस्या नहीं होगी. इसकी वजह यह है कि वाहन में छह कुत्तों को ले जाया जा सकता है और आपको सिर्फ़ चार कुत्तों को पिक अप करना है.

  • वाहन में 6 dogUnit लोड करने की सीमा का मतलब यह भी है कि इस वाहन में सिर्फ़ दो और कुत्ते ले जाए जा सकते हैं.

  • अगर कुत्तों की संख्या, गाड़ी में ले जाने की सीमा से ज़्यादा थी, तो ऑप्टिमाइज़र किसी एक पिकअप को छोड़ देता या उसे किसी दूसरी गाड़ी को असाइन कर देता.

ध्यान रखें कि पहले से तय किए गए टाइप का कोई सेट नहीं होता. इस उदाहरण में, कुत्तों के वज़न को सीमित करने के लिए, लोड टाइप को डॉग यूनिट से वज़न यूनिट में बदला जा सकता है. इसके अलावा, कुत्तों की चौड़ाई या ऊंचाई को सीमित करने के लिए, इसे लीनियर मेज़रमेंट में बदला जा सकता है. इस सुविधा की मदद से, लोड की मांग और सीमाएं अपनी ज़रूरतों के हिसाब से तय की जा सकती हैं.

अनुरोध का उदाहरण

इस उदाहरण में, optimizeTours के बुनियादी अनुरोध का स्ट्रक्चर दिखाया गया है. इसमें उदाहरण के तौर पर दिए गए वैल्यू शामिल हैं:

{
  "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
      }
    ]
  }
}

ध्यान रखें कि इस उदाहरण के उलट, किसी शिपमेंट के लिए लोड की कई मांगें हो सकती हैं. साथ ही, किसी वाहन के लिए लोड की कई सीमाएं हो सकती हैं. इससे आपको अपने फ़्लीट के रास्तों को ऑप्टिमाइज़ करते समय, कई तरह की मुश्किल शर्तों को ध्यान में रखने में मदद मिलती है.

सॉफ़्ट लोड की सीमाएं

किसी वाहन के loadLimits पर softMaxLoad और costPerUnitAboveSoftMax जोड़कर, लोड की सीमाएं सॉफ्ट कंस्ट्रेंट के तौर पर सेट की जा सकती हैं. इससे ऑप्टिमाइज़र को, वाहन में ज़्यादा सामान ले जाने की अनुमति मिलती है. हालांकि, इसके लिए उसे शुल्क देना पड़ता है. इसमें, सामान ले जाने की सीमा का सख्ती से पालन करने के बजाय, रास्ते को पूरा करने को प्राथमिकता दी जाती है.

हार्ड और सॉफ्ट लोड लिमिट, दोनों को सेट करने के लिए, maxLoad और softMaxLoad का एक साथ इस्तेमाल किया जा सकता है. इस मामले में, softMaxLoad लोड की वह सीमा तय करता है जिसे बढ़ाया जा सकता है. वहीं, maxLoad लोड की वह सीमा तय करता है जिसे बढ़ाया नहीं जा सकता. दोनों का इस्तेमाल करने पर, maxLoad की वैल्यू softMaxLoad से ज़्यादा होनी चाहिए.

जिन रास्तों पर पिकअप और डिलीवरी, दोनों की जाती हैं उन पर सॉफ्ट लोड लिमिट की सुविधा काम नहीं करती.

प्रॉपर्टी

यहां दी गई टेबल में, लोड की मांग और सीमाओं के लिए, सॉफ्ट कंस्ट्रेंट प्रॉपर्टी के बारे में बताया गया है.

Parent प्रॉपर्टी का नाम प्रॉपर्टी किस तरह की है प्रॉपर्टी की जानकारी
loadLimits softMaxLoad string (int64 फ़ॉर्मैट) किसी वाहन के लिए, ज़्यादा से ज़्यादा लोड का पसंदीदा विकल्प. अगर वाहन का लोड इस वैल्यू से ज़्यादा है, तो शुल्क लगता है.
loadLimits costPerUnitAboveSoftMax संख्या softMaxLoad से ज़्यादा लोड होने पर, हर यूनिट की लागत. softMaxLoad का इस्तेमाल करने पर, यह फ़ील्ड भरना ज़रूरी है. लागत के बारे में ज़्यादा जानने के लिए, लागत मॉडल का मुख्य सिद्धांत देखें.

कोड सैंपल

यहां दिए गए उदाहरण में, loadLimits की सॉफ्ट कंस्ट्रेंट प्रॉपर्टी का स्ट्रक्चर दिखाया गया है:

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