रास्ते के ऑप्टिमाइज़ेशन के लिए अपना पहला अनुरोध करें

यूरोपियन इकनॉमिक एरिया (ईईए) के डेवलपर

इस दस्तावेज़ में, असल दुनिया के इस्तेमाल के उदाहरण के तौर पर, Route Optimization API को पहला अनुरोध भेजने का तरीका बताया गया है.

उदाहरण में, REST API को दिखाने के लिए, एचटीटीपी और JSON का इस्तेमाल किया गया है. हालांकि, प्रोडक्शन एनवायरमेंट के लिए, gRPC का इस्तेमाल करने का सुझाव दिया जाता है, क्योंकि इससे परफ़ॉर्मेंस बेहतर होती है. हालांकि, gRPC को इंस्टॉल करना ज़रूरी है. ज़्यादा जानकारी के लिए, Route Optimization API की क्लाइंट लाइब्रेरी देखें.

स्थिति

सैन फ़्रांसिस्को का मैप. इसमें कॉइट टॉवर, मिशन डोलोरेस पार्क, और साउथ सनसेट प्लेग्राउंड पार्क के लिए पिन मौजूद हैं

सैन फ़्रांसिस्को में, आप सुबह 7:00 बजे से शाम 7:00 बजे तक डॉगी डेकेयर की सेवा देते हैं. आज सुबह, आपको शहर में अलग-अलग जगहों से दो कुत्ते पिक अप करने हैं. दोनों कुत्तों के मालिकों ने आपको सुबह 7:30 बजे से सुबह 9:30 बजे के बीच पिक अप करने का समय दिया है.

आपके पास इस काम के लिए एक वैन है और आप ड्राइवर को हर घंटे के 27 डॉलर चुकाते हैं. ड्राइवर और वैन, सुबह 7:00 बजे आपके डेकेयर सेंटर से काम शुरू करते हैं. साथ ही, उन्हें दोपहर 12:00 बजे तक, सुबह के पिकअप पूरे करके वापस आना है, ताकि वे लंच ब्रेक ले सकें.

आज 13 फ़रवरी, 2024 है और ड्राइवर को ये काम करने हैं:

  • कोइट टॉवर के पास से बर्नीज़ माउंटेन डॉग को पिक अप करना.
  • साउथ सनसेट प्लेग्राउंड पार्क से चिहुआहुआ को पिक अप करना.
  • दोनों कुत्तों को मिशन डोलोरेस पार्क में मौजूद डॉगी डेकेयर सेंटर पर ड्रॉप करना.

आपको एक ऐसे रूट की ज़रूरत है जिससे कुत्तों को वैन में कम से कम समय बिताना पड़े. साथ ही, पिक अप और ड्रॉप ऑफ़ की ज़रूरी शर्तें भी पूरी हो जाएं.

शुरू करने से पहले

इस उदाहरण में दिए गए कोड को चलाने के लिए, पहले आपको Route Optimization API सेट अप करना में दिए गए निर्देशों को पूरा करना होगा.

1. रूट ऑप्टिमाइज़ेशन का तरीका चुनना

Route Optimization API में कई तरीके उपलब्ध हैं. इनमें से कोई भी तरीका चुना जा सकता है. यह इस बात पर निर्भर करता है कि ऑप्टिमाइज़ेशन की आपकी समस्या कितनी जटिल है.

डॉगी डेकेयर के इस उदाहरण में, अनुरोध छोटा और आसान है. इसलिए, ब्लॉकिंग तरीके का इस्तेमाल करें. जैसे, optimizeTours. इससे छोटे अनुरोधों के लिए नतीजे तुरंत मिलते हैं. Route Optimization API के तरीकों के बारे में ज़्यादा जानने के लिए, सिंक और एसिंक एंडपॉइंट देखें.

`optimizeTours ` तरीके के लिए, एचटीटीपी पीओएसटी अनुरोध करने के लिए, यहां दिया गया यूआरएल इस्तेमाल करें:

