शुल्क लोड हो रहे हैं

लोड करने के शुल्क की जानकारी, `ShipmentModel` में मौजूद `Vehicle` के `loadLimits` प्रॉपर्टी में दी जाती है.

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

लोड करने की लागत को कॉन्फ़िगर करें, ताकि इन जैसे लक्ष्यों को पूरा किया जा सके:

  • कार्गो के वज़न के हिसाब से ईंधन की लागत का हिसाब लगाएं.
  • ज़्यादा सामान ले जाने वाले वाहनों को लंबी दूरी तक ले जाने से बचें.
  • ज़्यादा सामान ले जाने की वजह से, वाहन के टायर और अन्य हिस्सों में होने वाली टूट-फूट को ध्यान में रखें.

प्रॉपर्टी

Vehicle की loadLimits प्रॉपर्टी में, लोड करने के शुल्क की जानकारी दें. लागत के अन्य सभी पैरामीटर की तरह, लोड लागत में डाइमेंशनलेस, रिलेटिव कॉस्ट यूनिट का इस्तेमाल किया जाता है.

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

प्रॉपर्टी टाइप ब्यौरा
costPerKilometer ऑब्जेक्ट इसमें LoadCost ऑब्जेक्ट टाइप होता है. इससे तय की गई दूरी के आधार पर यात्रा के खर्च का हिसाब लगाया जाता है.
costPerTraveledHour ऑब्जेक्ट इसमें LoadCost ऑब्जेक्ट टाइप होता है. इससे यात्रा में लगे समय के आधार पर, यात्रा की लागत का हिसाब लगाया जाता है. इसमें इंतज़ार, विज़िट, और ब्रेक के समय को शामिल नहीं किया जाता.

LoadCost

LoadCost मैसेज टाइप से, किसी खास लोड को ले जाने के लिए यात्रा के शुल्क के बारे में पता चलता है. इसकी मदद से, लोड थ्रेशोल्ड सेट किया जा सकता है. इसके बाद, उस थ्रेशोल्ड से कम और ज़्यादा लोड के लिए, प्रति यूनिट अलग-अलग शुल्क तय किए जा सकते हैं.

LoadCost ऑब्जेक्ट में ये कॉन्फ़िगरेशन पैरामीटर होते हैं:

पैरामीटर टाइप ब्यौरा
loadThreshold स्ट्रिंग (int64 फ़ॉर्मैट) लोड लेवल, जहां लागत कैलकुलेट करने की दर बदल जाती है. डिफ़ॉल्ट रूप से, यह 0 पर सेट होता है.
costPerUnitAboveThreshold नंबर loadThreshold से ज़्यादा लोड की हर यूनिट पर लागू होने वाली लागत. डिफ़ॉल्ट रूप से, यह 0 पर सेट होता है.
costPerUnitBelowThreshold नंबर हर यूनिट पर लागू होने वाली लागत, loadThreshold से कम या इसके बराबर होनी चाहिए. डिफ़ॉल्ट रूप से, यह 0 पर सेट होता है.

शिपमेंट के साथ लोड करने के शुल्क का मिलान करना

लोडिंग के लिए खरीदार से लिए जाने वाले शुल्क तब लागू होते हैं, जब किसी वाहन में मौजूद लोड, उसके रास्ते में मौजूद शिपमेंट के loadDemands टाइप से मेल खाता हो. लोड टाइप, मनमाने स्ट्रिंग होते हैं. जैसे, वज़न या वॉल्यूम. लोड टाइप कॉन्फ़िगर करने के बारे में ज़्यादा जानने के लिए, लोड टाइप लेख पढ़ें.

उदाहरण

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

कोड सैंपल

यहां दिए गए उदाहरण में, सभी उपलब्ध कॉन्फ़िगरेशन पैरामीटर के साथ लोड करने की लागत को स्ट्रक्चर करने का तरीका बताया गया है. इस उदाहरण में costPerKilometer का इस्तेमाल किया गया है. हालांकि, दूरी के बजाय यात्रा की अवधि के हिसाब से शुल्क का हिसाब लगाने के लिए, इसे costPerTraveledHour से बदला जा सकता है.

