अनुरोध का मैसेज बनाना

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

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

  • मॉडल, पूरे अनुरोध के लिए सेटिंग और पाबंदियां कैप्चर करता है. इसमें Shipments और Vehicles, दोनों शामिल हैं.
  • शिपमेंट, टास्क या असल शिपमेंट को दिखाते हैं. इनमें पिकअप और डिलीवरी VisitRequest शामिल होती हैं. शिपमेंट के लिए स्थानीय सेटिंग और पाबंदियां लागू होती हैं.
  • वाहन, वाहनों, ड्राइवरों या कर्मचारियों को दिखाते हैं. वाहनों पर भी स्थानीय सेटिंग और पाबंदियां लागू होती हैं.

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

हर मैसेज टाइप के बारे में पूरी जानकारी के लिए, ShipmentModel (REST, gRPC), Shipment (REST, gRPC), और Vehicle (REST, gRPC) मैसेज के बारे में जानकारी देने वाला दस्तावेज़ देखें.

OptimizeToursRequest प्रॉपर्टी

टॉप-लेवल OptimizeToursRequest मैसेज (REST, gRPC) की कुछ ऐसी प्रॉपर्टी हैं जिनका इस्तेमाल आम तौर पर किया जाता है. इनमें ये शामिल हैं:

  • searchMode से पता चलता है कि तय की गई शर्तों को पूरा करने वाले पहले समाधान को दिखाना है या तय समयसीमा में सबसे अच्छा समाधान ढूंढना है.
  • considerRoadTraffic यह कुकी तय करती है कि रूटिंग और ईटीए का अनुमान लगाने के लिए, लाइव ट्रैफ़िक का इस्तेमाल किया जाएगा या नहीं.
  • populateTransitionPolylines से यह तय होता है कि जवाब में रास्ते की पॉलीलाइन और रास्ते के टोकन दिखाए जाएं या नहीं.

मॉडल की प्रॉपर्टी

ShipmentModel मैसेज की कुछ सामान्य तौर पर इस्तेमाल की जाने वाली प्रॉपर्टी (REST, gRPC) में ये शामिल हैं:

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

शिपमेंट की प्रॉपर्टी

Shipment मैसेज की कुछ सामान्य तौर पर इस्तेमाल की जाने वाली प्रॉपर्टी (REST, gRPC) में ये शामिल हैं:

  • pickups[] और deliveries[] से पता चलता है कि शिपमेंट को कहां से पिक अप किया जा सकता है या कहां ड्रॉप ऑफ़ किया जा सकता है. pickups[] और deliveries[] प्रॉपर्टी, दोनों VisitRequest मैसेज (REST, gRPC) का इस्तेमाल करती हैं.
  • loadDemands से पता चलता है कि किसी वाहन को शिपमेंट पूरा करने के लिए कितना लोड ले जाना होगा. वाहन की load_limits (REST, gRPC) प्रॉपर्टी से पता चलता है कि वाहन में एक बार में कितना सामान रखा जा सकता है. लोड की मांग और सीमाएं में लोड के बारे में ज़्यादा पढ़ें.
  • penalty_cost से पता चलता है कि शिपमेंट को स्किप करने पर कितना शुल्क लगता है. लागत मॉडल के पैरामीटर में लागत के बारे में ज़्यादा पढ़ें.

वाहन की प्रॉपर्टी

Vehicle मैसेज की कुछ सामान्य तौर पर इस्तेमाल की जाने वाली प्रॉपर्टी (REST, gRPC) में ये शामिल हैं:

  • startLocation से पता चलता है कि वाहन को अपना रास्ता कहां से शुरू करना चाहिए. इस प्रॉपर्टी का इस्तेमाल करना ज़रूरी नहीं है. अगर यह जानकारी नहीं दी जाती है, तो वाहन का रूट उस जगह से शुरू होता है जहां उसे पहली बार शिपमेंट असाइन किया गया है.
  • endLocation से पता चलता है कि वाहन का रास्ता कहां खत्म होना चाहिए. इस प्रॉपर्टी का इस्तेमाल करना ज़रूरी नहीं है. अगर इस बारे में जानकारी नहीं दी जाती है, तो वाहन का रूट उस जगह पर खत्म हो जाता है जहां उसे आखिरी बार शिपमेंट सौंपा गया था.
  • startTimeWindows[] से पता चलता है कि वाहन कब अपना रास्ता शुरू कर सकता है. इस प्रॉपर्टी का इस्तेमाल करना ज़रूरी नहीं है.
  • endTimeWindows[] से पता चलता है कि कोई वाहन कब अपना रास्ता शुरू और खत्म कर सकता है. दोनों प्रॉपर्टी की वैल्यू देना ज़रूरी नहीं है.
  • loadLimits से पता चलता है कि शिपमेंट की मांग को पूरा करने के लिए, वाहन की कितनी क्षमता उपलब्ध है. लोड डिमांड और सीमाएं में लोड डिमांड और सीमाओं के बारे में ज़्यादा पढ़ें.

JSON फ़ॉर्मैट में अनुरोध का पूरा उदाहरण इस तरह दिखता है:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.73881799999999,
              "longitude": -122.4161
            }
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.79581,
              "longitude": -122.4218856
            }
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "endLocation": {
          "latitude": 37.73881799999999,
          "longitude": -122.4161
        },
        "costPerKilometer": 1.0
      }
    ],
   "globalStartTime": "2024-02-13T00:00:00.000Z",
   "globalEndTime": "2024-02-14T06:00:00.000Z"
  }
}

OptimizeTours और BatchOptimizeTours, दोनों ही अनुरोध वाले मैसेज का इस्तेमाल करते हैं. जैसे, ऊपर दिए गए उदाहरण में बताया गया है. हालांकि, दोनों अलग-अलग तरीके से ऐसा करते हैं. रास्ते को ऑप्टिमाइज़ करने का अनुरोध करने से पहले, यह समझना ज़रूरी है कि इन दोनों तरीकों में क्या अंतर है:

OptimizeTours और BatchOptimizeTours की तुलना करना