बुनियादी स्ट्रक्चर (ShipmentModel, Shipment, और Vehicle)

ShipmentModel में, `shipments` ऑब्जेक्ट के साथ `Shipment` मैसेज टाइप और `vehicles` ऑब्जेक्ट के साथ `Vehicle` मैसेज टाइप होता है.

Route Optimization API का मकसद, अलग-अलग जगहों पर जाने के लिए, वाहनों के फ़्लीट के लिए रूट प्लान करना है. OptimizeToursRequest ऑब्जेक्ट में, इन वाहनों और जगहों की प्रॉपर्टी के बारे में बताया जाता है. यह हर एंडपॉइंट के अनुरोध के मुख्य स्ट्रक्चर का हिस्सा होता है.

OptimizeToursRequest ऑब्जेक्ट का मुख्य स्ट्रक्चर इस तरह होता है:

  • model फ़ील्ड में, ShipmentModel मैसेज होता है. इसमें दो मुख्य फ़ील्ड होते हैं:
    • एक shipments फ़ील्ड. इसमें एक या एक से ज़्यादा Shipment मैसेज होते हैं.
    • एक vehicles फ़ील्ड. इसमें एक या एक से ज़्यादा Vehicle मैसेज होते हैं.

इस दस्तावेज़ में, मैसेज के इन टाइप के बारे में बताया गया है:

  • ShipmentModel: इसमें शिपमेंट की सूची, उपलब्ध वाहन, और अन्य ऑब्जेक्ट शामिल होते हैं. इनसे उनके संबंधों के बारे में पता चलता है.
  • Shipment: इसमें उन जगहों के बारे में बताया जाता है जहां कोई वाहन जा सकता है. इनसे, पिक अप और डिलीवरी के लिए असल पैकेज या ऐसी जगहों के बारे में पता चलता है जहां वाहन का ड्राइवर कोई सेवा देता है.
  • Vehicle: इसमें शिपमेंट की जगहों के बीच परिवहन के तरीके के बारे में बताया जाता है. हर वाहन, असल वाहन या पैदल चलने वाले व्यक्ति से जुड़ा होता है.

ShipmentModel

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

नीचे दी गई टेबल में, ShipmentModel की कुछ ज़रूरी प्रॉपर्टी के बारे में बताया गया है:

प्रॉपर्टी ब्यौरा
shipments और vehicles ज़रूरी ऑब्जेक्ट. इनमें शिपमेंट और वाहनों की जानकारी शामिल होती है.
globalStartTime और globalEndTime इससे टाइम विंडो के शुरू और खत्म होने का पता चलता है. इस टाइम विंडो में, सभी वाहनों को सभी शिपमेंट पूरे करने होते हैं. हालांकि, ये प्रॉपर्टी ज़रूरी नहीं हैं, लेकिन इन्हें शामिल करने का सुझाव दिया जाता है. इसकी वजह यह है कि टाइम कंस्ट्रेंट के हिसाब से काम करने पर, ऑप्टिमाइज़र बेहतर तरीके से काम करता है.

शामिल सभी प्रॉपर्टी की सूची देखने के लिए, रेफ़रंस दस्तावेज़ देखें ShipmentModel.

ShipmentModel का उदाहरण

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

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

प्रॉपर्टी वैल्यू ब्यौरा
globalStartTime 2024-02-13T00:00:00.000Z कारोबार के खुले होने के समय की शुरू होने की तारीख और समय.
globalEndTime 2024-02-14T06:00:00.000Z कारोबार के खुले होने के समय की खत्म होने की तारीख और समय.

यहां, ShipmentModel मैसेज का एक कोड सैंपल दिया गया है. इसमें, उदाहरण के तौर पर दी गई स्थिति की वैल्यू शामिल हैं.

