टाइम ऐक्सिस पर वाहन के रास्ते को इस तरह से डिकोड किया जा सकता है (हम मान लेते हैं कि विज़िट n हैं):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
ध्यान दें कि हम इनके बीच अंतर करते हैं:
- "समय के साथ होने वाले इवेंट", जैसे कि वाहन के शुरू और खत्म होने के साथ-साथ, हर विज़िट के शुरू और खत्म होने (जैसे कि आने और जाने का समय). ये किसी खास सेकंड पर होते हैं.
- "समय के अंतराल", जैसे कि विज़िट और विज़िट के बीच का ट्रांज़िशन. हालांकि, समयावधि कभी-कभी शून्य हो सकती है. इसका मतलब है कि शुरू और खत्म होने का समय एक ही सेकंड हो सकता है. हालांकि, अक्सर समयावधि का कोई मान होता है.
इनवैरिएंट:
- अगर n विज़िट हैं, तो n+1 ट्रांज़िशन हैं.
- कोई विज़िट, हमेशा उसके पहले वाले ट्रांज़िशन (एक ही इंडेक्स) और उसके बाद के ट्रांज़िशन (इंडेक्स + 1) से होती है.
- वाहन के स्टार्ट होने के बाद, हमेशा #0 ट्रांज़िशन होता है.
- वाहन की समाप्ति से पहले हमेशा #n होता है.
ज़ूम इन करने पर, Transition
और Visit
के दौरान होने वाली कार्रवाई यहां दी गई है:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
आखिर में, यहां बताया गया है कि ट्रांज़िशन के दौरान TRAVEL, BREAKS, DELAY और WAIT को किस तरह व्यवस्थित किया जा सकता है.
- वे ओवरलैप नहीं होते.
- DELAY एट्रिब्यूट की वैल्यू यूनीक होनी चाहिए. साथ ही, यह अगली विज़िट (या वाहन के खत्म होने) से ठीक पहले की लगातार समयावधि होनी चाहिए. इसलिए, डिलीवरी में लगने वाले समय की शुरुआत और खत्म होने का समय जानने के लिए, डिलीवरी में लगने वाले समय की जानकारी ही काफ़ी है.
- ब्रेक, एक-दूसरे से जुड़ी अवधियां होती हैं, जो ओवरलैप नहीं होतीं. रिस्पॉन्स से, हर ब्रेक के शुरू होने का समय और उसकी अवधि के बारे में पता चलता है.
- TRAVEL और WAIT "पहले से तैयार" हैं: इस बदलाव के दौरान उनमें कई बार रुकावट आ सकती है. क्लाइंट यह मान सकते हैं कि यात्रा "जल्द से जल्द" हो सकती है और "इंतज़ार" से बाकी समय पूरा हो जाता है.
एक (जटिल) उदाहरण:
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
JSON के काेड में दिखाना |
---|
{ "vehicleIndex": integer, "vehicleLabel": string, "vehicleStartTime": string, "vehicleEndTime": string, "visits": [ { object ( |
फ़ील्ड | |
---|---|
vehicleIndex |
रूट पर चलने वाला वाहन, जिसकी पहचान सोर्स |
vehicleLabel |
इस रास्ते पर चलने वाले वाहन का लेबल. अगर यह जानकारी दी गई है, तो यह |
vehicleStartTime |
वह समय जब वाहन अपना रास्ता शुरू करता है. आरएफ़सी3339 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण के लिए: |
vehicleEndTime |
वह समय जब वाहन अपना रास्ता पूरा कर लेता है. आरएफ़सी3339 यूटीसी के "ज़ुलू" फ़ॉर्मैट में एक टाइमस्टैंप, जिसमें नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंक हैं. उदाहरण के लिए: |
visits[] |
किसी रास्ते को दिखाने वाली विज़िट का क्रम. visits[i] रास्ते में i-वी विज़िट है. अगर यह फ़ील्ड खाली है, तो वाहन को इस्तेमाल नहीं किया गया माना जाता है. |
transitions[] |
रूट के लिए ट्रांज़िशन की क्रम वाली सूची. |
hasTrafficInfeasibilities |
जब
ट्रैफ़िक की वजह से |
routePolyline |
रूट का एन्कोडेड पॉलीलाइन निरूपण. यह फ़ील्ड सिर्फ़ तब पॉप्युलेट होता है, जब |
breaks[] |
इस रास्ते पर चलने वाले वाहन के लिए ब्रेक का शेड्यूल. |
metrics |
इस रूट की अवधि, दूरी, और लोड की मेट्रिक. कॉन्टेक्स्ट के हिसाब से, |
routeCosts |
रास्ते की कीमत, जिसे कीमत से जुड़े अनुरोध फ़ील्ड के हिसाब से बांटा गया है. कुंजियां, इनपुट OptimizeToursRequest, जैसे कि "model.shipments.pickups.cost" के मुताबिक प्रोटो पाथ होती हैं और वैल्यू पूरे रूट में एग्रीगेट की गई संबंधित लागत फ़ील्ड से जनरेट की गई कुल लागत होती हैं. दूसरे शब्दों में, costs["model.shipments.pickups.cost"] का मतलब है, रास्ते पर पिकअप करने की सभी लागतों का कुल योग. मॉडल में तय की गई सभी कीमतों के बारे में यहां पूरी जानकारी दी गई है. हालांकि, ट्रांज़िशन एट्रिब्यूट से जुड़ी लागत को छोड़कर, ये कीमतें सिर्फ़ 2022/01 तक के डेटा के आधार पर रिपोर्ट की गई हैं. |
routeTotalCost |
रास्ते की कुल कीमत. लागत के मैप में मौजूद सभी लागतों का कुल योग. |
यहां जाएं
किसी रास्ते के दौरान की गई यात्रा. यह विज़िट, Shipment
के पिकअप या डिलीवरी से जुड़ी है.
JSON के काेड में दिखाना |
---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
फ़ील्ड | |
---|---|
shipmentIndex |
सोर्स |
isPickup |
अगर यह वैल्यू 'सही' है, तो यह विज़िट किसी |
visitRequestIndex |
|
startTime |
विज़िट शुरू होने का समय. ध्यान दें कि वाहन, विज़िट की जगह पर इससे पहले पहुंच सकता है. समय आरएफ़सी3339 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण: |
loadDemands |
शिपिंग और विज़िट अनुरोध |
detour |
यात्रा से पहले रूट पर शिपमेंट के साथ-साथ टाइम विंडो की वजह से संभावित प्रतीक्षा समय की वजह से अतिरिक्त चक्कर लगाने का समय. अगर विज़िट डिलीवरी के लिए है, तो डेलिवरी के लिए किए गए सफ़र का हिसाब, पिकअप के लिए किए गए सफ़र से लगाया जाता है. यह हिसाब इस तरह लगाया जाता है:
अगर ऐसा नहीं है, तो
सेकंड में एक अवधि, जिसमें ज़्यादा से ज़्यादा नौ दशमलव अंक होते हैं और जो ' |
shipmentLabel |
अगर |
visitLabel |
अगर |
ट्रांज़िशन
रास्ते पर दो इवेंट के बीच ट्रांज़िशन. ShipmentRoute
का ब्यौरा देखें.
अगर वाहन में startLocation
और/या endLocation
नहीं है, तो उससे जुड़ी यात्रा की मेट्रिक 0 होगी.
JSON के काेड में दिखाना |
---|
{ "travelDuration": string, "travelDistanceMeters": number, "trafficInfoUnavailable": boolean, "delayDuration": string, "breakDuration": string, "waitDuration": string, "totalDuration": string, "startTime": string, "routePolyline": { object ( |
फ़ील्ड | |
---|---|
travelDuration |
इस बदलाव के दौरान यात्रा में लगने वाला समय. सेकंड में एक अवधि, जिसमें ज़्यादा से ज़्यादा नौ दशमलव अंक होते हैं और जो ' |
travelDistanceMeters |
बदलाव के दौरान तय की गई दूरी. |
trafficInfoUnavailable |
जब |
delayDuration |
इस ट्रांज़िशन पर लागू होने वाली देरी की कुल अवधि. अगर कोई देरी हुई है, तो अगली इवेंट (इवेंट में आना या वाहन खत्म होना) से ठीक सेकंड में एक अवधि, जिसमें ज़्यादा से ज़्यादा नौ दशमलव अंक होते हैं और जो ' |
breakDuration |
अगर कोई ट्रांज़िशन हुआ है, तो उस दौरान हुए ब्रेक की कुल अवधि. हर ब्रेक के शुरू होने के समय और उसकी अवधि की जानकारी सेकंड में एक अवधि, जिसमें ज़्यादा से ज़्यादा नौ दशमलव अंक होते हैं और जो ' |
waitDuration |
इस ट्रांज़िशन के दौरान इंतज़ार में बिताया गया समय. इंतज़ार का समय, इंतज़ार में बिताए गए समय से मेल खाता है. इसमें ब्रेक का समय शामिल नहीं होता. यह भी ध्यान दें कि इंतज़ार का यह समय, एक-दूसरे से अलग-अलग इंटरवल में हो सकता है. सेकंड में कुल अवधि, जिसमें दशमलव के बाद नौ अंक हो सकते हैं. यह अवधि ' |
totalDuration |
सुविधा के लिए, ट्रांज़िशन की कुल अवधि. यह बराबर है:
सेकंड में एक अवधि, जिसमें ज़्यादा से ज़्यादा नौ दशमलव अंक होते हैं और जो ' |
startTime |
इस ट्रांज़िशन का शुरू होने का समय. आरएफ़सी3339 यूटीसी के "ज़ुलू" फ़ॉर्मैट में एक टाइमस्टैंप, जिसमें नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंक हैं. उदाहरण: |
routePolyline |
ट्रांज़िशन के दौरान इस्तेमाल किए गए रास्ते की कोड में बदली गई पॉलीलाइन. इस फ़ील्ड में जानकारी सिर्फ़ तब अपने-आप भर जाती है, जब |
routeToken |
सिर्फ़ आउटपुट के लिए. एक ओपेक टोकन, जिसे नेविगेशन के दौरान रूट के स्ट्रक्चर को फिर से बनाने के लिए, नेविगेशन SDK टूल को पास किया जा सकता है. साथ ही, रास्ते में बदलाव करने पर, रूट बनाते समय मूल इंटेंट का पालन किया जा सकता है. इस टोकन को ओपेक ब्लॉब के रूप में मानें. सभी अनुरोधों के लिए इसकी वैल्यू की तुलना न करें, क्योंकि सेवा से ठीक वही रूट मिलने पर भी इसकी वैल्यू बदल सकती है. यह फ़ील्ड सिर्फ़ तब पॉप्युलेट होता है, जब |
vehicleLoads |
इस बदलाव के दौरान, हर उस तरह के वाहन के लिए लोड होगा जो इस वाहन की पहले ट्रांज़िशन के दौरान लोड, वाहन के रास्ते के शुरुआती लोड होते हैं. इसके बाद, हर विज़िट के बाद, अगले ट्रांज़िशन के लोड पाने के लिए विज़िट के |
EncodedPolyline
पॉलीलाइन का कोड में बदला गया वर्शन. पॉलीलाइन एन्कोडिंग के बारे में ज़्यादा जानकारी यहां मिल सकती है: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
JSON के काेड में दिखाना |
---|
{ "points": string } |
फ़ील्ड | |
---|---|
points |
पॉलीलाइन के कोड में बदले गए पॉइंट दिखाने वाली स्ट्रिंग. |
ब्रेक
ब्रेक के लागू होने की जानकारी देने वाला डेटा.
JSON के काेड में दिखाना |
---|
{ "startTime": string, "duration": string } |
फ़ील्ड | |
---|---|
startTime |
ब्रेक लेने का समय. आरएफ़सी3339 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण: |
duration |
ब्रेक का कुल समय. सेकंड में एक अवधि, जिसमें ज़्यादा से ज़्यादा नौ दशमलव अंक होते हैं और जो ' |