https://routeoptimization.googleapis.com/v1/projects/PROJECT_OR_ID:optimizeTours

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

  • timeout पैरामीटर को दो सेकंड पर सेट करें.
  • डेडलाइन की सेटिंग को डिफ़ॉल्ट पर छोड़ दें. REST अनुरोधों के लिए, यह 60 सेकंड होती है.

2. अनुरोध वाले मैसेज का मुख्य हिस्सा बनाना

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

इस उदाहरण के लिए, अनुरोध एक OptimizeToursRequest मैसेज है, जिसे REST API में JSON के तौर पर एनकोड किया गया है.

अनुरोध वाला मैसेज बनाने के लिए, यह तरीका अपनाएं:

  1. अनुरोध के बुनियादी स्ट्रक्चर से शुरुआत करें. यह स्ट्रक्चर इस तरह है:

    {
      "timeout": ...,
      "model": {
        "shipments": [...],
        "vehicles": [...],
        "globalStartTime": "...",
        "globalEndTime": "..."
      }
    }
    

    स्ट्रक्चर के बारे में ज़्यादा जानने के लिए, बुनियादी स्ट्रक्चर (ShipmentModel, Shipment, और Vehicle) के लिए मुख्य कॉन्सेप्ट की गाइड देखें.

  2. शिपमेंट तय करें. shipments फ़ील्ड में, हर उस कुत्ते के लिए Shipment मैसेज जोड़ें जिसे सुबह पिक अप और ड्रॉप करना है. यहां, हर कुत्ते के मालिक की पसंदीदा पिक अप लोकेशन और समय, और कुत्तों को ड्रॉप करने के लिए डेकेयर सेंटर की लोकेशन और समय तय करें.

    1. हर कुत्ते के लिए, पिक अप के लिए VisitRequest और डिलीवरी के लिए एक और बनाएं. इस उदाहरण में, डिलीवरी को डेकेयर ड्रॉपऑफ़ कहा गया है.

      • पिकअप के लिए, arrivalWaypoint को कुत्ते की पिक अप लोकेशन (बर्नीज़ माउंटेन डॉग के लिए कोइट टॉवर या चिहुआहुआ के लिए साउथ सनसेट प्लेग्राउंड पार्क) पर सेट करें. साथ ही, timeWindows को मालिक के अनुरोध किए गए पिक अप समय (सुबह 7:30 बजे से सुबह 9:30 बजे) पर सेट करें.

      • डिलीवरी के लिए, arrivalWaypoint को डेकेयर सेंटर पर सेट करें. साथ ही, timeWindows को ड्रॉपऑफ़ के लिए ज़रूरी समय (सुबह 9:30 बजे से सुबह 11:30 बजे) पर सेट करें.

      टाइम विंडो के बारे में ज़्यादा जानने के लिए, टाइम विंडो देखें.

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

    शिपमेंट तय करने के बारे में ज़्यादा जानने के लिए, शिपमेंट देखें.

  3. वाहन तय करें. vehicles फ़ील्ड में, अपनी एक वैन के लिए Vehicle मैसेज जोड़ें. इसमें डेकेयर सेंटर को शुरुआती और आखिरी पॉइंट के तौर पर सेट करें. साथ ही, ड्राइवर की मज़दूरी की लागत और वैन के चलने के समय की जानकारी दें.

    1. वैन के लिए startWaypoint और endWaypoint को दिन की शुरुआती और आखिरी लोकेशन पर सेट करें. यह लोकेशन, मिशन डोलोरेस पार्क के पास मौजूद डेकेयर सेंटर है.

    2. अपने कारोबार की लागत को कम करने के लिए, आपको लागत की पाबंदियां तय करनी होंगी. लागत पैरामीटर costPerHour को 27 पर सेट करें. यह वह रकम है जो आप डॉगी डेकेयर वैन चलाने के लिए ड्राइवर को चुकाते हैं. लागत पैरामीटर के बारे में ज़्यादा जानने के लिए, लागत मॉडल देखें.

    3. यह पक्का करने के लिए कि ऑप्टिमाइज़र, वैन के चलने के समय के हिसाब से रूट बनाए, startTimeWindows को उस समय के लिए तय करें जब ड्राइवर वैन चलाना शुरू कर सकता है. साथ ही, endTimeWindows को उस समय के लिए तय करें जब ड्राइवर को डेकेयर सेंटर पर वापस आना है. टाइम विंडो के बारे में ज़्यादा जानने के लिए, टाइम विंडो देखें.

    वाहन तय करने के बारे में ज़्यादा जानने के लिए, वाहन देखें.

  4. ग्लोबल टाइम विंडो सेट करें. ग्लोबल टाइम विंडो, वह समयावधि होती है जिसके दौरान वैन, पूरे दिन आपके डेकेयर के लिए पिकअप और ड्रॉपऑफ़ कर सकती है. इस उदाहरण के लिए, 13 फ़रवरी, 2024 के लिए globalStartTime को सुबह 7:00 बजे और globalEndTime को शाम 7:00 बजे पर सेट करें. यह आपके डॉगी डेकेयर के चलने का समय है.

