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

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 स्ट्रिंग (int64 फ़ॉर्मैट) यह तय करता है कि तय किए गए टाइप के हिसाब से, शिपमेंट की क्षमता कितनी होनी चाहिए.
LoadLimit loadLimits maxLoad स्ट्रिंग (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 स्ट्रिंग (int64 फ़ॉर्मैट) किसी वाहन के लिए, ज़्यादा से ज़्यादा लोड की पसंदीदा सीमा. अगर वाहन का लोड इस वैल्यू से ज़्यादा होता है, तो शुल्क लगता है.
loadLimits costPerUnitAboveSoftMax संख्या softMaxLoad से ज़्यादा लोड होने पर, हर यूनिट की लागत. softMaxLoad का इस्तेमाल करने पर, यह फ़ील्ड भरना ज़रूरी है. लागत के बारे में ज़्यादा जानने के लिए, लागत मॉडल का मुख्य सिद्धांत देखें.

कोड सैंपल

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

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