{
  "model": {
    "shipments": [
      ...
    ],
    "vehicles": [
      ...
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

Shipment

Shipment मैसेज टाइप में, शिपमेंट की प्रॉपर्टी के स्ट्रक्चर के बारे में बताया जाता है. इसे किसी रूट पर डिलीवर किया जा सकता है या इस रूट पर कोई सेवा दी जा सकती है.

असल ज़िंदगी में की गई शिपिंग, एक `Shipment` मैसेज के बराबर होती है. यह `shipments` ऑब्जेक्ट में शामिल होता है

जैसा कि डायग्राम में दिखाया गया है:

  • A Shipment मैसेज में, असल शिपमेंट या सेवा की पूरी जानकारी होती है.
  • shipments फ़ील्ड में, सभी Shipment मैसेज की जानकारी दी जाती है.
  • The shipments फ़ील्ड में, एक या एक से ज़्यादा Shipment मैसेज होते हैं.

A Shipment मैसेज के लिए, कम से कम एक pickups या deliveries ऑब्जेक्ट होना ज़रूरी है. इन ऑब्जेक्ट की परिभाषाएं यहां दी गई हैं:

  • pickups में, शिपमेंट के पिकअप की जगह की जानकारी होती है.
  • deliveries में, शिपमेंट की डिलीवरी की जगह की जानकारी होती है.
  • pickups और deliveries, दोनों में VisitRequest मैसेज टाइप होता है. इसमें जगहों और अन्य जानकारी के बारे में बताया जाता है.

नीचे दी गई टेबल में, कॉन्फ़िगरेशन के आधार पर pickups और deliveries के अलग-अलग स्थितियों के बारे में बताया गया है, जो Shipment मैसेज में हैं.

स्थिति ब्यौरा
सिर्फ़ pickups मान लिया जाता है कि सिर्फ़ शिपमेंट इकट्ठा किया जा रहा है.
सिर्फ़ deliveries मान लिया जाता है कि शिपमेंट पहले से लोड है या कोई सेवा दी जा रही है.
pickups और deliveries, दोनों असाइन किए गए वाहन को पहले पिकअप करना होगा, फिर डिलीवरी. डिलीवरी सिर्फ़ वही वाहन कर सकता है जिसने पिकअप किया है.
एक से ज़्यादा pickups या deliveries अगर किसी शिपमेंट में pickups या deliveries के लिए एक से ज़्यादा विकल्प दिए गए हैं, तो ऑप्टिमाइज़र लागत कम करने और पाबंदियों को पूरा करने के आधार पर, पिकअप और डिलीवरी के लिए एक-एक विकल्प चुनता है.

शामिल सभी प्रॉपर्टी की सूची देखने के लिए, रेफ़रंस दस्तावेज़ देखें Shipment.

Shipment का उदाहरण

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

  • पहले कुत्ते का घर, सैन फ़्रांसिस्को में कॉइट टॉवर में है. इस जगह के निर्देशांक, अक्षांश 37.8024 और देशांतर -122.4058 हैं.
  • दूसरे कुत्ते का घर, सैन फ़्रांसिस्को में साउथ सनसेट प्लेग्राउंड पार्क में है. इस जगह के निर्देशांक, अक्षांश 37.7359 और देशांतर -122.5011 हैं.
  • आपका डॉगी डेकेयर, सैन फ़्रांसिस्को में मिशन डोलोरेस पार्क में है. इस जगह के निर्देशांक, अक्षांश 37.759773 और देशांतर -122.427063 हैं.

यहां, Shipment मैसेज का एक कोड सैंपल दिया गया है. इसमें shipments ऑब्जेक्ट में, उदाहरण के तौर पर दिए गए निर्देशांकों के साथ, Shipmentमैसेज टाइप के दो ऑब्जेक्ट शामिल हैं.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
    ...
    ]
  }
}

Vehicle

Vehicle मैसेज टाइप में, वाहन की प्रॉपर्टी के स्ट्रक्चर के बारे में बताया जाता है. यह वाहन, किसी रूट पर शिपमेंट कर सकता है.

