OptimizeToursResponse

यात्रा को ऑप्टिमाइज़ करने से जुड़ी समस्या को हल करने के बाद जवाब देना. इसमें हर वाहन के लिए आने वाले रास्तों, स्किप किए गए शिपमेंट, और समाधान की कुल लागत शामिल होती है.

JSON के काेड में दिखाना
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "metrics": {
    object (Metrics)
  }
}
फ़ील्ड
routes[]

object (ShipmentRoute)

हर वाहन के लिए कैलकुलेट किए गए रास्ते; i-वां रास्ता, मॉडल में i-वें वाहन से जुड़ा होता है.

requestLabel

string

OptimizeToursRequest.label की कॉपी, अगर अनुरोध में किसी लेबल के बारे में बताया गया था.

skippedShipments[]

object (SkippedShipment)

स्किप किए गए सभी शिपमेंट की सूची.

validationErrors[]

object (OptimizeToursValidationError)

पुष्टि करने से जुड़ी उन सभी गड़बड़ियों की सूची जिनका हमने अलग से पता लगाया था. OptimizeToursValidationError मैसेज के लिए "एक से ज़्यादा गड़बड़ियां" जानकारी देखें. गड़बड़ियों के बजाय, इसमें चेतावनियां शामिल होंगी, बशर्ते केस solvingMode, DEFAULT_SOLVE हो.

metrics

object (Metrics)

इस समाधान के लिए, कुल समय, दूरी, और इस्तेमाल की मेट्रिक.

OptimizeToursValidationError

OptimizeToursRequest की पुष्टि करते समय मिलने वाली किसी गड़बड़ी या चेतावनी के बारे में बताता है.

JSON के काेड में दिखाना
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
फ़ील्ड
code

integer

पुष्टि करने से जुड़ी गड़बड़ी, जोड़े (code, displayName) से तय होती है, जो हमेशा मौजूद होती हैं.

इस सेक्शन में दिए गए फ़ील्ड, गड़बड़ी के बारे में ज़्यादा जानकारी देते हैं.

कई गड़बड़ियां: कई गड़बड़ियां होने पर, पुष्टि करने की प्रोसेस उनमें से कई को आउटपुट करने की कोशिश करती है. किसी कंपाइलर की तरह ही, यह भी एक सटीक प्रोसेस नहीं है. पुष्टि करने से जुड़ी कुछ गड़बड़ियां "गंभीर" होंगी. इसका मतलब है कि वे पुष्टि की पूरी प्रक्रिया को रोक देंगी. ऐसा displayName="UNSPECIFIED" गड़बड़ियों के साथ-साथ अन्य गड़बड़ियों के लिए भी होता है. कुछ गड़बड़ियों की वजह से, पुष्टि करने की प्रोसेस में दूसरी गड़बड़ियों को शामिल नहीं किया जा सकता.

स्थिरता: code और displayName बहुत स्थिर होने चाहिए. हालांकि, समय के साथ नए कोड और डिसप्ले नेम दिख सकते हैं. इस वजह से, किसी दिए गए (अमान्य) अनुरोध से, कोई दूसरा (code, displayName) पेयर मिल सकता है, क्योंकि नई गड़बड़ी ने पुरानी गड़बड़ी को छिपा दिया है. उदाहरण के लिए, "MULTIPLE ERRORS" देखें.

displayName

string

गड़बड़ी का डिसप्ले नेम.

fields[]

object (FieldReference)

गड़बड़ी के कॉन्टेक्स्ट में 0, 1 (ज़्यादातर समय) या उससे ज़्यादा फ़ील्ड शामिल हो सकते हैं. उदाहरण के लिए, वाहन #4 और शिपमेंट #2 का पहला पिकअप इस तरह से किया जा सकता है:

fields { name: "vehicles" index: 4}
fields { name: "shipments" index: 2 subField {name: "pickups" index: 0} }

हालांकि, ध्यान दें कि किसी गड़बड़ी कोड के लिए, fields की एलिमेंट की संख्या में बदलाव नहीं होना चाहिए.

errorMessage

string

गड़बड़ी के बारे में ऐसी जानकारी वाली स्ट्रिंग जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. code और errorMessage के बीच 1:1 मैपिंग होती है (जब कोड != "UNSPECIFIED") होता है.

स्थिरता: स्थिर नहीं है: दिए गए code से जुड़ा गड़बड़ी का मैसेज समय के साथ बदल सकता है (उम्मीद है कि इसे ठीक कर दिया जाएगा). इसके बजाय, कृपया displayName और code का इस्तेमाल करें.

offendingValues

string

