इंडेक्स
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(मैसेज)OptimizeToursLongRunningMetadata(मैसेज)OptimizeToursRequest(मैसेज)OptimizeToursRequest.SearchMode(enum)OptimizeToursRequest.SolvingMode(enum)OptimizeToursResponse(मैसेज)OptimizeToursResponse.Metrics(मैसेज)OptimizeToursUriMetadata(मैसेज)OptimizeToursUriRequest(मैसेज)OptimizeToursUriResponse(मैसेज)OptimizeToursValidationError(मैसेज)OptimizeToursValidationError.FieldReference(मैसेज)OutputConfig(मैसेज)RouteModifiers(मैसेज)Shipment(मैसेज)Shipment.Load(मैसेज)Shipment.VisitRequest(मैसेज)ShipmentModel(मैसेज)ShipmentModel.DurationDistanceMatrix(मैसेज)ShipmentModel.DurationDistanceMatrix.Row(मैसेज)ShipmentModel.Objective(मैसेज)ShipmentModel.Objective.Type(enum)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(मैसेज)Uri(मैसेज)Vehicle(मैसेज)Vehicle.DurationLimit(मैसेज)Vehicle.LoadLimit(मैसेज)Vehicle.LoadLimit.Interval(मैसेज)Vehicle.LoadLimit.LoadCost(मैसेज)Vehicle.TravelMode(enum)Vehicle.UnloadingPolicy(enum)VehicleFullness(मैसेज)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] के बीच होनी चाहिए.
- नैनोसेकंड की वैल्यू सेट नहीं होनी चाहिए या इसे 0 पर सेट किया जाना चाहिए.
google.protobuf.Duration- सेकंड की वैल्यू [0, 253402300799] के बीच होनी चाहिए. इसका मतलब है कि वैल्यू [1970-01-01T00:00:00+00:00, 9999-12-31T23:59:59+00:00] के बीच होनी चाहिए.
- नैनोसेकंड की वैल्यू सेट नहीं होनी चाहिए या इसे 0 पर सेट किया जाना चाहिए.
google.type.LatLng- अक्षांश [-90.0, 90.0] के बीच होना चाहिए.
- देशांतर [-180.0, 180.0] के बीच होना चाहिए.
- अक्षांश और देशांतर में से कम से कम एक की वैल्यू शून्य नहीं होनी चाहिए.
| BatchOptimizeTours |
|---|
|
यह एक या उससे ज़्यादा यह तरीका, ज़्यादा समय तक चलने वाली कार्रवाई (एलआरओ) है. ऑप्टिमाइज़ेशन के लिए इनपुट ( उपयोगकर्ता, एलआरओ की स्थिति देखने के लिए अगर LRO अगर LRO का
|
| OptimizeTours |
|---|
|
यह
इसका मकसद,
|
| OptimizeToursLongRunning |
|---|
|
यह जवाब में मिले एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request पर जाएं.
|
| OptimizeToursUri |
|---|
|
यह क्लाइंट, Google Cloud Storage में सेव किए गए अगर ऑप्टिमाइज़ेशन में कुछ मिनटों से ज़्यादा समय लगता है और इनपुट/आउटपुट का साइज़ 8 एमबी से ज़्यादा है, तो जवाब में मिले एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/otlr/make-request पर जाएं.
|
AggregatedMetrics
ShipmentRoute के लिए कुल मेट्रिक. इसी तरह, सभी Transition और/या Visit (क्रमशः सभी ShipmentRoute) एलिमेंट के लिए OptimizeToursResponse के लिए कुल मेट्रिक.
| फ़ील्ड | |
|---|---|
performed_shipment_count |
किए गए शिपमेंट की संख्या. ध्यान दें कि पिकअप और डिलीवरी के एक पेयर को सिर्फ़ एक बार गिना जाता है. |
travel_duration |
किसी रास्ते या समाधान के लिए यात्रा की कुल अवधि. |
wait_duration |
किसी रास्ते या समाधान के लिए इंतज़ार करने का कुल समय. |
delay_duration |
किसी रास्ते या समाधान के लिए, कुल देरी की अवधि. |
break_duration |
किसी रास्ते या समाधान के लिए, कुल ब्रेक की अवधि. |
visit_duration |
किसी रास्ते या समाधान के लिए विज़िट की कुल अवधि. |
total_duration |
कुल अवधि, ऊपर दी गई सभी अवधियों के योग के बराबर होनी चाहिए. रास्तों के लिए, यह इन चीज़ों से भी मेल खाता है: |
travel_distance_meters |
किसी रास्ते या समाधान के लिए तय की गई कुल दूरी. |
max_loads |
पूरे रास्ते (यानी कि समाधान) के लिए, इस रास्ते (यानी कि समाधान) पर मौजूद हर मात्रा के लिए, ज़्यादा से ज़्यादा लोड हासिल किया गया. इसे सभी |
performed_mandatory_shipment_count |
ज़रूरी शिपमेंट की संख्या. एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
performed_shipment_penalty_cost_sum |
यह शिप किए गए प्रॉडक्ट के एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
BatchOptimizeToursMetadata
इस टाइप में कोई फ़ील्ड नहीं है.
BatchOptimizeToursRequest कॉल के लिए ऑपरेशन मेटाडेटा.
BatchOptimizeToursRequest
एसिंक्रोनस ऑपरेशन के तौर पर, यात्राओं को बैच ऑप्टिमाइज़ करने का अनुरोध करें. हर इनपुट फ़ाइल में एक OptimizeToursRequest होना चाहिए. साथ ही, हर आउटपुट फ़ाइल में एक OptimizeToursResponse होगा. अनुरोध में फ़ाइलों को पढ़ने/लिखने और पार्स करने की जानकारी शामिल होती है. सभी इनपुट और आउटपुट फ़ाइलें एक ही प्रोजेक्ट में होनी चाहिए.
| फ़ील्ड | |
|---|---|
parent |
ज़रूरी है. कॉल करने के लिए, टारगेट प्रोजेक्ट और जगह की जानकारी. फ़ॉर्मैट:
अगर कोई जगह नहीं चुनी जाती है, तो कोई क्षेत्र अपने-आप चुन लिया जाएगा. |
model_configs[] |
ज़रूरी है. हर खरीदारी मॉडल के लिए इनपुट/आउटपुट की जानकारी, जैसे कि फ़ाइल पाथ और डेटा फ़ॉर्मैट. |
AsyncModelConfig
एक ऑप्टिमाइज़ेशन मॉडल को एसिंक्रोनस तरीके से हल करने के लिए जानकारी.
| फ़ील्ड | |
|---|---|
display_name |
ज़रूरी नहीं. उपयोगकर्ता की ओर से तय किया गया मॉडल का नाम. उपयोगकर्ता, मॉडल को ट्रैक करने के लिए इसका इस्तेमाल एलियास के तौर पर कर सकते हैं. |
input_config |
ज़रूरी है. इनपुट मॉडल के बारे में जानकारी. |
output_config |
ज़रूरी है. आउटपुट के लिए जगह की जानकारी. |
BatchOptimizeToursResponse
इस टाइप में कोई फ़ील्ड नहीं है.
BatchOptimizeToursRequest का जवाब. यह ऑपरेशन पूरा होने के बाद, Long Running Operation में दिखता है.
BreakRule
किसी वाहन के लिए ब्रेक का समय जनरेट करने के नियम. जैसे, दोपहर के खाने का ब्रेक. ब्रेक, एक तय समय होता है. इस दौरान, वाहन अपनी मौजूदा जगह पर खड़ा रहता है और कोई विज़िट नहीं कर सकता. ब्रेक तब आ सकता है, जब:
- दो विज़िट के बीच की यात्रा के दौरान (इसमें विज़िट से ठीक पहले या ठीक बाद का समय शामिल है, लेकिन विज़िट के बीच का समय शामिल नहीं है). ऐसे मामले में, यह विज़िट के बीच के ट्रांज़िट समय को बढ़ा देता है,
- या गाड़ी चालू होने से पहले (गाड़ी ब्रेक के बीच में चालू नहीं हो सकती). ऐसे में, गाड़ी के चालू होने के समय पर इसका असर नहीं पड़ता.
- या वाहन के रुकने के बाद (वाहन के रुकने के समय के साथ).
| फ़ील्ड | |
|---|---|
break_requests[] |
ब्रेक का क्रम. |
frequency_constraints[] |
एक से ज़्यादा |
BreakRequest
हर वाहन पर लागू होने वाले ब्रेक का क्रम (यानी कि उनकी संख्या और क्रम) पहले से पता होना चाहिए. BreakRequest को दोहराकर, उस क्रम को तय किया जाता है जिसमें उन्हें होना चाहिए. ऐसा हो सकता है कि डिलीवरी के लिए तय की गई समयावधि (earliest_start_time / latest_start_time) एक-दूसरे से मेल खाए. हालांकि, यह ज़रूरी है कि डिलीवरी के लिए तय की गई समयावधि, ऑर्डर के साथ काम करे. इसकी जांच की जाती है.
| फ़ील्ड | |
|---|---|
earliest_start_time |
ज़रूरी है. ब्रेक शुरू होने का समय (शामिल है). |
latest_start_time |
ज़रूरी है. ब्रेक शुरू होने की ऊपरी सीमा (शामिल है). |
min_duration |
ज़रूरी है. ब्रेक की कम से कम अवधि. पॉज़िटिव होना चाहिए. |
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 घंटे में एक घंटा" के उदाहरण के मुताबिक है:
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_break_duration |
ज़रूरी है. इस शर्त के लिए, ब्रेक की कम से कम अवधि. शून्य या उससे ज़्यादा. |
max_inter_break_duration |
ज़रूरी है. रास्ते में किसी भी समय के अंतराल की ज़्यादा से ज़्यादा अवधि, जिसमें कम से कम |
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, दोनों को तय किया जाना चाहिए. साथ ही, इनकी वैल्यू शून्य या इससे ज़्यादा होनी चाहिए.
| फ़ील्ड | |
|---|---|
max_meters |
यह एक तय सीमा है. इसके तहत, दूरी ज़्यादा से ज़्यादा max_meters तक ही हो सकती है. सीमा, नेगेटिव नहीं होनी चाहिए. |
soft_max_meters |
सॉफ़्ट लिमिट में, ज़्यादा से ज़्यादा दूरी तय करने की सीमा लागू नहीं होती. हालांकि, इसका उल्लंघन करने पर, मॉडल में तय की गई अन्य लागतों में एक और लागत जुड़ जाती है. इसकी यूनिट भी वही होती है. अगर soft_max_meters तय किया गया है, तो यह max_meters से कम होना चाहिए और इसकी वैल्यू शून्य या इससे ज़्यादा होनी चाहिए. |
cost_per_kilometer_below_soft_max |
प्रति किलोमीटर के हिसाब से खर्च, जो
|
cost_per_kilometer_above_soft_max |
अगर दूरी किराया नेगेटिव नहीं होना चाहिए. |
GcsDestination
Google Cloud Storage की वह जगह जहां आउटपुट फ़ाइलें सेव की जाएंगी.
| फ़ील्ड | |
|---|---|
uri |
ज़रूरी है. Google Cloud Storage यूआरआई. |
GcsSource
Google Cloud Storage की वह जगह जहां से इनपुट फ़ाइल पढ़ी जाएगी.
| फ़ील्ड | |
|---|---|
uri |
ज़रूरी है. Google Cloud Storage ऑब्जेक्ट का यूआरआई, जिसका फ़ॉर्मैट |
InjectedSolutionConstraint
अनुरोध में डाला गया समाधान. इसमें यह जानकारी शामिल होती है कि किन विज़िट को सीमित करना है और उन्हें कैसे सीमित करना है.
| फ़ील्ड | |
|---|---|
routes[] |
इंजेक्ट किए जाने वाले समाधान के रास्ते. ऐसा हो सकता है कि ओरिजनल समाधान में कुछ रास्तों को शामिल न किया गया हो. रास्तों और स्किप किए गए शिपमेंट को, |
skipped_shipments[] |
सॉल्यूशन को इंजेक्ट करने के लिए, शिपमेंट को स्किप किया गया. ऐसा हो सकता है कि कुछ को ओरिजनल समाधान से हटा दिया गया हो. |
constraint_relaxations[] |
यह बताता है कि वाहनों के शून्य या उससे ज़्यादा ग्रुप के लिए, पाबंदियों में कब और कितनी छूट दी जानी चाहिए. अगर यह फ़ील्ड खाली है, तो वाहन के सभी ऐसे रूट पर पूरी तरह से पाबंदी लगा दी जाती है जिनमें कोई भी स्टॉप शामिल नहीं है. |
ConstraintRelaxation
वाहन के ग्रुप के लिए, यह बताता है कि विज़िट पर लगी पाबंदियों को किस थ्रेशोल्ड पर और किस लेवल तक कम किया जाएगा. skipped_shipment फ़ील्ड में लिस्ट किए गए शिपमेंट को स्किप करना ज़रूरी है. इसका मतलब है कि उन्हें पूरा नहीं किया जा सकता.
| फ़ील्ड | |
|---|---|
relaxations[] |
विज़िट से जुड़ी सभी पाबंदियों में ढील दी गई है. ये पाबंदियां, |
vehicle_indices[] |
उन वाहनों के इंडेक्स के बारे में बताता है जिन पर यात्रा से जुड़ी पाबंदी अगर |
सुकून देने वाले
अगर 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_time |
वह समय जब |
threshold_visit_count |
विज़िट की वह संख्या जिसके बाद अगर यह |
लेवल
यह कुकी, अलग-अलग तरह की पाबंदियों में ढील देने के लेवल के बारे में बताती है. ये लेवल, किसी विज़िट के लिए लागू होते हैं. साथ ही, थ्रेशोल्ड की शर्तों को पूरा करने पर, ये लेवल लागू होते हैं.
नीचे दी गई सूची में, नियमों के उल्लंघन को ठीक करने के लिए उपलब्ध विकल्पों को, उल्लंघन ठीक करने के लिए मिलने वाले समय के हिसाब से बढ़ते क्रम में दिखाया गया है.
| 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_format |
ज़रूरी है. इनपुट डेटा का फ़ॉर्मैट. |
यूनियन फ़ील्ड source. ज़रूरी है. source इनमें से सिर्फ़ एक हो सकता है: |
|
gcs_source |
Google Cloud Storage की जगह. यह एक ऑब्जेक्ट (फ़ाइल) होना चाहिए. |
जगह
इसमें किसी जगह की जानकारी होती है. जैसे, भौगोलिक पॉइंट और वैकल्पिक हेडिंग.
| फ़ील्ड | |
|---|---|
lat_lng |
वेपॉइंट के भौगोलिक निर्देशांक. |
heading |
कंपास हेडिंग, जो ट्रैफ़िक के फ़्लो की दिशा से जुड़ी होती है. इस वैल्यू का इस्तेमाल, पिकअप और ड्रॉप-ऑफ़ के लिए सड़क के उस हिस्से की जानकारी देने के लिए किया जाता है जिसका इस्तेमाल करना है. हेडिंग की वैल्यू 0 से 360 तक हो सकती हैं. इसमें 0 का मतलब उत्तर की ओर, 90 का मतलब पूरब की ओर, वगैरह होता है. |
OptimizeToursLongRunningMetadata
इस टाइप में कोई फ़ील्ड नहीं है.
OptimizeToursLongRunning कॉल के लिए ऑपरेशन मेटाडेटा.
OptimizeToursRequest
यह अनुरोध, यात्रा ऑप्टिमाइज़ेशन की समस्या हल करने वाले को भेजा जाता है. इसमें शिपमेंट मॉडल और ऑप्टिमाइज़ेशन पैरामीटर के बारे में जानकारी होती है.
| फ़ील्ड | |
|---|---|
parent |
ज़रूरी है. कॉल करने के लिए, प्रोजेक्ट या जगह को टारगेट करें. फ़ॉर्मैट:
अगर कोई जगह नहीं चुनी जाती है, तो कोई क्षेत्र अपने-आप चुन लिया जाएगा. |
timeout |
अगर यह टाइम आउट सेट किया गया है, तो सर्वर टाइम आउट की अवधि खत्म होने से पहले या सिंक्रोनस अनुरोधों के लिए सर्वर की समयसीमा पूरी होने से पहले जवाब देता है. इनमें से जो भी पहले हो. एसिंक्रोनस अनुरोधों के लिए, सर्वर टाइमआउट खत्म होने से पहले ही समाधान जनरेट कर देगा. हालांकि, ऐसा तब ही होगा, जब समाधान जनरेट करना मुमकिन हो. |
model |
शिपमेंट से जुड़ी समस्या को हल करने के लिए मॉडल. |
solving_mode |
डिफ़ॉल्ट रूप से, हल करने का मोड |
search_mode |
अनुरोध को पूरा करने के लिए इस्तेमाल किया गया खोज मोड. |
injected_first_solution_routes[] |
ऑप्टिमाइज़ेशन एल्गोरिदम को, पिछले समाधान से मिलता-जुलता पहला समाधान ढूंढने में मदद करें. पहला समाधान बनाते समय, मॉडल पर कुछ पाबंदियां लगाई जाती हैं. अगर किसी शिपमेंट को किसी रूट पर नहीं ले जाया जाता है, तो पहले समाधान में उसे अपने-आप छोड़ दिया जाता है. हालांकि, बाद के समाधानों में उसे शामिल किया जा सकता है. समाधान में, कुछ बुनियादी मान्यताओं को पूरा किया जाना चाहिए:
अगर डाला गया समाधान काम नहीं करता है, तो ज़रूरी नहीं है कि पुष्टि करने से जुड़ी गड़बड़ी का मैसेज दिखे. इसके बजाय, काम न करने की वजह बताने वाला मैसेज दिख सकता है. |
injected_solution_constraint |
ऑप्टिमाइज़ेशन एल्गोरिदम को सीमित करें, ताकि वह ऐसा फ़ाइनल समाधान खोज सके जो पिछले समाधान से मिलता-जुलता हो. उदाहरण के लिए, इसका इस्तेमाल उन रास्तों के हिस्सों को फ़्रीज़ करने के लिए किया जा सकता है जिन्हें पहले ही पूरा कर लिया गया है या जिन्हें पूरा किया जाना है, लेकिन उनमें बदलाव नहीं किया जाना चाहिए. अगर डाला गया समाधान काम नहीं करता है, तो ज़रूरी नहीं है कि पुष्टि करने से जुड़ी गड़बड़ी का मैसेज दिखे. इसके बजाय, काम न करने की वजह बताने वाला मैसेज दिख सकता है. |
refresh_details_routes[] |
अगर यह खाली नहीं है, तो दिए गए रास्तों को रीफ़्रेश किया जाएगा. हालांकि, विज़िट के क्रम या यात्रा के समय में कोई बदलाव नहीं किया जाएगा. सिर्फ़ अन्य जानकारी अपडेट की जाएगी. इससे मॉडल की समस्या हल नहीं होती. नवंबर 2020 से, यह सिर्फ़ उन रास्तों की पॉलीलाइन भरता है जिनमें कोई न कोई स्टेशन मौजूद है. इसके लिए, ऐसा हो सकता है कि पास किए गए रास्तों के इस फ़ील्ड का इस्तेमाल,
|
interpret_injected_solutions_using_labels |
अगर यह सही है, तो:
यह व्याख्या, अगर सही है, तो यहां दी गई कैटगरी के लेबल, अपनी कैटगरी में ज़्यादा से ज़्यादा एक बार दिखने चाहिए:
अगर इंजेक्ट किए गए समाधान में मौजूद इंजेक्ट किए गए समाधान से रूट विज़िट या पूरे रूट हटाने से, निहित शर्तों पर असर पड़ सकता है. इससे समाधान में बदलाव हो सकता है, पुष्टि करने से जुड़ी गड़बड़ियां हो सकती हैं या समाधान लागू नहीं किया जा सकता. ध्यान दें: कॉल करने वाले व्यक्ति को यह पक्का करना होगा कि हर |
consider_road_traffic |
|
populate_polylines |
अगर यह विकल्प चुना जाता है, तो जवाब |
populate_transition_polylines |
अगर यह वैल्यू सही है, तो जवाब |
allow_large_deadline_despite_interruption_risk |
अगर यह सेट है, तो अनुरोध के लिए ज़्यादा से ज़्यादा 60 मिनट की समयसीमा तय की जा सकती है. इसके बारे में ज़्यादा जानने के लिए, https://grpc.io/blog/deadlines पर जाएं. ऐसा न होने पर, ज़्यादा से ज़्यादा समयसीमा सिर्फ़ 30 मिनट होती है. ध्यान दें कि लंबे समय तक चलने वाले अनुरोधों में रुकावट आने का जोखिम काफ़ी ज़्यादा होता है. हालांकि, यह जोखिम अब भी कम होता है. |
use_geodesic_distances |
अगर यह वैल्यू सही है, तो यात्रा की दूरी का हिसाब लगाने के लिए, Google Maps में मौजूद दूरी के बजाय जियोडेसिक दूरी का इस्तेमाल किया जाएगा. साथ ही, यात्रा में लगने वाले समय का हिसाब लगाने के लिए, जियोडेसिक दूरी का इस्तेमाल किया जाएगा. इसमें |
label |
यह लेबल, इस अनुरोध की पहचान करने के लिए इस्तेमाल किया जा सकता है. इसकी जानकारी |
geodesic_meters_per_second |
अगर |
max_validation_errors |
पुष्टि करने से जुड़ी गड़बड़ियों की संख्या को छोटा करता है. आम तौर पर, ये गड़बड़ियां 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 |
सिर्फ़ अहम जानकारी: यहां उन सभी शिपमेंट की जानकारी नहीं दी जाती जिन्हें डिलीवर नहीं किया जा सकता. सिर्फ़ उन शिपमेंट की जानकारी दी जाती है जिन्हें प्रीप्रोसेसिंग के दौरान डिलीवर न किए जा सकने वाले शिपमेंट के तौर पर पता लगाया गया है. |
TRANSFORM_AND_RETURN_REQUEST |
यह मोड सिर्फ़ तब काम करता है, जब एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request पर जाएं. |
OptimizeToursResponse
यात्रा के ऑप्टिमाइज़ेशन से जुड़ी समस्या को हल करने के बाद मिला जवाब. इसमें हर वाहन के लिए तय किए गए रास्ते, शिपमेंट की जानकारी, और समाधान की कुल लागत शामिल होती है.
| फ़ील्ड | |
|---|---|
routes[] |
हर वाहन के लिए तय किए गए रास्ते; i-वां रास्ता, मॉडल में मौजूद i-वें वाहन से मेल खाता है. |
request_label |
अगर अनुरोध में कोई लेबल बताया गया था, तो |
skipped_shipments[] |
सभी शिपमेंट की सूची जिन्हें स्किप किया गया है. |
validation_errors[] |
पुष्टि करने के दौरान हुई सभी गड़बड़ियों की सूची. |
processed_request |
कुछ मामलों में, हम समस्या को हल करने से पहले, आने वाले अनुरोध में बदलाव करते हैं. जैसे, शुल्क जोड़ना. अगर solving_mode == TRANSFORM_AND_RETURN_REQUEST है, तो यहां बदले गए अनुरोध को वापस कर दिया जाता है. एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request पर जाएं. |
metrics |
इस समाधान के लिए अवधि, दूरी, और इस्तेमाल की मेट्रिक. |
मेट्रिक
सभी रास्तों के लिए एग्रीगेट की गई कुल मेट्रिक.
| फ़ील्ड | |
|---|---|
aggregated_route_metrics |
यह डेटा, सभी रास्तों के लिए इकट्ठा किया जाता है. हर मेट्रिक, एक ही नाम वाले सभी |
skipped_mandatory_shipment_count |
ज़रूरी शिपमेंट की संख्या, जिन्हें स्किप किया गया है. |
used_vehicle_count |
इस्तेमाल किए गए वाहनों की संख्या. ध्यान दें: अगर किसी वाहन का रूट खाली है और |
earliest_vehicle_start_time |
इस्तेमाल की गई गाड़ी के लिए, सबसे पहले शुरू होने का समय. इसे |
latest_vehicle_end_time |
इस्तेमाल की गई गाड़ी के लिए, नीलामी खत्म होने का सबसे नया समय. इसे |
costs |
समाधान की लागत, जिसे लागत से जुड़े अनुरोध फ़ील्ड के हिसाब से बांटा गया है. कुंजियां, OptimizeToursRequest के हिसाब से प्रोटो पाथ होती हैं. उदाहरण के लिए, "model.shipments.pickups.cost". वैल्यू, लागत वाले फ़ील्ड से जनरेट की गई कुल लागत होती है. इसे पूरे समाधान के लिए एग्रीगेट किया जाता है. दूसरे शब्दों में कहें, तो costs["model.shipments.pickups.cost"] का मतलब है कि समाधान के लिए, पिकअप करने के सभी शुल्कों का योग. मॉडल में तय की गई सभी लागतों की जानकारी यहां दी गई है. हालांकि, TransitionAttributes से जुड़ी लागतों की जानकारी सिर्फ़ एग्रीगेट किए गए तरीके से दी जाती है. यह जानकारी 2022/01 से दी जा रही है. |
total_cost |
समाधान की कुल लागत. लागत के मैप में मौजूद सभी वैल्यू का योग. |
OptimizeToursUriMetadata
इस टाइप में कोई फ़ील्ड नहीं है.
OptimizeToursUri कॉल के लिए ऑपरेशन मेटाडेटा.
OptimizeToursUriRequest
यह OptimizeToursUri तरीके से इस्तेमाल किया गया अनुरोध है.
| फ़ील्ड | |
|---|---|
parent |
ज़रूरी है. कॉल करने के लिए, प्रोजेक्ट या जगह को टारगेट करें. फ़ॉर्मैट:
अगर कोई जगह नहीं चुनी जाती है, तो कोई क्षेत्र अपने-आप चुन लिया जाएगा. |
input |
ज़रूरी है. |
output |
ज़रूरी है. Cloud Storage ऑब्जेक्ट का यूआरआई, जिसमें |
OptimizeToursUriResponse
OptimizeToursUri तरीके से मिला जवाब.
| फ़ील्ड | |
|---|---|
output |
ज़रूरी नहीं. Cloud Storage ऑब्जेक्ट का यूआरआई, जिसमें संसाधन के |
OptimizeToursValidationError
OptimizeToursRequest की पुष्टि करते समय हुई गड़बड़ी या चेतावनी के बारे में बताता है.
| फ़ील्ड | |
|---|---|
code |
पुष्टि करने से जुड़ी गड़बड़ी को ( इस सेक्शन के बाद दिए गए फ़ील्ड में, गड़बड़ी के बारे में ज़्यादा जानकारी दी गई है. एक से ज़्यादा गड़बड़ियां: एक से ज़्यादा गड़बड़ियां होने पर, पुष्टि करने की प्रोसेस में उनमें से कुछ गड़बड़ियों को आउटपुट के तौर पर दिखाने की कोशिश की जाती है. यह प्रोसेस, कंपाइलर की तरह ही पूरी तरह से सटीक नहीं होती. पुष्टि करने के दौरान कुछ गड़बड़ियां "गंभीर" होंगी. इसका मतलब है कि इनसे पुष्टि करने की पूरी प्रोसेस रुक जाएगी. स्टेबिलिटी: |
display_name |
गड़बड़ी का डिसप्ले नेम. |
fields[] |
गड़बड़ी के कॉन्टेक्स्ट में 0, 1 (ज़्यादातर समय) या इससे ज़्यादा फ़ील्ड शामिल हो सकते हैं. उदाहरण के लिए, वाहन #4 और शिपमेंट #2 के पहले पिकअप के बारे में इस तरह बताया जा सकता है: हालांकि, ध्यान दें कि किसी गड़बड़ी कोड के लिए, |
error_message |
इस स्ट्रिंग में गड़बड़ी के बारे में ऐसी जानकारी होती है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. स्थिरता: स्थिर नहीं है: किसी |
offending_values |
इसमें फ़ील्ड की वैल्यू शामिल हो सकती हैं. यह सुविधा हमेशा उपलब्ध नहीं होती है. आपको इस पर बिल्कुल भी भरोसा नहीं करना चाहिए. इसका इस्तेमाल सिर्फ़ मैन्युअल तरीके से मॉडल को डीबग करने के लिए करें. |
FieldReference
पुष्टि करने से जुड़ी गड़बड़ी के लिए कॉन्टेक्स्ट तय करता है. FieldReference हमेशा इस फ़ाइल में मौजूद किसी फ़ील्ड को दिखाता है और एक ही क्रम में होता है. उदाहरण के लिए, हम वाहन #5 के start_time_windows के दूसरे एलिमेंट को इस तरह से तय कर सकते हैं:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
हालांकि, हम मैसेज में ज़्यादा जानकारी शामिल करने से बचने के लिए, OptimizeToursRequest या ShipmentModel जैसी टॉप-लेवल की इकाइयों को शामिल नहीं करते.
| फ़ील्ड | |
|---|---|
name |
फ़ील्ड का नाम, जैसे कि "वाहन". |
sub_field |
ज़रूरत पड़ने पर, बार-बार नेस्ट किया गया सब-फ़ील्ड. |
यूनियन फ़ील्ड
|
|
index |
अगर फ़ील्ड को दोहराया गया है, तो उसका इंडेक्स. |
key |
अगर फ़ील्ड कोई मैप है, तो यह कुंजी होती है. |
OutputConfig
[BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours] के नतीजों के लिए कोई डेस्टिनेशन तय करें.
| फ़ील्ड | |
|---|---|
data_format |
ज़रूरी है. आउटपुट डेटा का फ़ॉर्मैट. |
यूनियन फ़ील्ड destination. ज़रूरी है. destination इनमें से सिर्फ़ एक हो सकता है: |
|
gcs_destination |
Google Cloud Storage में वह जगह जहां आउटपुट लिखा जाएगा. |
RouteModifiers
इसमें वाहन के रूट का हिसाब लगाते समय, ज़रूरी शर्तों का एक सेट शामिल होता है. यह Google Maps Platform Routes Preferred API में मौजूद RouteModifiers जैसा ही है. इसके बारे में यहां जानें: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| फ़ील्ड | |
|---|---|
avoid_tolls |
इस विकल्प से यह तय किया जाता है कि जहां ज़रूरी हो वहां टोल वाली सड़कों से बचा जाए या नहीं. टोल वाली सड़कों के बजाय, बिना टोल वाली सड़कों को प्राथमिकता दी जाएगी. यह सुविधा सिर्फ़ मोटर से चलने वाले वाहनों के लिए उपलब्ध है. |
avoid_highways |
इस विकल्प से यह तय किया जाता है कि जहां ज़रूरी हो वहां हाइवे से बचा जाए या नहीं. ऐसे रास्तों को प्राथमिकता दी जाएगी जिनमें हाईवे शामिल नहीं हैं. यह सुविधा सिर्फ़ मोटर से चलने वाले वाहनों के लिए उपलब्ध है. |
avoid_ferries |
इससे यह तय होता है कि जहां ज़रूरी हो वहां फ़ेरी से यात्रा करने से बचना है या नहीं. उन रास्तों को प्राथमिकता दी जाएगी जिनमें फ़ेरी से यात्रा शामिल नहीं है. यह सुविधा सिर्फ़ मोटर से चलने वाले वाहनों के लिए उपलब्ध है. |
avoid_indoor |
ज़रूरी नहीं. इससे यह तय किया जाता है कि जहां मुमकिन हो वहां इंडोर नेविगेशन से बचना है या नहीं. उन रास्तों को प्राथमिकता दी जाएगी जिनमें इंडोर नेविगेशन की सुविधा नहीं है. यह सुविधा सिर्फ़ |
शिपमेंट
किसी एक आइटम की शिपिंग, उसके पिकअप से लेकर डिलीवरी तक. शिपमेंट को पूरा माना जाने के लिए, यह ज़रूरी है कि एक वाहन, पिकअप करने की किसी एक जगह पर जाए और उसके हिसाब से अपनी खाली जगह कम करे. इसके बाद, वह डिलीवरी करने की किसी जगह पर जाए और उसके हिसाब से अपनी खाली जगह बढ़ाए.
| फ़ील्ड | |
|---|---|
display_name |
शिपमेंट का वह डिसप्ले नेम जो उपयोगकर्ता ने तय किया है. यह ज़्यादा से ज़्यादा 63 वर्णों का हो सकता है. इसमें UTF-8 वर्णों का इस्तेमाल किया जा सकता है. |
pickups[] |
शिपमेंट से जुड़े पिकअप के विकल्पों का सेट. अगर यह जानकारी नहीं दी जाती है, तो वाहन को सिर्फ़ उन जगहों पर जाना होगा जहां डिलीवरी करनी है. |
deliveries[] |
शिपमेंट से जुड़े डिलीवरी के विकल्पों का सेट. अगर यह जानकारी नहीं दी जाती है, तो वाहन को सिर्फ़ पिकअप की जगह पर जाना होगा. |
load_demands |
शिपमेंट की लोड डिमांड (उदाहरण के लिए, वज़न, वॉल्यूम, पैलेट की संख्या वगैरह). मैप में मौजूद कुंजियां, आइडेंटिफ़ायर होनी चाहिए. इनसे लोड के टाइप के बारे में पता चलता है. साथ ही, इनमें यूनिट भी शामिल होनी चाहिए. उदाहरण के लिए: "weight_kg", "volume_gallons", "pallet_count" वगैरह. अगर दी गई कोई कुंजी मैप में नहीं दिखती है, तो उससे जुड़ा लोड शून्य माना जाता है. |
allowed_vehicle_indices[] |
उन वाहनों का सेट जो इस शिपमेंट को पूरा कर सकते हैं. अगर यह फ़ील्ड खाली है, तो सभी वाहन इस सुविधा का इस्तेमाल कर सकते हैं. |
costs_per_vehicle[] |
इससे पता चलता है कि हर वाहन से इस शिपमेंट की डिलीवरी करने पर कितना शुल्क लगता है. अगर यह तय किया गया है, तो इसमें इनमें से कोई एक होना चाहिए:
ये लागतें, |
costs_per_vehicle_indices[] |
उन वाहनों के इंडेक्स जिन पर |
pickup_to_delivery_absolute_detour_limit |
यह पिकअप से डिलीवरी तक के सबसे छोटे रास्ते की तुलना में, ज़्यादा से ज़्यादा डिटूर समय के बारे में बताता है. अगर इसे तय किया जाता है, तो यह शून्य या इससे ज़्यादा होना चाहिए. साथ ही, शिपमेंट में कम से कम पिकअप और डिलीवरी की जानकारी शामिल होनी चाहिए. उदाहरण के लिए, मान लें कि चुने गए पिकअप के विकल्प से सीधे चुने गए डिलीवरी के विकल्प तक जाने में लगने वाला सबसे कम समय t है. इसके बाद, सेटिंग अगर एक ही शिपमेंट के लिए, दोनों तरह की सीमाएं तय की गई हैं, तो पिकअप/डिलीवरी के हर संभावित पेयर के लिए, ज़्यादा पाबंदी वाली सीमा का इस्तेमाल किया जाता है. अक्टूबर 2017 से, डाइवर्शन की सुविधा सिर्फ़ तब काम करती है, जब यात्रा की अवधि वाहनों पर निर्भर न हो. |
pickup_to_delivery_time_limit |
इससे यह पता चलता है कि शिपमेंट को पिकअप करने से लेकर डिलीवर करने तक में ज़्यादा से ज़्यादा कितना समय लगेगा. अगर इसे तय किया जाता है, तो यह शून्य या इससे ज़्यादा होना चाहिए. साथ ही, शिपमेंट में कम से कम पिकअप और डिलीवरी की जानकारी शामिल होनी चाहिए. यह इस बात पर निर्भर नहीं करता कि पिकअप और डिलीवरी के लिए कौनसे विकल्प चुने गए हैं. साथ ही, यह वाहन की स्पीड पर भी निर्भर नहीं करता. इसे ज़्यादा से ज़्यादा डाइवर्शन की पाबंदियों के साथ तय किया जा सकता है: समाधान, दोनों स्पेसिफ़िकेशन का पालन करेगा. |
shipment_type |
यह एक ऐसी स्ट्रिंग होती है जिसमें इस शिपमेंट के "टाइप" के बारे में जानकारी होती है. इस सुविधा का इस्तेमाल, यह |
label |
इससे इस शिपमेंट के लिए लेबल तय होता है. इस लेबल की जानकारी, जवाब में मौजूद |
ignore |
अगर सही है, तो इस शिपमेंट को छोड़ दें, लेकिन अगर मॉडल में कोई
|
penalty_cost |
अगर शिपमेंट पूरा नहीं होता है, तो इस जुर्माने को रास्तों की कुल लागत में जोड़ दिया जाता है. अगर शिपमेंट के पिकअप और डिलीवरी के किसी विकल्प को चुना जाता है, तो उसे पूरा माना जाता है. लागत को मॉडल में, लागत से जुड़े अन्य सभी फ़ील्ड के लिए इस्तेमाल की गई यूनिट में दिखाया जा सकता है. साथ ही, यह पॉज़िटिव होनी चाहिए. अहम जानकारी: अगर इस पेनल्टी के बारे में नहीं बताया गया है, तो इसे हमेशा के लिए लागू माना जाता है. इसका मतलब है कि शिपमेंट पूरा होना चाहिए. |
pickup_to_delivery_relative_detour_limit |
यह पिकअप से डिलीवरी तक के सबसे छोटे रास्ते की तुलना में, ज़्यादा से ज़्यादा समय बताता है. अगर इसे तय किया जाता है, तो यह शून्य या इससे ज़्यादा होना चाहिए. साथ ही, शिपमेंट में कम से कम पिकअप और डिलीवरी की जानकारी शामिल होनी चाहिए. उदाहरण के लिए, मान लें कि चुने गए पिकअप के विकल्प से सीधे चुने गए डिलीवरी के विकल्प तक जाने में लगने वाला सबसे कम समय t है. इसके बाद, सेटिंग अगर एक ही शिपमेंट के लिए, दोनों तरह की सीमाएं तय की गई हैं, तो पिकअप/डिलीवरी के हर संभावित पेयर के लिए, ज़्यादा पाबंदी वाली सीमा का इस्तेमाल किया जाता है. अक्टूबर 2017 से, डाइवर्शन की सुविधा सिर्फ़ तब काम करती है, जब यात्रा की अवधि वाहनों पर निर्भर न हो. |
फ़ाइलों के लोड होने के बारे में जानकारी
विज़िट के दौरान, अगर पिकअप करना है, तो वाहन के लोड में पहले से तय की गई रकम जोड़ी जा सकती है. वहीं, अगर डिलीवरी करनी है, तो वाहन के लोड में से पहले से तय की गई रकम घटाई जा सकती है. इस मैसेज में, ऐसी रकम के बारे में बताया गया है. load_demands देखें.
| फ़ील्ड | |
|---|---|
amount |
वह रकम जिससे विज़िट करने वाले वाहन का लोड अलग-अलग होगा. यह एक पूर्णांक है. इसलिए, उपयोगकर्ताओं को सलाह दी जाती है कि वे सटीक वैल्यू पाने के लिए, सही यूनिट चुनें. यह वैल्यू, 0 या उससे ज़्यादा होनी चाहिए. |
VisitRequest
किसी वाहन से की जाने वाली यात्रा का अनुरोध: इसमें भौगोलिक जगह (या दो, नीचे देखें), खुलने और बंद होने का समय, और सेवा की अवधि (वाहन के सामान को पिकअप या ड्रॉप करने के बाद लगने वाला समय) शामिल होती है.
| फ़ील्ड | |
|---|---|
arrival_location |
|
arrival_waypoint |
यह वह वेपॉइंट है जहां वाहन इस |
departure_location |
वह जगह जहां यह वाहन, |
departure_waypoint |
वह वेपॉइंट जहां वाहन इस |
tags[] |
विज़िट के अनुरोध से जुड़े टैग के बारे में बताता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है. |
time_windows[] |
ऐसी टाइम विंडो जिनसे किसी जगह पर पहुंचने का समय तय होता है. ध्यान दें कि वाहन, पहुंचने के समय की विंडो के बाहर भी रवाना हो सकता है. इसका मतलब है कि पहुंचने का समय और अवधि, किसी समयसीमा के अंदर होना ज़रूरी नहीं है. अगर वाहन
समयसीमाएं अलग-अलग होनी चाहिए.इसका मतलब है कि कोई भी समयसीमा, दूसरी समयसीमा के साथ ओवरलैप नहीं होनी चाहिए या उसके आस-पास नहीं होनी चाहिए. साथ ही, उन्हें बढ़ते क्रम में होना चाहिए.
|
duration |
विज़िट की अवधि, यानी कि वाहन के आने और जाने के बीच का समय.इसे इंतज़ार के संभावित समय में जोड़ा जाना चाहिए. |
cost |
किसी वाहन के रास्ते पर, विज़िट के इस अनुरोध को पूरा करने का शुल्क. इसका इस्तेमाल, शिपमेंट के हर पिकअप या डिलीवरी के विकल्प के लिए अलग-अलग शुल्क चुकाने के लिए किया जा सकता है. यह लागत, |
load_demands |
इस कुकी का इस्तेमाल, वेबसाइट पर आने वाले व्यक्ति के अनुरोधों को लोड करने के लिए किया जाता है. यह फ़ील्ड, |
visit_types[] |
विज़िट के टाइप के बारे में बताता है. इसका इस्तेमाल, किसी वाहन को इस यात्रा को पूरा करने के लिए ज़रूरी अतिरिक्त समय देने के लिए किया जा सकता है ( कोई टाइप सिर्फ़ एक बार दिख सकता है. |
label |
इस |
avoid_u_turns |
इस विकल्प से यह तय किया जाता है कि इस जगह पर ड्राइविंग के रास्तों में यू-टर्न से बचना चाहिए या नहीं. यू-टर्न से बचने की सुविधा, सबसे सही तरीके से काम करती है. हालांकि, यह ज़रूरी नहीं है कि यू-टर्न से पूरी तरह बचा जा सके. इस सुविधा को फ़िलहाल आज़माया जा रहा है और इसके काम करने के तरीके में बदलाव हो सकता है. एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request पर जाएं. |
ShipmentModel
शिपमेंट मॉडल में, शिपमेंट का एक सेट होता है. इसे वाहनों के एक सेट से पूरा किया जाना चाहिए. साथ ही, कुल लागत को कम से कम रखना चाहिए. कुल लागत में ये शामिल हैं:
- वाहनों के रूट की लागत (कुल समय के हिसाब से लागत, यात्रा के समय के हिसाब से लागत, और सभी वाहनों के लिए तय की गई लागत का योग).
- शिपमेंट पूरा न करने पर लगने वाले जुर्माने.
- शिपमेंट की कुल अवधि का शुल्क
| फ़ील्ड | |
|---|---|
shipments[] |
शिपमेंट का ऐसा सेट जिसे मॉडल में पूरा करना ज़रूरी है. |
vehicles[] |
वाहनों का ऐसा सेट जिसका इस्तेमाल विज़िट करने के लिए किया जा सकता है. |
objectives[] |
इस मॉडल के लिए तय किए गए लक्ष्यों का सेट, जिसे हम लागत में बदल देंगे. अगर इनपुट मॉडल खाली नहीं है, तो उसे बिना किसी शुल्क के उपलब्ध कराया जाना चाहिए. बदला गया अनुरोध पाने के लिए, कृपया एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request पर जाएं. |
global_start_time |
मॉडल के शुरू और खत्म होने का ग्लोबल समय: इस रेंज के बाहर के समय को मान्य नहीं माना जा सकता. मॉडल का समय अंतराल एक साल से कम होना चाहिए. इसका मतलब है कि
|
global_end_time |
अगर यह नीति सेट नहीं की गई है, तो डिफ़ॉल्ट वैल्यू के तौर पर 1 जनवरी, 1971 को 00:00:00 यूटीसी (यानी, सेकंड: 31536000, नैनोसेकंड: 0) का इस्तेमाल किया जाता है. |
global_duration_cost_per_hour |
पूरे प्लान की "कुल अवधि" का मतलब, सभी वाहनों के लिए, सबसे पहले लागू होने वाले शुरुआती समय और सबसे बाद में लागू होने वाले आखिरी समय के बीच का अंतर होता है. उपयोगकर्ता, उस मात्रा के लिए हर घंटे की लागत असाइन कर सकते हैं. इससे, काम को जल्द से जल्द पूरा करने के लिए ऑप्टिमाइज़ किया जा सकता है. उदाहरण के लिए, ऐसा किया जा सकता है. यह लागत, |
duration_distance_matrices[] |
मॉडल में इस्तेमाल की गई अवधि और दूरी की मैट्रिक्स के बारे में बताता है. अगर यह फ़ील्ड खाली है, तो इस्तेमाल के उदाहरण:
|
duration_distance_matrix_src_tags[] |
ये टैग, अवधि और दूरी के मैट्रिक्स के सोर्स तय करते हैं; टैग, |
duration_distance_matrix_dst_tags[] |
अवधि और दूरी के मैट्रिक्स के डेस्टिनेशन तय करने वाले टैग; टैग, |
transition_attributes[] |
मॉडल में ट्रांज़िशन एट्रिब्यूट जोड़े गए. |
shipment_type_incompatibilities[] |
शिपमेंट के ऐसे टाइप के सेट जो एक-दूसरे के साथ काम नहीं करते ( |
shipment_type_requirements[] |
|
precedence_rules[] |
प्राथमिकता के नियमों का सेट, जिसे मॉडल में लागू किया जाना चाहिए. अहम जानकारी: प्राथमिकता के नियमों का इस्तेमाल करने से, उस समस्या का दायरा सीमित हो जाता है जिसे ऑप्टिमाइज़ किया जा सकता है. अगर प्राथमिकता के नियमों का इस्तेमाल करके किए गए अनुरोधों में कई शिपमेंट शामिल हैं, तो उन्हें अस्वीकार किया जा सकता है. |
max_active_vehicles |
इससे, चालू वाहनों की ज़्यादा से ज़्यादा संख्या सीमित की जाती है. किसी वाहन को तब चालू माना जाता है, जब उसके रूट पर कम से कम एक शिपमेंट डिलीवर किया गया हो. इसका इस्तेमाल, उन मामलों में रास्तों की संख्या को सीमित करने के लिए किया जा सकता है जहां वाहनों की तुलना में ड्राइवर कम हों और वाहनों का फ्लीट अलग-अलग तरह का हो. इसके बाद, ऑप्टिमाइज़ेशन की प्रोसेस में, इस्तेमाल के लिए सबसे सही वाहनों का सबसेट चुना जाएगा. यह पॉज़िटिव होना चाहिए. |
DurationDistanceMatrix
यह कुकी, विज़िट और वाहन के शुरू होने की जगहों से लेकर विज़िट और वाहन के खत्म होने की जगहों तक की अवधि और दूरी का मैट्रिक्स तय करती है.
| फ़ील्ड | |
|---|---|
rows[] |
अवधि और दूरी के मैट्रिक्स की पंक्तियों के बारे में बताता है. इसमें |
vehicle_start_tag |
टैग से यह तय किया जाता है कि अवधि और दूरी की यह मैट्रिक्स किन वाहनों पर लागू होती है. अगर यह फ़ील्ड खाली है, तो इसका मतलब है कि यह सभी वाहनों पर लागू होता है. साथ ही, सिर्फ़ एक मैट्रिक्स हो सकता है. हर वाहन के शुरू होने का समय, सिर्फ़ एक मैट्रिक्स से मेल खाना चाहिए. इसका मतलब है कि उनके सभी मैट्रिक्स का |
पंक्ति
यह अवधि और दूरी के मैट्रिक्स की किसी लाइन के बारे में बताता है.
| फ़ील्ड | |
|---|---|
durations[] |
किसी दी गई लाइन के लिए अवधि की वैल्यू. इसमें |
meters[] |
किसी दी गई लाइन के लिए दूरी की वैल्यू. अगर मॉडल में दूरी से जुड़ी कोई लागत या शर्त नहीं है, तो इसे खाली छोड़ा जा सकता है. अगर ऐसा नहीं है, तो इसमें |
मकसद
लक्ष्य, लागत मॉडल की जगह ले लेते हैं. इसलिए, ये पहले से तय की गई लागत के साथ काम नहीं करते. हर मकसद के लिए, पहले से तय की गई लागत की संख्या मैप की जाती है. जैसे, वाहनों, शिपमेंट या ट्रांज़िशन एट्रिब्यूट के लिए.
एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request पर जाएं.
| फ़ील्ड | |
|---|---|
type |
मकसद किस तरह का है. |
weight |
इस लक्ष्य को अन्य लक्ष्यों की तुलना में कितना महत्व दिया जाना चाहिए. यह कोई भी नॉन-नेगेटिव संख्या हो सकती है. वज़न का योग 1 होना ज़रूरी नहीं है. वज़न की डिफ़ॉल्ट वैल्यू 1.0 होती है. |
टाइप
वह ऑब्जेक्टिव टाइप जिसे लागत के सेट के साथ मैप किया जाएगा.
| Enums | |
|---|---|
DEFAULT |
लागत का डिफ़ॉल्ट सेट इस्तेमाल किया जाएगा, ताकि सही समाधान मिल सके. ध्यान दें: इस लक्ष्य का इस्तेमाल अकेले किया जा सकता है. हालांकि, अगर यह लक्ष्य पहले से मौजूद नहीं है, तो इसे हमेशा उपयोगकर्ता के तय किए गए लक्ष्यों में, बेसलाइन के तौर पर 1.0 के वेट के साथ जोड़ा जाएगा. |
MIN_DISTANCE |
"MIN" उद्देश्यों को पूरा करना. तय की गई कुल दूरी कम से कम हो. |
MIN_WORKING_TIME |
सभी वाहनों के लिए, काम करने के कुल समय को कम से कम करें. |
MIN_TRAVEL_TIME |
ऊपर दिए गए उदाहरण की तरह ही, लेकिन इसमें सिर्फ़ यात्रा के समय पर फ़ोकस किया गया है. |
MIN_NUM_VEHICLES |
कम से कम वाहनों का इस्तेमाल करें. |
PrecedenceRule
दो इवेंट के बीच प्राथमिकता तय करने का नियम (हर इवेंट, शिपमेंट को पिकअप या डिलीवर करने से जुड़ा है): "दूसरे" इवेंट को "पहले" इवेंट के शुरू होने के कम से कम offset_duration बाद शुरू होना चाहिए.
एक ही (या मिलते-जुलते) इवेंट के लिए, कई प्राथमिकताएं तय की जा सकती हैं. जैसे, "B को A की डिलीवरी के बाद पिकअप किया जाता है" और "C को B के पिकअप के बाद पिकअप किया जाता है".
इसके अलावा, प्राथमिकताएं सिर्फ़ तब लागू होती हैं, जब दोनों शिपमेंट पूरे हो गए हों. ऐसा न होने पर, इन्हें अनदेखा कर दिया जाता है.
| फ़ील्ड | |
|---|---|
first_is_delivery |
इससे पता चलता है कि "first" इवेंट, डिलीवरी है या नहीं. |
second_is_delivery |
इससे पता चलता है कि "दूसरा" इवेंट, डिलीवरी है या नहीं. |
offset_duration |
"पहले" और "दूसरे" इवेंट के बीच का ऑफ़सेट. यह नेगेटिव हो सकता है. |
first_index |
"first" इवेंट का शिपमेंट इंडेक्स. इस फ़ील्ड की वैल्यू देना ज़रूरी है. |
second_index |
"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_index |
रूट पर चलने वाले वाहन की पहचान, सोर्स |
vehicle_label |
इस रास्ते पर चलने वाले वाहन का लेबल, |
vehicle_start_time |
वह समय जब वाहन अपना रास्ता शुरू करता है. |
vehicle_end_time |
वह समय जब वाहन अपने रास्ते पर चलना बंद कर देता है. |
visits[] |
विज़िट का क्रम, जो किसी रास्ते को दिखाता है. visits[i] रास्ते में i-th विज़िट है. अगर यह फ़ील्ड खाली है, तो वाहन को इस्तेमाल नहीं किया गया माना जाता है. |
transitions[] |
रास्ते के लिए ट्रांज़िशन की क्रम से लगाई गई सूची. |
has_traffic_infeasibilities |
ट्रैफ़िक की वजह से, यात्रा में लगने वाले अनुमानित समय |
route_polyline |
यह रूट की एन्कोड की गई पॉलीलाइन होती है. यह फ़ील्ड सिर्फ़ तब भरा जाता है, जब |
breaks[] |
इस रूट पर चलने वाले वाहन के लिए तय किए गए ब्रेक. |
metrics |
इस रास्ते के लिए, अवधि, दूरी, और लोड मेट्रिक. कॉन्टेक्स्ट के हिसाब से, |
vehicle_fullness |
एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
route_costs |
रास्ते का किराया, जिसे अनुरोध से जुड़े फ़ील्ड के हिसाब से बांटा गया है. कुंजियां, OptimizeToursRequest के हिसाब से प्रोटो पाथ होती हैं.उदाहरण के लिए, "model.shipments.pickups.cost". वैल्यू, लागत के उस फ़ील्ड से जनरेट हुई कुल लागत होती है जो पूरे रास्ते के लिए एग्रीगेट की जाती है. दूसरे शब्दों में, costs["model.shipments.pickups.cost"] का मतलब है कि रास्ते में पिकअप करने की सभी लागतों का योग. मॉडल में तय की गई सभी लागतों की जानकारी यहां दी गई है. हालांकि, TransitionAttributes से जुड़ी लागतों की जानकारी सिर्फ़ एग्रीगेट किए गए तरीके से दी जाती है. यह जानकारी 2022/01 से दी जा रही है. |
route_total_cost |
रास्ते का कुल शुल्क. लागत के मैप में मौजूद सभी लागतों का योग. |
ब्रेक
ब्रेक के लागू होने की जानकारी देने वाला डेटा.
| फ़ील्ड | |
|---|---|
start_time |
ब्रेक शुरू होने का समय. |
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_duration |
इस ट्रांज़िशन के दौरान यात्रा की अवधि. |
travel_distance_meters |
ट्रांज़िशन के दौरान तय की गई दूरी. |
traffic_info_unavailable |
जब |
delay_duration |
इस ट्रांज़िशन पर लागू किए गए डिले की अवधि का योग. अगर कोई देरी होती है, तो वह अगले इवेंट (विज़िट या वाहन के रुकने) से ठीक |
break_duration |
इस ट्रांज़िशन के दौरान आने वाले ब्रेक की कुल अवधि. अगर कोई ब्रेक नहीं है, तो इसकी वैल्यू 0 होगी. हर ब्रेक के शुरू होने के समय और अवधि की जानकारी, |
wait_duration |
इस ट्रांज़िशन के दौरान इंतज़ार करने में लगा समय. इंतज़ार की अवधि, काम न करने के समय के हिसाब से होती है. इसमें ब्रेक का समय शामिल नहीं होता. यह भी ध्यान दें कि इंतज़ार करने का यह समय, कई अलग-अलग समय अंतराल में बंटा हो सकता है. |
total_duration |
ट्रांज़िशन की कुल अवधि, सुविधा के लिए दी गई है. यह इसके बराबर है:
|
start_time |
इस ट्रांज़िशन के शुरू होने का समय. |
route_polyline |
ट्रांज़िशन के दौरान फ़ॉलो किए गए रास्ते का एन्कोड किया गया पॉलीलाइन प्रज़ेंटेशन. यह फ़ील्ड सिर्फ़ तब भरा जाता है, जब |
route_token |
सिर्फ़ आउटपुट के लिए. यह एक ओपेक टोकन है. इसे Navigation SDK को पास किया जा सकता है, ताकि नेविगेशन के दौरान रास्ते को फिर से बनाया जा सके. साथ ही, अगर रास्ता बदला जाता है, तो रास्ता बनाते समय उपयोगकर्ता के मूल इरादे को ध्यान में रखा जा सके. इस टोकन को ओपेक ब्लोब के तौर पर इस्तेमाल करें. अलग-अलग अनुरोधों में इसकी वैल्यू की तुलना न करें, क्योंकि सेवा से एक ही रूट की जानकारी मिलने पर भी इसकी वैल्यू बदल सकती है. यह फ़ील्ड सिर्फ़ तब भरा जाता है, जब |
vehicle_loads |
इस ट्रांज़िशन के दौरान, वाहन में मौजूद सामान की जानकारी. यह जानकारी, हर उस सामान के लिए होती है जो इस वाहन के पहले ट्रांज़िशन के दौरान लोड किए गए सामान को वाहन के रूट का शुरुआती लोड माना जाता है. इसके बाद, हर बार की यात्रा के बाद, यात्रा के |
VehicleLoad
यह रिपोर्ट, किसी दिए गए टाइप (Transition.vehicle_loads देखें) के लिए, रूट पर किसी पॉइंट पर वाहन के असल लोड की जानकारी देती है.
| फ़ील्ड | |
|---|---|
amount |
दिए गए टाइप के लिए, वाहन पर लोड की गई चीज़ों का वज़न. लोड की यूनिट आम तौर पर टाइप से पता चलती है. |
यहां जाएं
किसी रास्ते पर जाते समय की गई विज़िट. यह विज़िट, Shipment के पिकअप या डिलीवरी से जुड़ी है.
| फ़ील्ड | |
|---|---|
shipment_index |
सोर्स |
is_pickup |
अगर वैल्यू सही है, तो इसका मतलब है कि विज़िट, |
visit_request_index |
|
start_time |
विज़िट शुरू होने का समय. ध्यान दें कि वाहन, विज़िट की जगह पर इस समय से पहले भी पहुंच सकता है. समय, |
load_demands |
शिपमेंट और विज़िट के अनुरोध |
detour |
यात्रा से पहले रास्ते में आने वाले शिपमेंट और समयसीमा की वजह से इंतज़ार करने में लगने वाले संभावित समय की वजह से, यात्रा में लगने वाला अतिरिक्त समय. अगर विज़िट डिलीवरी के लिए है, तो रास्ते में बदलाव की दूरी का हिसाब, पिकअप की विज़िट के हिसाब से लगाया जाता है. यह दूरी इस तरह से तय की जाती है: अगर ऐसा नहीं है, तो इसका हिसाब वाहन के |
shipment_label |
अगर |
visit_label |
अगर |
injected_solution_location_token |
यह एक ओपेक टोकन है. यह किसी जगह पर जाने की जानकारी दिखाता है. इस फ़ील्ड में, नतीजे के तौर पर मिले रास्तों की विज़िट की जानकारी अपने-आप भर सकती है. ऐसा तब होता है, जब इस विज़िट के लिए एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request पर जाएं. |
ShipmentTypeIncompatibility
इससे शिपमेंट के टाइप के आधार पर, शिपमेंट के बीच मौजूद अंतर के बारे में पता चलता है. एक ही रास्ते पर, शिपिंग के लिए इस्तेमाल किए जा सकने वाले और इस्तेमाल न किए जा सकने वाले वाहनों के दिखने की संख्या, इस्तेमाल न किए जा सकने वाले वाहनों के मोड के आधार पर सीमित होती है.
| फ़ील्ड | |
|---|---|
types[] |
उन टाइप की सूची जो काम नहीं करते. अगर दो शिपमेंट के लिए, यहां दी गई |
incompatibility_mode |
कंपैटिबिलिटी से जुड़ी समस्या के लिए लागू किया गया मोड. |
IncompatibilityMode
ये मोड तय करते हैं कि एक ही रास्ते पर, ज़रूरी शर्तें पूरी न करने वाले शिपमेंट को किस तरह से सीमित किया जाए.
| Enums | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
कंपैटबिलिटी मोड के बारे में जानकारी नहीं दी गई है. इस वैल्यू का इस्तेमाल कभी नहीं किया जाना चाहिए. |
NOT_PERFORMED_BY_SAME_VEHICLE |
इस मोड में, अलग-अलग तरह के दो शिपमेंट को एक ही वाहन में नहीं ले जाया जा सकता. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
इस मोड में, अलग-अलग तरह के दो शिपमेंट को एक ही वाहन में एक साथ नहीं रखा जा सकता:
|
ShipmentTypeRequirement
शिपमेंट के टाइप के हिसाब से, शिपमेंट के बीच की ज़रूरी शर्तों के बारे में बताता है. ज़रूरी शर्तों के बारे में ज़्यादा जानकारी, ज़रूरी शर्तों के मोड से तय होती है.
| फ़ील्ड | |
|---|---|
required_shipment_type_alternatives[] |
|
dependent_shipment_types[] |
ध्यान दें: ज़रूरी शर्तों की ऐसी चेन की अनुमति नहीं है जिसमें |
requirement_mode |
ज़रूरत के हिसाब से लागू किया गया मोड. |
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[] |
उन वजहों की सूची जिनसे पता चलता है कि शिपमेंट को क्यों स्किप किया गया. ऊपर दी गई टिप्पणी |
penalty_cost |
यह एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
estimated_incompatible_vehicle_ratio |
उन वाहनों का अनुमानित अनुपात जो यहां दी गई कम से कम एक वजह से, इस शिपमेंट को पूरा नहीं कर सकते. ध्यान दें: इस फ़ील्ड में जानकारी सिर्फ़ तब भरी जाती है, जब वजहों में किसी वाहन का ज़िक्र किया गया हो. एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
कारण
अगर हम यह बता सकते हैं कि शिपमेंट को क्यों स्किप किया गया, तो इसकी वजहें यहां दी जाएंगी. अगर सभी वाहनों के लिए वजह एक जैसी नहीं है, तो 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_vehicle_indices[] |
एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
example_exceeded_capacity_type |
अगर वजह का कोड |
example_vehicle_index |
अगर वजह, शिपमेंट के लिए इस्तेमाल किए जाने वाले वाहन के साथ काम न करने से जुड़ी है, तो यह फ़ील्ड, काम करने वाले किसी एक वाहन का इंडेक्स दिखाता है. |
कोड
वजह के टाइप की पहचान करने वाला कोड. यहां दिए गए क्रम का कोई मतलब नहीं है. खास तौर पर, इससे यह पता नहीं चलता कि अगर दोनों वजहें लागू होती हैं, तो समाधान में कौनसी वजह पहले दिखेगी.
| 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 फ़ील्ड में कोई वैल्यू मौजूद है और यह वाहन उससे जुड़ा नहीं है. |
VEHICLE_IGNORED |
वाहन के एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
SHIPMENT_IGNORED |
शिपमेंट के एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
ZERO_PENALTY_COST |
शिपमेंट पर कोई जुर्माना नहीं लगा है. यह बेहतर मॉडलिंग के लिए फ़ायदेमंद हो सकता है. हालांकि, इससे यह भी पता चल सकता है कि शिपमेंट को क्यों स्किप किया गया. एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
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 के बाद होता है, तो उसकी लागत 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_time |
हार्ड टाइम विंडो के शुरू होने का समय. अगर इसे तय नहीं किया गया है, तो इसे |
end_time |
सटीक समयसीमा के खत्म होने का समय. अगर इसे तय नहीं किया गया है, तो इसे |
soft_start_time |
टाइम विंडो के सॉफ़्ट स्टार्ट होने का समय. |
soft_end_time |
टाइम विंडो के खत्म होने का समय. |
cost_per_hour_before_soft_start_time |
अगर इवेंट, soft_start_time से पहले होता है, तो मॉडल में अन्य लागतों के साथ प्रति घंटे की लागत जोड़ी जाती है. इसकी गणना इस तरह की जाती है: यह लागत पॉज़िटिव होनी चाहिए. साथ ही, इस फ़ील्ड को सिर्फ़ तब सेट किया जा सकता है, जब soft_start_time सेट किया गया हो. |
cost_per_hour_after_soft_end_time |
अगर इवेंट यह लागत पॉज़िटिव होनी चाहिए. साथ ही, इस फ़ील्ड को सिर्फ़ तब सेट किया जा सकता है, जब |
TransitionAttributes
यह कुकी, किसी रूट पर लगातार दो बार विज़िट करने के बीच ट्रांज़िशन के एट्रिब्यूट तय करती है. एक ही ट्रांज़िशन पर कई TransitionAttributes लागू हो सकते हैं. ऐसे में, सभी अतिरिक्त लागतें जुड़ जाती हैं और सबसे सख्त शर्त या सीमा लागू होती है (नैचुरल "AND" सिमैंटिक के हिसाब से).
| फ़ील्ड | |
|---|---|
src_tag |
ये टैग, (src->dst) ट्रांज़िशन का सेट तय करते हैं. ये एट्रिब्यूट, इसी सेट पर लागू होते हैं. सोर्स विज़िट या वाहन के शुरू होने की जानकारी तब मैच होती है, जब उसके |
excluded_src_tag |
|
dst_tag |
किसी डेस्टिनेशन पर जाने या वाहन के रुकने की जगह की जानकारी तब मैच होती है, जब उसके |
excluded_dst_tag |
|
cost |
इस ट्रांज़िशन को पूरा करने के लिए लागत तय करता है. यह मॉडल में मौजूद अन्य सभी लागतों की तरह ही यूनिट में होता है और इसकी वैल्यू नेगेटिव नहीं होनी चाहिए. यह शुल्क, सभी मौजूदा शुल्कों के अलावा लिया जाता है. |
cost_per_kilometer |
इससे, ट्रांज़िशन के दौरान तय की गई दूरी पर लागू होने वाली प्रति किलोमीटर की लागत के बारे में पता चलता है. यह वाहनों पर तय किए गए किसी भी |
distance_limit |
इससे यह तय किया जाता है कि ट्रांज़िशन के दौरान कितनी दूरी तय की जा सकती है. जून 2021 से, सिर्फ़ सॉफ़्ट लिमिट सेट की जा सकती हैं. |
delay |
इससे ट्रांज़िशन में लगने वाले समय के बारे में पता चलता है. यह देरी हमेशा सोर्स विज़िट खत्म होने के बाद और डेस्टिनेशन विज़िट शुरू होने से पहले होती है. |
उरी
यह एक यूनिफ़ॉर्म रिसोर्स आइडेंटिफ़ायर है. यह ऐसे संसाधन की ओर ले जाता है जिसे Route Optimization API पढ़ और लिख सकता है.
| फ़ील्ड | |
|---|---|
uri |
संसाधन का यूआरआई. ऐसा हो सकता है कि संसाधन अभी मौजूद न हो. संसाधन के कॉन्टेंट को JSON या textproto के तौर पर एन्कोड किया जाता है. सिर्फ़ Google Cloud Storage संसाधनों का इस्तेमाल किया जा सकता है. अगर संसाधन को JSON के तौर पर कोड में बदला गया है, तो संसाधन के नाम के आखिर में |
वाहन
यह कुकी, शिपमेंट से जुड़ी समस्या में वाहन को मॉडल करती है. शिपमेंट की समस्या हल करने पर, इस वाहन के लिए start_location से शुरू होकर end_location पर खत्म होने वाला रास्ता बनाया जाएगा. रास्ता, विज़िट का क्रम होता है (ShipmentRoute देखें).
| फ़ील्ड | |
|---|---|
display_name |
वाहन का वह नाम जो उपयोगकर्ता ने तय किया है. यह ज़्यादा से ज़्यादा 63 वर्णों का हो सकता है. इसमें UTF-8 वर्णों का इस्तेमाल किया जा सकता है. |
travel_mode |
यात्रा का वह मोड जिससे वाहन के लिए इस्तेमाल की जा सकने वाली सड़कों और उसकी स्पीड पर असर पड़ता है. |
route_modifiers |
शर्तों का एक सेट, जिसे पूरा करने पर दिए गए वाहन के लिए रास्तों का हिसाब लगाने के तरीके पर असर पड़ता है. |
start_location |
वह भौगोलिक जगह जहां से वाहन, शिपमेंट पिक अप करने से पहले शुरू होता है. अगर यह जानकारी नहीं दी जाती है, तो वाहन अपनी पहली पिकअप लोकेशन से यात्रा शुरू करता है. अगर शिपमेंट मॉडल में अवधि और दूरी की मैट्रिक्स मौजूद हैं, तो |
start_waypoint |
यह एक ऐसा वेपॉइंट होता है जो किसी भौगोलिक जगह को दिखाता है. यहां से वाहन, शिपमेंट पिक अप करने से पहले शुरू होता है. अगर |
end_location |
वह जगह जहां वाहन अपनी आखिरी |
end_waypoint |
यह एक ऐसा वेपॉइंट होता है जो किसी भौगोलिक जगह को दिखाता है. यह वह जगह होती है जहां वाहन, अपनी आखिरी |
start_tags[] |
वाहन के रास्ते की शुरुआत में जोड़े गए टैग के बारे में बताता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है. |
end_tags[] |
इससे वाहन के रूट के आखिर में जोड़े गए टैग के बारे में पता चलता है. खाली या डुप्लीकेट स्ट्रिंग की अनुमति नहीं है. |
start_time_windows[] |
वह समयावधि जिसके दौरान वाहन, अपनी शुरुआती जगह से रवाना हो सकता है. ये ग्लोबल समयसीमाओं के अंदर होने चाहिए ( एक ही दोहराए गए फ़ील्ड से जुड़ी समयसीमाएं अलग-अलग होनी चाहिए.इसका मतलब है कि कोई भी समयसीमा, दूसरी समयसीमा के साथ ओवरलैप नहीं होनी चाहिए और न ही उसके आस-पास होनी चाहिए. साथ ही, उन्हें क्रम के हिसाब से लगाया जाना चाहिए.
|
end_time_windows[] |
वह समयावधि जिसके दौरान वाहन अपनी मंज़िल पर पहुँच सकता है. ये ग्लोबल समयसीमाओं के अंदर होने चाहिए ( एक ही दोहराए गए फ़ील्ड से जुड़ी समयसीमाएं अलग-अलग होनी चाहिए.इसका मतलब है कि कोई भी समयसीमा, दूसरी समयसीमा के साथ ओवरलैप नहीं होनी चाहिए और न ही उसके आस-पास होनी चाहिए. साथ ही, उन्हें क्रम के हिसाब से लगाया जाना चाहिए.
|
unloading_policy |
वाहन पर सामान उतारने की नीति लागू की गई है. |
load_limits |
वाहन की क्षमताएं (वज़न, वॉल्यूम, पैलेट की संख्या वगैरह). मैप में मौजूद कुंजियां, लोड के टाइप के आइडेंटिफ़ायर होती हैं. ये |
cost_per_hour |
वाहन की लागत: सभी लागतों को जोड़कर, वाहन के रास्ते के हर घंटे की लागत. यह लागत, रास्ते में लगने वाले कुल समय पर लागू होती है. इसमें यात्रा का समय, इंतज़ार का समय, और विज़िट का समय शामिल होता है. सिर्फ़ |
cost_per_traveled_hour |
वाहन के रास्ते में तय किए गए हर घंटे का शुल्क. यह लागत सिर्फ़ उस समय पर लागू होती है जो रास्ते में लगता है.यानी, |
cost_per_kilometer |
वाहन के रास्ते के हिसाब से, प्रति किलोमीटर का शुल्क. यह शुल्क, |
fixed_cost |
अगर इस वाहन का इस्तेमाल शिपमेंट को हैंडल करने के लिए किया जाता है, तो तय की गई लागत लागू होती है. |
used_if_route_is_empty |
यह फ़ील्ड सिर्फ़ उन वाहनों पर लागू होता है जिनके रूट पर कोई शिपमेंट नहीं होता. इससे पता चलता है कि इस मामले में वाहन को इस्तेमाल किया गया माना जाना चाहिए या नहीं. अगर यह वैल्यू सही है, तो वाहन अपनी शुरुआती जगह से आखिरी जगह तक जाता है. भले ही, वह कोई शिपमेंट न ले जा रहा हो. साथ ही, शुरुआती जगह से आखिरी जगह तक जाने में लगने वाले समय और दूरी के हिसाब से शुल्क लिया जाता है. इसके अलावा, यह वाहन अपनी शुरुआती जगह से मंज़िल तक नहीं जाता है. साथ ही, इस वाहन के लिए कोई |
route_duration_limit |
वाहन के पूरे रास्ते की अवधि पर सीमा लागू की गई है. किसी |
travel_duration_limit |
वाहन के रास्ते की यात्रा की अवधि पर लागू सीमा. किसी |
route_distance_limit |
वाहन के पूरे रास्ते पर लागू होने वाली सीमा. किसी |
extra_visit_duration_for_visit_type |
यह विज़िट टाइप की स्ट्रिंग से अवधि तक का मैप तय करता है. समयावधि, अगर किसी विज़िट के अनुरोध में कई तरह की समस्याएं हैं, तो मैप में हर समस्या के लिए अवधि जोड़ दी जाएगी. |
break_rule |
इस वाहन पर लागू होने वाले ब्रेक के शेड्यूल के बारे में बताता है. अगर यह खाली है, तो इस वाहन के लिए कोई ब्रेक शेड्यूल नहीं किया जाएगा. |
label |
इससे इस वाहन के लिए लेबल तय किया जाता है. इस लेबल को रिस्पॉन्स में, इससे जुड़े |
ignore |
अगर यह वैल्यू सही है, तो अगर अगर |
travel_duration_multiple |
यह एक मल्टीप्लिकेटिव फ़ैक्टर है. इसका इस्तेमाल करके, इस वाहन के यात्रा समय को बढ़ाया या घटाया जा सकता है. उदाहरण के लिए, इसे 2.0 पर सेट करने का मतलब है कि यह वाहन धीमा है और इसे यात्रा करने में उतना समय लगता है जितना सामान्य वाहनों को लगता है. इस मल्टीपल से, विज़िट की अवधि पर कोई असर नहीं पड़ता. अगर चेतावनी: इस मल्टीपल को लागू करने के बाद, यात्रा के समय को सबसे नज़दीकी सेकंड में बदल दिया जाएगा. हालांकि, ऐसा किसी भी संख्यात्मक कार्रवाई को पूरा करने से पहले किया जाएगा. इसलिए, छोटे मल्टीपल से सटीक जानकारी नहीं मिल सकती.
|
DurationLimit
यह किसी वाहन के रास्ते की ज़्यादा से ज़्यादा अवधि तय करने वाली सीमा होती है. यह हार्ड या सॉफ्ट हो सकता है.
सॉफ़्ट लिमिट फ़ील्ड तय किए जाने पर, सॉफ़्ट मैक्स थ्रेशोल्ड और उससे जुड़ी लागत, दोनों को एक साथ तय किया जाना चाहिए.
| फ़ील्ड | |
|---|---|
max_duration |
यह एक तय सीमा है, जिसके तहत अवधि को ज़्यादा से ज़्यादा max_duration पर सेट किया जा सकता है. |
soft_max_duration |
सॉफ़्ट लिमिट में, ज़्यादा से ज़्यादा अवधि की सीमा लागू नहीं की जाती. हालांकि, इसका उल्लंघन करने पर, रूट पर शुल्क लगता है. यह लागत, मॉडल में बताई गई अन्य लागतों में जुड़ जाती है. इसकी यूनिट भी वही होती है. अगर |
quadratic_soft_max_duration |
सॉफ़्ट लिमिट, ज़्यादा से ज़्यादा अवधि की सीमा लागू नहीं करती. हालांकि, इसका उल्लंघन होने पर, रूट पर अवधि के हिसाब से लागत लगती है. यह लागत, मॉडल में बताई गई अन्य लागतों में जुड़ जाती है. इसकी यूनिट भी वही होती है. अगर
|
cost_per_hour_after_soft_max |
किराया नेगेटिव नहीं होना चाहिए. |
cost_per_square_hour_after_quadratic_soft_max |
अगर अवधि थ्रेशोल्ड से कम है, तो अतिरिक्त शुल्क नहीं लगता. अगर अवधि थ्रेशोल्ड से ज़्यादा है, तो शुल्क इस तरह से तय होता है: किराया नेगेटिव नहीं होना चाहिए. |
LoadLimit
यह किसी वाहन पर लागू होने वाली लोड लिमिट तय करता है. उदाहरण के लिए, "यह ट्रक सिर्फ़ 3,500 किलोग्राम तक का सामान ले जा सकता है". load_limits देखें.
| फ़ील्ड | |
|---|---|
soft_max_load |
लोड की एक तय सीमा. |
cost_per_unit_above_soft_max |
अगर वाहन के रूट पर कभी भी लोड |
start_load_interval |
रास्ते की शुरुआत में, वाहन के लिए तय किया गया लोड इंटरवल. |
end_load_interval |
रास्ते के आखिर में, वाहन के लिए स्वीकार्य लोड इंटरवल. |
max_load |
ज़्यादा से ज़्यादा कितना लोड स्वीकार किया जा सकता है. |
cost_per_kilometer |
इस वाहन के लिए, एक किलोमीटर तक एक यूनिट लोड ले जाने की लागत. इसका इस्तेमाल ईंधन की खपत के प्रॉक्सी के तौर पर किया जा सकता है: अगर लोड का वज़न (न्यूटन में) है, तो लोड*किलोमीटर में ऊर्जा का डाइमेंशन होता है. एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request पर जाएं. |
cost_per_traveled_hour |
इस वाहन के लिए, एक घंटे में एक यूनिट लोड ले जाने की लागत. एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request पर जाएं. |
इंटरवल
लोड की जा सकने वाली रकम का इंटरवल.
| फ़ील्ड | |
|---|---|
min |
कम से कम स्वीकार्य लोड. यह वैल्यू, 0 या उससे ज़्यादा होनी चाहिए. अगर दोनों की जानकारी दी गई है, तो |
max |
ज़्यादा से ज़्यादा स्वीकार्य लोड. यह वैल्यू, 0 या उससे ज़्यादा होनी चाहिए. अगर इस एट्रिब्यूट की वैल्यू सबमिट नहीं की जाती है, तो इस मैसेज से ज़्यादा से ज़्यादा लोड पर कोई पाबंदी नहीं लगती. अगर दोनों की जानकारी दी गई है, तो |
LoadCost
Transition के दौरान एक यूनिट लोड को ले जाने की लागत. किसी दिए गए लोड के लिए, लागत दो हिस्सों का योग होती है:
- min(load,
load_threshold) *cost_per_unit_below_threshold - max(0, load -
load_threshold) *cost_per_unit_above_threshold
इस लागत के साथ, समाधान पहले ज़्यादा मांग वाले प्रॉडक्ट डिलीवर करते हैं या ज़्यादा मांग वाले प्रॉडक्ट को आखिर में पिकअप करते हैं. उदाहरण के लिए, अगर किसी वाहन में
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
और इसका रूट, start,pickup,pickup,delivery,delivery,end है. इसमें ये ट्रांज़िशन शामिल हैं:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 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 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 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 पर जाएं.
| फ़ील्ड | |
|---|---|
load_threshold |
लोड की वह मात्रा जिसके बाद, लोड की एक यूनिट को ले जाने की लागत, cost_per_unit_below_threshold से बदलकर cost_per_unit_above_threshold हो जाती है. यह वैल्यू, 0 से ज़्यादा या इसके बराबर होनी चाहिए. |
cost_per_unit_below_threshold |
थ्रेशोल्ड और 0 के बीच की हर यूनिट के लिए, लोड की एक यूनिट को ले जाने की लागत. यह एक सीमित वैल्यू होनी चाहिए और इसकी वैल्यू 0 से ज़्यादा या इसके बराबर होनी चाहिए. |
cost_per_unit_above_threshold |
थ्रेशोल्ड से ऊपर की हर यूनिट के लिए, लोड की एक यूनिट को ले जाने की लागत. अगर थ्रेशोल्ड = 0 है, तो यह हर यूनिट के लिए तय की गई लागत होती है. यह एक सीमित वैल्यू होनी चाहिए और इसकी वैल्यू 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 |
पैदल चलने के रास्ते से जुड़ा यात्रा मोड. |
UnloadingPolicy
वाहन से सामान उतारने का तरीका बताने वाली नीति. यह सिर्फ़ उन शिपमेंट पर लागू होता है जिनमें पिकअप और डिलीवरी, दोनों की सुविधा उपलब्ध है.
unloading_policy के अलावा, अन्य शिपमेंट को रूट पर कहीं भी डिलीवर किया जा सकता है.
| Enums | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
सामान उतारने की नीति के बारे में जानकारी नहीं दी गई है. डिलीवरी, पिकअप के बाद ही होनी चाहिए. |
LAST_IN_FIRST_OUT |
डिलीवरी, पिकअप के उल्टे क्रम में होनी चाहिए |
FIRST_IN_FIRST_OUT |
डिलीवरी, पिकअप के क्रम में ही होनी चाहिए |
VehicleFullness
VehicleFullness एक मेट्रिक है. इससे यह पता चलता है कि वाहन में कितनी जगह खाली है. हर VehicleFullness फ़ील्ड की वैल्यू 0 से 1 के बीच होती है. इसकी गिनती, कैप की गई मेट्रिक फ़ील्ड (जैसे, AggregatedMetrics.travel_distance_meters) और उससे जुड़ी वाहन की सीमा (जैसे, Vehicle.route_distance_limit) के अनुपात के तौर पर की जाती है. हालांकि, ऐसा तब होता है, जब वाहन की सीमा मौजूद हो. ऐसा न करने पर, फ़ुलनेस रेशियो सेट नहीं होता है. अगर सीमा 0 है, तो फ़ील्ड को 1 पर सेट किया जाता है. ध्यान दें: जब किसी रास्ते पर ट्रैफ़िक की वजह से यात्रा करना मुश्किल हो जाता है, तो कुछ मामलों में, वाहन में यात्रियों की संख्या का अनुपात 1.0 से ज़्यादा हो सकता है. उदाहरण के लिए, वाहन अपनी दूरी की सीमा से ज़्यादा दूरी तय कर सकता है. ऐसे मामलों में, हम फ़ुलनेस वैल्यू को 1.0 पर सीमित कर देते हैं.
| फ़ील्ड | |
|---|---|
max_fullness |
इस मैसेज में मौजूद अन्य सभी फ़ील्ड की ज़्यादा से ज़्यादा वैल्यू. |
distance |
|
travel_duration |
[AggregatedMetrics.travel_duration_seconds][] और |
active_duration |
[AggregatedMetrics.total_duration_seconds][] और |
max_load |
सभी तरह के [AggregatedMetrics.max_load][] और उनके |
active_span |
किसी वाहन के लिए, यह अनुपात (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time) होता है. अगर डिनॉमिनेटर मौजूद नहीं है, तो इसके बजाय ( |
वेपॉइंट
यह वेपॉइंट को शामिल करता है. वेपॉइंट, VisitRequest के पहुंचने और जाने की जगहों के साथ-साथ वाहनों के शुरू और खत्म होने की जगहों को मार्क करते हैं.
| फ़ील्ड | |
|---|---|
side_of_road |
ज़रूरी नहीं. इससे पता चलता है कि इस वेपॉइंट की जगह पर, वाहन को सड़क के किसी खास हिस्से पर रोकने के लिए प्राथमिकता दी जानी चाहिए. इस वैल्यू को सेट करने पर, रास्ता उस जगह से होकर गुज़रेगा. इससे वाहन, सड़क के उस किनारे पर रुक सकेगा जहां वह जगह सड़क के बीच से ज़्यादा करीब है. यह विकल्प, 'पैदल चलना' यात्रा मोड के लिए काम नहीं करता. |
vehicle_stopover |
इससे पता चलता है कि वेपॉइंट पर वाहन को रुकना है, ताकि यात्रियों को पिक अप या ड्रॉप किया जा सके. यह विकल्प सिर्फ़ 'DRIVING' ट्रैवल मोड के लिए काम करता है. साथ ही, यह तब काम करता है, जब 'location_type' की वैल्यू 'location' हो. एक्सपेरिमेंटल: इस फ़ील्ड के काम करने के तरीके या इसकी उपलब्धता में आने वाले समय में बदलाव हो सकता है. |
यूनियन फ़ील्ड location_type. किसी जगह की जानकारी दिखाने के अलग-अलग तरीके. location_type इनमें से सिर्फ़ एक हो सकता है: |
|
location |
भौगोलिक निर्देशांकों का इस्तेमाल करके तय किया गया पॉइंट. इसमें एक वैकल्पिक हेडिंग भी शामिल होती है. |
place_id |
रास्ते के किसी पॉइंट से जुड़ा POI प्लेस आईडी. VisitRequest के लिए, किसी जगह पर पहुंचने या वहां से निकलने की जगह की जानकारी देने के लिए, किसी ऐसे प्लेस आईडी का इस्तेमाल करें जिससे उस जगह पर पहुंचने के लिए नेविगेशन की LatLng लोकेशन का पता चल सके. उदाहरण के लिए, किसी इमारत की जानकारी देने वाला जगह का आईडी सही है. हालांकि, किसी सड़क की जानकारी देने वाले जगह के आईडी का इस्तेमाल करने का सुझाव नहीं दिया जाता. |