बुनियादी स्ट्रक्चर (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` ऑब्जेक्ट में शामिल होता है

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

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

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

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

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

स्थिति ब्यौरा
सिर्फ़ 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` ऑब्जेक्ट में शामिल होता है

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

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

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

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

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