इंडेक्स
RouteOptimization
(इंटरफ़ेस)AggregatedMetrics
(मैसेज)BatchOptimizeToursMetadata
(मैसेज)BatchOptimizeToursRequest
(मैसेज)BatchOptimizeToursRequest.AsyncModelConfig
(मैसेज)BatchOptimizeToursResponse
(मैसेज)BreakRule
(मैसेज)BreakRule.BreakRequest
(मैसेज)BreakRule.FrequencyConstraint
(मैसेज)DataFormat
(enum)DistanceLimit
(मैसेज)GcsDestination
(मैसेज)GcsSource
(मैसेज)InjectedSolutionConstraint
(मैसेज)InjectedSolutionConstraint.ConstraintRelaxation
(मैसेज)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation
(मैसेज)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level
(enum)InputConfig
(मैसेज)Location
(मैसेज)OptimizeToursRequest
(मैसेज)OptimizeToursRequest.SearchMode
(enum)OptimizeToursRequest.SolvingMode
(enum)OptimizeToursResponse
(मैसेज)OptimizeToursResponse.Metrics
(मैसेज)OptimizeToursValidationError
(मैसेज)OptimizeToursValidationError.FieldReference
(मैसेज)OutputConfig
(मैसेज)RouteModifiers
(मैसेज)Shipment
(मैसेज)Shipment.Load
(मैसेज)Shipment.VisitRequest
(मैसेज)ShipmentModel
(मैसेज)ShipmentModel.DurationDistanceMatrix
(मैसेज)ShipmentModel.DurationDistanceMatrix.Row
(मैसेज)ShipmentModel.PrecedenceRule
(मैसेज)ShipmentRoute
(मैसेज)ShipmentRoute.Break
(मैसेज)ShipmentRoute.EncodedPolyline
(मैसेज)ShipmentRoute.Transition
(मैसेज)ShipmentRoute.VehicleLoad
(मैसेज)ShipmentRoute.Visit
(मैसेज)ShipmentTypeIncompatibility
(मैसेज)ShipmentTypeIncompatibility.IncompatibilityMode
(enum)ShipmentTypeRequirement
(मैसेज)ShipmentTypeRequirement.RequirementMode
(enum)SkippedShipment
(मैसेज)SkippedShipment.Reason
(मैसेज)SkippedShipment.Reason.Code
(enum)TimeWindow
(मैसेज)TransitionAttributes
(मैसेज)Vehicle
(मैसेज)Vehicle.DurationLimit
(मैसेज)Vehicle.LoadLimit
(मैसेज)Vehicle.LoadLimit.Interval
(मैसेज)Vehicle.TravelMode
(enum)Vehicle.UnloadingPolicy
(enum)Waypoint
(मैसेज)
RouteOptimization
वाहन की यात्राओं को ऑप्टिमाइज़ करने की सेवा.
कुछ खास तरह के फ़ील्ड के मान्य होने की अवधि:
google.protobuf.Timestamp
- समय, यूनिक्स टाइम में दिया गया है: 1970-01-01T00:00:00+00:00 से सेकंड.
- सेकंड की वैल्यू [0, 253402300799] के बीच होनी चाहिए. इसका मतलब है कि [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00] के बीच होनी चाहिए.
- nanos को अनसेट या 0 पर सेट किया जाना चाहिए.
google.protobuf.Duration
- सेकंड की वैल्यू [0, 253402300799] के बीच होनी चाहिए. इसका मतलब है कि [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00] के बीच होनी चाहिए.
- nanos को अनसेट या 0 पर सेट किया जाना चाहिए.
google.type.LatLng
- अक्षांश की वैल्यू, [-90.0, 90.0] के बीच होनी चाहिए.
- देशांतर [-180.0, 180.0] के बीच होना चाहिए.
- अक्षांश और देशांतर, दोनों में से कम से कम एक वैल्यू शून्य से ज़्यादा होनी चाहिए.
BatchOptimizeTours |
---|
एक या उससे ज़्यादा यह तरीका, ज़्यादा समय तक चलने वाला ऑपरेशन (एलआरओ) है. ऑप्टिमाइज़ेशन ( उपयोगकर्ता, एलआरओ का स्टेटस देखने के लिए अगर LRO अगर एलआरओ का
|
OptimizeTours |
---|
यह
इसका मकसद,
|
AggregatedMetrics
ShipmentRoute
(सभी Transition
और/या Visit
(सभी ShipmentRoute
) एलिमेंट के लिए OptimizeToursResponse
) एलिमेंट के लिए एग्रीगेट की गई मेट्रिक.
फ़ील्ड | |
---|---|
performed_ |
पूरे किए गए शिपमेंट की संख्या. ध्यान दें कि पिकअप और डिलीवरी के पते को सिर्फ़ एक बार गिना जाता है. |
travel_ |
किसी रास्ते या समाधान के लिए यात्रा का कुल समय. |
wait_ |
किसी रास्ते या समाधान के लिए इंतज़ार करने का कुल समय. |
delay_ |
किसी रास्ते या समाधान के लिए, देरी की कुल अवधि. |
break_ |
किसी रास्ते या समाधान के लिए, ब्रेक की कुल अवधि. |
visit_ |
किसी रास्ते या समाधान के लिए, विज़िट की कुल अवधि. |
total_ |
कुल अवधि, ऊपर दी गई सभी अवधियों के योग के बराबर होनी चाहिए. रूट के लिए, यह इनके बराबर होता है:
|
travel_ |
किसी रास्ते या समाधान के लिए, यात्रा की कुल दूरी. |
max_ |
इस रास्ते (सलूशन) पर मौजूद हर प्रॉडक्ट की संख्या के लिए, पूरे रास्ते (सलूशन) पर ज़्यादा से ज़्यादा लोड. इसे सभी |
BatchOptimizeToursMetadata
इस टाइप में कोई फ़ील्ड नहीं होता.
BatchOptimizeToursRequest
कॉल के लिए ऑपरेशन का मेटाडेटा.
BatchOptimizeToursRequest
एसिंक्रोनस ऑपरेशन के तौर पर, टूर को एक साथ ऑप्टिमाइज़ करने का अनुरोध करें. हर इनपुट फ़ाइल में एक OptimizeToursRequest
और हर आउटपुट फ़ाइल में एक OptimizeToursResponse
होना चाहिए. अनुरोध में, फ़ाइलों को पढ़ने/लिखने और पार्स करने की जानकारी होती है. सभी इनपुट और आउटपुट फ़ाइलें एक ही प्रोजेक्ट में होनी चाहिए.
फ़ील्ड | |
---|---|
parent |
ज़रूरी है. कॉल करने के लिए, टारगेट किया गया प्रोजेक्ट और जगह. फ़ॉर्मैट: * अगर कोई जगह नहीं बताई जाती है, तो कोई क्षेत्र अपने-आप चुना जाएगा. |
model_ |
ज़रूरी है. हर खरीदारी मॉडल के इनपुट/आउटपुट की जानकारी, जैसे कि फ़ाइल पाथ और डेटा फ़ॉर्मैट. |
AsyncModelConfig
एक ऑप्टिमाइज़ेशन मॉडल को अलग-अलग समय पर हल करने के बारे में जानकारी.
फ़ील्ड | |
---|---|
display_ |
ज़रूरी नहीं. उपयोगकर्ता के तय किए गए मॉडल के नाम का इस्तेमाल, मॉडल को ट्रैक करने के लिए, उपयोगकर्ताओं के उपनाम के तौर पर किया जा सकता है. |
input_ |
ज़रूरी है. इनपुट मॉडल के बारे में जानकारी. |
output_ |
ज़रूरी है. आउटपुट के लिए जगह की जानकारी. |
BatchOptimizeToursResponse
इस टाइप में कोई फ़ील्ड नहीं होता.
BatchOptimizeToursRequest
का जवाब. यह वैल्यू, ऑपरेशन पूरा होने के बाद, लंबे समय तक चलने वाले ऑपरेशन में दिखती है.
BreakRule
वाहन के लिए ब्रेक का समय तय करने के नियम. जैसे, लंच ब्रेक. ब्रेक, एक तय समयावधि होती है. इस दौरान, वाहन अपनी मौजूदा जगह पर बिना किसी गतिविधि के खड़ा रहता है और कोई विज़िट नहीं कर सकता. ब्रेक इन स्थितियों में हो सकता है:
- दो विज़िट के बीच की यात्रा के दौरान (इसमें विज़िट से ठीक पहले या ठीक बाद का समय शामिल होता है, लेकिन विज़िट के बीच का समय शामिल नहीं होता), ऐसे में यह विज़िट के बीच के ट्रांज़िट समय को बढ़ा देता है,
- या गाड़ी के शुरू होने से पहले (हो सकता है कि गाड़ी ब्रेक के बीच में शुरू न हो), इस मामले में गाड़ी के शुरू होने के समय पर इसका असर नहीं पड़ता.
- या वाहन के खत्म होने के बाद (वाहन के खत्म होने के समय के साथ).
फ़ील्ड | |
---|---|
break_ |
ब्रेक का क्रम. |
frequency_ |
एक से ज़्यादा |
BreakRequest
हर वाहन के लिए ब्रेक का क्रम (जैसे, उनकी संख्या और क्रम) पहले से पता होना चाहिए. दोहराए गए BreakRequest
, उस क्रम को उसी क्रम में तय करते हैं जिसमें उन्हें होना चाहिए. उनकी टाइम विंडो (earliest_start_time
/ latest_start_time
) ओवरलैप हो सकती हैं, लेकिन वे ऑर्डर के साथ काम करनी चाहिए (इसकी जांच की जाती है).
फ़ील्ड | |
---|---|
earliest_ |
ज़रूरी है. ब्रेक की शुरुआत का निचला थ्रेशोल्ड (इसमें शामिल है). |
latest_ |
ज़रूरी है. ब्रेक की शुरुआत का ऊपरी बाउंड (शामिल). |
min_ |
ज़रूरी है. ब्रेक की कम से कम अवधि. यह संख्या पॉज़िटिव होनी चाहिए. |
FrequencyConstraint
ऊपर बताए गए ब्रेक की फ़्रीक्वेंसी और अवधि को और भी सीमित किया जा सकता है. इसके लिए, ब्रेक की कम से कम फ़्रीक्वेंसी लागू करें. जैसे, "हर 12 घंटे में कम से कम एक घंटे का ब्रेक होना चाहिए". मान लें कि इसका मतलब "12 घंटे की किसी भी स्लाइडिंग टाइम विंडो में, कम से कम एक घंटे का ब्रेक होना चाहिए" है. इस उदाहरण का अनुवाद इस FrequencyConstraint
में किया जाएगा:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
समाधान में ब्रेक का समय और अवधि, BreakRequest
में पहले से तय की गई समयसीमाओं और कम से कम अवधियों के साथ-साथ, इन सभी सीमाओं का पालन करेगी.
FrequencyConstraint
, लगातार न होने वाले ब्रेक पर लागू हो सकता है. उदाहरण के लिए, नीचे दिया गया शेड्यूल, "हर 12 घंटे में 1 घंटा" के उदाहरण के मुताबिक है:
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
फ़ील्ड | |
---|---|
min_ |
ज़रूरी है. इस शर्त के लिए, ब्रेक की कम से कम अवधि. शून्य से बड़ी होनी चाहिए. |
max_ |
ज़रूरी है. रास्ते में किसी भी समयावधि का ज़्यादा से ज़्यादा स्पैन, जिसमें कम से कम |
DataFormat
इनपुट और आउटपुट फ़ाइलों के लिए डेटा फ़ॉर्मैट.
Enums | |
---|---|
DATA_FORMAT_UNSPECIFIED |
अमान्य वैल्यू, फ़ॉर्मैट UNSPECIFIED नहीं होना चाहिए. |
JSON |
JavaScript ऑब्जेक्ट नोटेशन. |
PROTO_TEXT |
प्रोटोकॉल बफ़र का टेक्स्ट फ़ॉर्मैट. https://protobuf.dev/reference/protobuf/textformat-spec/ देखें |
DistanceLimit
यह एक सीमा होती है, जो तय करती है कि कितनी दूरी तक यात्रा की जा सकती है. यह हार्ड या सॉफ़्ट हो सकता है.
अगर कोई सॉफ्ट लिमिट तय की गई है, तो soft_max_meters
और cost_per_kilometer_above_soft_max
, दोनों की वैल्यू तय होनी चाहिए. साथ ही, यह भी ज़रूरी है कि दोनों की वैल्यू 0 से ज़्यादा हो.
फ़ील्ड | |
---|---|
max_ |
यह एक तय सीमा है, जो दूरी को ज़्यादा से ज़्यादा max_meters तक सीमित करती है. सीमा, नेगेटिव नहीं होनी चाहिए. |
soft_ |
सॉफ्ट लिमिट, तय की गई दूरी की सीमा को लागू नहीं करती. हालांकि, इसकी सीमा का उल्लंघन करने पर, मॉडल में तय की गई अन्य लागतों के साथ एक ही यूनिट में लागत जुड़ जाती है. अगर soft_max_meters तय किया गया है, तो यह max_meters से कम होना चाहिए और यह शून्य से ज़्यादा होना चाहिए. |
cost_ |
हर किलोमीटर की लागत,
|
cost_ |
अगर दूरी
कीमत नेगेटिव नहीं होनी चाहिए. |
GcsDestination
Google Cloud Storage में वह जगह जहां आउटपुट फ़ाइलें सेव की जाएंगी.
फ़ील्ड | |
---|---|
uri |
ज़रूरी है. Google Cloud Storage का यूआरआई. |
GcsSource
Google Cloud Storage में वह जगह जहां से इनपुट फ़ाइल को पढ़ा जाएगा.
फ़ील्ड | |
---|---|
uri |
ज़रूरी है. |
InjectedSolutionConstraint
अनुरोध में इंजेक्ट किया गया समाधान. इसमें यह जानकारी शामिल होती है कि किन विज़िट पर पाबंदी लगानी है और उन्हें कैसे लगाना है.
फ़ील्ड | |
---|---|
routes[] |
इंजेक्शन के लिए सलूशन के रास्ते. हो सकता है कि ओरिजनल सलूशन से कुछ रास्ते हटा दिए जाएं. रास्तों और छोड़े गए शिपमेंट को, |
skipped_ |
इंजेक्ट करने के लिए, सलूशन के स्किप किए गए शिपमेंट. हो सकता है कि कुछ को ओरिजनल सलूशन से हटा दिया जाए. |
constraint_ |
वाहनों के शून्य या उससे ज़्यादा ग्रुप के लिए, यह तय करता है कि पाबंदियों को कब और कितना कम करना है. अगर यह फ़ील्ड खाली है, तो वाहन के सभी ऐसे रास्ते पूरी तरह से प्रतिबंधित कर दिए जाते हैं जिनमें कोई डेटा मौजूद है. |
ConstraintRelaxation
वाहनों के ग्रुप के लिए, यह तय करता है कि विज़िट पर लगाई गई पाबंदियों को किस थ्रेशोल्ड पर और किस लेवल तक कम किया जाएगा. skipped_shipment
फ़ील्ड में लिस्ट किए गए शिपमेंट को स्किप किया जा सकता है. इसका मतलब है कि उन्हें प्रोसेस नहीं किया जा सकता.
फ़ील्ड | |
---|---|
relaxations[] |
|
vehicle_ |
उन वाहन इंडेक्स के बारे में बताता है जिन पर विज़िट की पाबंदी अगर |
सुकून देने वाले
अगर relaxations
खाली है, तो routes
पर सभी विज़िट का शुरू होने का समय और क्रम पूरी तरह से सीमित होता है. साथ ही, उन रास्तों में कोई नई विज़िट नहीं डाली या जोड़ी जा सकती. साथ ही, routes
में वाहन के शुरू और खत्म होने का समय पूरी तरह से तय होता है.ऐसा तब तक होता है, जब तक वाहन खाली नहीं होता. इसका मतलब है कि वाहन में कोई विज़िट नहीं होती और मॉडल में used_if_route_is_empty
को 'गलत' पर सेट नहीं किया जाता.
relaxations(i).level
, विज़िट #j पर लागू की गई पाबंदी के लेवल के बारे में बताता है. यह लेवल इन शर्तों को पूरा करने पर लागू होता है:
route.visits(j).start_time >= relaxations(i).threshold_time
औरj + 1 >= relaxations(i).threshold_visit_count
इसी तरह, अगर वाहन इन शर्तों को पूरा करता है, तो उसे relaxations(i).level
तक चलाने की अनुमति दी जाती है:
vehicle_start_time >= relaxations(i).threshold_time
औरrelaxations(i).threshold_visit_count == 0
और वाहन के खत्म होने की तारीख कोrelaxations(i).level
तक बढ़ाया जा सकता है. इसके लिए, यह ज़रूरी है कि:vehicle_end_time >= relaxations(i).threshold_time
औरroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
अगर कोई विज़िट threshold_visit_count
या threshold_time
की शर्तें पूरी करती है, तो छूट का लेवल लागू करने के लिए, एक ही level
के साथ दो relaxations
जोड़ें: एक में सिर्फ़ threshold_visit_count
सेट करें और दूसरे में सिर्फ़ threshold_time
सेट करें. अगर कोई विज़िट, एक से ज़्यादा relaxations
की शर्तों को पूरा करती है, तो सबसे आसान लेवल लागू होता है. इस वजह से, वाहन के शुरू होने से लेकर, रास्ते पर विज़िट करने के दौरान और वाहन के खत्म होने तक, छूट का लेवल ज़्यादा हो जाता है. इसका मतलब है कि रास्ते के आगे बढ़ने के साथ-साथ, छूट का लेवल कम नहीं होता.
किसी भी relaxations
की थ्रेशोल्ड शर्तों को पूरा न करने वाले रूट विज़िट के समय और क्रम पर पूरी तरह से पाबंदी होती है. साथ ही, इन क्रम में कोई भी विज़िट नहीं डाली जा सकती. इसके अलावा, अगर वाहन के शुरू या खत्म होने का समय, छूट की किसी भी शर्त को पूरा नहीं करता है, तो वाहन खाली होने तक उसका समय तय रहता है.
फ़ील्ड | |
---|---|
level |
शर्तों में ढील का वह लेवल जो |
threshold_ |
वह समय जब छूट |
threshold_ |
विज़िट की वह संख्या जिसके बाद छूट अगर यह |
लेवल
यह पाबंदी हटाने के अलग-अलग लेवल के बारे में बताता है. ये लेवल, विज़िट के लिए लागू होते हैं. साथ ही, थ्रेशोल्ड की शर्तें पूरी करने पर भी लागू होते हैं.
यहां दी गई जानकारी, छूट के बढ़ते क्रम में दी गई है.
Enums | |
---|---|
LEVEL_UNSPECIFIED |
डिफ़ॉल्ट रूप से लागू होने वाली पाबंदियों का लेवल: कोई भी पाबंदी नहीं हटाई जाती. इसका मतलब है कि सभी विज़िट पर पूरी पाबंदी लगी रहती है. इस वैल्यू का इस्तेमाल |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
विज़िट शुरू होने का समय और वाहन के शुरू/खत्म होने का समय तय करने में ज़्यादा ज़रूरत नहीं होगी. हालांकि, हर विज़िट एक ही वाहन से जुड़ी होनी चाहिए और विज़िट के क्रम का ध्यान रखा जाना चाहिए: इनके बीच या इनसे पहले कोई विज़िट नहीं डाली जा सकती. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
RELAX_VISIT_TIMES_AFTER_THRESHOLD जैसा ही, लेकिन विज़िट के क्रम में भी ढील दी गई है: विज़िट सिर्फ़ इस वाहन से की जा सकती हैं, लेकिन ऐसा हो सकता है कि विज़िट न की गई हों. |
RELAX_ALL_AFTER_THRESHOLD |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD जैसा ही, लेकिन वाहन के लिए भी कुछ छूट है: थ्रेशोल्ड समय पर या उसके बाद, विज़िट पूरी तरह से मुफ़्त होती हैं और हो सकता है कि वे न की जाएं. |
InputConfig
[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] के लिए इनपुट दें.
फ़ील्ड | |
---|---|
data_ |
ज़रूरी है. इनपुट डेटा का फ़ॉर्मैट. |
यूनियन फ़ील्ड source . ज़रूरी है. source इनमें से कोई एक हो सकता है: |
|
gcs_ |
Google Cloud Storage की कोई लोकेशन. यह एक ऑब्जेक्ट (फ़ाइल) होना चाहिए. |
जगह
किसी जगह (भौगोलिक पॉइंट और वैकल्पिक हेडिंग) को एन्कैप्सुलेट करता है.
फ़ील्ड | |
---|---|
lat_ |
वेपॉइंट के भौगोलिक निर्देशांक. |
heading |
ट्रैफ़िक के फ़्लो की दिशा से जुड़ी कम्पास हेडिंग. इस वैल्यू का इस्तेमाल, सड़क की उस साइड की जानकारी देने के लिए किया जाता है जहां से पिकअप और ड्रॉप-ऑफ़ किया जाना है. हेडिंग की वैल्यू 0 से 360 तक हो सकती है. जैसे, 0 का मतलब है कि सड़क की सीधी उत्तर दिशा, 90 का मतलब है कि सड़क की सीधी पूर्व दिशा वगैरह. |
OptimizeToursRequest
टूर ऑप्टिमाइज़ेशन सॉल्वर को दिया जाने वाला अनुरोध, जो ऑप्टिमाइज़ेशन पैरामीटर के साथ-साथ शिपमेंट मॉडल को हल करने के बारे में बताता है.
फ़ील्ड | |
---|---|
parent |
ज़रूरी है. कॉल करने के लिए, टारगेट किया गया प्रोजेक्ट या जगह चुनें. फ़ॉर्मैट: * अगर कोई जगह नहीं बताई जाती है, तो कोई क्षेत्र अपने-आप चुना जाएगा. |
timeout |
अगर यह टाइम आउट सेट है, तो सर्वर टाइम आउट की अवधि खत्म होने से पहले या सिंक्रोनस अनुरोधों के लिए सर्वर की समयसीमा खत्म होने से पहले, जवाब दे देता है. असाइनमेंट के लिए, सर्वर टाइम आउट खत्म होने से पहले ही समाधान जनरेट कर देगा. हालांकि, ऐसा सिर्फ़ तब होगा, जब ऐसा करना संभव हो. |
model |
शिपमेंट का मॉडल, जिसे हल करना है. |
solving_ |
डिफ़ॉल्ट रूप से, समस्या हल करने का मोड |
search_ |
अनुरोध को हल करने के लिए इस्तेमाल किया गया सर्च मोड. |
injected_ |
पहले से मौजूद समाधान से मिलता-जुलता समाधान ढूंढने के लिए, ऑप्टिमाइज़ेशन एल्गोरिदम को निर्देश दें. पहला समाधान बनाने पर, मॉडल पर पाबंदी लग जाती है. किसी रूट पर न किए गए शिपमेंट, पहले समाधान में छूट जाते हैं. हालांकि, उन्हें बाद के समाधानों में शामिल किया जा सकता है. समाधान, मान्य होने से जुड़ी कुछ बुनियादी शर्तों को पूरा करना चाहिए:
अगर इंजेक्ट किया गया समाधान काम नहीं करता है, तो ज़रूरी नहीं कि पुष्टि करने से जुड़ी गड़बड़ी का मैसेज दिखे. इसके बजाय, गड़बड़ी का ऐसा मैसेज दिख सकता है जिससे पता चलता हो कि समाधान काम नहीं करता. |
injected_ |
पिछले समाधान से मिलता-जुलता फ़ाइनल समाधान ढूंढने के लिए, ऑप्टिमाइज़ेशन एल्गोरिदम को सीमित करें. उदाहरण के लिए, इसका इस्तेमाल उन रास्तों के हिस्सों को फ़्रीज़ करने के लिए किया जा सकता है जो पहले ही पूरे हो चुके हैं या जिन्हें पूरा करना बाकी है, लेकिन जिनमें बदलाव नहीं करना है. अगर इंजेक्ट किया गया समाधान काम नहीं करता है, तो ज़रूरी नहीं कि पुष्टि करने से जुड़ी गड़बड़ी का मैसेज दिखे. इसके बजाय, गड़बड़ी का ऐसा मैसेज दिख सकता है जिससे पता चलता हो कि समाधान काम नहीं करता. |
refresh_ |
अगर सूची में कोई जगह है, तो दिए गए रास्ते रीफ़्रेश हो जाएंगे. हालांकि, विज़िट के क्रम या यात्रा में लगने वाले समय में कोई बदलाव नहीं किया जाएगा. सिर्फ़ अन्य जानकारी अपडेट की जाएगी. इससे मॉडल की समस्या हल नहीं होती. नवंबर 2020 से, यह सिर्फ़ उन रास्तों की पॉलीलाइन भरता है जिनमें कोई डेटा मौजूद होता है. साथ ही, इसके लिए हो सकता है कि पास किए गए रास्तों के इस फ़ील्ड का इस्तेमाल
|
interpret_ |
अगर यह सही है, तो:
यह व्याख्या, अगर यह सही है, तो इन कैटगरी में मौजूद लेबल, अपनी कैटगरी में ज़्यादा से ज़्यादा एक बार दिखने चाहिए:
अगर इंजेक्ट किए गए समाधान में कोई इंजेक्ट किए गए समाधान से रूट विज़िट या पूरे रूट हटाने पर, लागू होने वाली पाबंदियों पर असर पड़ सकता है. इससे समाधान में बदलाव हो सकता है, पुष्टि करने में गड़बड़ियां हो सकती हैं या समाधान लागू नहीं हो सकता. ध्यान दें: कॉल करने वाले को यह पक्का करना होगा कि हर |
consider_ |
|
populate_ |
अगर यह सही है, तो जवाब |
populate_ |
अगर यह सही है, तो |
allow_ |
अगर यह सेट है, तो अनुरोध की समयसीमा 60 मिनट तक हो सकती है. इसके बारे में ज़्यादा जानने के लिए, https://grpc.io/blog/deadlines पर जाएं. ऐसा न करने पर, ज़्यादा से ज़्यादा 30 मिनट का समय दिया जाएगा. ध्यान दें कि लंबे समय तक चलने वाले अनुरोधों में रुकावट आने का जोखिम ज़्यादा होता है. हालांकि, यह जोखिम बहुत कम होता है. |
use_ |
अगर यह सही है, तो यात्रा की दूरी का हिसाब Google Maps की दूरी के बजाय, जियोडेसिक दूरी का इस्तेमाल करके लगाया जाएगा. साथ ही, यात्रा में लगने वाले समय का हिसाब जियोडेसिक दूरी और |
label |
इस अनुरोध की पहचान करने के लिए इस्तेमाल किया जा सकने वाला लेबल, जिसकी शिकायत |
geodesic_ |
जब |
max_ |
पुष्टि करने से जुड़ी गड़बड़ियों की संख्या को छोटा कर देता है. आम तौर पर, ये गड़बड़ियां INVALID_ARGUMENT गड़बड़ी वाले पेलोड में, BadRequest गड़बड़ी की जानकारी (https://cloud.google.com/apis/design/errors#error_details) के तौर पर अटैच होती हैं. हालांकि, ऐसा तब तक नहीं होता, जब तक solving_mode=VALIDATE_ONLY नहीं होता: |
SearchMode
यह मोड, खोज के व्यवहार को तय करता है. इसमें इंतज़ार का समय और समाधान की क्वालिटी के बीच का अंतर तय किया जाता है. सभी मोड में, अनुरोध की ग्लोबल समयसीमा लागू होती है.
Enums | |
---|---|
SEARCH_MODE_UNSPECIFIED |
खोज मोड की जानकारी नहीं दी गई है. यह RETURN_FAST के बराबर है. |
RETURN_FAST |
पहला अच्छा समाधान मिलने के बाद, खोज बंद करें. |
CONSUME_ALL_AVAILABLE_TIME |
बेहतर समाधान खोजने के लिए, अपना सारा समय खर्च करें. |
SolvingMode
इससे यह तय होता है कि सॉल्वर को अनुरोध को कैसे हैंडल करना चाहिए. VALIDATE_ONLY
के अलावा सभी मोड में, अगर अनुरोध अमान्य है, तो आपको INVALID_REQUEST
गड़बड़ी का मैसेज मिलेगा. गड़बड़ियों की संख्या को सीमित करने के लिए, max_validation_errors
देखें.
Enums | |
---|---|
DEFAULT_SOLVE |
मॉडल को हल करें. [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors] में चेतावनियां जारी की जा सकती हैं. |
VALIDATE_ONLY |
मॉडल को हल किए बिना सिर्फ़ उसकी पुष्टि करता है: ज़्यादा से ज़्यादा OptimizeToursResponse.validation_errors पॉप्युलेट करता है. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
सिर्फ़ अहम जानकारी: यहां उन सभी शिपमेंट की जानकारी नहीं दी जाती है जो प्रोसेस नहीं किए जा सकते. सिर्फ़ उन शिपमेंट की जानकारी दी जाती है जिन्हें प्रोसेस करने से पहले ही, शिप नहीं किए जा सकने के तौर पर मार्क कर दिया जाता है. |
OptimizeToursResponse
टूर ऑप्टिमाइज़ेशन की समस्या को हल करने के बाद मिलने वाला जवाब. इसमें हर वाहन के रास्ते, छोड़े गए शिपमेंट, और समस्या को हल करने की कुल लागत की जानकारी होती है.
फ़ील्ड | |
---|---|
routes[] |
हर वाहन के लिए कैलकुलेट किए गए रूट; i-वां रूट, मॉडल में i-वें वाहन से मेल खाता है. |
request_ |
अगर अनुरोध में कोई लेबल दिया गया था, तो |
skipped_ |
उन सभी शिपमेंट की सूची जिन्हें स्किप किया गया है. |
validation_ |
पुष्टि करने से जुड़ी उन सभी गड़बड़ियों की सूची जिन्हें हमने खुद से पता लगाया है. |
metrics |
इस समाधान के लिए, कुल समय, दूरी, और इस्तेमाल की मेट्रिक. |
मेट्रिक
सभी रूट के लिए एग्रीगेट की गई कुल मेट्रिक.
फ़ील्ड | |
---|---|
aggregated_ |
यह डेटा, सभी रास्तों के लिए इकट्ठा किया जाता है. हर मेट्रिक, एक ही नाम के सभी |
skipped_ |
ज़रूरी शिपमेंट की संख्या. |
used_ |
इस्तेमाल किए गए वाहनों की संख्या. ध्यान दें: अगर वाहन का रास्ता खाली है और |
earliest_ |
इस्तेमाल किए गए वाहन के लिए, सबसे पहले शुरू होने का समय. इसे |
latest_ |
इस्तेमाल किए गए वाहन के लिए, विज्ञापन दिखाने का आखिरी समय. इसे |
costs |
सॉल्यूशन की लागत, जिसे लागत से जुड़े अनुरोध फ़ील्ड के हिसाब से बांटा गया है. इनपुट OptimizeToursRequest के हिसाब से, कुंजियां प्रोटो पाथ होती हैं, जैसे कि "model.shipments.pickups.cost". साथ ही, वैल्यू, उससे जुड़े लागत फ़ील्ड से जनरेट की गई कुल लागत होती हैं, जो पूरे समाधान में एग्रीगेट की जाती हैं. दूसरे शब्दों में, costs["model.shipments.pickups.cost"] का मतलब है, पिकअप के लिए खरीदार से लिए जाने वाले सभी शुल्कों का कुल योग. मॉडल में तय की गई सभी लागतों की जानकारी यहां दी गई है. हालांकि, TransitionAttributes से जुड़ी लागतों की जानकारी 01/2022 से सिर्फ़ एग्रीगेट तरीके से दी गई है. |
total_ |
समाधान की कुल लागत. लागत के मैप में मौजूद सभी वैल्यू का योग. |
OptimizeToursValidationError
OptimizeToursRequest
की पुष्टि करते समय मिली गड़बड़ी या चेतावनी के बारे में बताता है.
फ़ील्ड | |
---|---|
code |
पुष्टि करने से जुड़ी गड़बड़ी की जानकारी, ( इस सेक्शन के बाद मौजूद फ़ील्ड में, गड़बड़ी के बारे में ज़्यादा जानकारी मिलती है. कई गड़बड़ियां: कई गड़बड़ियां होने पर, पुष्टि करने की प्रोसेस उनमें से कई को आउटपुट करने की कोशिश करती है. कंपाइलर की तरह ही, यह प्रोसेस भी पूरी तरह से सटीक नहीं होती. पुष्टि करने से जुड़ी कुछ गड़बड़ियां "गंभीर" होंगी. इसका मतलब है कि वे पुष्टि की पूरी प्रक्रिया को रोक देंगी. ऐसा स्टेबलिटी: |
display_ |
गड़बड़ी का डिसप्ले नेम. |
fields[] |
गड़बड़ी के संदर्भ में, ज़्यादातर मामलों में 0 या 1 फ़ील्ड शामिल होते हैं. हालांकि, इसमें एक से ज़्यादा फ़ील्ड भी शामिल हो सकते हैं. उदाहरण के लिए, वाहन #4 और शिपमेंट #2 के पहले पिकअप का रेफ़रंस इस तरह दिया जा सकता है:
हालांकि, ध्यान दें कि किसी गड़बड़ी कोड के लिए, |
error_ |
गड़बड़ी के बारे में ऐसी जानकारी वाली स्ट्रिंग जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. स्टेबलिटी: स्टेबल नहीं है: किसी |
offending_ |
इसमें फ़ील्ड की वैल्यू हो सकती हैं. यह सुविधा हमेशा उपलब्ध नहीं होती. आपको इस पर बिलकुल भरोसा नहीं करना चाहिए. इसका इस्तेमाल सिर्फ़ मैन्युअल मॉडल डीबगिंग के लिए करें. |
FieldReference
पुष्टि करने से जुड़ी गड़बड़ी के लिए संदर्भ बताता है. FieldReference
हमेशा इस फ़ाइल में मौजूद किसी फ़ील्ड को रेफ़र करता है और एक ही हैरारकी वाले स्ट्रक्चर का पालन करता है. उदाहरण के लिए, हम वाहन #5 के start_time_windows
एलिमेंट #2 की जानकारी देने के लिए, इनका इस्तेमाल कर सकते हैं:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
हालांकि, हम मैसेज में OptimizeToursRequest
या ShipmentModel
जैसी टॉप-लेवल इकाइयों को शामिल नहीं करते, ताकि मैसेज में बहुत ज़्यादा जानकारी न हो.
फ़ील्ड | |
---|---|
name |
फ़ील्ड का नाम, जैसे कि "वाहन". |
sub_ |
अगर ज़रूरी हो, तो बार-बार नेस्ट किया गया सब-फ़ील्ड. |
यूनियन फ़ील्ड
|
|
index |
अगर फ़ील्ड दोहराया गया है, तो उसका इंडेक्स. |
key |
अगर फ़ील्ड कोई मैप है, तो यह वैल्यू डालें. |
OutputConfig
[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] के नतीजों के लिए कोई डेस्टिनेशन तय करें.
फ़ील्ड | |
---|---|
data_ |
ज़रूरी है. आउटपुट डेटा का फ़ॉर्मैट. |
यूनियन फ़ील्ड destination . ज़रूरी है. destination इनमें से कोई एक हो सकता है: |
|
gcs_ |
Google Cloud Storage में वह जगह जहां आउटपुट को सेव करना है. |
RouteModifiers
वाहन के रास्तों का हिसाब लगाते समय, शर्तों के एक सेट को पूरा करने के लिए इस्तेमाल किया जाता है. हालांकि, इन शर्तों को पूरा करना ज़रूरी नहीं है. यह Google Maps Platform के Routes Preferred API में मौजूद RouteModifiers
से मिलता-जुलता है. ज़्यादा जानकारी के लिए, https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers देखें.
फ़ील्ड | |
---|---|
avoid_ |
इससे यह तय होता है कि ज़रूरत पड़ने पर, टोल वाली सड़कों से बचना है या नहीं. टोल वाली सड़कों को प्राथमिकता नहीं दी जाएगी. यह सिर्फ़ मोटर वाले यात्रा के मोड पर लागू होता है. |
avoid_ |
इससे यह तय होता है कि ज़रूरत पड़ने पर, हाइवे से बचना है या नहीं. हाईवे वाले रास्तों के बजाय, अन्य रास्तों को प्राथमिकता दी जाएगी. यह सिर्फ़ मोटर वाले यात्रा के मोड पर लागू होता है. |
avoid_ |
इससे पता चलता है कि फ़ेरी का इस्तेमाल करने से बचना है या नहीं. उन रास्तों को प्राथमिकता दी जाएगी जिनमें फ़ेरी से यात्रा शामिल नहीं है. यह सिर्फ़ मोटर वाले यात्रा के मोड पर लागू होता है. |
avoid_ |
ज़रूरी नहीं. इससे यह तय होता है कि जहां ज़रूरी हो वहां अंदरूनी जगहों पर नेविगेट करने से बचना है या नहीं. इनडोर नेविगेशन के बिना के रूट को प्राथमिकता दी जाएगी. यह सिर्फ़ |
शिपमेंट
किसी एक आइटम को पिकअप करने से लेकर डिलीवरी करने तक की प्रोसेस. शिपमेंट को पूरा होने के तौर पर तब ही माना जाएगा, जब कोई यूनीक वाहन पिकअप करने की किसी जगह पर जाए (और उसके हिसाब से स्पेयर कैपेसिटी कम हो जाए) और बाद में डिलीवरी करने की किसी जगह पर जाए (और उसके हिसाब से स्पेयर कैपेसिटी फिर से बढ़ जाए).
फ़ील्ड | |
---|---|
display_ |
शिपमेंट का वह नाम जो उपयोगकर्ता ने तय किया है. इसमें ज़्यादा से ज़्यादा 63 वर्ण हो सकते हैं. साथ ही, UTF-8 वर्णों का इस्तेमाल किया जा सकता है. |
pickups[] |
शिपमेंट से जुड़े पिकअप के विकल्पों का सेट. अगर यह जानकारी नहीं दी गई है, तो वाहन को सिर्फ़ डिलीवरी वाली जगह पर जाना होगा. |
deliveries[] |
शिपमेंट से जुड़ी डिलीवरी के विकल्पों का सेट. अगर यह जानकारी नहीं दी गई है, तो वाहन को सिर्फ़ पिकअप की जगह पर जाना होगा. |
load_ |
शिपमेंट की लोड की मांग (उदाहरण के लिए, वज़न, वॉल्यूम, पैलेट की संख्या वगैरह). मैप में मौजूद कुंजियां, आइडेंटिफ़ायर होनी चाहिए. इनसे, उससे जुड़े लोड के टाइप के बारे में पता चलता है. साथ ही, इनमें यूनिट भी शामिल होनी चाहिए. उदाहरण के लिए: "weight_kg", "volume_gallons", "pallet_count" वगैरह. अगर कोई दिया गया कुंजी मैप में नहीं दिखता है, तो उससे जुड़े लोड को शून्य माना जाता है. |
allowed_ |
उन वाहनों का सेट जो इस शिपमेंट को पूरा कर सकते हैं. अगर यह फ़ील्ड खाली है, तो सभी वाहन यह कार्रवाई कर सकते हैं. |
costs_ |
इससे पता चलता है कि हर वाहन से इस शिपमेंट की डिलीवरी करने पर, कितना खर्च आता है. अगर इसकी वैल्यू दी गई है, तो इसमें इनमें से कोई एक होना चाहिए:
ये लागत, |
costs_ |
उन वाहनों के इंडेक्स जिन पर |
pickup_ |
यह पिकअप से डिलीवरी तक के सबसे छोटे रास्ते की तुलना में, सबसे लंबे रास्ते से यात्रा में लगने वाले समय की जानकारी देता है. अगर यह जानकारी दी गई है, तो यह संख्या 0 से बड़ी होनी चाहिए. साथ ही, शिपमेंट में कम से कम एक पिकअप और एक डिलीवरी शामिल होनी चाहिए. उदाहरण के लिए, मान लें कि t, पिकअप के चुने गए विकल्प से सीधे डिलीवरी के चुने गए विकल्प पर जाने में लगने वाला कम से कम समय है. इसके बाद,
अगर एक ही शिपमेंट के लिए, रिलेटिव और एब्सोल्यूट, दोनों तरह की सीमाएं तय की गई हैं, तो पिकअप/डिलीवरी के हर संभावित जोड़े के लिए, ज़्यादा पाबंदी वाली सीमा का इस्तेमाल किया जाता है. अक्टूबर 2017 से, यात्रा में लगने वाला समय वाहनों पर निर्भर न होने पर ही, रास्ते में आने वाली रुकावटों की जानकारी दी जा सकती है. |
pickup_ |
इससे यह पता चलता है कि शिपमेंट के पिकअप से लेकर डिलीवरी शुरू होने तक, ज़्यादा से ज़्यादा कितनी देर लग सकती है. अगर यह जानकारी दी गई है, तो यह संख्या 0 से बड़ी होनी चाहिए. साथ ही, शिपमेंट में कम से कम एक पिकअप और एक डिलीवरी शामिल होनी चाहिए. यह इस बात पर निर्भर नहीं करता कि पिकअप और डिलीवरी के लिए कौनसे विकल्प चुने गए हैं. यह वाहन की स्पीड पर भी निर्भर नहीं करता. इसे, रास्ते में आने वाली ज़्यादा से ज़्यादा रुकावटों के साथ भी बताया जा सकता है: समाधान, दोनों खास बातों का ध्यान रखेगा. |
shipment_ |
इस शिपमेंट के लिए "टाइप" बताने वाली कोई स्ट्रिंग, जो खाली नहीं होनी चाहिए. इस सुविधा का इस्तेमाल, यह |
label |
इस शिपमेंट के लिए लेबल तय करता है. इस लेबल की जानकारी, जवाब में मौजूद |
ignore |
अगर यह सही है, तो इस शिपमेंट को छोड़ दें, लेकिन अगर मॉडल में कोई
|
penalty_ |
अगर शिपमेंट पूरा नहीं होता है, तो यह जुर्माना, रूट की कुल कीमत में जोड़ दिया जाता है. अगर शिपमेंट के पिकअप और डिलीवरी के किसी एक विकल्प को चुना जाता है, तो शिपमेंट को पूरा माना जाता है. लागत को उसी यूनिट में दिखाया जा सकता है जिसका इस्तेमाल मॉडल में लागत से जुड़े अन्य सभी फ़ील्ड के लिए किया जाता है. साथ ही, यह यूनिट सकारात्मक होनी चाहिए. अहम जानकारी: अगर इस जुर्माने की जानकारी नहीं दी गई है, तो इसे अनलिमिटेड माना जाता है. इसका मतलब है कि शिपमेंट पूरा करना ज़रूरी है. |
pickup_ |
यह पिकअप से डिलीवरी तक के सबसे छोटे रास्ते की तुलना में, सबसे लंबे रास्ते पर लगने वाले समय की जानकारी देता है. अगर यह जानकारी दी गई है, तो यह संख्या 0 से बड़ी होनी चाहिए. साथ ही, शिपमेंट में कम से कम एक पिकअप और एक डिलीवरी शामिल होनी चाहिए. उदाहरण के लिए, मान लें कि t, पिकअप के चुने गए विकल्प से सीधे डिलीवरी के चुने गए विकल्प पर जाने में लगने वाला कम से कम समय है. इसके बाद,
अगर एक ही शिपमेंट के लिए, रिलेटिव और एब्सोल्यूट, दोनों तरह की सीमाएं तय की गई हैं, तो पिकअप/डिलीवरी के हर संभावित जोड़े के लिए, ज़्यादा पाबंदी वाली सीमा का इस्तेमाल किया जाता है. अक्टूबर 2017 से, यात्रा में लगने वाला समय वाहनों पर निर्भर न होने पर ही, रास्ते में आने वाली रुकावटों की जानकारी दी जा सकती है. |
लोड
किसी विज़िट को पूरा करते समय, पिकअप के लिए वाहन के लोड में पहले से तय की गई रकम जोड़ी जा सकती है या डिलीवरी के लिए रकम घटाई जा सकती है. इस मैसेज में इस रकम के बारे में बताया गया है. load_demands
देखें.
फ़ील्ड | |
---|---|
amount |
उस विज़िट को पूरा करने वाले वाहन का लोड, कितनी मात्रा में बदलेगा. यह एक पूर्णांक है. इसलिए, उपयोगकर्ताओं को सटीक जानकारी पाने के लिए, सही इकाई चुनने का सुझाव दिया जाता है. यह वैल्यू 0 से ज़्यादा होनी चाहिए. |
VisitRequest
वाहन से की जाने वाली विज़िट का अनुरोध: इसमें एक या दो जगह की जानकारी (नीचे देखें), खुलने और बंद होने का समय, और सेवा की अवधि (सामान लेने या छोड़ने के लिए वाहन के पहुंचने के बाद लगने वाला समय) शामिल है.
फ़ील्ड | |
---|---|
arrival_ |
यह |
arrival_ |
वह वेपॉइंट जहां यह |
departure_ |
वह जगह जहां |
departure_ |
वह वेपॉइंट जहां यह |
tags[] |
विज़िट के अनुरोध से जुड़े टैग की जानकारी देता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है. |
time_ |
ऐसी टाइम विंडो जो किसी विज़िट के आने के समय को सीमित करती हैं. ध्यान दें कि कोई वाहन, पहुंचने के समय की विंडो के बाहर जा सकता है. इसका मतलब है कि पहुंचने का समय + कुल समय, समय की विंडो में होना ज़रूरी नहीं है. अगर वाहन
टाइम विंडो अलग-अलग होनी चाहिए.इसका मतलब है कि कोई भी टाइम विंडो, किसी दूसरी टाइम विंडो के साथ ओवरलैप नहीं होनी चाहिए या एक-दूसरे के बगल में नहीं होनी चाहिए. साथ ही, वे बढ़ते क्रम में होनी चाहिए.
|
duration |
विज़िट की अवधि, यानी वाहन के आने और जाने के बीच लगने वाला समय.इसे इंतज़ार के संभावित समय में जोड़ना होगा. |
cost |
वाहन के रास्ते पर, इस विज़िट के अनुरोध को पूरा करने की लागत. इसका इस्तेमाल, शिपमेंट के पिकअप या डिलीवरी के हर विकल्प के लिए अलग-अलग शुल्क चुकाने के लिए किया जा सकता है. यह कीमत, |
load_ |
इस विज़िट के अनुरोध की मांगें लोड करें. यह |
visit_ |
विज़िट के टाइप बताता है. इसका इस्तेमाल, किसी वाहन को इस विज़िट को पूरा करने के लिए ज़रूरी अतिरिक्त समय देने के लिए किया जा सकता है ( एक टाइप सिर्फ़ एक बार दिख सकता है. |
label |
इस |
ShipmentModel
शिपमेंट मॉडल में शिपमेंट का एक सेट होता है. इसे वाहनों के एक सेट से पूरा किया जाना चाहिए. साथ ही, कुल लागत को कम करना चाहिए. कुल लागत में ये चीज़ें शामिल होती हैं:
- वाहनों को रूट करने की लागत (कुल समय के हिसाब से लागत, यात्रा के समय के हिसाब से लागत, और सभी वाहनों के लिए तय लागत का योग).
- शिपमेंट न करने पर लगने वाले जुर्माने.
- शिपमेंट की पूरी अवधि के लिए खरीदार से लिया जाने वाला शुल्क
फ़ील्ड | |
---|---|
shipments[] |
मॉडल में की जाने वाली शिपिंग का सेट. |
vehicles[] |
उन वाहनों का सेट जिनका इस्तेमाल विज़िट करने के लिए किया जा सकता है. |
global_ |
मॉडल के शुरू और खत्म होने का ग्लोबल समय: इस सीमा से बाहर के किसी भी समय को मान्य नहीं माना जा सकता. मॉडल का टाइम स्पैन एक साल से कम होना चाहिए. इसका मतलब है कि
|
global_ |
अगर इसकी वैल्यू सेट नहीं की जाती है, तो डिफ़ॉल्ट रूप से 1 जनवरी, 1971 को 00:00:00 यूटीसी (यानी सेकंड: 31,536,000, नैनो सेकंड: 0) का इस्तेमाल किया जाता है. |
global_ |
पूरे प्लान की "ग्लोबल अवधि", सभी वाहनों के शुरू होने के सबसे पहले समय और खत्म होने के सबसे बाद के समय के बीच का अंतर होती है. उदाहरण के लिए, उपयोगकर्ता उस संख्या के लिए हर घंटे की लागत असाइन कर सकते हैं, ताकि जॉब को जल्द से जल्द पूरा करने के लिए उसे ऑप्टिमाइज़ किया जा सके. यह लागत, |
duration_ |
मॉडल में इस्तेमाल की गई अवधि और दूरी की मैट्रिक के बारे में बताता है. अगर यह फ़ील्ड खाली है, तो इस्तेमाल के उदाहरण:
|
duration_ |
ये टैग, कुल समय और दूरी की मैट्रिक के सोर्स की जानकारी देते हैं. टैग, |
duration_ |
कुल समय और दूरी के मैट्रिक के डेस्टिनेशन तय करने वाले टैग; टैग, |
transition_ |
मॉडल में ट्रांज़िशन एट्रिब्यूट जोड़े गए. |
shipment_ |
shipment_types के ऐसे सेट जो साथ काम नहीं करते ( |
shipment_ |
|
precedence_ |
प्राथमिकता वाले नियमों का सेट, जिसे मॉडल में लागू करना ज़रूरी है. |
max_ |
यह चालू वाहनों की ज़्यादा से ज़्यादा संख्या को सीमित करता है. किसी वाहन को तब चालू माना जाता है, जब उसके रास्ते पर कम से कम एक शिपमेंट किया गया हो. इसका इस्तेमाल, उन मामलों में रास्तों की संख्या को सीमित करने के लिए किया जा सकता है जहां वाहनों की तुलना में ड्राइवर कम हों और वाहनों का फ़्लीट अलग-अलग तरह का हो. इसके बाद, ऑप्टिमाइज़ेशन की सुविधा, वाहनों के सबसे अच्छे सबसेट को चुनेगी. यह पूरी तरह से पॉज़िटिव होना चाहिए. |
DurationDistanceMatrix
यह विज़िट और वाहन की शुरुआती जगह से लेकर विज़िट और वाहन की आखिरी जगह तक की अवधि और दूरी का मैट्रिक बताता है.
फ़ील्ड | |
---|---|
rows[] |
यह अवधि और दूरी मैट्रिक की पंक्तियों के बारे में बताता है. इसमें |
vehicle_ |
यह टैग तय करता है कि यह अवधि और दूरी मैट्रिक किन वाहनों पर लागू होती है. अगर यह एट्रिब्यूट खाली है, तो यह सभी वाहनों पर लागू होता है. साथ ही, इसमें सिर्फ़ एक मैट्रिक हो सकती है. हर वाहन की शुरुआत, सिर्फ़ एक मैट्रिक से मेल खानी चाहिए. इसका मतलब है कि उसका एक सभी मैट्रिक में अलग-अलग |
पंक्ति
यह समय और दूरी की मैट्रिक की लाइन तय करता है.
फ़ील्ड | |
---|---|
durations[] |
किसी पंक्ति के लिए, अवधि की वैल्यू. इसमें |
meters[] |
किसी पंक्ति के लिए दूरी की वैल्यू. अगर मॉडल में दूरी से जुड़ी कोई लागत या पाबंदी नहीं है, तो इसे खाली छोड़ा जा सकता है. अगर ऐसा नहीं है, तो इसमें |
PrecedenceRule
दो इवेंट के बीच प्राथमिकता का नियम (हर इवेंट, शिपमेंट का पिकअप या डिलीवरी है): "पहले" इवेंट के शुरू होने के कम से कम offset_duration
बाद, "दूसरे" इवेंट को शुरू करना होगा.
कई प्राथमिकताएं एक ही (या मिलते-जुलते) इवेंट का रेफ़रंस दे सकती हैं. उदाहरण के लिए, "A की डिलीवरी के बाद B को पिकअप किया जाता है" और "B के पिकअप के बाद C को पिकअप किया जाता है".
इसके अलावा, प्राथमिकताएं सिर्फ़ तब लागू होती हैं, जब दोनों शिपमेंट पूरे किए जाते हैं. ऐसा न होने पर, उन्हें अनदेखा कर दिया जाता है.
फ़ील्ड | |
---|---|
first_ |
इससे पता चलता है कि "पहला" इवेंट डिलीवरी है या नहीं. |
second_ |
इससे पता चलता है कि "दूसरा" इवेंट डिलीवरी है या नहीं. |
offset_ |
"पहले" और "दूसरे" इवेंट के बीच का ऑफ़सेट. यह नेगेटिव हो सकता है. |
first_ |
"पहले" इवेंट का शिपमेंट इंडेक्स. यह फ़ील्ड भरना ज़रूरी है. |
second_ |
"दूसरे" इवेंट का शिपमेंट इंडेक्स. यह फ़ील्ड भरना ज़रूरी है. |
ShipmentRoute
समय अक्ष के साथ, वाहन के रास्ते को इस तरह से अलग-अलग किया जा सकता है (हम मानते हैं कि n विज़िट हैं):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
ध्यान दें कि हम इनके बीच अंतर करते हैं:
- "समय पर होने वाले इवेंट", जैसे कि वाहन के शुरू और खत्म होने का समय और हर विज़िट के शुरू और खत्म होने का समय (यानी पहुंचने और जाने का समय). ये किसी खास सेकंड पर होते हैं.
- "समय के अंतराल", जैसे कि विज़िट और विज़िट के बीच का ट्रांज़िशन. हालांकि, समयावधि कभी-कभी शून्य हो सकती है.इसका मतलब है कि शुरू और खत्म होने का समय एक ही सेकंड हो सकता है. हालांकि, अक्सर समयावधि का कोई मान होता है.
इनवैरिएंट:
- अगर n विज़िट हैं, तो n+1 ट्रांज़िशन हैं.
- किसी विज़िट से पहले (एक ही इंडेक्स) और उसके बाद (इंडेक्स + 1) हमेशा एक ट्रांज़िशन होता है.
- वाहन के चालू होने के बाद, हमेशा ट्रांज़िशन #0 होता है.
- वाहन के खत्म होने से पहले, हमेशा ट्रांज़िशन #n होता है.
ज़ूम इन करने पर, Transition
और Visit
के दौरान क्या होता है, यहां बताया गया है:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
आखिर में, यहां बताया गया है कि ट्रांज़िशन के दौरान TRAVEL, BREAKS, DELAY, और WAIT को कैसे व्यवस्थित किया जा सकता है.
- वे ओवरलैप नहीं होते.
- DELAY यूनीक होता है और अगली विज़िट (या वाहन के खत्म होने) से ठीक पहले, यह लगातार एक समयावधि होनी चाहिए. इसलिए, डिलीवरी में लगने वाले समय की शुरुआत और खत्म होने का समय जानने के लिए, डिलीवरी में लगने वाले समय की जानकारी ही काफ़ी है.
- ब्रेक, एक-दूसरे से जुड़ी अवधियां होती हैं, जो ओवरलैप नहीं होतीं. जवाब में, हर ब्रेक के शुरू होने का समय और उसकी अवधि की जानकारी दी जाती है.
- TRAVEL और WAIT "प्रीएमप्ट किए जा सकते हैं": इस ट्रांज़िशन के दौरान, इनमें कई बार रुकावट आ सकती है. क्लाइंट यह मान सकते हैं कि यात्रा "जितनी जल्दी हो सके" पूरी हो जाएगी और बाकी समय "इंतज़ार" में बीत जाएगा.
एक (जटिल) उदाहरण:
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
फ़ील्ड | |
---|---|
vehicle_ |
रूट पर चलने वाला वाहन, जिसकी पहचान सोर्स |
vehicle_ |
इस रास्ते पर चलने वाले वाहन का लेबल. अगर यह जानकारी दी गई है, तो यह |
vehicle_ |
वाहन के रूट शुरू होने का समय. |
vehicle_ |
वह समय जब गाड़ी अपना रास्ता पूरा कर लेती है. |
visits[] |
किसी रास्ते को दिखाने वाली विज़िट का क्रम. visits[i] रास्ते में i-वी विज़िट है. अगर यह फ़ील्ड खाली है, तो वाहन को इस्तेमाल न किए जाने वाला माना जाता है. |
transitions[] |
रास्ते के लिए ट्रांज़िशन की क्रम से लगाई गई सूची. |
has_ |
जब
ट्रैफ़िक की वजह से, यात्रा में लगने वाले समय |
route_ |
रूट की कोड में बदली गई पॉलीलाइन. यह फ़ील्ड सिर्फ़ तब पॉप्युलेट होता है, जब |
breaks[] |
इस रास्ते पर चलने वाले वाहन के लिए ब्रेक का शेड्यूल. |
metrics |
इस रास्ते के लिए, कुल समय, दूरी, और लोड की मेट्रिक. कॉन्टेक्स्ट के हिसाब से, |
route_ |
रास्ते की कीमत, जिसे कीमत से जुड़े अनुरोध फ़ील्ड के हिसाब से बांटा गया है. इनपुट OptimizeToursRequest के हिसाब से, कुंजियां प्रोटो पाथ होती हैं, जैसे कि "model.shipments.pickups.cost". साथ ही, वैल्यू, उससे जुड़े लागत फ़ील्ड से जनरेट की गई कुल लागत होती हैं, जो पूरे रूट में एग्रीगेट की जाती हैं. दूसरे शब्दों में, costs["model.shipments.pickups.cost"] का मतलब है, रास्ते पर पिकअप करने की सभी लागतों का कुल योग. मॉडल में तय की गई सभी लागतों की जानकारी यहां दी गई है. हालांकि, TransitionAttributes से जुड़ी लागतों की जानकारी 01/2022 से सिर्फ़ एग्रीगेट किए गए तरीके से दी गई है. |
route_ |
रास्ते की कुल कीमत. लागत के मैप में मौजूद सभी लागतों का कुल योग. |
ब्रेक
ब्रेक के लागू होने की जानकारी देने वाला डेटा.
फ़ील्ड | |
---|---|
start_ |
ब्रेक शुरू होने का समय. |
duration |
ब्रेक की अवधि. |
EncodedPolyline
पॉलीलाइन का कोड में बदला गया वर्शन. पॉलीलाइन को कोड में बदलने के बारे में ज़्यादा जानकारी यहां मिल सकती है: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
फ़ील्ड | |
---|---|
points |
पॉलीलाइन के कोड में बदले गए पॉइंट दिखाने वाली स्ट्रिंग. |
ट्रांज़िशन
रास्ते पर दो इवेंट के बीच ट्रांज़िशन. ShipmentRoute
की जानकारी देखें.
अगर वाहन में start_location
और/या end_location
नहीं है, तो यात्रा से जुड़ी मेट्रिक की वैल्यू 0 होगी.
फ़ील्ड | |
---|---|
travel_ |
इस ट्रांज़िशन के दौरान यात्रा की अवधि. |
travel_ |
ट्रांज़िशन के दौरान तय की गई दूरी. |
traffic_ |
जब |
delay_ |
इस ट्रांज़िशन पर लागू होने वाली देरी की कुल अवधि. अगर कोई देरी है, तो यह अगले इवेंट (विज़िट या वाहन के खत्म होने) से ठीक |
break_ |
अगर इस ट्रांज़िशन के दौरान कोई ब्रेक हुआ है, तो उसकी कुल अवधि. हर ब्रेक के शुरू होने के समय और उसकी अवधि की जानकारी, |
wait_ |
इस ट्रांज़िशन के दौरान इंतज़ार करने में लगने वाला समय. इंतज़ार का समय, इंतज़ार में बिताए गए समय से जुड़ा होता है. इसमें ब्रेक का समय शामिल नहीं होता. यह भी ध्यान दें कि इंतज़ार का यह समय, एक-दूसरे से अलग-अलग इंटरवल में हो सकता है. |
total_ |
ट्रांज़िशन की कुल अवधि, जो आपकी सुविधा के लिए दी गई है. यह बराबर है:
|
start_ |
इस ट्रांज़िशन का शुरू होने का समय. |
route_ |
ट्रांज़िशन के दौरान इस्तेमाल किए गए रास्ते की जानकारी देने वाली कोड की गई पॉलीलाइन. यह फ़ील्ड सिर्फ़ तब पॉप्युलेट होता है, जब |
route_ |
सिर्फ़ आउटपुट के लिए. यह एक ऐसा टोक़न है जिसे नेविगेशन के दौरान रास्ते को फिर से बनाने के लिए, Navigation SDK को पास किया जा सकता है. साथ ही, रास्ते को फिर से बनाने की स्थिति में, रास्ता बनाने के मूल मकसद का सम्मान किया जाता है. इस टोकन को एक ओपेक ब्लॉब के तौर पर इस्तेमाल करें. अलग-अलग अनुरोधों में इसकी वैल्यू की तुलना न करें. ऐसा इसलिए, क्योंकि सेवा का वही रास्ता दिखाने पर भी इसकी वैल्यू बदल सकती है. यह फ़ील्ड सिर्फ़ तब पॉप्युलेट होता है, जब |
vehicle_ |
इस ट्रांज़िशन के दौरान, वाहन के हर उस टाइप के लिए लोड होता है जो इस वाहन के पहले ट्रांज़िशन के दौरान लोड, वाहन के रूट के शुरुआती लोड होते हैं. इसके बाद, हर विज़िट के बाद, विज़िट के |
VehicleLoad
किसी खास तरह के वाहन के लिए, रास्ते के किसी हिस्से पर वाहन के असल लोड की रिपोर्टिंग करता है (Transition.vehicle_loads
देखें).
फ़ील्ड | |
---|---|
amount |
वाहन के टाइप के हिसाब से, उस पर लोड की मात्रा. आम तौर पर, लोड की यूनिट का पता टाइप से चलता है. |
यहां जाएं
किसी रूट के दौरान की गई विज़िट. यह विज़िट, Shipment
के पिकअप या डिलीवरी से जुड़ी है.
फ़ील्ड | |
---|---|
shipment_ |
सोर्स |
is_ |
अगर यह वैल्यू 'सही' है, तो इसका मतलब है कि विज़िट, |
visit_ |
|
start_ |
विज़िट शुरू होने का समय. ध्यान दें कि हो सकता है कि वाहन, विज़िट की जगह पर इससे पहले पहुंच जाए. समय, |
load_ |
शिपमेंट और विज़िट के अनुरोध |
detour |
आपके डिलीवरी पते पर पहुंचने से पहले, रास्ते में जिन शिपमेंट को डिलीवर किया गया है उनकी वजह से, डिलीवरी में लगने वाला अतिरिक्त समय. साथ ही, समयसीमा की वजह से इंतज़ार करने में लगने वाला समय. अगर विज़िट डिलीवरी के लिए है, तो डेलिवरी के लिए किए गए सफ़र का हिसाब, पिकअप के लिए किए गए सफ़र से लगाया जाता है. यह हिसाब इस तरह लगाया जाता है:
अगर ऐसा नहीं है, तो इसका हिसाब वाहन
|
shipment_ |
अगर |
visit_ |
अगर |
ShipmentTypeIncompatibility
इससे शिपमेंट के shipment_type के आधार पर, शिपमेंट के बीच की गड़बड़ियों के बारे में पता चलता है. एक ही रास्ते पर, एक-दूसरे के साथ काम न करने वाले शिपमेंट दिखने पर पाबंदी, काम न करने के मोड के आधार पर लगाई जाती है.
फ़ील्ड | |
---|---|
types[] |
काम न करने वाले टाइप की सूची. सूची में शामिल दो शिपमेंट, जिनका |
incompatibility_ |
काम न करने की समस्या पर लागू मोड. |
IncompatibilityMode
ये मोड बताते हैं कि एक ही रास्ते पर, एक-दूसरे के साथ काम न करने वाले शिपमेंट को कैसे दिखाने से रोका जाता है.
Enums | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
काम न करने वाला कोई मोड. इस वैल्यू का कभी भी इस्तेमाल नहीं किया जाना चाहिए. |
NOT_PERFORMED_BY_SAME_VEHICLE |
इस मोड में, एक-दूसरे के साथ काम न करने वाले दो शिपमेंट के लिए, एक ही वाहन का इस्तेमाल नहीं किया जा सकता. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
|
ShipmentTypeRequirement
इससे शिपमेंट के टाइप के आधार पर, शिपमेंट के लिए ज़रूरी शर्तों के बारे में पता चलता है. ज़रूरी शर्तों के बारे में जानकारी, ज़रूरी शर्त के मोड से मिलती है.
फ़ील्ड | |
---|---|
required_ |
|
dependent_ |
ध्यान दें: ज़रूरी शर्तों की ऐसी चेन बनाने की अनुमति नहीं है जिसमें |
requirement_ |
ज़रूरी शर्त पर लागू मोड. |
RequirementMode
ऐसे मोड जो किसी रूट पर, एक-दूसरे पर निर्भर शिपमेंट के दिखने के तरीके के बारे में बताते हैं.
Enums | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
ज़रूरी शर्तों का मोड नहीं बताया गया है. इस वैल्यू का कभी भी इस्तेमाल नहीं किया जाना चाहिए. |
PERFORMED_BY_SAME_VEHICLE |
इस मोड में, सभी "डिपेंडेंट" शिपमेंट के लिए, कम से कम एक "ज़रूरी" शिपमेंट के साथ एक ही वाहन का इस्तेमाल करना होगा. |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
इसलिए, "डिपेंडेंट" शिपमेंट के पिकअप के लिए, इनमें से कोई एक होना चाहिए:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
पहले की तरह ही, सिवाय इसके कि "डिपेंडेंट" शिपमेंट के लिए, डिलीवरी के समय उनके वाहन में "ज़रूरी" शिपमेंट होना चाहिए. |
SkippedShipment
किसी समाधान में, पूरे नहीं किए गए शिपमेंट की जानकारी देता है. मामूली मामलों और/या वीडियो स्किप करने की वजह का पता चलने पर, हम इसकी वजह यहां बताते हैं.
फ़ील्ड | |
---|---|
index |
इंडेक्स, सोर्स |
label |
अगर |
reasons[] |
शिपमेंट को छोड़ने की वजहों की सूची. |
कारण
अगर हम शिपमेंट को छोड़ने की वजह बता सकते हैं, तो इसकी वजहें यहां दी जाएंगी. अगर सभी वाहनों के लिए वजह एक जैसी नहीं है, तो reason
में एक से ज़्यादा एलिमेंट होंगे. जिस शिपमेंट को छोड़ा गया है उसके लिए, डुप्लीकेट वजहें नहीं हो सकतीं. इसका मतलब है कि example_vehicle_index
के अलावा सभी फ़ील्ड एक जैसे होने चाहिए. उदाहरण:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
छोड़ा गया शिपमेंट, सभी वाहनों के साथ काम नहीं करता. सभी वाहनों के लिए वजहें अलग-अलग हो सकती हैं. हालांकि, कम से कम एक वाहन में "सेब" की क्षमता से ज़्यादा सेब होंगे (इसमें वाहन 1 भी शामिल है), कम से कम एक वाहन में "नाशपाती" की क्षमता से ज़्यादा नाशपाती होंगे (इसमें वाहन 3 भी शामिल है), और कम से कम एक वाहन की दूरी की सीमा से ज़्यादा दूरी तय की जाएगी (इसमें वाहन 1 भी शामिल है).
फ़ील्ड | |
---|---|
code |
कोड की टिप्पणियां देखें. |
example_ |
अगर वजह का कोड |
example_ |
अगर वजह, शिपमेंट और वाहन के काम न करने से जुड़ी है, तो इस फ़ील्ड में उस वाहन का इंडेक्स दिया जाता है जो काम का है. |
कोड
वजह के टाइप की पहचान करने वाला कोड. यहां दिए गए क्रम का कोई मतलब नहीं है. खास तौर पर, इससे यह पता नहीं चलता कि अगर दोनों वजहें लागू होती हैं, तो समाधान में कोई वजह किसी दूसरी वजह से पहले दिखेगी या नहीं.
Enums | |
---|---|
CODE_UNSPECIFIED |
इसका कभी इस्तेमाल नहीं किया जाना चाहिए. |
NO_VEHICLE |
मॉडल में कोई वाहन नहीं है, इसलिए सभी शिपमेंट की सुविधा उपलब्ध नहीं है. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
शिपमेंट की मांग, कुछ तरह की कपैसिटी के लिए वाहन की कपैसिटी से ज़्यादा है. इनमें से एक example_exceeded_capacity_type है. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
इस शिपमेंट को पूरा करने के लिए, वाहन की ध्यान दें कि इस हिसाब लगाने के लिए, हम जियोडेसिक दूरियों का इस्तेमाल करते हैं. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
इस शिपमेंट को पूरा करने में लगने वाला कम से कम समय, वाहन के ध्यान दें: यात्रा में लगने वाले समय का हिसाब, सबसे बेहतर स्थिति के हिसाब से लगाया जाता है. जैसे, जियोडेसिक दूरी x 36 मीटर/सेकंड (लगभग 130 कि॰मी॰/घं॰). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
यह ऊपर बताए गए तरीके जैसा ही है. हालांकि, हम सिर्फ़ यात्रा के कम से कम समय और वाहन के travel_duration_limit की तुलना करते हैं. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
अगर वाहन सबसे पहले शुरू होने के समय पर शुरू होता है, तो वह सबसे अच्छी स्थिति में भी यह शिपमेंट नहीं कर सकता (समय का हिसाब लगाने के लिए CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT देखें): कुल समय के हिसाब से, वाहन के खत्म होने का समय, उसके खत्म होने के आखिरी समय के बाद होगा. |
VEHICLE_NOT_ALLOWED |
शिपमेंट का allowed_vehicle_indices फ़ील्ड खाली नहीं है और यह वाहन उससे जुड़ा नहीं है. |
TimeWindow
टाइम विंडो, किसी इवेंट के समय को सीमित करती हैं. जैसे, किसी विज़िट के पहुंचने का समय या किसी वाहन के शुरू और खत्म होने का समय.
टाइम विंडो की सीमाएं, start_time
और end_time
, इवेंट के शुरू और खत्म होने के समय को तय करती हैं, जैसे कि start_time <= event_time <=
end_time
. सॉफ्ट टाइम विंडो की निचली सीमा, soft_start_time
, यह बताती है कि इवेंट soft_start_time
को या उसके बाद होने की संभावना है. इसके लिए, इवेंट के soft_start_time से पहले होने पर, लागत के हिसाब से शुल्क लिया जाता है. सॉफ़्ट टाइम विंडो की ऊपरी सीमा, soft_end_time
, यह बताती है कि इवेंट soft_end_time
पर या उससे पहले होना चाहिए. इसके लिए, soft_end_time
के बाद इवेंट होने पर, लागत के हिसाब से शुल्क लिया जाता है. start_time
, end_time
, soft_start_time
, और soft_end_time
वैल्यू, ग्लोबल टाइमसीमा के अंदर होनी चाहिए (ShipmentModel.global_start_time
और ShipmentModel.global_end_time
देखें). साथ ही, ये वैल्यू इन बातों का ध्यान रखनी चाहिए:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
फ़ील्ड | |
---|---|
start_ |
'रिलीज़ की समयसीमा' की शुरुआत का समय. अगर कोई वैल्यू नहीं दी जाती है, तो यह |
end_ |
हार्ड टाइम विंडो खत्म होने का समय. अगर कोई वैल्यू नहीं दी जाती है, तो यह |
soft_ |
समयावधि के शुरू होने का समय. |
soft_ |
समयसीमा खत्म होने का अनुमानित समय. |
cost_ |
अगर इवेंट, soft_start_time से पहले होता है, तो मॉडल में अन्य लागतों के साथ हर घंटे की लागत जोड़ी जाती है. इसे इस तरह से कैलकुलेट किया जाता है:
यह शुल्क, शून्य से ज़्यादा होना चाहिए. साथ ही, यह फ़ील्ड सिर्फ़ तब सेट किया जा सकता है, जब soft_start_time सेट किया गया हो. |
cost_ |
अगर इवेंट
यह लागत पॉज़िटिव होनी चाहिए. साथ ही, यह फ़ील्ड सिर्फ़ तब सेट किया जा सकता है, जब |
TransitionAttributes
किसी रूट पर लगातार दो विज़िट के बीच ट्रांज़िशन के एट्रिब्यूट बताता है. एक ही ट्रांज़िशन पर कई TransitionAttributes
लागू हो सकते हैं: ऐसे में, सभी अतिरिक्त लागतें जोड़ दी जाती हैं और सबसे सख्त शर्त या सीमा लागू होती है (सामान्य "AND" सेमेटिक्स के हिसाब से).
फ़ील्ड | |
---|---|
src_ |
ये टैग, (src->dst) ट्रांज़िशन के सेट को तय करते हैं जिन पर ये एट्रिब्यूट लागू होते हैं. सोर्स विज़िट या वाहन शुरू होने की जानकारी तब ही मैच होती है, जब उसके |
excluded_ |
|
dst_ |
डेस्टिनेशन विज़िट या वाहन के खत्म होने की जानकारी तब ही मैच होती है, जब उसके |
excluded_ |
|
cost |
इस ट्रांज़िशन को लागू करने की लागत बताता है. यह मॉडल में मौजूद अन्य सभी लागतों की तरह ही एक ही इकाई में होती है. साथ ही, यह नकारात्मक नहीं होनी चाहिए. यह शुल्क, अन्य सभी मौजूदा शुल्कों के ऊपर लागू होता है. |
cost_ |
इस ट्रांज़िशन के दौरान, यात्रा की गई दूरी पर लागू होने वाली हर किलोमीटर की कीमत बताता है. यह वैल्यू, वाहनों पर बताए गए किसी भी |
distance_ |
इस ट्रांज़िशन को लागू करते समय, यात्रा की दूरी की सीमा तय करता है. जून 2021 से, सिर्फ़ सॉफ्ट लिमिट का इस्तेमाल किया जा सकता है. |
delay |
इस ट्रांज़िशन को लागू करने में लगने वाले समय की जानकारी देता है. यह देरी हमेशा सोर्स विज़िट खत्म होने के बाद और डेस्टिनेशन विज़िट शुरू होने से पहले होती है. |
वाहन
शिपिंग में समस्या वाले वाहन का मॉडल. शिपमेंट से जुड़ी समस्या को हल करने पर, इस वाहन के लिए start_location
से शुरू होकर end_location
पर खत्म होने वाला रास्ता बन जाएगा. रूट, विज़िट का क्रम होता है (ShipmentRoute
देखें).
फ़ील्ड | |
---|---|
display_ |
वाहन का वह नाम जो उपयोगकर्ता ने तय किया है. इसमें ज़्यादा से ज़्यादा 63 वर्ण हो सकते हैं. साथ ही, UTF-8 वर्णों का इस्तेमाल किया जा सकता है. |
travel_ |
यात्रा का मोड, जिससे वाहन के लिए इस्तेमाल की जा सकने वाली सड़कों और उसकी स्पीड पर असर पड़ता है. |
route_ |
शर्तों का एक सेट, जो किसी वाहन के लिए रास्तों का हिसाब लगाने के तरीके पर असर डालता है. |
start_ |
वह जगह जहां से वाहन किसी भी शिपमेंट को पिक अप करने से पहले शुरू होता है. अगर इसकी जानकारी नहीं दी जाती है, तो वाहन पहली बार पिकअप करने पर शुरू हो जाता है. अगर शिपमेंट मॉडल में कुल समय और दूरी के मैट्रिक हैं, तो |
start_ |
वह वेपॉइंट जो किसी भौगोलिक जगह को दिखाता है. वाहन, शिपमेंट लेने से पहले यहां से शुरू होता है. अगर |
end_ |
वह भौगोलिक जगह जहां वाहन, आखिरी |
end_ |
वह वेपॉइंट जो किसी भौगोलिक जगह को दिखाता है जहां वाहन, आखिरी |
start_ |
वाहन के रास्ते की शुरुआत में जोड़े गए टैग की जानकारी देता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है. |
end_ |
वाहन के रूट के आखिर में जोड़े गए टैग की जानकारी देता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है. |
start_ |
वह समय जब वाहन अपनी शुरुआती जगह से निकल सकता है. ये समयसीमाएं, ग्लोबल समयसीमाओं के अंदर होनी चाहिए ( एक ही बार-बार इस्तेमाल होने वाले फ़ील्ड की टाइम विंडो अलग-अलग होनी चाहिए.इसका मतलब है कि कोई भी टाइम विंडो, किसी दूसरी टाइम विंडो के साथ ओवरलैप नहीं हो सकती या उसके बगल में नहीं हो सकती. साथ ही, वे टाइम विंडो, समय के हिसाब से क्रम में होनी चाहिए.
|
end_ |
वह समयसीमा जिसके दौरान वाहन, अपनी मंज़िल पर पहुंच सकता है. ये समयसीमाएं, ग्लोबल समयसीमाओं के अंदर होनी चाहिए ( एक ही बार-बार इस्तेमाल होने वाले फ़ील्ड की टाइम विंडो अलग-अलग होनी चाहिए.इसका मतलब है कि कोई भी टाइम विंडो, किसी दूसरी टाइम विंडो के साथ ओवरलैप नहीं हो सकती या उसके बगल में नहीं हो सकती. साथ ही, वे टाइम विंडो, समय के हिसाब से क्रम में होनी चाहिए.
|
unloading_ |
वाहन पर लागू की गई, सामान उतारने की नीति. |
load_ |
वाहन की क्षमताएं (उदाहरण के लिए, वज़न, वॉल्यूम, पैलेट की संख्या). मैप में मौजूद कुंजियां, लोड के टाइप के आइडेंटिफ़ायर होती हैं. ये कुंजियां, |
cost_ |
वाहन की लागत: सभी लागतें जोड़ दी जाती हैं और वे वाहन के रास्ते की हर घंटे की कीमत. यह शुल्क, रास्ते में लगने वाले कुल समय पर लागू होता है. इसमें यात्रा का समय, इंतज़ार का समय, और यात्रा के दौरान रुकने का समय शामिल होता है. सिर्फ़ |
cost_ |
वाहन के रास्ते पर, हर घंटे की यात्रा की लागत. यह लागत, सिर्फ़ रास्ते में लगने वाले समय (यानी |
cost_ |
वाहन के रास्ते का हर किलोमीटर का किराया. यह शुल्क, |
fixed_ |
अगर इस वाहन का इस्तेमाल शिपमेंट को मैनेज करने के लिए किया जाता है, तो तय की गई कीमत लागू होती है. |
used_ |
यह फ़ील्ड सिर्फ़ उन वाहनों पर लागू होता है जिनके रास्ते पर कोई शिपमेंट नहीं होता. इससे पता चलता है कि इस मामले में, गाड़ी को इस्तेमाल की गई गाड़ी माना जाना चाहिए या नहीं. अगर यह'सही है' पर सेट है, तो वाहन अपनी शुरुआती जगह से आखिरी जगह तक जाता है, भले ही वह कोई शिपमेंट न करता हो. साथ ही, शुरुआती जगह से आखिरी जगह तक की यात्रा में लगने वाले समय और दूरी की लागत को ध्यान में रखा जाता है. ऐसा न करने पर, यह वाहन अपनी शुरुआती लोकेशन से आखिरी लोकेशन तक नहीं जाता और इस वाहन के लिए कोई |
route_ |
यह सीमा, वाहन के रास्ते की कुल अवधि पर लागू होती है. किसी |
travel_ |
यह सीमा, वाहन के रास्ते की यात्रा की अवधि पर लागू होती है. किसी दिए गए |
route_ |
यह सीमा, वाहन के रास्ते की कुल दूरी पर लागू होती है. किसी दिए गए |
extra_ |
visit_types स्ट्रिंग से लेकर अवधि तक के मैप की जानकारी देता है. यह समय, अगर विज़िट के अनुरोध के कई टाइप हैं, तो मैप में हर टाइप के लिए एक अवधि जोड़ी जाएगी. |
break_ |
इस वाहन पर ब्रेक के लिए तय किए गए शेड्यूल के बारे में बताता है. अगर यह फ़ील्ड खाली है, तो इस वाहन के लिए कोई ब्रेक शेड्यूल नहीं किया जाएगा. |
label |
इस वाहन के लिए लेबल तय करता है. इस लेबल को जवाब में, उससे जुड़े |
ignore |
अगर यह सही है, तो अगर अगर |
travel_ |
यह एक मल्टीप्लायर फ़ैक्टर होता है. इसका इस्तेमाल, इस वाहन के यात्रा के समय को बढ़ाने या घटाने के लिए किया जा सकता है. उदाहरण के लिए, इसे 2.0 पर सेट करने का मतलब है कि यह वाहन धीमा है और यात्रा में लगने वाला समय, स्टैंडर्ड वाहनों के मुकाबले दोगुना है. इस मल्टीपल का असर, विज़िट के कुल समय पर नहीं पड़ता. अगर चेतावनी: इस मल्टीप्लायर को लागू करने के बाद, यात्रा के समय को सबसे नज़दीकी सेकंड में राउंड किया जाएगा. हालांकि, कोई भी अंकों वाला ऑपरेशन करने से पहले ऐसा किया जाएगा. इसलिए, किसी छोटे मल्टीप्लायर का इस्तेमाल करने पर, यात्रा के समय में थोड़ी गड़बड़ी हो सकती है. नीचे |
DurationLimit
वाहन के रास्ते की ज़्यादा से ज़्यादा अवधि तय करने वाली सीमा. यह हार्ड या सॉफ़्ट हो सकता है.
सॉफ्ट लिमिट फ़ील्ड तय करने पर, सॉफ्ट मैक्स थ्रेशोल्ड और उससे जुड़ी लागत, दोनों को एक साथ तय करना ज़रूरी है.
फ़ील्ड | |
---|---|
max_ |
यह एक तय सीमा है, जो अवधि को ज़्यादा से ज़्यादा max_duration तक सीमित करती है. |
soft_ |
यह एक सॉफ्ट लिमिट है, जो वीडियो की अवधि की ज़्यादा से ज़्यादा सीमा लागू नहीं करती. हालांकि, इसकी सीमा का उल्लंघन करने पर, रास्ते के लिए शुल्क लिया जाता है. यह लागत, मॉडल में बताई गई अन्य लागतों के साथ जोड़ दी जाती है. इन सभी लागतों की इकाई एक ही होती है. अगर |
quadratic_ |
यह एक सॉफ्ट लिमिट है, जो रन टाइम की ज़्यादा से ज़्यादा सीमा लागू नहीं करती. हालांकि, इसकी सीमा का उल्लंघन करने पर, रन टाइम के हिसाब से रास्ते की कीमत बढ़ जाती है. यह लागत, मॉडल में बताई गई अन्य लागतों के साथ जोड़ दी जाती है. इन सभी लागतों की इकाई एक ही होती है. अगर
|
cost_ |
कीमत नेगेटिव नहीं होनी चाहिए. |
cost_ |
अगर अवधि थ्रेशोल्ड से कम है, तो अतिरिक्त शुल्क 0 होगा. अगर अवधि थ्रेशोल्ड से ज़्यादा है, तो शुल्क इस हिसाब से होगा:
कीमत नेगेटिव नहीं होनी चाहिए. |
LoadLimit
इससे किसी वाहन पर लागू होने वाली लोड सीमा के बारे में पता चलता है. उदाहरण के लिए, "इस ट्रक में सिर्फ़ 3,500 किलो तक का सामान लाया जा सकता है". load_limits
देखें.
फ़ील्ड | |
---|---|
soft_ |
लोड की एक सॉफ्ट सीमा. |
cost_ |
अगर इस वाहन के रास्ते पर लोड कभी भी |
start_ |
रास्ते की शुरुआत में, वाहन के लोड इंटरवल की तय सीमा. |
end_ |
रास्ते के आखिर में, वाहन में लोड करने के लिए स्वीकार की जाने वाली समयावधि. |
max_ |
लोड की ज़्यादा से ज़्यादा अनुमति वाली रकम. |
इंटरवल
लोड की जाने वाली रकम का इंटरवल.
फ़ील्ड | |
---|---|
min |
कम से कम लोड. यह वैल्यू 0 से ज़्यादा होनी चाहिए. अगर दोनों की जानकारी दी गई है, तो |
max |
ज़्यादा से ज़्यादा लोड. यह वैल्यू 0 से ज़्यादा होनी चाहिए. अगर इस एट्रिब्यूट की कोई वैल्यू सबमिट नहीं की जाती है, तो इस मैसेज से ज़्यादा से ज़्यादा लोड पर कोई पाबंदी नहीं होती. अगर दोनों की जानकारी दी गई है, तो |
TravelMode
यात्रा के ऐसे तरीके जिनका इस्तेमाल वाहनों से किया जा सकता है.
ये, Google Maps Platform Routes Preferred API के यात्रा के मोड के सबसेट होने चाहिए. ज़्यादा जानकारी के लिए, https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode पर जाएं.
Enums | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
यात्रा के मोड की जानकारी नहीं दी गई है. यह DRIVING के बराबर है. |
DRIVING |
ड्राइविंग निर्देशों से जुड़ा यात्रा मोड (कार, ...). |
WALKING |
पैदल चलने के निर्देशों से जुड़ा यात्रा मोड. |
UnloadingPolicy
वाहन को अनलोड करने के तरीके से जुड़ी नीति. यह सिर्फ़ उन शिपमेंट पर लागू होता है जिनमें पिकअप और डिलीवरी, दोनों की सुविधा उपलब्ध होती है.
unloading_policy
के अलावा, अन्य शिपमेंट के लिए, रूट पर कहीं भी शिपिंग की जा सकती है.
Enums | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
सामान उतारने की कोई नीति नहीं दी गई है. डिलीवरी, पिकअप के बाद ही होनी चाहिए. |
LAST_IN_FIRST_OUT |
डिलीवरी, पिकअप के उलटे क्रम में होनी चाहिए |
FIRST_IN_FIRST_OUT |
डिलीवरी, पिकअप के क्रम में होनी चाहिए |
वेपॉइंट
वेपॉइंट को एनकैप्सुलेट करता है. वे पॉइंट, विज़िट रिक्वेस्ट के पहुंचने और जाने की जगहों के साथ-साथ, वाहनों के शुरू और खत्म होने की जगहों को मार्क करते हैं.
फ़ील्ड | |
---|---|
side_ |
ज़रूरी नहीं. इससे पता चलता है कि इस वेपॉइंट की जगह पर, वाहन को सड़क की किसी खास तरफ़ रोकने की प्राथमिकता दी गई है. इस वैल्यू को सेट करने पर, रास्ता उस जगह से होकर गुज़रेगा, ताकि वाहन सड़क के उस हिस्से पर रुक सके जो सड़क के बीच से उस जगह की ओर झुका हुआ है. यह विकल्प, 'पैदल चलना' यात्रा मोड के लिए काम नहीं करता. |
यूनियन फ़ील्ड location_type . किसी जगह की जानकारी दिखाने के अलग-अलग तरीके. location_type इनमें से कोई एक हो सकता है: |
|
location |
भौगोलिक निर्देशांक का इस्तेमाल करके तय किया गया कोई पॉइंट. इसमें हेडिंग भी शामिल हो सकती है. |
place_ |
वेपॉइंट से जुड़ा लोकप्रिय जगह का आईडी. |