समय अक्ष के साथ, वाहन के रास्ते को इस तरह से अलग-अलग किया जा सकता है (हम मानते हैं कि 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 को कैसे व्यवस्थित किया जा सकता है.
- वे ओवरलैप नहीं होते.
- देरी यूनीक है और अगली विज़िट (या वाहन के खत्म होने) से ठीक पहले की अवधि ज़रूरी है. इसलिए, देरी के शुरू और खत्म होने के समय की जानकारी होना काफ़ी है.
- ब्रेक, एक-दूसरे से जुड़ी अवधियां होती हैं, जो ओवरलैप नहीं होतीं. जवाब में, हर ब्रेक के शुरू होने का समय और उसकी अवधि की जानकारी दी जाती है.
- TRAVEL और WAIT "प्रीएमप्ट किए जा सकते हैं": इस ट्रांज़िशन के दौरान, इनमें कई बार रुकावट आ सकती है. क्लाइंट यह मान सकते हैं कि यात्रा "जल्द से जल्द" हो सकती है और "इंतज़ार" से बाकी समय पूरा हो जाता है.
A (मुश्किल) का उदाहरण:
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 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण: |
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 |
अगर |
injectedSolutionLocationToken |
विज़िट की जगह की जानकारी दिखाने वाला ओपेक टोकन. यह फ़ील्ड, नतीजों के रास्तों की विज़िट में तब पॉप्युलेट हो सकता है, जब इस विज़िट के लिए |
ट्रांज़िशन
रूट पर दो इवेंट के बीच ट्रांज़िशन. 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 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण के लिए: |
routePolyline |
ट्रांज़िशन के दौरान इस्तेमाल किए गए रास्ते की कोड में बदली गई पॉलीलाइन. यह फ़ील्ड सिर्फ़ तब पॉप्युलेट होता है, जब |
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 यूटीसी के "ज़ुलू" फ़ॉर्मैट में एक टाइमस्टैंप, जिसमें नैनोसेकंड रिज़ॉल्यूशन और ज़्यादा से ज़्यादा नौ फ़्रैक्शनल अंक हैं. उदाहरण: |
duration |
ब्रेक की अवधि. सेकंड में कुल अवधि, जिसमें दशमलव के बाद नौ अंक हो सकते हैं. यह अवधि ' |