{
  "model": {
    "vehicles": [{
      "loadLimits": {
        "LOAD_TYPE": {
          "maxLoad": "MAX_LOAD",
          "costPerKilometer": {
            "loadThreshold": "LOAD_THRESHOLD",
            "costPerUnitAboveThreshold": COST_ABOVE,
            "costPerUnitBelowThreshold": COST_BELOW
          }
        }
      }
    }]
  }
}

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

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

इस तरह का व्यवहार सेट अप करने के लिए, ऐसे वाहनों पर जुर्माना लगाने का अनुरोध कॉन्फ़िगर किया जा सकता है जो भारी सामान लेकर लंबी दूरी तय करते हैं. इस उदाहरण के लिए, अपने अनुरोध में यहां दी गई प्रॉपर्टी वैल्यू का इस्तेमाल करें:

Parent प्रॉपर्टी टाइप वैल्यू स्थिति
loadLimits लोड टाइप स्ट्रिंग weightKg इससे ट्रैक की जाने वाली क्षमता का टाइप तय होता है. इस उदाहरण में, कार्गो के वज़न को किलोग्राम में दिखाने के लिए weightKg का इस्तेमाल किया गया है.
loadLimits maxLoad स्ट्रिंग 100 वाहन में ज़्यादा से ज़्यादा कितना कार्गो ले जाया जा सकता है.
costPerKilometer loadThreshold स्ट्रिंग 15 इससे, बेसलाइन लोड थ्रेशोल्ड सेट किया जाता है. अगर कार्गो का वज़न 15 कि॰ग्रा॰ से ज़्यादा है, तो ईंधन के लिए तय किए गए शुल्क के हिसाब से जुर्माना लगता है.
costPerKilometer costPerUnitAboveThreshold संख्या 1 यह ईंधन के खर्च के कोएफ़िशिएंट के तौर पर काम करता है. हर किलोमीटर के लिए, 15 किलोग्राम से ज़्यादा के हर किलोग्राम कार्गो पर एक कॉस्ट यूनिट का शुल्क लगता है.
loadDemands amount स्ट्रिंग शिपमेंट 1: 50
शिपमेंट 2: 10
शिपमेंट 3: 80
इससे आपके तीनों शिपमेंट के कार्गो का वज़न पता चलता है.

इस स्थिति में, कॉन्फ़िगर की गई वैल्यू का असर इस तरह पड़ता है:

  • ऑप्टिमाइज़र, आपके रास्तों को इस तरह से व्यवस्थित करता है कि सबसे भारी पैकेज पहले डिलीवर किए जा सकें. सॉल्वर, 80 कि॰ग्रा॰ और 50 कि॰ग्रा॰ के पार्सल को रूट की शुरुआत में डिलीवर करने के लिए शेड्यूल करता है, ताकि ज़्यादा वज़न वाले पार्सल को कम दूरी तक ले जाना पड़े.
  • ऑप्टिमाइज़र, आपके रास्तों को इस तरह से व्यवस्थित करता है कि भारी सामान ले जाने के दौरान कम से कम दूरी तय करनी पड़े. इन सेटिंग का आपके रास्तों पर क्या असर पड़ता है, यह देखने के लिए costPerUnitAboveThreshold को 1 से 5 तक बढ़ाया जा सकता है. वज़न के हिसाब से लगने वाले जुर्माने को ज़्यादा करके, ऑप्टिमाइज़र को भारी कार्गो के साथ तय की गई दूरी को कम करने के लिए और भी ज़्यादा मेहनत करने के लिए कहा जाता है. इससे ड्रॉप-ऑफ़ के क्रम में बदलाव हो सकता है या शिपमेंट को कई वाहनों में बांटा जा सकता है.

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

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