3. अनुरोध भेजें

यहां डॉगी डेकेयर के उदाहरण के आधार पर, curl का एक आसान अनुरोध दिया गया है. इसमें ब्लॉकिंग optimizeTours तरीके का इस्तेमाल किया गया है.

अनुरोध भेजने से पहले, सैंपल कोड में PROJECT_NUMBER_OR_ID को अपने Google Cloud प्रोजेक्ट आईडी से बदलें.

curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
--data @- << EOM
{
  "timeout": "2s",
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.802395,
                  "longitude": -122.405822
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T07:30:00Z",
                "endTime": "2024-02-13T09:30:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.760202,
                  "longitude": -122.426796
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T09:30:00Z",
                "endTime": "2024-02-13T11:30:00Z"
              }
            ]
          }
        ],
        "label": "Bernese mountain dog"
      },
      {
        "pickups": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.738067,
                  "longitude": -122.498593
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T07:30:00Z",
                "endTime": "2024-02-13T09:30:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalWaypoint": {
              "location": {
                "latLng": {
                  "latitude": 37.760202,
                  "longitude": -122.426796
                }
              }
            },
            "timeWindows": [
              {
                "startTime": "2024-02-13T09:30:00Z",
                "endTime": "2024-02-13T11:30:00Z"
              }
            ]
          }
        ],
        "label": "Chihuahua"
      }
    ],
    "vehicles": [
      {
        "startWaypoint": {
          "location": {
            "latLng": {
              "latitude": 37.760202,
              "longitude": -122.426796
            }
          }
        },
        "endWaypoint": {
          "location": {
            "latLng": {
              "latitude": 37.760202,
              "longitude": -122.426796
            }
          }
        },
        "costPerHour": 27,
        "startTimeWindows": [
          {
            "startTime": "2024-02-13T07:00:00Z",
            "endTime": "2024-02-13T07:15:00Z"
          }
        ],
        "endTimeWindows": [
          {
            "startTime": "2024-02-13T11:45:00Z",
            "endTime": "2024-02-13T12:00:00Z"
          }
        ]
      }
    ],
    "globalStartTime": "2024-02-13T07:00:00Z",
    "globalEndTime": "2024-02-13T19:00:00Z"
  }
}
EOM

अनुरोध में इस्तेमाल किए गए पैरामीटर

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

