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

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

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

लोड डिमांड और लिमिट की मदद से, इन लक्ष्यों को हासिल किया जा सकता है:

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

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

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

स्ट्रक्चर

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

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

ज़रूरी चीज़ों की चेकलिस्ट

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

प्रॉपर्टी

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

  • लोड टाइप: लोड की मांग और सीमाओं के बीच शेयर की गई प्रॉपर्टी.
  • 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
        }
      }
}