किसी वाहन के रास्ते को समय के हिसाब से इस तरह से बांटा जा सकता है (हम मानते हैं कि 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 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
vehicleEndTime |
वह समय जब वाहन अपने रास्ते पर चलना बंद कर देता है. यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
visits[] |
विज़िट का क्रम, जो किसी रास्ते को दिखाता है. visits[i] रास्ते में i-th विज़िट है. अगर यह फ़ील्ड खाली है, तो वाहन को इस्तेमाल नहीं किया गया माना जाता है. |
transitions[] |
रास्ते के लिए ट्रांज़िशन की क्रम से लगाई गई सूची. |
hasTrafficInfeasibilities |
ट्रैफ़िक की वजह से, यात्रा में लगने वाले अनुमानित समय |
routePolyline |
यह रूट की एन्कोड की गई पॉलीलाइन होती है. यह फ़ील्ड सिर्फ़ तब भरा जाता है, जब |
breaks[] |
इस रूट पर चलने वाले वाहन के लिए तय किए गए ब्रेक. |
metrics |
इस रास्ते के लिए, अवधि, दूरी, और लोड मेट्रिक. कॉन्टेक्स्ट के हिसाब से, |
vehicleFullness |
एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
routeCosts |
रास्ते का किराया, जिसे अनुरोध से जुड़े फ़ील्ड के हिसाब से बांटा गया है. कुंजियां, OptimizeToursRequest के हिसाब से प्रोटो पाथ होती हैं.उदाहरण के लिए, "model.shipments.pickups.cost". वैल्यू, लागत के उस फ़ील्ड से जनरेट हुई कुल लागत होती है जो पूरे रास्ते के लिए एग्रीगेट की जाती है. दूसरे शब्दों में, costs["model.shipments.pickups.cost"] का मतलब है कि रास्ते में पिकअप करने की सभी लागतों का योग. मॉडल में तय की गई सभी लागतों की जानकारी यहां दी गई है. हालांकि, TransitionAttributes से जुड़ी लागतों की जानकारी सिर्फ़ एग्रीगेट किए गए तरीके से दी जाती है. यह जानकारी 2022/01 से दी जा रही है. |
routeTotalCost |
रास्ते का कुल शुल्क. लागत के मैप में मौजूद सभी लागतों का योग. |
यहां जाएं
किसी रास्ते पर जाते समय की गई विज़िट. यह विज़िट, Shipment के पिकअप या डिलीवरी से जुड़ी है.
| JSON के काेड में दिखाना |
|---|
{
"shipmentIndex": integer,
"isPickup": boolean,
"visitRequestIndex": integer,
"startTime": string,
"loadDemands": {
string: {
object ( |
| फ़ील्ड | |
|---|---|
shipmentIndex |
सोर्स |
isPickup |
अगर वैल्यू सही है, तो इसका मतलब है कि विज़िट, |
visitRequestIndex |
|
startTime |
विज़िट शुरू होने का समय. ध्यान दें कि वाहन, विज़िट की जगह पर इस समय से पहले भी पहुंच सकता है. समय, यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
loadDemands |
शिपमेंट और विज़िट के अनुरोध |
detour |
यात्रा से पहले रास्ते में आने वाले शिपमेंट और समयसीमा की वजह से इंतज़ार करने में लगने वाले संभावित समय की वजह से, यात्रा में लगने वाला अतिरिक्त समय. अगर विज़िट डिलीवरी के लिए है, तो रास्ते में बदलाव की दूरी का हिसाब, पिकअप की विज़िट के हिसाब से लगाया जाता है. यह दूरी इस तरह से तय की जाती है: अगर ऐसा नहीं है, तो इसका हिसाब वाहन के यह अवधि को सेकंड में दिखाता है. इसमें नौ दशमलव अंक तक हो सकते हैं. इसके आखिर में ' |
shipmentLabel |
अगर |
visitLabel |
अगर |
injectedSolutionLocationToken |
यह एक ओपेक टोकन है. यह किसी जगह पर जाने की जानकारी दिखाता है. इस फ़ील्ड में, नतीजे के तौर पर मिले रास्तों की विज़िट की जानकारी अपने-आप भर सकती है. ऐसा तब होता है, जब इस विज़िट के लिए एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request पर जाएं. |
ट्रांज़िशन
रास्ते में मौजूद दो इवेंट के बीच ट्रांज़िशन. 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 |
इस ट्रांज़िशन के दौरान आने वाले ब्रेक की कुल अवधि. अगर कोई ब्रेक नहीं है, तो इसकी वैल्यू 0 होगी. हर ब्रेक के शुरू होने के समय और अवधि की जानकारी, यह अवधि को सेकंड में दिखाता है. इसमें नौ दशमलव अंक तक हो सकते हैं. इसके आखिर में ' |
waitDuration |
इस ट्रांज़िशन के दौरान इंतज़ार करने में लगा समय. इंतज़ार की अवधि, काम न करने के समय के हिसाब से होती है. इसमें ब्रेक का समय शामिल नहीं होता. यह भी ध्यान दें कि इंतज़ार करने का यह समय, कई अलग-अलग समय अंतराल में बंटा हो सकता है. यह अवधि को सेकंड में दिखाता है. इसमें नौ दशमलव अंक तक हो सकते हैं. इसके आखिर में ' |
totalDuration |
ट्रांज़िशन की कुल अवधि, सुविधा के लिए दी गई है. यह इसके बराबर है:
यह अवधि को सेकंड में दिखाता है. इसमें नौ दशमलव अंक तक हो सकते हैं. इसके आखिर में ' |
startTime |
इस ट्रांज़िशन के शुरू होने का समय. यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
routePolyline |
ट्रांज़िशन के दौरान फ़ॉलो किए गए रास्ते का एन्कोड किया गया पॉलीलाइन प्रज़ेंटेशन. यह फ़ील्ड सिर्फ़ तब भरा जाता है, जब |
routeToken |
सिर्फ़ आउटपुट के लिए. यह एक ओपेक टोकन है. इसे Navigation 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 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
duration |
ब्रेक की अवधि. यह अवधि को सेकंड में दिखाता है. इसमें नौ दशमलव अंक तक हो सकते हैं. इसके आखिर में ' |
VehicleFullness
VehicleFullness एक मेट्रिक है. इससे यह पता चलता है कि वाहन में कितनी जगह खाली है. हर VehicleFullness फ़ील्ड की वैल्यू 0 से 1 के बीच होती है. इसकी गिनती, कैप की गई मेट्रिक फ़ील्ड (जैसे, AggregatedMetrics.travel_distance_meters) और उससे जुड़ी वाहन की सीमा (जैसे, Vehicle.route_distance_limit) के अनुपात के तौर पर की जाती है. हालांकि, ऐसा तब होता है, जब वाहन की सीमा मौजूद हो. ऐसा न करने पर, फ़ुलनेस रेशियो सेट नहीं होता है. अगर सीमा 0 है, तो फ़ील्ड को 1 पर सेट किया जाता है. ध्यान दें: जब किसी रास्ते पर ट्रैफ़िक की वजह से यात्रा करना मुश्किल हो जाता है, तो कुछ मामलों में, वाहन में यात्रियों की संख्या का अनुपात 1.0 से ज़्यादा हो सकता है. उदाहरण के लिए, वाहन अपनी दूरी की सीमा से ज़्यादा दूरी तय कर सकता है. ऐसे मामलों में, हम फ़ुलनेस वैल्यू को 1.0 पर सीमित कर देते हैं.
| JSON के काेड में दिखाना |
|---|
{ "maxFullness": number, "distance": number, "travelDuration": number, "activeDuration": number, "maxLoad": number, "activeSpan": number } |
| फ़ील्ड | |
|---|---|
maxFullness |
इस मैसेज में मौजूद अन्य सभी फ़ील्ड की ज़्यादा से ज़्यादा वैल्यू. |
distance |
|
travelDuration |
[AggregatedMetrics.travel_duration_seconds][] और |
activeDuration |
[AggregatedMetrics.total_duration_seconds][] और |
maxLoad |
सभी तरह के [AggregatedMetrics.max_load][] और उनके |
activeSpan |
किसी वाहन के लिए, (vehicleEndTime - vehicleStartTime) / (latestVehicleEndTime - earliestVehicleStartTime) का अनुपात. अगर डिनॉमिनेटर मौजूद नहीं है, तो इसके बजाय ( |