Parent पैरामीटर प्रॉपर्टी का टाइप ब्यौरा
OptimizeToursRequest model ऑब्जेक्ट (ShipmentModel) यह आपके अनुरोध का मुख्य हिस्सा है. यह एक ऐसा ऑब्जेक्ट है जिसमें अपनी पूरी समस्या के बारे में बताया जाता है. इसमें उन सभी कुत्तों की जानकारी शामिल होती है जिन्हें पिक अप और ड्रॉप करना है (shipments). साथ ही, इसमें आपके बेड़े में मौजूद वैन (vehicles) की जानकारी भी शामिल होती है. इसे ऑप्टिमाइज़ेशन की ज़रूरत वाली समस्या के लिए, पूरी ब्लूप्रिंट के तौर पर समझें.
timeout कुल समय इस पैरामीटर से पता चलता है कि सर्वर, जवाब देने से पहले किसी अनुरोध पर ज़्यादा से ज़्यादा कितने समय तक काम कर सकता है. इंतज़ार का समय कम करने के लिए, इस पैरामीटर का इस्तेमाल करें. छोटे और तुरंत जवाब देने वाले अनुरोधों के लिए, इस वैल्यू को 2 सेकंड पर सेट करें. जैसे, डॉगी डेकेयर के इस उदाहरण में.
ShipmentModel shipments[] ऑब्जेक्ट का कलेक्शन (Shipment) यह ऑब्जेक्ट का एक कलेक्शन है. इसमें हर ऑब्जेक्ट, उस कुत्ते के बारे में बताता है जिसे पिक अप या ड्रॉप करना है.
vehicles[] ऑब्जेक्ट का कलेक्शन (Vehicle) यह ऑब्जेक्ट का एक कलेक्शन है. इसमें हर ऑब्जेक्ट, आपके बेड़े में मौजूद किसी वाहन के बारे में बताता है. इसमें आपके संसाधनों के बारे में बताया जाता है. जैसे, वह वैन जो पिकअप और ड्रॉपऑफ़ करती है. ऑप्टिमाइज़ किया गया रूट पाने के लिए, कम से कम एक वाहन तय करना ज़रूरी है.
globalStartTime टाइमस्टैम्प यह आपके पूरे मॉडल में किसी भी इवेंट के होने का सबसे पहला समय है. यह पैरामीटर, ऑप्टिमाइज़ेशन की समस्या को समय के हिसाब से सीमित करता है . यह ट्रैफ़िक और रूटिंग के सटीक कैलकुलेशन के लिए ज़रूरी है . डॉगी डेकेयर के इस उदाहरण के लिए, इसे उस समय पर सेट करें जब ड्राइवर वैन चलाना शुरू कर सकता है. यह समय, 13 फ़रवरी, 2024 के लिए सुबह 7:00 बजे है.
globalEndTime टाइमस्टैम्प यह आपके पूरे मॉडल में किसी भी इवेंट के होने का सबसे आखिरी समय है. डॉगी डेकेयर के इस उदाहरण के लिए, इसे उस समय पर सेट करें जब वैन का चलना खत्म होने की उम्मीद है. यह समय, 13 फ़रवरी, 2024 के लिए शाम 7:00 बजे है.
Shipment pickups[] ऑब्जेक्ट का कलेक्शन (VisitRequest) यह शिपमेंट के लिए, पिकअप के सभी संभावित विकल्पों की सूची है. ऑप्टिमाइज़र, आपकी समस्या को हल करने के लिए सबसे अच्छा विकल्प चुनता है. डॉगी डेकेयर के इस उदाहरण के लिए, हर कुत्ते के लिए, मालिकों ने जो पिकअप लोकेशन और टाइम विंडो दी हैं उनकी सूची बनाएं.
deliveries[] ऑब्जेक्ट का कलेक्शन (VisitRequest) यह शिपमेंट के लिए, ड्रॉपऑफ़ के सभी संभावित विकल्पों की सूची है. ऑप्टिमाइज़र, आपकी समस्या को हल करने के लिए सबसे अच्छा विकल्प चुनता है. डॉगी डेकेयर के इस उदाहरण के लिए, डॉगी डेकेयर की सुविधा की लोकेशन और उस टाइम विंडो की सूची बनाएं जिसके दौरान ड्राइवर को हर कुत्ते के लिए लंच के लिए वापस आना है.
label स्ट्रिंग यह आपके अनुरोध में किसी खास शिपमेंट के लिए आइडेंटिफ़ायर है. जवाब को आसानी से पढ़ने के लिए, अपने अनुरोध में लेबल तय किए जा सकते हैं. डॉगी डेकेयर के इस उदाहरण के लिए, "चिहुआहुआ", "बर्नीज़ माउंटेन डॉग" या कुत्ते के नाम जैसी जानकारी देने वाली स्ट्रिंग का इस्तेमाल करें. इससे, एपीआई का जवाब मिलने पर, आपके इनपुट के हिसाब से समाधान मिल पाएगा.
VisitRequest arrivalWaypoint[] ऑब्जेक्ट (Waypoint) यह रूट पर किसी खास जगह पर जाने की लोकेशन है. इसे अक्षांश और देशांतर निर्देशांक, जगह का आईडी या हेडिंग का इस्तेमाल करके तय किया जा सकता है. डॉगी डेकेयर के इस उदाहरण में, इसे मालिक की दी गई लोकेशन के लिए pickups और डेकेयर सेंटर के पते के लिए deliveries पर सेट करें.
timeWindows[] ऑब्जेक्ट का कलेक्शन (TimeWindow) यह ऑब्जेक्ट का एक कलेक्शन है. इसमें पिकअप या डिलीवरी के लिए, समय की पाबंदियां तय की जाती हैं. इस उदाहरण के लिए, इसका इस्तेमाल करके, हर कुत्ते के लिए पिकअप विंडो और डेकेयर सेंटर पर कुत्तों को ड्रॉप करने के लिए स्वीकार की जाने वाली विंडो तय करें.
Vehicle startWaypoint[] ऑब्जेक्ट (Waypoint) यह वाहन के रूट की शुरुआती लोकेशन है. इसे अक्षांश और देशांतर निर्देशांक या जगह के आईडी से तय किया जाता है. इस पैरामीटर से ऑप्टिमाइज़र को पता चलता है कि वाहन को रूट कहां से शुरू करना है. अगर इस वेपॉइंट को तय नहीं किया जाता है, तो ऑप्टिमाइज़र, पिकअप या डिलीवरी में से किसी एक को शुरुआती लोकेशन के तौर पर चुनता है. डॉगी डेकेयर के इस उदाहरण के लिए, ड्राइवर दिन की शुरुआत डेकेयर की सुविधा से करता है. इसलिए, मिशन डोलोरेस पार्क के निर्देशांकों का इस्तेमाल करें.
endWaypoint[] ऑब्जेक्ट (Waypoint) यह वाहन के रूट की आखिरी डेस्टिनेशन है. इसे अक्षांश और देशांतर निर्देशांक या जगह के आईडी से तय किया जाता है. इस पैरामीटर से ऑप्टिमाइज़र को पता चलता है कि वाहन को रूट कहां खत्म करना है. अगर इस वेपॉइंट को तय नहीं किया जाता है, तो ऑप्टिमाइज़र, पिकअप या डिलीवरी में से किसी एक को रूट के आखिर के तौर पर चुनता है. डॉगी डेकेयर के इस उदाहरण के लिए, ड्राइवर को दिन का आखिर डेकेयर की सुविधा पर करना है. इसलिए, मिशन डोलोरेस पार्क के निर्देशांकों का इस्तेमाल करें.
costPerHour संख्या यह हर घंटे वाहन के इस्तेमाल की लागत है. इससे कोई फ़र्क़ नहीं पड़ता कि वाहन चल रहा है या रुका हुआ है. डॉगी डेकेयर के इस उदाहरण के लिए, इसका इस्तेमाल करके, ड्राइवर की हर घंटे की मज़दूरी का मॉडल बनाएं.
startTimeWindows[] ऑब्जेक्ट का कलेक्शन (TimeWindow) यह वह समय है जब ड्राइवर, सुबह कुत्तों को पिक अप करने के लिए वैन चलाना शुरू कर सकता है.
endTimeWindows[] ऑब्जेक्ट का कलेक्शन (TimeWindow) यह वह समय है जब ड्राइवर, वैन चलाना खत्म करके, डॉगी डेकेयर सेंटर पर वापस आ सकता है.

अगला

जवाब को समझना