- JSON काेड में दिखाना
- शिपमेंट
- VisitRequest
- LatLng
- Waypoint
- जगह की जानकारी
- TimeWindow
- वाहन
- TravelMode
- RouteModifiers
- UnloadingPolicy
- LoadLimit
- इंटरवल
- LoadCost
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- मकसद
- समस्या
- DurationDistanceMatrix
- पंक्ति
- 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[] |
मॉडल में इस्तेमाल किए गए अवधि और दूरी के मैट्रिक्स के बारे में बताता है. अगर यह फ़ील्ड खाली है, तो Google Maps या जियोडेसिक दूरी का इस्तेमाल किया जाएगा. यह इस्तेमाल करने के उदाहरण:
|
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 |
अगर यह वैल्यू true पर सेट है, तो इस शिपमेंट को छोड़ दें. हालांकि, अगर मॉडल में कोई
|
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 |
इससे पता चलता है कि वेपॉइंट, वाहनों के रुकने के लिए है. इसका मकसद, यात्रियों को पिक अप या ड्रॉप करना है. यह विकल्प सिर्फ़ 'DRIVING' ट्रैवल मोड के लिए काम करता है. साथ ही, 'locationType' की वैल्यू 'location' होने पर ही काम करता है. एक्सपेरिमेंट के तौर पर: इस फ़ील्ड के काम करने के तरीके या मौजूदगी में आने वाले समय में बदलाव हो सकता है. |
| किसी जगह को दिखाने के अलग-अलग तरीके. यहां ऐसे फ़ील्ड की सूची दी गई है जो एक-दूसरे से अलग हैं. जवाब में, ज़्यादा से ज़्यादा एक फ़ील्ड सेट किया जाएगा: | |
location |
भौगोलिक निर्देशांकों का इस्तेमाल करके तय की गई जगह. इसमें वैकल्पिक हेडिंग भी शामिल है. |
placeId |
वेपॉइंट से जुड़ा, लोकप्रिय जगह का आईडी. VisitRequest में, आने या जाने की जगह की जानकारी देने के लिए, जगह के आईडी का इस्तेमाल करें. इसके लिए, ऐसा आईडी इस्तेमाल करें जिससे जगह की जानकारी देने के लिए, अक्षांश और देशांतर की जानकारी मिल सके. उदाहरण के लिए, किसी इमारत को दिखाने वाली जगह का आईडी सही है. हालांकि, किसी सड़क को दिखाने वाली जगह का आईडी इस्तेमाल करने का सुझाव नहीं दिया जाता. |
| एक-दूसरे से अलग फ़ील्ड का अंत. | |
जगह
यह किसी जगह की जानकारी को एन्कैप्सुलेट करता है. इसमें भौगोलिक पॉइंट और हेडिंग शामिल होती है. हालांकि, हेडिंग देना ज़रूरी नहीं है.
| JSON के काेड में दिखाना |
|---|
{
"latLng": {
object ( |
| फ़ील्ड | |
|---|---|
latLng |
वेपॉइंट के भौगोलिक निर्देशांक. |
heading |
ट्रैफ़िक के फ़्लो की दिशा से जुड़ी कंपास हेडिंग. इस वैल्यू का इस्तेमाल, पिकअप और ड्रॉप-ऑफ़ के लिए सड़क के किनारे की जानकारी देने के लिए किया जाता है. हेडिंग की वैल्यू 0 से 360 तक हो सकती हैं. इसमें 0 का मतलब उत्तर दिशा, 90 का मतलब पूर्व दिशा वगैरह होता है. |
TimeWindow
टाइम विंडो, किसी इवेंट के समय को सीमित करती हैं. जैसे, किसी विज़िट पर पहुंचने का समय या किसी वाहन के शुरू होने और खत्म होने का समय.
समयसीमा की तय सीमाएं, startTime और endTime, इवेंट के शुरू होने और खत्म होने के समय को लागू करती हैं, जैसे कि startTime <= event_time <=
endTime. सॉफ़्ट टाइम विंडो की निचली सीमा, 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 |
यह फ़ील्ड सिर्फ़ उन वाहनों पर लागू होता है जिनके रास्ते में कोई शिपमेंट नहीं होता. इससे पता चलता है कि इस मामले में, वाहन को इस्तेमाल किया गया माना जाना चाहिए या नहीं. अगर यह वैल्यू true पर सेट है, तो वाहन अपनी शुरुआती जगह से आखिरी जगह तक जाता है. भले ही, वह कोई शिपमेंट डिलीवर न करे. साथ ही, शुरुआती जगह से आखिरी जगह तक की यात्रा में लगने वाले समय और दूरी की लागत को ध्यान में रखा जाता है. ऐसा न होने पर, यह वाहन अपनी यात्रा के शुरुआती स्टॉप से आखिरी स्टॉप तक नहीं जाता. साथ ही, इस वाहन के लिए कोई |
routeDurationLimit |
वाहन के रूट की कुल अवधि पर लागू की गई सीमा. किसी |
travelDurationLimit |
वाहन के रास्ते की यात्रा की अवधि पर लागू सीमा. किसी |
routeDistanceLimit |
वाहन के रूट की कुल दूरी पर सीमा लागू की गई है. किसी |
extraVisitDurationForVisitType |
इससे visitTypes स्ट्रिंग से लेकर समयावधि तक का मैप तय होता है. यह समयावधि, अगर विज़िट के अनुरोध में एक से ज़्यादा तरह की विज़िट शामिल हैं, तो मैप में हर तरह की विज़िट के लिए समयावधि जोड़ी जाएगी. |
breakRule |
इस वाहन पर लागू होने वाले ब्रेक शेड्यूल के बारे में बताता है. अगर यह फ़ील्ड खाली है, तो इस वाहन के लिए कोई ब्रेक शेड्यूल नहीं किया जाएगा. |
label |
इससे इस वाहन के लिए लेबल तय होता है. इस लेबल को रिस्पॉन्स में, उससे जुड़े |
ignore |
अगर इसकी वैल्यू true है, तो अगर अगर |
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 |
पैदल रास्ते की जानकारी के लिए यात्रा का मोड. |
TWO_WHEELER |
दोपहिया, मोटर वाला वाहन. उदाहरण के लिए, मोटरसाइकिल. यात्रा का यह मोड सिर्फ़ उन देशों में काम करता है जिनकी सूची दो पहिया वाहनों के लिए उपलब्ध देश और इलाके में दी गई है. |
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, load -
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 |
एक तय सीमा, जो अवधि को ज़्यादा से ज़्यादा 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 घंटे में कम से कम 1 घंटे का ब्रेक होना चाहिए". मान लें कि इसे इस तरह समझा जा सकता है, "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 बाद शुरू होना चाहिए.
एक ही (या मिलते-जुलते) इवेंट के लिए, कई प्राथमिकताएं हो सकती हैं. उदाहरण के लिए, "A की डिलीवरी के बाद B को पिकअप किया जाता है" और "B के पिकअप के बाद C को पिकअप किया जाता है".
इसके अलावा, प्राथमिकताएं सिर्फ़ तब लागू होती हैं, जब दोनों शिपमेंट किए जाते हैं. ऐसा न होने पर, इन्हें अनदेखा कर दिया जाता है.
| JSON के काेड में दिखाना |
|---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
| फ़ील्ड | |
|---|---|
firstIsDelivery |
इससे पता चलता है कि "पहला" इवेंट, डिलीवरी है या नहीं. |
secondIsDelivery |
इससे पता चलता है कि "दूसरा" इवेंट, डिलीवरी है या नहीं. |
offsetDuration |
"पहले" और "दूसरे" इवेंट के बीच का ऑफ़सेट. यह नेगेटिव हो सकता है. |
firstIndex |
"पहले" इवेंट का शिपमेंट इंडेक्स. इस फ़ील्ड में जानकारी देना ज़रूरी है. |
secondIndex |
"दूसरे" इवेंट का शिपमेंट इंडेक्स. इस फ़ील्ड में जानकारी देना ज़रूरी है. |