{
  "model": {
    "shipments": [
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789456,
              "longitude": -122.390192
            },
            "duration": "250s"
          }
        ],
        "penaltyCost": 100.0,
        "loadDemands": {
          "weightKg": {
            "amount": "50"
          }
        }
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.789116,
              "longitude": -122.395080
            },
            "duration": "250s"
          }
        ],
        "penaltyCost": 30.0,
        "loadDemands": {
          "weightKg": {
            "amount": "10"
          }
        }
      },
      {
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.795242,
              "longitude": -122.399347
            },
            "duration": "250s"
          }
        ],
        "penaltyCost": 50.0,
        "loadDemands": {
          "weightKg": {
            "amount": "80"
          }
        }
      }
    ],
    "vehicles": [
      {
        "endLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "startLocation": {
          "latitude": 37.794465,
          "longitude": -122.394839
        },
        "costPerHour": 40.0,
        "costPerKilometer": 10.0,
        "loadLimits": {
          "weightKg": {
            "maxLoad": "100",
            "costPerKilometer": {
              "loadThreshold": "15",
              "costPerUnitAboveThreshold": 1
            }
          }
        }
      }
    ]
  }
}

कैलकुलेशन के फ़ॉर्मूले

ऑप्टिमाइज़र, लोड करने की लागत का हिसाब लगाने के लिए इन फ़ॉर्मूलों का इस्तेमाल करता है.

थ्रेशोल्ड के पूरे होने का हिसाब

costPerUnitAboveThreshold और costPerUnitBelowThreshold, दोनों को तय करने पर, आपको loadThreshold से ज़्यादा और कम, दोनों तरह के लोड के लिए यात्रा का अलग-अलग शुल्क देना होगा. फ़ॉर्मूला यह है:

cost = max(carried_load - load_threshold, 0) * distance_or_time * cost_per_unit_above_threshold
       + min(carried_load, load_threshold) * distance_or_time * cost_per_unit_below_threshold

उदाहरण के लिए, अनुरोध के उदाहरण में दी गई वैल्यू का इस्तेमाल करके, जहां costPerUnitBelowThreshold की वैल्यू 2 है. अगर वाहन 50 का लोड लेकर 10 किलोमीटर की दूरी तय करता है, तो हिसाब इस तरह लगाया जाएगा:

max(50 - 15, 0) * 10 * 1 + min(50, 15) * 10 * 2 = 650 cost units

थ्रेशोल्ड से ज़्यादा इस्तेमाल के लिए बिलिंग

सिर्फ़ costPerUnitAboveThreshold तय करने पर, कैलकुलेशन थ्रेशोल्ड के पूरे फ़ॉर्मूले का एक खास उदाहरण होता है. थ्रेशोल्ड से कम लागत शून्य होने की वजह से, पूरे फ़ॉर्मूले का दूसरा हिस्सा शून्य हो जाता है. फ़ॉर्मूला यह है:

cost = max(carried_load - load_threshold, 0) * distance_or_time * cost_per_unit_above_threshold

उदाहरण के लिए, अनुरोध के उदाहरण में दी गई वैल्यू का इस्तेमाल करें. इसमें loadThreshold की वैल्यू 15 और costPerUnitAboveThreshold की वैल्यू 1 है. अगर वाहन 50 का लोड लेकर 10 किलोमीटर की दूरी तय करता है, तो हिसाब इस तरह लगाया जाएगा:

max(50 - 15, 0) * 10 * 1 = 350 cost units

थ्रेशोल्ड से कम होने पर कैलकुलेशन

इसी तरह, अगर सिर्फ़ costPerUnitBelowThreshold तय किया जाता है, तो थ्रेशोल्ड के पूरे फ़ॉर्मूले के हिसाब से कैलकुलेशन की जाती है. इसमें थ्रेशोल्ड से ज़्यादा की लागत शून्य होती है. फ़ॉर्मूला यह है:

cost = min(carried_load, load_threshold) * distance_or_time * cost_per_unit_below_threshold