असल ज़िंदगी में मौजूद किसी वाहन के लिए, एक `Vehicle` मैसेज होता है. यह `vehicles` ऑब्जेक्ट में शामिल होता है

जैसा कि डायग्राम में दिखाया गया है:

  • A Vehicle मैसेज में, असल वाहन की पूरी जानकारी होती है.
  • vehicles फ़ील्ड में, सभी Vehicle मैसेज की जानकारी दी जाती है.
  • The vehicles फ़ील्ड में, एक से ज़्यादा Vehicle मैसेज होते हैं.

नीचे दी गई टेबल में, Vehicle की कुछ ज़रूरी प्रॉपर्टी के बारे में बताया गया है.

प्रॉपर्टी ब्यौरा
startLocation और endLocation वाहनों की शुरू और खत्म होने की जगह. ये जगहें, ऑप्टिमाइज़ किए गए फ़ाइनल रूट का हिस्सा होती हैं. अगर इन्हें तय नहीं किया जाता है, तो डिफ़ॉल्ट रूप से, ये पहले शिपमेंट के पिकअप और आखिरी शिपमेंट की डिलीवरी की जगहें होती हैं.
costPerHour, costPerKilometer, costPerTraveledHour वाहन के लिए लागत के पैरामीटर. हमारा सुझाव है कि एपीआई से ऑप्टिमाइज़ किया गया रूट पाने के लिए, आपके अनुरोध में कम से कम एक लागत पैरामीटर होना चाहिए. लागत के बारे में ज़्यादा जानने के लिए, लागत मॉडल का मुख्य कॉन्सेप्ट देखें.
startTimeWindows और endTimeWindows समयावधि तय करें, जब कोई वाहन किसी रूट पर चल सकता है. ये टाइम पीरियड, ShipmentModel में सेट की गई globalStartTime और globalEndTime टाइम विंडो के अंदर होने चाहिए. हालांकि, यह प्रॉपर्टी ज़रूरी नहीं है, लेकिन इसे शामिल करने का सुझाव दिया जाता है. इसकी वजह यह है कि टाइम कंस्ट्रेंट के हिसाब से काम करने पर, ऑप्टिमाइज़र बेहतर तरीके से काम करता है.

Vehicle का उदाहरण

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

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

प्रॉपर्टी वैल्यू ब्यौरा
startLocation latitude: 37.759773, longitude: -122.427063 आपके वाहन के रूट के शुरू होने के निर्देशांक. ये निर्देशांक, आपके डॉगी डेकेयर की जगह से मेल खाते हैं. यह सैन फ़्रांसिस्को में मिशन डोलोरेस पार्क में है.
endLocation latitude: 37.759773, longitude: -122.427063 आपके वाहन के रूट के खत्म होने के निर्देशांक. ये निर्देशांक, आपके डॉगी डेकेयर की जगह से मेल खाते हैं. यह सैन फ़्रांसिस्को में मिशन डोलोरेस पार्क में है.
costPerHour 27 अपने डॉगी डेकेयर के वाहन को चलाने के लिए, ड्राइवर को हर घंटे के हिसाब से कितने पैसे चुकाते हैं. आप ड्राइवर को हर घंटे के हिसाब से 27 डॉलर चुकाते हैं.

यहां, Vehicle मैसेज का एक कोड सैंपल दिया गया है. इसमें, उदाहरण के तौर पर दी गई स्थिति की वैल्यू शामिल हैं.

{
  "model": {
    "shipments": [
    ...
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ]
  }
}

सभी प्रॉपर्टी की पूरी सूची देखने के लिए, रेफ़रंस दस्तावेज़ देखें Vehicle.

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

यहां दिए गए कोड सैंपल में, अनुरोध का पूरा उदाहरण दिया गया है. इसमें, इस दस्तावेज़ में दिखाए गए ShipmentModel, Shipment, और Vehicle के उदाहरणों को शामिल किया गया है.

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27
      }
    ],
    "globalStartTime": "2024-02-13T00:00:00.000Z",
    "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}