- JSON काेड में दिखाना
- शिपमेंट
- VisitRequest
- LatLng
- Waypoint
- जगह की जानकारी
- TimeWindow
- वाहन
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- इंटरवल
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- मकसद
- समस्या
- DurationDistanceMatrix
- Row
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
शिपमेंट मॉडल में, शिपमेंट का एक सेट होता है. इसे वाहनों के एक सेट से पूरा किया जाना चाहिए. साथ ही, कुल लागत को कम से कम रखना चाहिए. कुल लागत में ये शामिल हैं:
- वाहनों के रूट की लागत (कुल समय के हिसाब से लागत, यात्रा के समय के हिसाब से लागत, और सभी वाहनों के लिए तय की गई लागत का योग).
- शिपिंग के लिए तय किए गए समय पर खरीदार तक सामान न पहुंचाने पर लगने वाले जुर्माने.
- शिपमेंट की कुल अवधि के लिए खरीदार से लिया जाने वाला शुल्क
| JSON के काेड में दिखाना |
|---|
{ "shipments": [ { object ( |
| फ़ील्ड | |
|---|---|
shipments[] |
शिपमेंट का ऐसा सेट जिसे मॉडल में पूरा करना ज़रूरी है. |
vehicles[] |
वाहनों का ऐसा सेट जिसका इस्तेमाल विज़िट करने के लिए किया जा सकता है. |
objectives[] |
इस मॉडल के लिए तय किए गए लक्ष्यों का सेट, जिसे हम लागत में बदलेंगे. अगर यह फ़ील्ड खाली नहीं है, तो इनपुट मॉडल के लिए कोई शुल्क नहीं लिया जाना चाहिए. बदला हुआ अनुरोध पाने के लिए, कृपया एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request पर जाएं. |
globalStartTime |
मॉडल के शुरू और खत्म होने का ग्लोबल समय: इस रेंज के बाहर के समय को मान्य नहीं माना जा सकता. मॉडल की समयसीमा एक साल से कम होनी चाहिए. इसका मतलब है कि
यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
globalEndTime |
अगर यह नीति सेट नहीं की गई है, तो डिफ़ॉल्ट वैल्यू के तौर पर 1 जनवरी, 1971 को 00:00:00 यूटीसी (यानी सेकंड: 31536000, नैनोसेकंड: 0) का इस्तेमाल किया जाता है. यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
globalDurationCostPerHour |
पूरे प्लान की "कुल अवधि" का मतलब, सभी वाहनों के लिए सबसे पहले लागू होने वाले शुरुआती समय और सबसे बाद में लागू होने वाले आखिरी समय के बीच का अंतर होता है. उपयोगकर्ता, उस मात्रा के लिए प्रति घंटे की लागत असाइन कर सकते हैं. इससे, काम को जल्द से जल्द पूरा करने के लिए ऑप्टिमाइज़ करने में मदद मिलती है. उदाहरण के लिए, ऐसा किया जा सकता है. यह कीमत, |
durationDistanceMatrices[] |
मॉडल में इस्तेमाल की गई अवधि और दूरी की मैट्रिक्स के बारे में बताता है. अगर यह फ़ील्ड खाली है, तो इस्तेमाल के उदाहरण:
|
durationDistanceMatrixSrcTags[] |
ये टैग, अवधि और दूरी के मैट्रिक्स के सोर्स तय करते हैं; टैग, |
durationDistanceMatrixDstTags[] |
ड्यूरेशन और दूरी के मैट्रिक्स के डेस्टिनेशन तय करने वाले टैग; टैग, |
transitionAttributes[] |
मॉडल में ट्रांज़िशन एट्रिब्यूट जोड़े गए. |
shipmentTypeIncompatibilities[] |
शिपमेंट के टाइप |
shipmentTypeRequirements[] |
|
precedenceRules[] |
प्राथमिकता के नियमों का ऐसा सेट जिसे मॉडल में लागू करना ज़रूरी है. अहम जानकारी: प्राथमिकता के नियमों का इस्तेमाल करने से, ऑप्टिमाइज़ की जा सकने वाली समस्या का साइज़ सीमित हो जाता है. प्राथमिकता के नियमों का इस्तेमाल करके किए गए ऐसे अनुरोध अस्वीकार किए जा सकते हैं जिनमें कई शिपमेंट शामिल हों. |
maxActiveVehicles |
इससे, चालू वाहनों की ज़्यादा से ज़्यादा संख्या सीमित की जाती है. किसी वाहन को तब चालू माना जाता है, जब वह अपने रूट पर कम से कम एक शिपमेंट डिलीवर कर चुका हो. इसका इस्तेमाल, उन मामलों में रास्तों की संख्या को सीमित करने के लिए किया जा सकता है जहां वाहनों की संख्या से कम ड्राइवर हैं और वाहनों का फ़्लीट अलग-अलग तरह का है. इसके बाद, ऑप्टिमाइज़ेशन की प्रोसेस में, इस्तेमाल के लिए वाहनों का सबसे सही सबसेट चुना जाएगा. यह वैल्यू पॉज़िटिव होनी चाहिए. |
शिपमेंट
किसी एक आइटम की शिपिंग, उसके पिकअप से लेकर डिलीवरी तक. शिपमेंट को पूरा माना जाने के लिए, एक ही वाहन को पिकअप करने की किसी एक जगह पर जाना होगा. इससे वाहन की खाली जगह कम हो जाएगी. इसके बाद, उसे डिलीवरी की किसी एक जगह पर जाना होगा. इससे वाहन की खाली जगह फिर से बढ़ जाएगी.
| JSON के काेड में दिखाना |
|---|
{ "displayName": string, "pickups": [ { object ( |
| फ़ील्ड | |
|---|---|
displayName |
शिपमेंट का डिसप्ले नेम, जिसे उपयोगकर्ता ने तय किया है. यह ज़्यादा से ज़्यादा 63 वर्णों का हो सकता है. इसमें UTF-8 वर्णों का इस्तेमाल किया जा सकता है. |
pickups[] |
शिपमेंट से जुड़े पिकअप के विकल्पों का सेट. अगर यह जानकारी नहीं दी गई है, तो वाहन को सिर्फ़ डिलीवरी की जगह पर जाना होगा. |
deliveries[] |
शिपमेंट से जुड़े डिलीवरी के विकल्पों का सेट. अगर यह जानकारी नहीं दी जाती है, तो वाहन को सिर्फ़ पिकअप की जगह पर जाना होगा. |
loadDemands |
शिपमेंट की लोड डिमांड (उदाहरण के लिए, वज़न, वॉल्यूम, पैलेट की संख्या वगैरह). मैप में मौजूद कुंजियां, आइडेंटिफ़ायर होनी चाहिए. इनसे लोड के टाइप के बारे में पता चलता है. साथ ही, इनमें यूनिट भी शामिल होनी चाहिए. उदाहरण के लिए: "weight_kg", "volume_gallons", "pallet_count" वगैरह. अगर दी गई कोई कुंजी मैप में नहीं दिखती है, तो उससे जुड़ा लोड शून्य माना जाता है. |
allowedVehicleIndices[] |
उन वाहनों का सेट जो इस शिपमेंट को पूरा कर सकते हैं. अगर यह फ़ील्ड खाली है, तो सभी वाहन इस कार्रवाई को कर सकते हैं. |
costsPerVehicle[] |
इससे पता चलता है कि हर वाहन से इस शिपमेंट की डिलीवरी करने पर कितना शुल्क लगता है. अगर यह वैल्यू दी गई है, तो इसमें इनमें से कोई एक वैल्यू होनी चाहिए:
ये लागतें, |
costsPerVehicleIndices[] |
उन वाहनों के इंडेक्स जिन पर |
pickupToDeliveryAbsoluteDetourLimit |
इससे पिकअप से डिलीवरी तक के सबसे छोटे रास्ते की तुलना में, ज़्यादा से ज़्यादा कितना समय लग सकता है, यह पता चलता है. अगर इसे तय किया जाता है, तो यह शून्य या इससे ज़्यादा होना चाहिए. साथ ही, शिपमेंट में कम से कम एक पिकअप और एक डिलीवरी शामिल होनी चाहिए. उदाहरण के लिए, मान लें कि चुने गए पिकअप के विकल्प से सीधे तौर पर चुने गए डिलीवरी के विकल्प तक पहुंचने में लगने वाला सबसे कम समय t है. इसके बाद, सेटिंग अगर एक ही शिपमेंट के लिए, दोनों तरह की सीमाएं तय की गई हैं, तो पिकअप/डिलीवरी के हर संभावित पेयर के लिए, ज़्यादा पाबंदी वाली सीमा का इस्तेमाल किया जाता है. अक्टूबर 2017 से, डाइवर्शन की जानकारी सिर्फ़ तब दिखाई जाती है, जब यात्रा की अवधि वाहनों पर निर्भर नहीं करती. |
pickupToDeliveryTimeLimit |
इससे यह पता चलता है कि किसी शिपमेंट को पिकअप करने से लेकर डिलीवर करने तक में ज़्यादा से ज़्यादा कितना समय लगेगा. अगर इसे तय किया जाता है, तो यह शून्य या इससे ज़्यादा होना चाहिए. साथ ही, शिपमेंट में कम से कम एक पिकअप और एक डिलीवरी शामिल होनी चाहिए. यह इस बात पर निर्भर नहीं करता कि पिकअप और डिलीवरी के लिए कौनसा विकल्प चुना गया है. साथ ही, यह वाहन की स्पीड पर भी निर्भर नहीं करता. इसे ज़्यादा से ज़्यादा दूरी तय करने की शर्तों के साथ तय किया जा सकता है. समाधान में, दोनों शर्तों का पालन किया जाएगा. |
shipmentType |
यह एक ऐसी स्ट्रिंग होती है जिसमें कुछ न कुछ लिखा होता है. इससे शिपमेंट के "टाइप" के बारे में पता चलता है. इस सुविधा का इस्तेमाल, यह |
label |
इससे इस शिपमेंट के लिए लेबल तय किया जाता है. इस लेबल की जानकारी, जवाब में मौजूद |
ignore |
अगर यह वैल्यू सही है, तो इस शिपमेंट को छोड़ दें. हालांकि, अगर मॉडल में कोई
|
penaltyCost |
अगर शिपमेंट पूरा नहीं होता है, तो इस जुर्माने को रास्तों की कुल लागत में जोड़ दिया जाता है. अगर शिपमेंट के पिकअप और डिलीवरी के किसी विकल्प को चुना जाता है, तो उसे पूरा माना जाता है. लागत को मॉडल में, लागत से जुड़े अन्य सभी फ़ील्ड के लिए इस्तेमाल की गई यूनिट में दिखाया जा सकता है. साथ ही, यह पॉज़िटिव होनी चाहिए. अहम जानकारी: अगर इस पेनल्टी के बारे में जानकारी नहीं दी गई है, तो इसे हमेशा के लिए लागू माना जाता है. इसका मतलब है कि शिपमेंट पूरा होना चाहिए. |
pickupToDeliveryRelativeDetourLimit |
इससे पिकअप से लेकर डिलीवरी तक के सबसे छोटे रास्ते की तुलना में, ज़्यादा से ज़्यादा कितना समय लगेगा, यह पता चलता है. अगर इसे तय किया जाता है, तो यह शून्य या इससे ज़्यादा होना चाहिए. साथ ही, शिपमेंट में कम से कम एक पिकअप और एक डिलीवरी शामिल होनी चाहिए. उदाहरण के लिए, मान लें कि चुने गए पिकअप के विकल्प से सीधे तौर पर चुने गए डिलीवरी के विकल्प तक पहुंचने में लगने वाला सबसे कम समय t है. इसके बाद, सेटिंग अगर एक ही शिपमेंट के लिए, दोनों तरह की सीमाएं तय की गई हैं, तो पिकअप/डिलीवरी के हर संभावित पेयर के लिए, ज़्यादा पाबंदी वाली सीमा का इस्तेमाल किया जाता है. अक्टूबर 2017 से, डाइवर्शन की जानकारी सिर्फ़ तब दिखाई जाती है, जब यात्रा की अवधि वाहनों पर निर्भर नहीं करती. |
VisitRequest
किसी जगह पर जाने का अनुरोध, जिसे किसी वाहन से पूरा किया जा सकता है: इसमें भौगोलिक जगह (या दो, नीचे देखें), खुलने और बंद होने का समय, और सेवा की अवधि (वाहन के सामान लेने या छोड़ने के बाद लगने वाला समय) शामिल होती है.
| JSON के काेड में दिखाना |
|---|
{ "arrivalLocation": { object ( |
| फ़ील्ड | |
|---|---|
arrivalLocation |
|
arrivalWaypoint |
यह वह वेपॉइंट है जहां वाहन इस |
departureLocation |
|
departureWaypoint |
वह वेपॉइंट जहां वाहन इस |
tags[] |
इससे विज़िट के अनुरोध से जुड़े टैग के बारे में पता चलता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है. |
timeWindows[] |
टाइम विंडो, जो किसी जगह पर पहुंचने के समय को सीमित करती हैं. ध्यान दें कि वाहन, पहुंचने के अनुमानित समय से पहले भी रवाना हो सकता है. इसका मतलब है कि पहुंचने का अनुमानित समय और यात्रा की अवधि, एक ही समयसीमा में होना ज़रूरी नहीं है. अगर वाहन
समयसीमाएं अलग-अलग होनी चाहिए.इसका मतलब है कि कोई भी समयसीमा, दूसरी समयसीमा के साथ ओवरलैप या उसके आस-पास नहीं होनी चाहिए. साथ ही, उन्हें बढ़ते क्रम में होना चाहिए.
|
duration |
विज़िट की अवधि, यानी वाहन के पहुंचने और जाने के बीच का समय (इसे इंतज़ार के संभावित समय में जोड़ा जाएगा; |
cost |
वाहन के रास्ते पर, विज़िट के इस अनुरोध को पूरा करने का शुल्क. इसका इस्तेमाल, शिपमेंट के हर पिकअप या डिलीवरी के विकल्प के लिए अलग-अलग शुल्क चुकाने के लिए किया जा सकता है. यह लागत, |
loadDemands |
इस कुकी का इस्तेमाल, वेबसाइट पर आने वाले व्यक्ति के अनुरोधों को लोड करने के लिए किया जाता है. यह |
visitTypes[] |
इससे विज़िट के टाइप के बारे में पता चलता है. इसका इस्तेमाल, किसी वाहन को इस यात्रा को पूरा करने के लिए ज़रूरी अतिरिक्त समय देने के लिए किया जा सकता है ( कोई टाइप सिर्फ़ एक बार दिख सकता है. |
label |
इस |
avoidUTurns |
इससे यह तय होता है कि इस जगह पर ड्राइविंग के रास्तों में यू-टर्न से बचना चाहिए या नहीं. यू-टर्न से बचने के लिए, हम पूरी कोशिश करते हैं. हालांकि, हम इस बात की गारंटी नहीं देते कि यू-टर्न से पूरी तरह बचा जा सकेगा. इस सुविधा को फ़िलहाल आज़माया जा रहा है. इसलिए, इसमें बदलाव हो सकता है. एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request पर जाएं. |
LatLng
यह ऑब्जेक्ट, अक्षांश/देशांतर की जोड़ी को दिखाता है. इसे डबल के पेयर के तौर पर दिखाया जाता है, ताकि अक्षांश और देशांतर की डिग्री दिखाई जा सके. जब तक अलग से कोई जानकारी न दी जाए, तब तक इस ऑब्जेक्ट को WGS84 स्टैंडर्ड के मुताबिक होना चाहिए. वैल्यू, सामान्य की गई रेंज के अंदर होनी चाहिए.
| JSON के काेड में दिखाना |
|---|
{ "latitude": number, "longitude": number } |
| फ़ील्ड | |
|---|---|
latitude |
डिग्री में अक्षांश. यह [-90.0, +90.0] की रेंज में होना चाहिए. |
longitude |
डिग्री में देशांतर. यह [-180.0, +180.0] की रेंज में होना चाहिए. |
वेपॉइंट
यह क्लास, वेपॉइंट को इनकैप्सुलेट करती है. वेपॉइंट, VisitRequest के पहुंचने और रवाना होने की जगहों के साथ-साथ वाहनों के शुरू और खत्म होने की जगहों को मार्क करते हैं.
| JSON के काेड में दिखाना |
|---|
{
"sideOfRoad": boolean,
"vehicleStopover": boolean,
// The following is a list of mutually exclusive fields. At most one of the
// fields will be set in a response:
"location": {
object ( |
| फ़ील्ड | |
|---|---|
sideOfRoad |
ज़रूरी नहीं. इससे पता चलता है कि इस वेपॉइंट की जगह पर, वाहन को सड़क के किसी खास हिस्से पर रोकने को प्राथमिकता दी जानी चाहिए. इस वैल्यू को सेट करने पर, रास्ता उस जगह से होकर गुज़रेगा. इससे वाहन, सड़क के उस किनारे पर रुक सकेगा जहां वह जगह सड़क के बीच से ज़्यादा नज़दीक है. यह विकल्प, 'पैदल चलना' यात्रा मोड के लिए काम नहीं करता. |
vehicleStopover |
इससे पता चलता है कि वेपॉइंट, वाहनों के रुकने के लिए है. यहां से लोगों को पिक अप या ड्रॉप किया जा सकता है. यह विकल्प सिर्फ़ 'ड्राइविंग' मोड के लिए काम करता है. साथ ही, 'locationType' के 'location' पर सेट होने पर ही काम करता है. एक्सपेरिमेंट के तौर पर उपलब्ध: ऐसा हो सकता है कि आने वाले समय में इस फ़ील्ड के काम करने के तरीके में बदलाव हो या यह फ़ील्ड उपलब्ध न रहे. |
| किसी जगह की जानकारी दिखाने के अलग-अलग तरीके. यहां ऐसे फ़ील्ड की सूची दी गई है जिनमें से सिर्फ़ एक को चुना जा सकता है. जवाब में ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा: | |
location |
ज्यामिति के हिसाब से तय किया गया कोई पॉइंट. इसमें वैकल्पिक हेडिंग भी शामिल होती है. |
placeId |
वेपॉइंट से जुड़ा लोकप्रिय जगह का आईडी. VisitRequest के लिए, किसी जगह पर पहुँचने या वहाँ से निकलने की जगह की जानकारी देने के लिए, प्लेस आईडी का इस्तेमाल करते समय, ऐसा प्लेस आईडी इस्तेमाल करें जिससे उस जगह के लिए LatLng लोकेशन का पता चल सके, ताकि उस जगह पर नेविगेट किया जा सके. उदाहरण के लिए, किसी इमारत को दिखाने वाला जगह का आईडी सही है. हालांकि, किसी सड़क को दिखाने वाले जगह के आईडी का इस्तेमाल करने का सुझाव नहीं दिया जाता. |
| एक-दूसरे से अलग फ़ील्ड के आखिर में. | |
जगह
इसमें किसी जगह की जानकारी होती है. जैसे, भौगोलिक पॉइंट और वैकल्पिक हेडिंग.
| JSON के काेड में दिखाना |
|---|
{
"latLng": {
object ( |
| फ़ील्ड | |
|---|---|
latLng |
वेपॉइंट के भौगोलिक निर्देशांक. |
heading |
कंपास हेडिंग, ट्रैफ़िक के फ़्लो की दिशा से जुड़ी होती है. इस वैल्यू का इस्तेमाल, पिकअप और ड्रॉप-ऑफ़ के लिए सड़क के किनारे की जगह तय करने के लिए किया जाता है. हेडिंग की वैल्यू 0 से 360 तक हो सकती है. इसमें 0 का मतलब उत्तर की ओर, 90 का मतलब पूर्व की ओर वगैरह होता है. |
TimeWindow
टाइम विंडो से, किसी इवेंट का समय तय किया जाता है. जैसे, किसी जगह पर पहुंचने का समय या किसी वाहन के शुरू और बंद होने का समय.
टाइम विंडो की हार्ड बाउंड्री, startTime और endTime, इवेंट के सबसे पहले और सबसे बाद के समय को लागू करती हैं, ताकि startTime <= event_time <=
endTime. सॉफ़्ट टाइम विंडो की निचली सीमा, softStartTime, से पता चलता है कि इवेंट को softStartTime या उसके बाद होना चाहिए. हालांकि, अगर इवेंट softStartTime से पहले होता है, तो उसके लिए एक शुल्क देना होगा. यह शुल्क, इवेंट के softStartTime से पहले होने की अवधि के हिसाब से तय किया जाता है. सॉफ़्ट टाइम विंडो की ऊपरी सीमा, softEndTime, से पता चलता है कि इवेंट को softEndTime या उससे पहले होने की प्राथमिकता दी जाती है. इसके लिए, softEndTime के बाद इवेंट होने में लगने वाले समय के हिसाब से शुल्क लिया जाता है. startTime, endTime, softStartTime, और softEndTime, ग्लोबल टाइम लिमिट (ShipmentModel.global_start_time और ShipmentModel.global_end_time देखें) के मुताबिक होने चाहिए. साथ ही, इन्हें इन बातों का ध्यान रखना चाहिए:
0 <= `startTime` <= `endTime` and
0 <= `startTime` <= `softStartTime` and
0 <= `softEndTime` <= `endTime`.
| JSON के काेड में दिखाना |
|---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
| फ़ील्ड | |
|---|---|
startTime |
हार्ड टाइम विंडो के शुरू होने का समय. अगर इसे तय नहीं किया गया है, तो इसे यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
endTime |
सटीक समयसीमा के खत्म होने का समय. अगर इसे तय नहीं किया गया है, तो इसे यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
softStartTime |
टाइम विंडो के शुरू होने का समय. यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
softEndTime |
टाइम विंडो के खत्म होने का समय. यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
costPerHourBeforeSoftStartTime |
अगर इवेंट, softStartTime से पहले होता है, तो मॉडल में अन्य लागतों के साथ प्रति घंटे की लागत जोड़ी जाती है. इसकी गणना इस तरह की जाती है: यह लागत पॉज़िटिव होनी चाहिए. साथ ही, इस फ़ील्ड को सिर्फ़ तब सेट किया जा सकता है, जब softStartTime सेट किया गया हो. |
costPerHourAfterSoftEndTime |
अगर इवेंट यह लागत पॉज़िटिव होनी चाहिए. साथ ही, इस फ़ील्ड को सिर्फ़ तब सेट किया जा सकता है, जब |
वाहन
यह कुकी, शिपमेंट से जुड़ी समस्या में वाहन को मॉडल करती है. शिपमेंट से जुड़ी समस्या को हल करने पर, इस वाहन के लिए startLocation से शुरू होकर endLocation पर खत्म होने वाला रास्ता तैयार हो जाएगा. रास्ता, विज़िट का क्रम होता है (ShipmentRoute देखें).
| JSON के काेड में दिखाना |
|---|
{ "displayName": string, "travelMode": enum ( |
| फ़ील्ड | |
|---|---|
displayName |
वाहन का डिसप्ले नेम, जिसे उपयोगकर्ता ने तय किया है. यह ज़्यादा से ज़्यादा 63 वर्णों का हो सकता है. इसमें UTF-8 वर्णों का इस्तेमाल किया जा सकता है. |
travelMode |
यात्रा का मोड, जिससे वाहन के लिए इस्तेमाल की जा सकने वाली सड़कों और उसकी स्पीड पर असर पड़ता है. |
routeModifiers |
शर्तों का एक ऐसा सेट जिसे पूरा करना ज़रूरी होता है. इससे यह तय होता है कि दिए गए वाहन के लिए रास्तों का हिसाब कैसे लगाया जाएगा. |
startLocation |
वह भौगोलिक जगह जहां से वाहन, कोई भी शिपमेंट पिक अप करने से पहले शुरू होता है. अगर यह जानकारी नहीं दी जाती है, तो वाहन की यात्रा पहले पिकअप से शुरू होती है. अगर शिपमेंट मॉडल में अवधि और दूरी की मैट्रिक्स मौजूद हैं, तो |
startWaypoint |
यह एक ऐसा वेपॉइंट होता है जो किसी भौगोलिक जगह की जानकारी देता है. यहां से वाहन, शिपमेंट पिक अप करने से पहले शुरू होता है. अगर |
endLocation |
वह भौगोलिक जगह जहां वाहन, अपनी आखिरी |
endWaypoint |
यह एक ऐसा वेपॉइंट होता है जो किसी भौगोलिक जगह की जानकारी देता है. यह वह जगह होती है जहां वाहन, अपनी आखिरी |
startTags[] |
इससे वाहन के रास्ते की शुरुआत में जोड़े गए टैग के बारे में पता चलता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है. |
endTags[] |
इससे वाहन के रास्ते के आखिर में जोड़े गए टैग के बारे में पता चलता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है. |
startTimeWindows[] |
वह समयावधि जिसके दौरान वाहन, अपनी शुरुआती जगह से रवाना हो सकता है. ये ग्लोबल टाइम लिमिट के अंदर होने चाहिए ( एक ही दोहराए गए फ़ील्ड से जुड़ी समयसीमाएं अलग-अलग होनी चाहिए.इसका मतलब है कि कोई भी समयसीमा, दूसरी समयसीमा के साथ ओवरलैप नहीं हो सकती या उसके आस-पास नहीं हो सकती. साथ ही, उन्हें क्रम के हिसाब से होना चाहिए.
|
endTimeWindows[] |
वह समयावधि जिसके दौरान वाहन अपनी मंज़िल पर पहुंच सकता है. ये ग्लोबल टाइम लिमिट के अंदर होने चाहिए ( एक ही दोहराए गए फ़ील्ड से जुड़ी समयसीमाएं अलग-अलग होनी चाहिए.इसका मतलब है कि कोई भी समयसीमा, दूसरी समयसीमा के साथ ओवरलैप नहीं हो सकती या उसके आस-पास नहीं हो सकती. साथ ही, उन्हें क्रम के हिसाब से होना चाहिए.
|
unloadingPolicy |
वाहन पर सामान उतारने की नीति लागू की गई है. |
loadLimits |
वाहन की क्षमताएं (उदाहरण के लिए, वज़न, वॉल्यूम, पैलेट की संख्या). मैप में मौजूद कुंजियां, लोड के टाइप के आइडेंटिफ़ायर होती हैं. ये |
costPerHour |
वाहन की कीमत: सभी कीमतें जोड़ दी जाती हैं और वे वाहन के रास्ते के हर घंटे की लागत. यह लागत, रास्ते में लगने वाले कुल समय पर लागू होती है. इसमें यात्रा में लगने वाला समय, इंतज़ार का समय, और विज़िट का समय शामिल होता है. सिर्फ़ |
costPerTraveledHour |
वाहन के रास्ते में तय किए गए हर घंटे की लागत. यह शुल्क सिर्फ़ यात्रा में लगने वाले समय पर लागू होता है.यह समय, |
costPerKilometer |
वाहन के रास्ते के हिसाब से हर किलोमीटर की लागत. यह शुल्क, |
fixedCost |
अगर इस वाहन का इस्तेमाल शिपमेंट को हैंडल करने के लिए किया जाता है, तो तय की गई लागत लागू होती है. |
usedIfRouteIsEmpty |
यह फ़ील्ड सिर्फ़ उन वाहनों पर लागू होता है जिनके रूट पर कोई शिपमेंट नहीं होता. इससे पता चलता है कि इस मामले में वाहन को इस्तेमाल किया गया माना जाना चाहिए या नहीं. अगर यह वैल्यू सही है, तो वाहन अपनी शुरुआती जगह से आखिरी जगह तक जाता है. भले ही, वह कोई शिपमेंट न ले जाए. साथ ही, शुरुआती जगह से आखिरी जगह तक जाने में लगने वाले समय और दूरी के हिसाब से शुल्क लिया जाता है. इसके अलावा, यह वाहन अपनी शुरुआती जगह से मंज़िल तक नहीं जाता है. साथ ही, इस वाहन के लिए कोई |
routeDurationLimit |
यह सीमा, वाहन के पूरे रास्ते पर लागू होती है. किसी |
travelDurationLimit |
वाहन के रास्ते की यात्रा की अवधि पर लागू होने वाली सीमा. किसी |
routeDistanceLimit |
वाहन के पूरे रास्ते पर तय की गई दूरी के लिए सीमा लागू की गई है. किसी |
extraVisitDurationForVisitType |
इससे visitTypes स्ट्रिंग से अवधि तक का मैप तय होता है. समयावधि, अगर किसी विज़िट के अनुरोध में कई तरह की समस्याएं हैं, तो मैप में हर समस्या के लिए अवधि जोड़ दी जाएगी. |
breakRule |
इस वाहन पर लागू होने वाले ब्रेक के शेड्यूल के बारे में बताता है. अगर यह फ़ील्ड खाली है, तो इस वाहन के लिए कोई ब्रेक शेड्यूल नहीं किया जाएगा. |
label |
इससे इस वाहन के लिए लेबल तय किया जाता है. इस लेबल को रिस्पॉन्स में, इससे जुड़े |
ignore |
अगर यह वैल्यू सही है, तो अगर किसी शिपमेंट को अगर शिपमेंट, |
travelDurationMultiple |
इस एट्रिब्यूट से, यात्रा के समय को बढ़ाने या घटाने के लिए इस्तेमाल किए जा सकने वाले मल्टीप्लिकेटिव फ़ैक्टर के बारे में पता चलता है. उदाहरण के लिए, इसे 2.0 पर सेट करने का मतलब है कि यह वाहन धीमा है और इसे यात्रा करने में उतना समय लगता है जितना स्टैंडर्ड वाहनों को लगता है. इस मल्टीपल से, विज़िट की अवधि पर कोई असर नहीं पड़ता. अगर चेतावनी: इस मल्टीपल को लागू करने के बाद, यात्रा के समय को सबसे नज़दीकी सेकंड में बदल दिया जाएगा. हालांकि, ऐसा कोई भी संख्यात्मक ऑपरेशन करने से पहले किया जाएगा. इसलिए, छोटे मल्टीपल से सटीक जानकारी नहीं मिल सकती. नीचे दी गई |
TravelMode
यात्रा के ऐसे मोड जिनका इस्तेमाल वाहन कर सकते हैं.
ये Google Maps Platform Routes API के यात्रा के मोड का सबसेट होना चाहिए. इसके लिए, यह देखें: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
ध्यान दें: WALKING रास्ते बीटा वर्शन में हैं. ऐसा हो सकता है कि इनमें कभी-कभी साफ़ तौर पर फ़ुटपाथ या पैदल चलने के रास्ते न दिखें. आपको अपने ऐप्लिकेशन में पैदल चलने के सभी रास्तों के लिए, उपयोगकर्ता को यह चेतावनी दिखानी होगी.
| Enums | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
यात्रा के मोड की जानकारी नहीं दी गई है. यह DRIVING के बराबर है. |
DRIVING |
ड्राइविंग के लिए रास्ते के निर्देशों (कार, ...) के हिसाब से यात्रा का मोड. |
WALKING |
पैदल रास्ते की जानकारी के लिए यात्रा का मोड. |
RouteModifiers
इसमें वाहन के रास्ते का हिसाब लगाते समय, ज़रूरी शर्तों का एक सेट शामिल होता है. यह Google Maps Platform Routes Preferred API में मौजूद RouteModifiers जैसा ही है. इसके बारे में यहां जानें: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| JSON के काेड में दिखाना |
|---|
{ "avoidTolls": boolean, "avoidHighways": boolean, "avoidFerries": boolean, "avoidIndoor": boolean } |
| फ़ील्ड | |
|---|---|
avoidTolls |
इससे यह तय होता है कि जहां ज़रूरी हो वहां टोल वाली सड़कों से बचना है या नहीं. टोल वाली सड़कों से बचने वाले रास्तों को प्राथमिकता दी जाएगी. यह सुविधा सिर्फ़ मोटर से चलने वाले वाहनों के लिए उपलब्ध है. |
avoidHighways |
इस विकल्प से यह तय होता है कि जहां ज़रूरी हो वहां हाइवे से बचा जाए या नहीं. ऐसे रास्तों को प्राथमिकता दी जाएगी जिनमें हाइवे शामिल नहीं हैं. यह सुविधा सिर्फ़ मोटर से चलने वाले वाहनों के लिए उपलब्ध है. |
avoidFerries |
इससे यह तय होता है कि जहां ज़रूरी हो वहां फ़ेरी से यात्रा करने से बचना है या नहीं. उन रास्तों को प्राथमिकता दी जाएगी जिनमें फ़ेरी से यात्रा नहीं करनी पड़ती. यह सुविधा सिर्फ़ मोटर से चलने वाले वाहनों के लिए उपलब्ध है. |
avoidIndoor |
ज़रूरी नहीं. इससे यह तय होता है कि जहां ज़रूरी हो वहां इंडोर नेविगेशन से बचना है या नहीं. उन रास्तों को प्राथमिकता दी जाएगी जिनमें इंडोर नेविगेशन की सुविधा नहीं है. यह सुविधा सिर्फ़ |
UnloadingPolicy
वाहन से सामान उतारने का तरीका बताने वाली नीति. यह सिर्फ़ उन शिपमेंट पर लागू होता है जिनमें पिकअप और डिलीवरी, दोनों की सुविधा उपलब्ध है.
unloadingPolicy के अलावा, अन्य शिपमेंट को रास्ते में कहीं भी डिलीवर किया जा सकता है.
| Enums | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
सामान उतारने की नीति के बारे में जानकारी नहीं दी गई है. डिलीवरी, पिकअप के बाद ही होनी चाहिए. |
LAST_IN_FIRST_OUT |
डिलीवरी, पिकअप के उलट क्रम में होनी चाहिए |
FIRST_IN_FIRST_OUT |
डिलीवरी उसी क्रम में होनी चाहिए जिस क्रम में पिकअप किए गए थे |
LoadLimit
इससे किसी वाहन पर सामान ले जाने की सीमा तय की जाती है. उदाहरण के लिए, "यह ट्रक सिर्फ़ 3,500 किलोग्राम तक का सामान ले जा सकता है". loadLimits देखें.
| JSON के काेड में दिखाना |
|---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
| फ़ील्ड | |
|---|---|
softMaxLoad |
लोड की एक सॉफ्ट लिमिट. |
costPerUnitAboveSoftMax |
अगर इस वाहन के रास्ते में कभी भी लोड |
startLoadInterval |
रास्ते की शुरुआत में, वाहन के लिए स्वीकार्य लोड इंटरवल. |
endLoadInterval |
रास्ते के आखिर में, वाहन के लिए स्वीकार किया जाने वाला लोड इंटरवल. |
maxLoad |
ज़्यादा से ज़्यादा कितना लोड स्वीकार किया जा सकता है. |
costPerKilometer |
इस वाहन के लिए, एक किलोमीटर तक एक यूनिट लोड ले जाने की लागत. इसका इस्तेमाल ईंधन की खपत के प्रॉक्सी के तौर पर किया जा सकता है: अगर लोड का वज़न (न्यूटन में) है, तो लोड*किलोमीटर में ऊर्जा का डाइमेंशन होता है. एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request पर जाएं. |
costPerTraveledHour |
इस वाहन के लिए, एक घंटे में लोड की एक यूनिट के साथ यात्रा करने की लागत. एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request पर जाएं. |
इंटरवल
स्वीकार किए जा सकने वाले लोड की रकम का इंटरवल.
| JSON के काेड में दिखाना |
|---|
{ "min": string, "max": string } |
| फ़ील्ड | |
|---|---|
min |
कम से कम इतना लोड होना चाहिए. यह वैल्यू, 0 या इससे ज़्यादा होनी चाहिए. अगर दोनों वैल्यू दी गई हैं, तो |
max |
ज़्यादा से ज़्यादा स्वीकार्य लोड. यह वैल्यू, 0 या इससे ज़्यादा होनी चाहिए. अगर इस एट्रिब्यूट की वैल्यू नहीं दी जाती है, तो इस मैसेज से ज़्यादा से ज़्यादा लोड पर कोई पाबंदी नहीं लगती. अगर दोनों वैल्यू दी गई हैं, तो |
LoadCost
Transition के दौरान, एक यूनिट लोड को ले जाने की लागत. किसी दिए गए लोड के लिए, लागत दो हिस्सों का योग होती है:
- min(load,
loadThreshold) *costPerUnitBelowThreshold - max(0, लोड -
loadThreshold) *costPerUnitAboveThreshold
इस लागत के साथ, समाधान पहले ज़्यादा मांग वाले प्रॉडक्ट डिलीवर करते हैं या ज़्यादा मांग वाले प्रॉडक्ट को आखिर में पिकअप करते हैं. उदाहरण के लिए, अगर किसी वाहन में
load_limit {
key: "weight"
value {
costPerKilometer {
loadThreshold: 15
costPerUnitBelowThreshold: 2.0
costPerUnitAboveThreshold: 10.0
}
}
}
और इसका रूट, start,pickup,pickup,delivery,delivery,end है. इसमें ये ट्रांज़िशन शामिल हैं:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
तो इस LoadCost के लिए, (cost_below * load_below * kilometers + cost_above * load_above * kms) का शुल्क लगेगा
- ट्रांज़िशन 0: 0.0
- ट्रांज़िशन 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- ट्रांज़िशन 2: 2.0 * 15 * 1.0 + 10.0 * (20 - 15) * 1.0 = 80.0
- ट्रांज़िशन 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- ट्रांज़िशन 4: 0.0
इसलिए, रास्ते के ऊपर LoadCost की वैल्यू 120.0 है.
हालांकि, अगर ट्रांज़िशन के साथ रूट इस तरह से दिया गया है: शुरू, पिकअप, डिलीवरी, पिकअप, डिलीवरी, खत्म, तो:
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travelDistanceMeters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travelDistanceMeters: 1000.0 }
तो इस LoadCost पर होने वाला खर्च यह है
- ट्रांज़िशन 0: 0.0
- ट्रांज़िशन 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- ट्रांज़िशन 2: 0.0
- ट्रांज़िशन 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- ट्रांज़िशन 4: 0.0
यहां रास्ते पर LoadCost 40.0 है.
LoadCost से, ज़्यादा ट्रांज़िशन वाले समाधानों की कीमत बढ़ जाती है.
एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request पर जाएं.
| JSON के काेड में दिखाना |
|---|
{ "loadThreshold": string, "costPerUnitBelowThreshold": number, "costPerUnitAboveThreshold": number } |
| फ़ील्ड | |
|---|---|
loadThreshold |
लोड की वह मात्रा जिसके बाद, लोड की एक यूनिट को ले जाने की लागत, costPerUnitBelowThreshold से बदलकर costPerUnitAboveThreshold हो जाती है. यह >= 0 होनी चाहिए. |
costPerUnitBelowThreshold |
थ्रेशोल्ड से 0 के बीच की हर यूनिट के लिए, लोड की एक यूनिट को ले जाने की लागत. यह एक सीमित वैल्यू होनी चाहिए और इसकी वैल्यू 0 से ज़्यादा या इसके बराबर होनी चाहिए. |
costPerUnitAboveThreshold |
थ्रेशोल्ड से ऊपर की हर यूनिट के लिए, लोड की एक यूनिट को ले जाने की लागत. खास मामले में थ्रेशोल्ड = 0 होने पर, यह हर यूनिट के लिए तय की गई लागत होती है. यह एक सीमित वैल्यू होनी चाहिए और इसकी वैल्यू 0 से ज़्यादा या इसके बराबर होनी चाहिए. |
DurationLimit
यह किसी वाहन के रास्ते की ज़्यादा से ज़्यादा अवधि तय करती है. यह हार्ड या सॉफ्ट हो सकता है.
सॉफ़्ट लिमिट फ़ील्ड तय किए जाने पर, सॉफ़्ट मैक्स थ्रेशोल्ड और उससे जुड़ी लागत, दोनों को एक साथ तय किया जाना चाहिए.
| JSON के काेड में दिखाना |
|---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
| फ़ील्ड | |
|---|---|
maxDuration |
यह एक तय सीमा होती है. इससे ज़्यादा अवधि के लिए, एनटाइटलमेंट नहीं दिया जा सकता. |
softMaxDuration |
यह एक सॉफ्ट लिमिट है, जिसमें ज़्यादा से ज़्यादा अवधि की सीमा लागू नहीं होती. हालांकि, इसका उल्लंघन करने पर, रूट पर शुल्क लगता है. यह लागत, मॉडल में बताई गई अन्य लागतों में जुड़ जाती है. इसकी यूनिट भी वही होती है. अगर यह वैल्यू दी गई है, तो |
quadraticSoftMaxDuration |
सॉफ़्ट लिमिट में, ज़्यादा से ज़्यादा अवधि की सीमा लागू नहीं होती. हालांकि, इसका उल्लंघन करने पर, अवधि के हिसाब से रास्ते पर खर्च होता है. यह लागत, मॉडल में बताई गई अन्य लागतों में जुड़ जाती है. इसकी यूनिट भी वही होती है. अगर
|
costPerHourAfterSoftMax |
लागत नेगेटिव नहीं होनी चाहिए. |
costPerSquareHourAfterQuadraticSoftMax |
अगर अवधि थ्रेशोल्ड से कम है, तो अतिरिक्त शुल्क नहीं लगता. अगर अवधि थ्रेशोल्ड से ज़्यादा है, तो शुल्क इस तरह से तय होता है: लागत नेगेटिव नहीं होनी चाहिए. |
DistanceLimit
यह एक सीमा है, जो तय करती है कि ज़्यादा से ज़्यादा कितनी दूरी तय की जा सकती है. यह हार्ड या सॉफ्ट हो सकता है.
अगर कोई सॉफ्ट लिमिट तय की गई है, तो softMaxMeters और costPerKilometerAboveSoftMax, दोनों को तय किया जाना चाहिए. साथ ही, इनकी वैल्यू शून्य या उससे ज़्यादा होनी चाहिए.
| JSON के काेड में दिखाना |
|---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerBelowSoftMax": number, "costPerKilometerAboveSoftMax": number } |
| फ़ील्ड | |
|---|---|
maxMeters |
यह एक तय सीमा है. इसके हिसाब से, दूरी ज़्यादा से ज़्यादा maxMeters होनी चाहिए. सीमा, शून्य या इससे ज़्यादा होनी चाहिए. |
softMaxMeters |
सॉफ़्ट लिमिट में, ज़्यादा से ज़्यादा दूरी की सीमा लागू नहीं की जाती है. हालांकि, इसका उल्लंघन करने पर, मॉडल में तय की गई अन्य लागतों में एक और लागत जुड़ जाती है. इसकी यूनिट भी वही होती है. अगर softMaxMeters को तय किया गया है, तो यह maxMeters से कम होना चाहिए और इसकी वैल्यू शून्य या इससे ज़्यादा होनी चाहिए. |
costPerKilometerBelowSoftMax |
प्रति किलोमीटर के हिसाब से खर्च,
|
costPerKilometerAboveSoftMax |
अगर दूरी लागत नेगेटिव नहीं होनी चाहिए. |
BreakRule
किसी वाहन के लिए ब्रेक का समय तय करने से जुड़े नियम. जैसे, लंच ब्रेक. ब्रेक, एक तय समय होता है. इस दौरान, वाहन अपनी मौजूदा जगह पर खड़ा रहता है और कोई विज़िट नहीं कर सकता. ब्रेक तब हो सकता है, जब:
- दो विज़िट के बीच की यात्रा के दौरान (इसमें विज़िट से ठीक पहले या ठीक बाद का समय शामिल है, लेकिन विज़िट के बीच का समय शामिल नहीं है). ऐसे मामले में, यह विज़िट के बीच के संबंधित ट्रांज़िट समय को बढ़ा देता है,
- या वाहन के शुरू होने से पहले (ऐसा हो सकता है कि वाहन ब्रेक के बीच में शुरू न हो), इस मामले में वाहन के शुरू होने के समय पर कोई असर नहीं पड़ता.
- या वाहन के खत्म होने के बाद (वाहन के खत्म होने के समय के साथ).
| JSON के काेड में दिखाना |
|---|
{ "breakRequests": [ { object ( |
| फ़ील्ड | |
|---|---|
breakRequests[] |
ब्रेक का क्रम. |
frequencyConstraints[] |
कई |
BreakRequest
हर वाहन पर लागू होने वाले ब्रेक का क्रम (यानी कि उनकी संख्या और क्रम) पहले से पता होना चाहिए. बार-बार इस्तेमाल किए गए BreakRequest से उस क्रम के बारे में पता चलता है. साथ ही, यह भी पता चलता है कि उन्हें किस क्रम में होना चाहिए. ऐसा हो सकता है कि डिलीवरी के लिए तय की गई समयसीमाएं (earliestStartTime / latestStartTime) एक-दूसरे से मेल खाएं. हालांकि, यह ज़रूरी है कि वे ऑर्डर के हिसाब से हों. इसकी जांच की जाती है.
| JSON के काेड में दिखाना |
|---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
| फ़ील्ड | |
|---|---|
earliestStartTime |
ज़रूरी है. ब्रेक शुरू होने की निचली सीमा (शामिल है). यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
latestStartTime |
ज़रूरी है. ब्रेक शुरू होने की ज़्यादा से ज़्यादा अवधि (शामिल है). यह आरएफ़सी 3339 का इस्तेमाल करता है. इसमें जनरेट किया गया आउटपुट हमेशा Z-नॉर्मलाइज़ किया जाएगा और इसमें 0, 3, 6 या 9 फ़्रैक्शनल अंक इस्तेमाल किए जाएंगे. "Z" के अलावा, अन्य ऑफ़सेट भी स्वीकार किए जाते हैं. उदाहरण: |
minDuration |
ज़रूरी है. ब्रेक की कम से कम अवधि. वैल्यू पॉज़िटिव होनी चाहिए. |
FrequencyConstraint
ऊपर बताए गए ब्रेक की फ़्रीक्वेंसी और अवधि को और भी सीमित किया जा सकता है. इसके लिए, ब्रेक की कम से कम फ़्रीक्वेंसी तय की जा सकती है. जैसे, "हर 12 घंटे में कम से कम एक घंटे का ब्रेक होना चाहिए". मान लें कि इसका मतलब यह है कि "12 घंटे की किसी भी समयावधि में, कम से कम एक घंटे का ब्रेक होना चाहिए". इस उदाहरण को इस FrequencyConstraint में बदला जाएगा:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
समाधान में ब्रेक का समय और अवधि, इन सभी शर्तों के मुताबिक होगी. साथ ही, BreakRequest में पहले से तय की गई समयसीमा और कम से कम अवधि का भी पालन किया जाएगा.
FrequencyConstraint का इस्तेमाल, लगातार न होने वाले ब्रेक के लिए भी किया जा सकता है. उदाहरण के लिए, यहां दिया गया शेड्यूल "हर 12 घंटे में एक घंटा" के उदाहरण के मुताबिक है:
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
| JSON के काेड में दिखाना |
|---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
| फ़ील्ड | |
|---|---|
minBreakDuration |
ज़रूरी है. इस शर्त के लिए, ब्रेक की कम से कम अवधि. शून्य या उससे ज़्यादा. |
maxInterBreakDuration |
ज़रूरी है. रास्ते में किसी भी समय अंतराल की ज़्यादा से ज़्यादा अवधि, जिसमें कम से कम |
मकसद
लक्ष्य, लागत मॉडल की जगह ले लेते हैं. इसलिए, ये पहले से मौजूद लागत के साथ काम नहीं करते. हर लक्ष्य को पहले से तय की गई लागतों की संख्या के साथ मैप किया जाता है. उदाहरण के लिए, वाहन, शिपमेंट या ट्रांज़िशन एट्रिब्यूट.
एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request पर जाएं.
| JSON के काेड में दिखाना |
|---|
{
"type": enum ( |
| फ़ील्ड | |
|---|---|
type |
मकसद किस तरह का है. |
weight |
यह लक्ष्य, अन्य लक्ष्यों की तुलना में कितना अहम है. यह कोई भी नॉन-नेगेटिव संख्या हो सकती है. यह ज़रूरी नहीं है कि वज़न का योग 1 हो. वज़न की डिफ़ॉल्ट वैल्यू 1.0 होती है. |
टाइप
मकसद का वह टाइप जिसे लागत के सेट के साथ मैप किया जाएगा.
| Enums | |
|---|---|
DEFAULT |
लागत का डिफ़ॉल्ट सेट इस्तेमाल किया जाएगा, ताकि सही समाधान मिल सके. ध्यान दें: इस लक्ष्य का इस्तेमाल अकेले किया जा सकता है. हालांकि, अगर यह लक्ष्य पहले से मौजूद नहीं है, तो इसे हमेशा 1.0 के वेट के साथ, उपयोगकर्ता के तय किए गए लक्ष्यों में बेसलाइन के तौर पर जोड़ा जाएगा. |
MIN_DISTANCE |
"MIN" उद्देश्यों को पूरा करने में मदद करना. तय की गई कुल दूरी को कम करना. |
MIN_WORKING_TIME |
सभी वाहनों के लिए, काम में लगने वाले कुल समय को कम से कम करें. |
MIN_TRAVEL_TIME |
ऊपर दिए गए उदाहरण की तरह ही, लेकिन इसमें सिर्फ़ यात्रा में लगने वाले समय पर फ़ोकस किया गया है. |
MIN_NUM_VEHICLES |
कम से कम वाहनों का इस्तेमाल करें. |
DurationDistanceMatrix
यह कुकी, यात्रा शुरू करने और खत्म करने की जगहों के बीच की दूरी और समय की जानकारी देती है.
| JSON के काेड में दिखाना |
|---|
{
"rows": [
{
object ( |
| फ़ील्ड | |
|---|---|
rows[] |
इससे अवधि और दूरी के मैट्रिक्स की पंक्तियों के बारे में पता चलता है. इसमें |
vehicleStartTag |
टैग से यह तय होता है कि यह अवधि और दूरी का मैट्रिक्स किन वाहनों पर लागू होता है. अगर यह खाली है, तो यह सभी वाहनों पर लागू होता है. साथ ही, सिर्फ़ एक मैट्रिक्स हो सकता है. हर वाहन के शुरू होने की स्थिति, सिर्फ़ एक मैट्रिक्स से मेल खानी चाहिए. इसका मतलब है कि उनके सभी मैट्रिक्स में अलग-अलग |
पंक्ति
यह अवधि और दूरी के मैट्रिक्स की लाइन के बारे में बताता है.
| JSON के काेड में दिखाना |
|---|
{ "durations": [ string ], "meters": [ number ] } |
| फ़ील्ड | |
|---|---|
durations[] |
किसी दी गई लाइन के लिए अवधि की वैल्यू. इसमें |
meters[] |
किसी दी गई लाइन के लिए दूरी की वैल्यू. अगर मॉडल में दूरी से जुड़ी कोई लागत या शर्त नहीं है, तो इसे खाली छोड़ा जा सकता है. अगर ऐसा नहीं है, तो इसमें |
TransitionAttributes
इस कुकी से, किसी रास्ते पर दो बार लगातार जाने के बीच ट्रांज़िशन के एट्रिब्यूट के बारे में पता चलता है. एक ही ट्रांज़िशन पर कई TransitionAttributes लागू हो सकते हैं. ऐसे में, सभी अतिरिक्त लागतें जुड़ जाती हैं और सबसे सख्त शर्त या सीमा लागू होती है. यह "AND" के सिमैंटिक के हिसाब से होता है.
| JSON के काेड में दिखाना |
|---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
| फ़ील्ड | |
|---|---|
srcTag |
ऐसे टैग जो (src->dst) ट्रांज़िशन का सेट तय करते हैं. ये एट्रिब्यूट इन पर लागू होते हैं. सोर्स विज़िट या वाहन के शुरू होने की स्थिति तब मैच होती है, जब उसके |
excludedSrcTag |
|
dstTag |
किसी डेस्टिनेशन पर जाने या वाहन के रुकने की जगह की जानकारी तब मैच होती है, जब उसके |
excludedDstTag |
|
cost |
इस ट्रांज़िशन को पूरा करने के लिए लगने वाला शुल्क बताता है. यह मॉडल में मौजूद अन्य सभी लागतों की तरह ही यूनिट में होता है और इसकी वैल्यू नेगेटिव नहीं होनी चाहिए. यह शुल्क, अन्य सभी मौजूदा शुल्कों के अलावा लिया जाता है. |
costPerKilometer |
इससे, इस ट्रांज़िशन के दौरान तय की गई दूरी के हिसाब से, प्रति किलोमीटर का शुल्क तय किया जाता है. यह वाहनों पर तय किए गए किसी भी |
distanceLimit |
इससे यह तय किया जाता है कि ट्रांज़िशन के दौरान कितनी दूरी तय की जा सकती है. जून 2021 से, सिर्फ़ सॉफ्ट लिमिट सेट की जा सकती हैं. |
delay |
इस ट्रांज़िशन को पूरा करने में लगे समय के बारे में बताता है. यह देरी हमेशा सोर्स विज़िट खत्म होने के बाद और डेस्टिनेशन विज़िट शुरू होने से पहले होती है. |
ShipmentTypeIncompatibility
इससे शिपमेंट के टाइप के हिसाब से, शिपमेंट के बीच के अंतर के बारे में पता चलता है. एक ही रास्ते पर, शिपिंग के लिए इस्तेमाल किए जा सकने वाले वाहनों के हिसाब से सही नहीं होने वाले शिपमेंट को दिखाने पर पाबंदी लगाई जाती है. यह पाबंदी, इस्तेमाल किए जा सकने वाले वाहनों के हिसाब से सही नहीं होने वाले शिपमेंट के मोड के आधार पर लगाई जाती है.
| JSON के काेड में दिखाना |
|---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
| फ़ील्ड | |
|---|---|
types[] |
ऐसे टाइप की सूची जो काम नहीं करते. अगर दो शिपमेंट के लिए, सूची में शामिल |
incompatibilityMode |
मोड, जो काम न करने वाली सुविधा पर लागू होता है. |
IncompatibilityMode
ये मोड तय करते हैं कि एक ही रूट पर, ज़रूरी शर्तें पूरी न करने वाले शिपमेंट को कैसे दिखाया जाएगा.
| Enums | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
अनुकूलता मोड के बारे में जानकारी नहीं दी गई है. इस वैल्यू का इस्तेमाल कभी नहीं किया जाना चाहिए. |
NOT_PERFORMED_BY_SAME_VEHICLE |
इस मोड में, अलग-अलग तरह के दो शिपमेंट को एक ही वाहन में नहीं भेजा जा सकता. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
इस मोड में, एक ही तरह के वाहन में एक साथ दो ऐसे शिपमेंट नहीं रखे जा सकते जो एक-दूसरे के साथ काम नहीं करते:
|
ShipmentTypeRequirement
यह शिपमेंट टाइप के आधार पर, शिपमेंट के बीच की ज़रूरी शर्तों के बारे में बताता है. ज़रूरी शर्तों के बारे में ज़्यादा जानकारी, ज़रूरी शर्तों के मोड से तय होती है.
| JSON के काेड में दिखाना |
|---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
| फ़ील्ड | |
|---|---|
requiredShipmentTypeAlternatives[] |
|
dependentShipmentTypes[] |
ध्यान दें: ज़रूरी शर्तों की ऐसी चेन की अनुमति नहीं है जिसमें |
requirementMode |
ज़रूरत के हिसाब से लागू किया गया मोड. |
RequirementMode
ये मोड, किसी रास्ते पर मौजूद डिपेंडेंट शिपमेंट के दिखने के तरीके के बारे में बताते हैं.
| Enums | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
ज़रूरी शर्तों के मोड की जानकारी नहीं दी गई है. इस वैल्यू का इस्तेमाल कभी नहीं किया जाना चाहिए. |
PERFORMED_BY_SAME_VEHICLE |
इस मोड में, सभी "डिपेंडेंट" शिपमेंट को उसी वाहन में भेजना होगा जिसमें कम से कम एक "ज़रूरी" शिपमेंट भेजा गया है. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
इसलिए, "डिपेंडेंट" शिपमेंट के पिकअप के लिए, इनमें से कोई एक विकल्प चुना जाना चाहिए:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
यह सुविधा पहले की तरह ही काम करती है. हालांकि, "डिपेंडेंट" शिपमेंट के लिए, यह ज़रूरी है कि डिलीवरी के समय, वाहन में "ज़रूरी" शिपमेंट मौजूद हो. |
PrecedenceRule
दो इवेंट के बीच प्राथमिकता का नियम (हर इवेंट, शिपमेंट को पिकअप या डिलीवर करने से जुड़ा है): "दूसरे" इवेंट को "पहले" इवेंट के शुरू होने के कम से कम offsetDuration बाद शुरू होना चाहिए.
एक ही (या मिलते-जुलते) इवेंट के लिए, कई पूर्ववर्ती इवेंट हो सकते हैं. उदाहरण के लिए, "B को पिकअप करने के बाद A की डिलीवरी होती है" और "B को पिकअप करने के बाद C को पिकअप किया जाता है".
इसके अलावा, प्राथमिकताएं सिर्फ़ तब लागू होती हैं, जब दोनों शिपमेंट पूरे हो चुके हों. ऐसा न होने पर, इन्हें अनदेखा कर दिया जाता है.
| JSON के काेड में दिखाना |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| फ़ील्ड | |
|---|---|
firstIsDelivery |
इससे पता चलता है कि "पहला" इवेंट, डिलीवरी है या नहीं. |
secondIsDelivery |
इससे पता चलता है कि "दूसरा" इवेंट, डिलीवरी है या नहीं. |
offsetDuration |
"पहले" और "दूसरे" इवेंट के बीच का ऑफ़सेट. यह नेगेटिव हो सकता है. |
firstIndex |
"first" इवेंट का शिपमेंट इंडेक्स. यह फ़ील्ड भरना ज़रूरी है. |
secondIndex |
"second" इवेंट का शिपमेंट इंडेक्स. यह फ़ील्ड भरना ज़रूरी है. |