- एचटीटीपी अनुरोध
- पाथ पैरामीटर
- अनुरोध का मुख्य हिस्सा
- जवाब का मुख्य हिस्सा
- अनुमति पाने के लिंक
- IAM अनुमतियां
यह OptimizeToursRequest भेजता है, जिसमें ShipmentModel शामिल होता है. साथ ही, यह OptimizeToursResponse दिखाता है, जिसमें ShipmentRoute शामिल होते हैं. ये ऐसे रास्तों का सेट होता है जिन पर वाहनों को चलना होता है, ताकि कुल लागत कम से कम हो.
ShipmentModel मॉडल में मुख्य रूप से Shipment होते हैं, जिन्हें पूरा करना होता है. साथ ही, इसमें Vehicle होते हैं, जिनका इस्तेमाल Shipment को एक जगह से दूसरी जगह ले जाने के लिए किया जा सकता है. ShipmentRoute, Shipment को Vehicle असाइन करते हैं. खास तौर पर, वे हर वाहन को Visit की एक सीरीज़ असाइन करते हैं. इसमें एक Visit का मतलब एक VisitRequest होता है. यह Shipment के लिए पिकअप या डिलीवरी होती है.
इसका मकसद, ShipmentRoute को Vehicle असाइन करना है, ताकि कुल लागत कम से कम हो. लागत में कई कॉम्पोनेंट होते हैं, जिन्हें ShipmentModel में तय किया जाता है.
एचटीटीपी अनुरोध
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
यह यूआरएल, gRPC ट्रांसकोडिंग सिंटैक्स का इस्तेमाल करता है.
पाथ पैरामीटर
| पैरामीटर | |
|---|---|
parent |
ज़रूरी है. कॉल करने के लिए, प्रोजेक्ट या जगह को टारगेट करें. फ़ॉर्मैट:
अगर कोई जगह नहीं चुनी जाती है, तो कोई क्षेत्र अपने-आप चुन लिया जाएगा. |
अनुरोध का मुख्य भाग
अनुरोध के मुख्य हिस्से में, इस स्ट्रक्चर का डेटा शामिल होता है:
| JSON के काेड में दिखाना |
|---|
{ "timeout": string, "model": { object ( |
| फ़ील्ड | |
|---|---|
timeout |
अगर यह टाइम आउट सेट किया गया है, तो सर्वर टाइम आउट की अवधि खत्म होने से पहले या सिंक्रोनस अनुरोधों के लिए सर्वर की समयसीमा पूरी होने से पहले जवाब देता है. इनमें से जो भी पहले हो. एसिंक्रोनस अनुरोधों के लिए, सर्वर टाइमआउट खत्म होने से पहले ही समाधान जनरेट कर देगा. हालांकि, ऐसा तब ही होगा, जब समाधान जनरेट करना मुमकिन हो. यह अवधि को सेकंड में दिखाता है. इसमें नौ दशमलव अंक तक हो सकते हैं. इसके आखिर में ' |
model |
शिपमेंट से जुड़ी समस्या को हल करने के लिए मॉडल. |
solvingMode |
डिफ़ॉल्ट रूप से, हल करने का मोड |
searchMode |
अनुरोध को पूरा करने के लिए इस्तेमाल किया गया खोज मोड. |
injectedFirstSolutionRoutes[] |
ऑप्टिमाइज़ेशन एल्गोरिदम को, पिछले समाधान से मिलता-जुलता पहला समाधान ढूंढने में मदद करें. पहला समाधान बनाते समय, मॉडल पर कुछ पाबंदियां लगाई जाती हैं. अगर किसी शिपमेंट को किसी रूट पर नहीं ले जाया जाता है, तो पहले समाधान में उसे अपने-आप छोड़ दिया जाता है. हालांकि, बाद के समाधानों में उसे शामिल किया जा सकता है. समाधान में, कुछ बुनियादी मान्यताओं को पूरा किया जाना चाहिए:
अगर डाला गया समाधान काम नहीं करता है, तो ज़रूरी नहीं है कि पुष्टि करने से जुड़ी गड़बड़ी का मैसेज दिखे. इसके बजाय, काम न करने की वजह बताने वाला मैसेज दिख सकता है. |
injectedSolutionConstraint |
ऑप्टिमाइज़ेशन एल्गोरिदम को सीमित करें, ताकि वह ऐसा फ़ाइनल समाधान खोज सके जो पिछले समाधान से मिलता-जुलता हो. उदाहरण के लिए, इसका इस्तेमाल उन रास्तों के हिस्सों को फ़्रीज़ करने के लिए किया जा सकता है जिन्हें पहले ही पूरा कर लिया गया है या जिन्हें पूरा किया जाना है, लेकिन उनमें बदलाव नहीं किया जाना चाहिए. अगर डाला गया समाधान काम नहीं करता है, तो ज़रूरी नहीं है कि पुष्टि करने से जुड़ी गड़बड़ी का मैसेज दिखे. इसके बजाय, काम न करने की वजह बताने वाला मैसेज दिख सकता है. |
refreshDetailsRoutes[] |
अगर यह खाली नहीं है, तो दिए गए रास्तों को रीफ़्रेश किया जाएगा. हालांकि, विज़िट के क्रम या यात्रा के समय में कोई बदलाव नहीं किया जाएगा. सिर्फ़ अन्य जानकारी अपडेट की जाएगी. इससे मॉडल की समस्या हल नहीं होती. नवंबर 2020 से, यह सिर्फ़ उन रास्तों की पॉलीलाइन भरता है जिनमें कोई न कोई स्टेशन मौजूद है. इसके लिए, ऐसा हो सकता है कि पास किए गए रास्तों के इस फ़ील्ड का इस्तेमाल,
|
interpretInjectedSolutionsUsingLabels |
अगर यह सही है, तो:
यह व्याख्या, अगर सही है, तो यहां दी गई कैटगरी के लेबल, अपनी कैटगरी में ज़्यादा से ज़्यादा एक बार दिखने चाहिए:
अगर इंजेक्ट किए गए समाधान में मौजूद इंजेक्ट किए गए समाधान से रूट विज़िट या पूरे रूट हटाने से, निहित शर्तों पर असर पड़ सकता है. इससे समाधान में बदलाव हो सकता है, पुष्टि करने से जुड़ी गड़बड़ियां हो सकती हैं या समाधान लागू नहीं किया जा सकता. ध्यान दें: कॉल करने वाले व्यक्ति को यह पक्का करना होगा कि हर |
considerRoadTraffic |
|
populatePolylines |
अगर यह विकल्प चुना जाता है, तो जवाब |
populateTransitionPolylines |
अगर यह वैल्यू सही है, तो जवाब |
allowLargeDeadlineDespiteInterruptionRisk |
अगर यह सेट है, तो अनुरोध के लिए 60 मिनट तक की समयसीमा तय की जा सकती है. इसके बारे में ज़्यादा जानने के लिए, https://grpc.io/blog/deadlines पर जाएं. ऐसा न होने पर, ज़्यादा से ज़्यादा समयसीमा सिर्फ़ 30 मिनट होती है. ध्यान दें कि लंबे समय तक चलने वाले अनुरोधों में रुकावट आने का जोखिम काफ़ी ज़्यादा होता है. हालांकि, यह जोखिम अब भी कम होता है. |
useGeodesicDistances |
अगर यह वैल्यू सही है, तो यात्रा की दूरी का हिसाब लगाने के लिए, Google Maps में मौजूद दूरी के बजाय जियोडेसिक दूरी का इस्तेमाल किया जाएगा. साथ ही, यात्रा में लगने वाले समय का हिसाब लगाने के लिए, जियोडेसिक दूरी का इस्तेमाल किया जाएगा. इसमें |
label |
यह लेबल, इस अनुरोध की पहचान करने के लिए इस्तेमाल किया जा सकता है. इसकी जानकारी |
geodesicMetersPerSecond |
अगर |
maxValidationErrors |
पुष्टि करने से जुड़ी गड़बड़ियों की संख्या को छोटा करता है. ये गड़बड़ियां आम तौर पर, INVALID_ARGUMENT गड़बड़ी के पेलोड से जुड़ी होती हैं. इन्हें BadRequest गड़बड़ी की जानकारी (https://cloud.google.com/apis/design/errors#error_details) के तौर पर दिखाया जाता है. हालांकि, ऐसा तब नहीं होता, जब solvingMode=VALIDATE_ONLY हो: |
जवाब का मुख्य भाग
कामयाब रहने पर, जवाब के मुख्य हिस्से में OptimizeToursResponse का एक इंस्टेंस शामिल किया जाता है.
अनुमति पाने के लिंक
नीचे दिए गए OAuth के लिंक की ज़रूरत हाेती है:
https://www.googleapis.com/auth/cloud-platform
IAM अनुमतियां
parent रिसॉर्स पर, IAM से जुड़ी यह अनुमति ज़रूरी है:
routeoptimization.locations.use
ज़्यादा जानकारी के लिए, IAM का दस्तावेज़ देखें.