इंडेक्स
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(मैसेज)ShipmentRoute.Visit.VisitType(enum)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] के बीच.
- 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 |
|---|
|
यह
इसका मकसद,
|
| OptimizeToursLongRunning |
|---|
|
यह नतीजे के तौर पर मिले
|
| OptimizeToursUri |
|---|
|
यह क्लाइंट, Google Cloud Storage में सेव किए गए यह तरीका, नतीजे के तौर पर मिले
|
AggregatedMetrics
सभी Transition और/या Visit (ShipmentRoute के लिए) एलिमेंट के लिए, 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 Object Notation. |
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 |
ज़रूरी है. |
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 |
अगर यह वैल्यू true पर सेट है, तो यात्रा की दूरी का हिसाब लगाने के लिए, 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-th रास्ता, मॉडल में मौजूद i-th वाहन से जुड़ा होता है. |
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 से दी जा रही है. |
total_cost |
समाधान की कुल लागत. लागत मैप में मौजूद सभी वैल्यू का योग. |
OptimizeToursUriMetadata
इस टाइप में कोई फ़ील्ड नहीं है.
OptimizeToursUri कॉल के लिए ऑपरेशन मेटाडेटा.
OptimizeToursUriRequest
OptimizeToursUri तरीके से इस्तेमाल किया जाने वाला अनुरोध.
| फ़ील्ड | |
|---|---|
parent |
ज़रूरी है. कॉल करने के लिए, टारगेट प्रोजेक्ट या जगह. फ़ॉर्मैट:
क्षेत्र के हिसाब से |
input |
ज़रूरी है. Cloud Storage ऑब्जेक्ट का यूआरआई, जिसमें |
output |
ज़रूरी है. Cloud Storage ऑब्जेक्ट का यूआरआई, जिसमें |
OptimizeToursUriResponse
OptimizeToursUri तरीके से मिला जवाब.
| फ़ील्ड | |
|---|---|
output |
ज़रूरी नहीं. Cloud Storage ऑब्जेक्ट का यूआरआई, जिसमें JSON या textproto के तौर पर एन्कोड किया गया संसाधन के |
OptimizeToursValidationError
OptimizeToursRequest की पुष्टि करते समय मिली गड़बड़ी या चेतावनी के बारे में बताता है.
| फ़ील्ड | |
|---|---|
code |
पुष्टि करने से जुड़ी गड़बड़ी को ( इस सेक्शन के बाद दिए गए फ़ील्ड में, गड़बड़ी के बारे में ज़्यादा जानकारी दी गई है. एक से ज़्यादा गड़बड़ियां: एक से ज़्यादा गड़बड़ियां होने पर, पुष्टि करने की प्रोसेस में उनमें से कई गड़बड़ियों को दिखाने की कोशिश की जाती है. कंपाइलर की तरह ही, यह प्रोसेस भी पूरी तरह से सटीक नहीं होती. पुष्टि करने से जुड़ी कुछ गड़बड़ियां "गंभीर" होंगी. इसका मतलब है कि वे पुष्टि करने की पूरी प्रोसेस को रोक देती हैं. स्थिरता: |
display_name |
गड़बड़ी का डिसप्ले नेम. |
fields[] |
गड़बड़ी के कॉन्टेक्स्ट में 0, 1 (ज़्यादातर मामलों में) या इससे ज़्यादा फ़ील्ड हो सकते हैं. उदाहरण के लिए, वाहन #4 और शिपमेंट #2 के पहले पिकअप को इस तरह से रेफ़र किया जा सकता है: हालांकि, ध्यान दें कि किसी गड़बड़ी के कोड के लिए, |
error_message |
गड़बड़ी के बारे में बताने वाली स्ट्रिंग, जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. स्थिरता: स्थिर नहीं है: किसी |
offending_values |
इसमें फ़ील्ड की वैल्यू शामिल हो सकती हैं. यह सुविधा हमेशा उपलब्ध नहीं होती. आपको इस पर बिलकुल भी भरोसा नहीं करना चाहिए. इसका इस्तेमाल सिर्फ़ मैन्युअल तरीके से मॉडल को डीबग करने के लिए करना चाहिए. |
FieldReference
इससे पुष्टि से जुड़ी गड़बड़ी के बारे में जानकारी मिलती है. FieldReference हमेशा इस फ़ाइल में दिए गए फ़ील्ड को रेफ़र करता है और उसी क्रम के स्ट्रक्चर का पालन करता है. उदाहरण के लिए, हम वाहन #5 के start_time_windows के एलिमेंट #2 की जानकारी इस तरह दे सकते हैं:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
हालांकि, हम OptimizeToursRequest या ShipmentModel जैसी टॉप-लेवल इकाइयों को शामिल नहीं करते, ताकि मैसेज में ज़्यादा जानकारी न दिखे.
| फ़ील्ड | |
|---|---|
name |
फ़ील्ड का नाम, जैसे कि "vehicles". |
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 बाद शुरू होना चाहिए.
एक ही (या मिलते-जुलते) इवेंट के लिए, कई प्राथमिकताएं हो सकती हैं. उदाहरण के लिए, "A की डिलीवरी के बाद B को पिकअप किया जाता है" और "B के पिकअप के बाद C को पिकअप किया जाता है".
इसके अलावा, प्राथमिकताएं सिर्फ़ तब लागू होती हैं, जब दोनों शिपमेंट किए जाते हैं. ऐसा न होने पर, इन्हें अनदेखा कर दिया जाता है.
| फ़ील्ड | |
|---|---|
first_is_delivery |
इससे पता चलता है कि "पहला" इवेंट, डिलीवरी है या नहीं. |
second_is_delivery |
इससे पता चलता है कि "दूसरा" इवेंट, डिलीवरी है या नहीं. |
offset_duration |
"पहले" और "दूसरे" इवेंट के बीच का ऑफ़सेट. यह नेगेटिव हो सकता है. |
first_index |
"पहले" इवेंट का शिपमेंट इंडेक्स. इस फ़ील्ड में जानकारी देना ज़रूरी है. |
second_index |
"दूसरे" इवेंट का शिपमेंट इंडेक्स. इस फ़ील्ड में जानकारी देना ज़रूरी है. |
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
आखिर में, यहां बताया गया है कि ट्रांज़िशन के दौरान यात्रा, ब्रेक, देरी, और इंतज़ार को कैसे व्यवस्थित किया जा सकता है.
- ये ओवरलैप नहीं होते.
- DELAY यूनीक होता है और यह अगली विज़िट (या वाहन के आखिरी स्टॉप) से ठीक पहले का समय होना चाहिए. इसलिए, देरी की अवधि जानने से ही, इसके शुरू और खत्म होने के समय का पता चल जाता है.
- BREAKS, समय की ऐसी अवधियां होती हैं जो एक-दूसरे से जुड़ी होती हैं और ओवरलैप नहीं होती हैं. जवाब में, हर ब्रेक के शुरू होने का समय और अवधि बताई गई है.
- यात्रा और इंतज़ार "प्रीएम्प्टेबल" हैं: इस ट्रांज़िशन के दौरान, उन्हें कई बार रोका जा सकता है. क्लाइंट यह मान सकते हैं कि यात्रा "जितनी जल्दी हो सके" शुरू हो जाती है और "इंतज़ार" में बाकी समय बीत जाता है.
एक (जटिल) उदाहरण:
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 से दी जा रही है. |
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 |
इस ट्रांज़िशन के दौरान होने वाले ब्रेक की कुल अवधि, अगर कोई हो. हर ब्रेक के शुरू होने के समय और अवधि की जानकारी, |
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 |
अगर |
visit_type |
ज़रूरी नहीं. इससे विज़िट के टाइप के बारे में पता चलता है. |
injected_solution_location_token |
विज़िट की जगह की जानकारी देने वाला ओपेक टोकन. इस फ़ील्ड को नतीजे के तौर पर मिले रास्तों की विज़िट में तब भरा जा सकता है, जब इस विज़िट के लिए एक्सपेरिमेंट के तौर पर उपलब्ध: ज़्यादा जानकारी के लिए, https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request पर जाएं. |
VisitType
इससे पता चलता है कि विज़िट, पिकअप, डिलीवरी या Stop पर जाने के लिए है. स्टॉप पर विज़िट का इस्तेमाल सिर्फ़ तब किया जाता है, जब मल्टीमोडल ऑप्टिमाइज़ेशन की सुविधा चालू हो.
| Enums | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
विज़िट टाइप की जानकारी नहीं है. |
PICKUP_SHIPMENT |
विज़िट का मतलब, शिपमेंट पिकअप से है. |
DELIVER_SHIPMENT |
विज़िट का मतलब, शिपमेंट की डिलीवरी से है. |
ShipmentTypeIncompatibility
इससे शिपमेंट के shipment_type के आधार पर, उनके बीच की असंगतताओं के बारे में पता चलता है. एक ही रास्ते पर, एक-दूसरे के साथ काम न करने वाले शिपमेंट को एक साथ नहीं भेजा जा सकता. यह पाबंदी, इनकंपैटिबिलिटी मोड के आधार पर लगाई जाती है.
| फ़ील्ड | |
|---|---|
types[] |
काम न करने वाले टाइप की सूची. सूची में शामिल दो शिपमेंट के लिए, |
incompatibility_mode |
काम न करने की समस्या पर लागू किया गया मोड. |
IncompatibilityMode
ऐसे मोड जिनसे यह तय होता है कि एक ही रूट पर, एक-दूसरे के साथ न भेजे जा सकने वाले शिपमेंट को कैसे रोका जाए.
| Enums | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
इनकंपैटिबिलिटी मोड के बारे में नहीं बताया गया है. इस वैल्यू का इस्तेमाल कभी नहीं किया जाना चाहिए. |
NOT_PERFORMED_BY_SAME_VEHICLE |
इस मोड में, एक-दूसरे के साथ न रखे जा सकने वाले दो शिपमेंट को एक ही वाहन में नहीं रखा जा सकता. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
इस मोड में, एक-दूसरे के साथ काम न करने वाले दो शिपमेंट को एक ही समय पर एक ही वाहन में नहीं रखा जा सकता:
|
ShipmentTypeRequirement
shipment_type के आधार पर, शिपमेंट के बीच की ज़रूरी शर्तें तय करता है. ज़रूरी शर्त मोड से, ज़रूरी शर्त की जानकारी तय होती है.
| फ़ील्ड | |
|---|---|
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 के बाद होता है, तो उसके हिसाब से लागत बढ़ जाएगी. 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 |
यह फ़ील्ड सिर्फ़ उन वाहनों पर लागू होता है जिनके रूट पर कोई शिपमेंट डिलीवर नहीं किया जाता. इससे पता चलता है कि इस मामले में, वाहन को इस्तेमाल किया गया माना जाना चाहिए या नहीं. अगर यह वैल्यू true पर सेट है, तो वाहन अपनी शुरुआती जगह से आखिरी जगह तक जाता है. भले ही, वह किसी शिपमेंट को डिलीवर न करे. साथ ही, शुरुआती जगह से आखिरी जगह तक की यात्रा में लगने वाले समय और दूरी की लागत को ध्यान में रखा जाता है. ऐसा न होने पर, यह वाहन अपने शुरुआती स्टॉप से आखिरी स्टॉप तक नहीं जाता. साथ ही, इस वाहन के लिए कोई |
route_duration_limit |
वाहन के रूट की कुल अवधि पर लागू की गई सीमा. किसी |
travel_duration_limit |
वाहन के रास्ते की यात्रा अवधि पर लागू सीमा. किसी |
route_distance_limit |
वाहन के रास्ते की कुल दूरी पर लागू की गई सीमा. किसी |
extra_visit_duration_for_visit_type |
इससे visit_types स्ट्रिंग से लेकर अवधि तक का मैप तय होता है. यह समयावधि, अगर विज़िट के अनुरोध में कई तरह की विज़िट शामिल हैं, तो मैप में हर तरह की विज़िट के लिए समयावधि जोड़ी जाएगी. |
break_rule |
इससे, इस वाहन पर लागू होने वाले ब्रेक शेड्यूल के बारे में जानकारी मिलती है. अगर यह फ़ील्ड खाली है, तो इस वाहन के लिए कोई ब्रेक शेड्यूल नहीं किया जाएगा. |
label |
इस वाहन के लिए लेबल तय करता है. इस लेबल को रिस्पॉन्स में, उससे जुड़े |
ignore |
अगर इसकी वैल्यू true पर सेट है, तो अगर अगर |
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 |
अगर कॉल की अवधि थ्रेशोल्ड से कम है, तो अतिरिक्त शुल्क 0 होगा. अगर ऐसा नहीं है, तो कॉल की अवधि के हिसाब से शुल्क लिया जाएगा: लागत, शून्य से कम नहीं होनी चाहिए. |
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 |
वेपॉइंट से जुड़ी लोकप्रिय जगह का आईडी. किसी VisitRequest के लिए, पहुंचने या जाने की जगह की जानकारी देने के लिए, जगह के आईडी का इस्तेमाल करें. इसके लिए, जगह के ऐसे आईडी का इस्तेमाल करें जो उस जगह पर नेविगेट करने के लिए, LatLng की जगह की जानकारी दे सके. उदाहरण के लिए, किसी इमारत को दिखाने वाली जगह का आईडी सही है, लेकिन किसी सड़क को दिखाने वाली जगह का आईडी इस्तेमाल करने का सुझाव नहीं दिया जाता. |