इसमें फ़ील्ड की वैल्यू शामिल हो सकती हैं. यह सुविधा हमेशा उपलब्ध नहीं होती. आपको इस पर बिलकुल भरोसा नहीं करना चाहिए और इसका इस्तेमाल सिर्फ़ मैन्युअल मॉडल डीबग करने के लिए करना चाहिए.

FieldReference

पुष्टि करने में हुई गड़बड़ी के लिए संदर्भ बताता है. इस फ़ाइल में, FieldReference हमेशा किसी दिए गए फ़ील्ड का हवाला देता है और उसी हैरारकी के स्ट्रक्चर का पालन करता है. उदाहरण के लिए, हम वाहन #5 के startTimeWindows एलिमेंट #2 की जानकारी देने के लिए, इनका इस्तेमाल कर सकते हैं:

name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }

हालांकि, हम मैसेज में OptimizeToursRequest या ShipmentModel जैसी टॉप-लेवल इकाइयों को शामिल नहीं करते, ताकि मैसेज में बहुत ज़्यादा जानकारी न हो.

JSON के काेड में दिखाना
{
  "name": string,
  "subField": {
    object (FieldReference)
  },

  // Union field index_or_key can be only one of the following:
  "index": integer,
  "key": string
  // End of list of possible types for union field index_or_key.
}
फ़ील्ड
name

string

फ़ील्ड का नाम, जैसे कि "वाहन".

subField

object (FieldReference)

ज़रूरत पड़ने पर, बार-बार नेस्ट किया गया सब-फ़ील्ड.

यूनियन फ़ील्ड index_or_key.

index_or_key इनमें से सिर्फ़ एक हो सकता है:

index

integer

अगर फ़ील्ड दोहराया गया है, तो उसका इंडेक्स.

key

string

अगर फ़ील्ड कोई मैप है, तो कुंजी.

मेट्रिक

सभी रूट की एग्रीगेट की गई कुल मेट्रिक.

JSON के काेड में दिखाना
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
फ़ील्ड
aggregatedRouteMetrics

object (AggregatedMetrics)

यह डेटा, सभी रास्तों के लिए इकट्ठा किया जाता है. हर मेट्रिक, एक ही नाम के सभी ShipmentRoute.metrics फ़ील्ड का कुल योग (या लोड के लिए ज़्यादा से ज़्यादा) होती है.

skippedMandatoryShipmentCount

integer

ज़रूरी शिपमेंट की संख्या.

usedVehicleCount

integer

इस्तेमाल किए गए वाहनों की संख्या. ध्यान दें: अगर वाहन का रास्ता खाली है और Vehicle.used_if_route_is_empty की वैल्यू 'सही है' है, तो वाहन को इस्तेमाल किया गया माना जाता है.

earliestVehicleStartTime

string (Timestamp format)

इस्तेमाल किए गए वाहन के लिए, सबसे पहले शुरू होने का समय. इसे ShipmentRoute.vehicle_start_time के सभी इस्तेमाल किए गए वाहनों के लिए, कम से कम समय के तौर पर कैलकुलेट किया जाता है.

आरएफ़सी3339 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

latestVehicleEndTime

string (Timestamp format)

इस्तेमाल किए गए वाहन के लिए, विज्ञापन दिखाने का आखिरी समय. इसे ShipmentRoute.vehicle_end_time के सभी इस्तेमाल किए गए वाहनों के लिए, ज़्यादा से ज़्यादा समय के तौर पर कैलकुलेट किया जाता है.

आरएफ़सी3339 यूटीसी के "Zulu" फ़ॉर्मैट में एक टाइमस्टैंप, नैनोसेकंड रिज़ॉल्यूशन और नौ दशमलव अंकों के साथ. उदाहरण: "2014-10-02T15:01:23Z" और "2014-10-02T15:01:23.045123456Z".

costs

map (key: string, value: number)

सॉल्यूशन की लागत, जिसे लागत से जुड़े अनुरोध फ़ील्ड के हिसाब से बांटा गया है. इनपुट OptimizeToursRequest के हिसाब से, कुंजियां प्रोटो पाथ होती हैं, जैसे कि "model.shipments.pickups.cost". साथ ही, वैल्यू, उससे जुड़े लागत फ़ील्ड से जनरेट की गई कुल लागत होती हैं, जो पूरे समाधान में एग्रीगेट की जाती हैं. दूसरे शब्दों में कहें, तो कीमत["model.shipments.pickups.cost"], समाधान के तौर पर पिक अप की सभी कीमतों का कुल योग है. मॉडल में तय की गई सभी लागतों की जानकारी यहां दी गई है. हालांकि, TransitionAttributes से जुड़ी लागतों की जानकारी 01/2022 से सिर्फ़ एग्रीगेट किए गए तरीके से दी जाती है.

totalCost

number

समाधान की कुल लागत. लागत मैप में सभी मानों का योग.