Route Optimization API से मिले रिस्पॉन्स को समझें... कुत्तों की मदद से

यूरोपियन इकनॉमिक एरिया (ईईए) के डेवलपर

प्रोडक्शन के लिए नोट

इस गाइड में REST और JSON का इस्तेमाल किया गया है, ताकि इसे आसानी से समझा जा सके. हालांकि, आपके प्रोडक्शन एनवायरमेंट के लिए, हमारा सुझाव है कि बेहतर परफ़ॉर्मेंस के लिए, gRPC और क्लाइंट लाइब्रेरी का इस्तेमाल करें. ज़्यादा जानकारी के लिए, Route Optimization API की क्लाइंट लाइब्रेरी देखें.

अपना पहला अनुरोध करें में अनुरोध भेजने के बाद, ऑप्टिमाइज़र एक OptimizeToursResponse दिखाता है. यह रिस्पॉन्स, आपके ड्राइवर के लिए रूट प्लान है. इस गाइड में, इसे पढ़ने का तरीका बताया गया है.

रास्ते के प्लान की खास जानकारी

कुत्तों की डेकेयर सेवा के मामले में, ऑप्टिमाइज़र आपकी वैन में बर्निस माउंटेन डॉग और चिहुआहुआ को असाइन करता है. साथ ही, जर्मन शेफ़र्ड को छोड़ देता है. आपके ड्राइवर का रूट प्लान इस तरह है:

  • डेकेयर सेंटर में सुबह 7:55 बजे शिफ़्ट शुरू करें.
  • सुबह 8:20 बजे, कॉइट टावर के पास से बर्नीज़ माउंटेन डॉग को पिक अप करें.
  • सुबह 8:58 बजे साउथ सनसेट प्लेग्राउंड पार्क से चिहुआहुआ को पिक अप करें.
  • सुबह 9:24 बजे डेकेयर सेंटर पर वापस पहुंचें और सुबह 9:30 बजे ड्रॉपऑफ़ विंडो खुलने तक इंतज़ार करें.
  • बर्नीज़ माउंटेन डॉग को सुबह 9:30 बजे छोड़ना है.
  • चिहुआहुआ को सुबह 9:35 बजे छोड़ना है.
  • सुबह 9:40 बजे शिफ़्ट खत्म करें.

इस रूट प्लान की कीमत 147.22 डॉलर है. इसमें जर्मन शेफ़र्ड को नहलाने का काम न करने पर लगने वाला 100 डॉलर का जुर्माना भी शामिल है.

अपने नतीजों की जांच करने के लिए, अपने रिस्पॉन्स की तुलना पूरे उदाहरण के रिस्पॉन्स से करें. आपको मिलने वाले नतीजे थोड़े अलग हो सकते हैं, क्योंकि यात्रा में लगने वाला समय और दूरी, सड़क के मौजूदा डेटा पर निर्भर करती है.

पूरे जवाब का उदाहरण

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T15:55:04Z",
      "vehicleEndTime": "2024-02-13T17:40:00Z",
      "visits": [
        {
          "isPickup": true,
          "startTime": "2024-02-13T16:20:00Z",
          "detour": "0s",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2024-02-13T16:58:12Z",
          "detour": "2600s",
          "shipmentLabel": "Chihuahua",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          "startTime": "2024-02-13T17:30:00Z",
          "detour": "2297s",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "DELIVER_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          "startTime": "2024-02-13T17:35:00Z",
          "detour": "656s",
          "shipmentLabel": "Chihuahua",
          "visitType": "DELIVER_SHIPMENT"
        }
      ],
      "transitions": [
        {
          "travelDuration": "1496s",
          "travelDistanceMeters": 7082,
          "waitDuration": "0s",
          "totalDuration": "1496s",
          "startTime": "2024-02-13T15:55:04Z"
        },
        {
          "travelDuration": "1992s",
          "travelDistanceMeters": 16589,
          "waitDuration": "0s",
          "totalDuration": "1992s",
          "startTime": "2024-02-13T16:25:00Z"
        },
        {
          "travelDuration": "1252s",
          "travelDistanceMeters": 7860,
          "waitDuration": "356s",
          "totalDuration": "1608s",
          "startTime": "2024-02-13T17:03:12Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T17:35:00Z"
        },
        {
          "travelDuration": "0s",
          "waitDuration": "0s",
          "totalDuration": "0s",
          "startTime": "2024-02-13T17:40:00Z"
        }
      ],
      "metrics": {
        "performedShipmentCount": 2,
        "travelDuration": "4740s",
        "waitDuration": "356s",
        "delayDuration": "0s",
        "breakDuration": "0s",
        "visitDuration": "1200s",
        "totalDuration": "6296s",
        "travelDistanceMeters": 31531,
        "performedShipmentPenaltyCostSum": 2000
      },
      "routeCosts": {
        "model.vehicles.cost_per_hour": 47.22
      },
      "routeTotalCost": 47.22,
      "vehicleFullness": {
        "maxFullness": 0.3497777777777778,
        "activeSpan": 0.3497777777777778
      }
    }
  ],
  "skippedShipments": [
    {
      "index": 2,
      "label": "German shepherd",
      "penaltyCost": 100
    }
  ],
  "metrics": {
    "aggregatedRouteMetrics": {
      "performedShipmentCount": 2,
      "travelDuration": "4740s",
      "waitDuration": "356s",
      "delayDuration": "0s",
      "breakDuration": "0s",
      "visitDuration": "1200s",
      "totalDuration": "6296s",
      "travelDistanceMeters": 31531,
      "performedShipmentPenaltyCostSum": 2000
    },
    "usedVehicleCount": 1,
    "earliestVehicleStartTime": "2024-02-13T15:55:04Z",
    "latestVehicleEndTime": "2024-02-13T17:40:00Z",
    "totalCost": 147.22,
    "costs": {
      "model.vehicles.cost_per_hour": 47.22,
      "model.shipments.penalty_cost": 100
    }
  }
}
    

जवाब का स्ट्रक्चर

OptimizeToursResponse में, ShipmentRoute ऑब्जेक्ट होता है. इसमें विज़िट मैसेज टाइप और Metrics ऑब्जेक्ट होता है. Metrics ऑब्जेक्ट में, aggregatedRouteMetrics और totalCost होता है.

OptimizeToursResponse में दो मुख्य कॉम्पोनेंट होते हैं:

  • routes: आपके फ़्लीट में मौजूद हर वाहन के लिए रूट प्लान. इसमें हर पिकअप और डिलीवरी का क्रम और समय शामिल है. आपके पास एक वैन है, इसलिए एक रूट प्लान है.
  • metrics: पूरे रूट प्लान की खास जानकारी. इसमें कुल लागत, अवधि, और दूरी शामिल है.

ऑप्टिमाइज़र, जर्मन शेफ़र्ड को स्किप कर देता है. इसलिए, जवाब में skippedShipments भी शामिल होता है.

यहां दिए गए सेक्शन में, जवाब में रूट प्लान की खास जानकारी की हर जानकारी को ढूंढने का तरीका बताया गया है.

कौनसी गाड़ी किस रूट पर चलती है?

ऑप्टिमाइज़र, रूट प्लान (routes कलेक्शन) जनरेट करता है. यह आपके अनुरोध में मौजूद vehicles के क्रम से मेल खाता है.

vehicleIndex फ़ील्ड, हर वाहन की पहचान उसकी शून्य-आधारित पोज़िशन के आधार पर करता है. आपकी वैन के लिए यह पोज़िशन 0 है. vehicleStartTime और vehicleEndTime फ़ील्ड से, ड्राइवर को अपनी शिफ़्ट शुरू और खत्म करने का समय पता चलता है.

Route Optimization API, यूटीसी में टाइमस्टैंप दिखाता है. इसे Z सफ़िक्स से मार्क किया जाता है. भले ही, आपके अनुरोध में ऑफ़सेट कुछ भी हो. सैन फ़्रांसिस्को का समय जानने के लिए, आठ घंटे घटाएं. आपकी वैन के लिए, शिफ़्ट सुबह 7:55 बजे से सुबह 9:40 बजे तक चलती है. इसके बारे में यहां दिए गए कोड सैंपल में बताया गया है.

{
"routes": [
    {
    // "vehicleIndex": 0, // Omitted in actual JSON response because it's 0
    "vehicleStartTime": "2024-02-13T15:55:04Z",
    "vehicleEndTime": "2024-02-13T17:40:00Z",
    ...
    }
  ]
  ...
}

पिकअप और ड्रॉपऑफ़ का क्रम क्या है?

हर रूट में, visits कलेक्शन में असाइन किए गए वाहन के लिए, पिकअप और डिलीवरी की हर जानकारी समय के हिसाब से क्रम में होती है.

हर विज़िट का shipmentIndex, आपके अनुरोध में शिपमेंट की शून्य-आधारित पोज़िशन है: 0, बर्नीज़ माउंटेन डॉग है और 1, चिहुआहुआ है. shipmentLabel फ़ील्ड में, हर शिपमेंट के लिए सेट किया गया लेबल दिखता है.

पिकअप और ड्रॉपऑफ़ (या डिलीवरी) के बीच अंतर करने के लिए, visitType या isPickup फ़ील्ड देखें:

  • visitType: इससे विज़िट ऐक्शन के बारे में साफ़ तौर पर पता चलता है.
    • पिकअप: visitType = "PICKUP_SHIPMENT"
    • डिलीवरी: visitType = "DELIVER_SHIPMENT"
  • isPickup: बूलियन हेल्पर फ़ील्ड.
    • पिकअप: isPickup = true
    • डिलीवरी: isPickup = false (JSON में शामिल नहीं किया गया)

इवेंट के सटीक क्रम और हर जगह पर पहुंचने के अनुमानित समय का पता लगाने के लिए, visits कलेक्शन को क्रम से पढ़ें. नीचे दी गई टेबल में, shipmentIndex, isPickup या visitType, और startTime फ़ील्ड के क्रम और वैल्यू के आधार पर, रूट प्लान की कार्रवाई दिखाई गई है.

क्रम shipmentIndex की कीमत का isPickup या visitType वैल्यू startTime वैल्यू (यूटीसी) कार्रवाई
पहली विज़िट 0 (JSON में शामिल नहीं किया गया) सही या PICKUP_SHIPMENT 2024-02-13T16:20:00Z सुबह 8:20 बजे बर्नीज़ माउंटेन डॉग को पिक अप करें.
दूसरी विज़िट 1 सही या PICKUP_SHIPMENT 2024-02-13T16:58:12Z सुबह 8:58 बजे चिवावा को पिक अप करें.
तीसरी विज़िट 0 (JSON में शामिल नहीं किया गया) False (हटाया गया) या DELIVER_SHIPMENT 2024-02-13T17:30:00Z बर्नीज़ माउंटेन डॉग को सुबह 9:30 बजे डॉगी डेकेयर सेंटर में छोड़ना.
चौथी विज़िट 1 False (हटाया गया) या DELIVER_SHIPMENT 2024-02-13T17:35:00Z सुबह 9:35 बजे, चिहुआहुआ को डॉगी डेकेयर सेंटर में छोड़ना.

नीचे दिए गए कोड सैंपल में बताया गया है कि जवाब में यह क्रम कैसे दिखता है:

{
  "routes": [
    {
      "visits": [
        {
          // "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
          "isPickup": true,
          "startTime": "2024-02-13T16:20:00Z",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          "isPickup": true,
          "startTime": "2024-02-13T16:58:12Z",
          "shipmentLabel": "Chihuahua",
          "visitType": "PICKUP_SHIPMENT"
        },
        {
          // "shipmentIndex": 0, // Omitted in actual JSON response because it's 0
          // "isPickup": false, // Omitted in actual JSON response because it's false
          "startTime": "2024-02-13T17:30:00Z",
          "shipmentLabel": "Bernese mountain dog",
          "visitType": "DELIVER_SHIPMENT"
        },
        {
          "shipmentIndex": 1,
          // "isPickup": false, // Omitted in actual JSON response because it's false
          "startTime": "2024-02-13T17:35:00Z",
          "shipmentLabel": "Chihuahua",
          "visitType": "DELIVER_SHIPMENT"
        }
      ]
    }
  ]
}

हर विज़िट में एक visitRequestIndex भी होता है. यह पिकअप या ड्रॉपऑफ़ विकल्प की शून्य-आधारित पोज़िशन होती है, जिसे ऑप्टिमाइज़र ने शिपमेंट के लिए चुना है. इस स्थिति में, हर कुत्ते के लिए पिकअप और ड्रॉपऑफ़ का सिर्फ़ एक विकल्प है. इसलिए, visitRequestIndex हमेशा 0 होता है और जवाब में इसे शामिल नहीं किया जाता.

विज़िट के बीच क्या होता है?

हर रास्ते के लिए, transitions कलेक्शन में विज़िट के बीच की यात्रा की जानकारी होती है. visits और transitions अलग-अलग सूचियां हैं. हालांकि, ये समय के हिसाब से एक-दूसरे से जुड़ी होती हैं, जैसा कि यहां बताया गया है:

  1. transitions[0] (शुरुआत से लेकर पहली विज़िट तक का ड्राइव टाइम)
  2. visits[0] (पहली विज़िट)
  3. transitions[1] (पहली जगह से दूसरी जगह तक ड्राइव करें)
  4. visits[1] (दूसरी विज़िट)
  5. ...
  6. visits[N-1] (पिछली विज़िट, जहां N विज़िट की कुल संख्या है)
  7. transitions[N] (पिछली बार विज़िट की गई जगह से लेकर, आखिरी जगह तक ड्राइव करें)

दोनों कलेक्शन में startTime फ़ील्ड को देखकर, रास्ते की टाइमलाइन को फ़ॉलो किया जा सकता है. ट्रांज़िशन का startTime तब होता है, जब ड्राइवर यात्रा शुरू करता है. वहीं, विज़िट का startTime तब होता है, जब ड्राइवर पिकअप या ड्रॉपऑफ़ शुरू करता है.

हर ट्रांज़िशन में, जगहों के बीच की दूरी और ड्राइविंग में लगने वाला अनुमानित समय दिखता है. नीचे दी गई टेबल में, transitions और visits, दोनों फ़ील्ड को डॉगी डेकेयर के लिए, समय के हिसाब से रूट की कार्रवाइयों के साथ मैप किया गया है.

क्रम फ़ील्ड का नाम startTime वैल्यू (यूटीसी) विवरण कार्रवाई
पहला ट्रांज़िशन transitions[0] 2024-02-13T15:55:04Z travelDuration: 1496s
travelDistanceMeters: 7082
डेकेयर सेंटर से बर्नीज़ माउंटेन डॉग को पिक अप करने के लिए, 25 मिनट तक सात कि॰मी॰ ड्राइव करें. शिफ़्ट सुबह 7:55 बजे शुरू होगी.
पहली विज़िट visits[0] 2024-02-13T16:20:00Z shipmentIndex: 0 (JSON में शामिल नहीं किया गया)
isPickup: सही है
बर्नीज़ माउंटेन डॉग को सुबह 8:20 बजे से पिक अप करें. इसमें पांच मिनट लगेंगे.
दूसरा ट्रांज़िशन transitions[1] 2024-02-13T16:25:00Z travelDuration: 1992s
travelDistanceMeters: 16589
सुबह 8:25 बजे, कॉइट टावर से चिहुआहुआ को पिक करने के लिए 17 कि॰मी॰ ड्राइव करें. इसमें 33 मिनट लगेंगे.
दूसरी विज़िट visits[1] 2024-02-13T16:58:12Z shipmentIndex: 1
isPickup: True
चिहुआहुआ को सुबह 8:58 बजे पिक अप करें. इसमें पांच मिनट लगेंगे.
तीसरा ट्रांज़िशन transitions[2] 2024-02-13T17:03:12Z travelDuration: 1252s
travelDistanceMeters: 7860
waitDuration: 356s
सुबह 9:03 बजे, साउथ सनसेट प्लेग्राउंड से डेकेयर सेंटर के लिए 8 कि॰मी॰ की ड्राइव शुरू की. इसमें 21 मिनट लगे. सुबह 9:24 बजे डेकेयर सेंटर पहुंचे और ड्रॉपऑफ़ विंडो खुलने के लिए छह मिनट इंतज़ार किया.
तीसरी विज़िट visits[2] 2024-02-13T17:30:00Z shipmentIndex: 0 (JSON में शामिल नहीं किया गया)
isPickup: False (JSON में शामिल नहीं किया गया)
बर्नीज़ माउंटेन डॉग को सुबह 9:30 बजे से डॉगी डेकेयर सेंटर में छोड़ें. इसमें 5 मिनट लगेंगे.
चौथा ट्रांज़िशन transitions[3] 2024-02-13T17:35:00Z travelDuration: 0s
travelDistanceMeters: 0 (JSON में शामिल नहीं किया गया)
गाड़ी न चलाएं. सुबह 9:35 बजे, चिहुआहुआ को डेकेयर सेंटर में छोड़ने के लिए तैयार.
चौथी विज़िट visits[3] 2024-02-13T17:35:00Z shipmentIndex: 1
isPickup: False (JSON में शामिल नहीं किया गया)
चिहुआहुआ को सुबह 9:35 बजे डॉगी डेकेयर सेंटर में छोड़ें. इसमें पांच मिनट लगेंगे.
पांचवां ट्रांज़िशन transitions[4] 2024-02-13T17:40:00Z travelDuration: 0s
travelDistanceMeters: 0 (JSON में शामिल नहीं किया गया)
गाड़ी न चलाएं. ड्राइवर की शिफ़्ट सुबह 9:40 बजे खत्म होती है.

यहां दिए गए कोड सैंपल से पता चलता है कि जवाब में transitions[0] और transitions[1] के लिए यह क्रम कैसे दिया जाता है:

{
  "routes": [
    {
      "transitions": [
        {
          "travelDuration": "1496s",
          "travelDistanceMeters": 7082,
          "waitDuration": "0s",
          "totalDuration": "1496s",
          "startTime": "2024-02-13T15:55:04Z"
        },
        {
          "travelDuration": "1992s",
          "travelDistanceMeters": 16589,
          "waitDuration": "0s",
          "totalDuration": "1992s",
          "startTime": "2024-02-13T16:25:00Z"
        },
        ...
      ]
    }
  ]
}

इस रास्ते पर कितना टोल टैक्स देना होगा?

जवाब में कई फ़ील्ड देखे जा सकते हैं. यह इस बात पर निर्भर करता है कि आपको किसी खास वाहन की लागत चाहिए या पूरे फ़्लीट की कुल लागत.

यहां दी गई टेबल में, जवाब में लागत की जानकारी पाने के सभी तरीके बताए गए हैं:

Parent पैरामीटर दायरा ब्यौरा
ShipmentRoute routeCosts हर रूट के हिसाब से उस खास रूट के लिए, लागत के अलग-अलग कॉम्पोनेंट (जैसे, हर घंटे की लागत) की जानकारी.
routeTotalCost हर रास्ते के लिए उस खास रास्ते के लिए कैलकुलेट की गई कुल लागत.
Metrics totalCost कुल (सभी रूट) समाधान में मौजूद सभी रूट की कुल लागत.
costs कुल (सभी रूट) समाधान में मौजूद सभी रूट के लिए, कुल लागत के कॉम्पोनेंट का ब्रेकडाउन.

routeCosts और costs में बताई गई लागत, आपके अनुरोध में बताई गई लागत की सीमाओं को दिखाती है. ज़्यादा जानकारी के लिए, लागत मॉडल के मुख्य सिद्धांत वाला दस्तावेज़ देखें.

कुत्तों की देखभाल करने वाली इस सेवा के लिए, शिपमेंट को स्किप किया गया है. इसलिए, हर रूट की लागत और कुल लागत अलग-अलग है. रूट की लागत में सिर्फ़ उस रूट से जुड़ी लागत (ड्राइवर की सैलरी) शामिल होती है. वहीं, कुल लागत में शिपमेंट को छोड़ने पर लगने वाला जुर्माना भी शामिल होता है. यहां दिए गए कोड सैंपल से पता चलता है कि रिस्पॉन्स में ये वैल्यू कहां मिलेंगी:

{
  "routes": [
    {
      "vehicleStartTime": "2024-02-13T15:55:04Z",
      "vehicleEndTime": "2024-02-13T17:40:00Z",
      ...
      "routeCosts": {
        "model.vehicles.cost_per_hour": 47.22
      },
      "routeTotalCost": 47.22
    }
  ],
  "metrics": {
    "totalCost": 147.22,
    "costs": {
      "model.shipments.penalty_cost": 100,
      "model.vehicles.cost_per_hour": 47.22
    },
    ...
  }
}

रूट प्लान के मुताबिक, ड्राइवर सुबह 7:55 से 9:40 तक वैन चलाता है. यह समय करीब 1 घंटा 45 मिनट (6, 296 सेकंड) है. आपके तय किए गए 27 डॉलर प्रति घंटे के हिसाब से, इस रास्ते की लागत 47.22 डॉलर है. ऑप्टिमाइज़र ने जर्मन शेफ़र्ड के शिपमेंट को छोड़ दिया. इसलिए, इसमें 100 डॉलर का जुर्माना जोड़ा गया. इससे कुल लागत 147.22 डॉलर हो गई.

शिपमेंट को क्यों छोड़ा गया?

ऑप्टिमाइज़र, उन सभी शिपमेंट की सूची बनाता है जिन्हें वह skippedShipments कलेक्शन में नहीं भेजता. शिपमेंट को स्किप करने की वजह इस बात पर निर्भर करती है कि आपने penaltyCost सेट किया है या नहीं:

  • ज़रूरी शिपमेंट (penaltyCost नहीं): ऑप्टिमाइज़र इन शिपमेंट को कभी नहीं छोड़ता. भले ही, इन्हें पूरा करने में ज़्यादा खर्च आए. यह किसी शिपमेंट को सिर्फ़ तब छोड़ता है, जब उसे किसी भी रूट में फ़िट न किया जा सके. उदाहरण के लिए, ऐसा तब होता है, जब शिपमेंट की टाइम विंडो, अन्य शिपमेंट की टाइम विंडो से मेल न खाती हो.
  • ज़रूरी नहीं शिपमेंट (penaltyCost के साथ): ऑप्टिमाइज़र इन्हें भी छोड़ सकता है, जब इन्हें पूरा करने की लागत, जुर्माने से ज़्यादा हो. कुछ शिपमेंट को दूसरों के मुकाबले प्राथमिकता देने के लिए, अलग-अलग पेनल्टी कॉस्ट सेट की जा सकती हैं.

इस स्थिति में, जर्मन शेफ़र्ड को पिकअप करने की विंडो, बर्नीज़ माउंटेन डॉग को पिकअप करने की विंडो से मेल खाती है. कॉइट टावर और लैंड्स एंड के बीच की दूरी 25 मिनट की है. इसलिए, ड्राइवर 20 मिनट के अंदर दोनों जगह से पिकअप नहीं कर सकता. ऑप्टिमाइज़र को इनमें से एक को छोड़ना होगा. जर्मन शेफ़र्ड के लिए जुर्माना कम है (नियमित क्लाइंट के लिए 1,000 डॉलर के मुकाबले 100 डॉलर). इसलिए, ऑप्टिमाइज़र इसे छोड़ देता है और 100 डॉलर का जुर्माना लगाता है.

यहां दिए गए कोड सैंपल में, जवाब में skippedShipments ऑब्जेक्ट दिखाया गया है:

{
  ...
  "skippedShipments": [
    {
      "index": 2,
      "label": "German shepherd",
      "penaltyCost": 100
    }
  ],
  ...
}

जवाब में मौजूद skippedShipments ऑब्जेक्ट में ये फ़ील्ड शामिल होते हैं:

  • index: आपके अनुरोध में शिपमेंट का ज़ीरो-बेस्ड इंडेक्स (तीसरे शिपमेंट के लिए 2).
  • label: वह लेबल जो आपने अनुरोध में दिया है ("जर्मन शेफ़र्ड").
  • penaltyCost: अनुरोध में बताई गई पेनल्टी की लागत, जिसे एपीआई कुल लागत में जोड़ता है.

ऑप्टिमाइज़र किसी शिपमेंट को न छोड़े, इसके लिए उस शर्त को कम करें जिसकी वजह से समस्या हो रही है. उदाहरण के लिए, जर्मन शेफ़र्ड के मालिक से पिकअप के लिए ज़्यादा समय देने का अनुरोध करें. इसके बाद, अपने अनुरोध में उस पिकअप के लिए timeWindows को अपडेट करें.

उदाहरण में दिए गए रिस्पॉन्स फ़ील्ड

यहां दी गई टेबल में, उदाहरण के तौर पर दी गई स्थिति के OptimizeToursResponse में दिखाए गए सभी रिस्पॉन्स फ़ील्ड के बारे में बताया गया है. रूट प्लान को समझने के लिए, आपको हर फ़ील्ड का इस्तेमाल करने की ज़रूरत नहीं है. हालांकि, इन फ़ील्ड का विश्लेषण करके यह तय किया जा सकता है कि अपने कारोबार की ज़रूरतों के हिसाब से, OptimizeToursRequest में कैसे बदलाव किया जाए. ज़्यादा जानकारी के लिए, रूट प्लान का लाइफ़साइकल देखें.

कॉन्टेंट को पैरंट या टेक्स्ट से खोजें के हिसाब से फ़िल्टर किया जा सकता है.

Parent पैरामीटर प्रॉपर्टी का टाइप ब्यौरा
OptimizeToursResponse routes ऑब्जेक्ट की कैटगरी (ShipmentRoute) इसमें हर वाहन के लिए तय किए गए रास्तों की सूची होती है. हर वाहन के लिए एक रास्ता तय किया जाता है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, इसमें आपकी एक वैन के लिए रास्ते का पूरा प्लान शामिल है.
metrics ऑब्जेक्ट (Metrics) इसमें समाधान के लिए कुल मेट्रिक शामिल होती हैं. इन्हें सभी रास्तों के हिसाब से एग्रीगेट किया जाता है. कुत्तों की देखभाल करने वाली इस कंपनी के लिए, यह दिन भर की लागत और ऑपरेशन की अवधि की खास जानकारी है.
skippedShipments ऑब्जेक्ट की कैटगरी (SkippedShipment) इसमें उन शिपमेंट की सूची होती है जिन्हें समाधान में शामिल नहीं किया गया. इस स्थिति में, तीसरे कुत्ते (जर्मन शेफ़र्ड) को छोड़ दिया जाता है.
ShipmentRoute vehicleStartTime टाइमस्टैंप यह वह समय होता है, जब वाहन अपने रूट पर चलना शुरू करता है. कुत्तों की देखभाल करने वाली इस कंपनी के लिए, ड्राइवर सुबह 7:55 बजे वैन चलाना शुरू करता है.
vehicleEndTime टाइमस्टैंप यह वह समय होता है, जब वाहन अपना रूट पूरा कर लेता है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, ड्राइवर सुबह 9:40 बजे वैन चलाना बंद कर देता है.
visits ऑब्जेक्ट की कैटगरी (Visit) यह रास्ते में पिकअप और डिलीवरी की क्रम वाली सूची है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, दोनों कुत्तों को पिकअप और ड्रॉप करने का क्रम यह है.
transitions ऑब्जेक्ट की कैटगरी (Transition) यह विज़िट के बीच की दूरी, यात्रा, और इंतज़ार के समय की क्रम वाली सूची है. कुत्ते की देखभाल करने वाली इस जगह के लिए, इसमें कॉइट टावर, साउथ सनसेट प्लेग्राउंड पार्क, और देखभाल करने वाली जगह के बीच की ड्राइविंग दूरी और समय की जानकारी दी गई है.
metrics ऑब्जेक्ट (AggregatedMetrics) ये मेट्रिक, इस रूट के लिए खास तौर पर उपलब्ध हैं. कुत्तों की देखभाल करने वाली इस कंपनी के लिए, इस वैन के आंकड़े ये हैं. ये मेट्रिक, आपके अनुरोध में बताई गई लागतों पर आधारित होती हैं. ज़्यादा जानकारी के लिए, लागत मॉडल का मुख्य कॉन्सेप्ट दस्तावेज़ देखें.
routeCosts ऑब्जेक्ट (मैप) यह इस रास्ते के लिए, किराये का ब्यौरा है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, ड्राइवर को हर घंटे 27 डॉलर के हिसाब से पेमेंट किया जाता है.
routeTotalCost नंबर यह इस रास्ते के लिए कुल शुल्क है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, वैन के इस रूट की कुल लागत 47.22 है.
vehicleFullness ऑब्जेक्ट (VehicleFullness) इससे पता चलता है कि वाहन, समय, दूरी, और लोड जैसी अपनी परिचालन सीमाओं के कितने करीब है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, ड्राइवर को सिर्फ़ शिफ़्ट के शुरू और खत्म होने के समय के हिसाब से काम करना होता है. इसलिए, ऑप्टिमाइज़र vehicleFullness को असल रूट की अवधि और ड्राइवर की शिफ़्ट के लिए उपलब्ध ज़्यादा से ज़्यादा समय के अनुपात के तौर पर कैलकुलेट करता है.
Visit shipmentIndex पूर्णांक यह मूल अनुरोध में शिपमेंट का शून्य-आधारित इंडेक्स है. कुत्तों की देखभाल करने वाली इस जगह के लिए, 0 का मतलब बर्नीज़ माउंटेन डॉग और 1 का मतलब चिहुआहुआ है.
isPickup बूलियन अगर यह विज़िट पिकअप है, तो इस फ़ील्ड की वैल्यू 'सही' होगी. कुत्तों की देखभाल करने वाली इस सेवा के लिए, कुत्ते को पिक अप करने पर यह वैल्यू 'सही' और डेकेयर पर छोड़ने पर 'गलत' (या मौजूद नहीं) होती है.
startTime टाइमस्टैंप यह विज़िट शुरू होने का अनुमानित समय है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, यह वह समय है जब ड्राइवर दरवाज़ा खटखटाता है.
detour कुल समय यह वह अतिरिक्त समय है जो ऑप्टिमाइज़र, इस शिपमेंट की यात्रा में जोड़ता है. डिटूर, असल रूट प्लान और सीधे रास्ते के बीच का अंतर होता है. ऐसा तब होता है, जब ड्राइवर के पास कोई दूसरा शिपमेंट या टास्क पूरा करने के लिए न हो.

कुत्तों की देखभाल करने वाले इस डेकेयर के लिए, पहली विज़िट बर्निस माउंटेन डॉग को पिक अप करने के लिए है. इसके लिए, ड्राइवर को कोई अतिरिक्त दूरी तय नहीं करनी होगी, क्योंकि वह डेकेयर सेंटर से सीधे इस पिकअप के लिए जाता है. चिहुआहुआ को पिकअप करने के लिए, ड्राइवर को 43 मिनट का चक्कर लगाना पड़ता है. ऐसा इसलिए, क्योंकि ड्राइवर पहले बर्नीज़ माउंटेन डॉग को पिकअप करता है और उसे गाड़ी में बैठाने में पांच मिनट लगते हैं.
shipmentLabel स्ट्रिंग यह हर शिपमेंट के अनुरोध का लेबल है. कुत्तों की देखभाल करने वाली इस जगह के लिए, लेबल "चिहुआहुआ" या "बर्नीज़ माउंटेन डॉग" हैं.
visitType स्ट्रिंग (Enum) इससे विज़िट के टाइप का पता चलता है. यह पिकअप के लिए PICKUP_SHIPMENT या डिलीवरी के लिए DELIVER_SHIPMENT हो सकता है. इस स्थिति में, यह PICKUP_SHIPMENT या DELIVER_SHIPMENT है.
Transition travelDuration कुल समय यह एक जगह से दूसरी जगह जाने में लगने वाला समय है. उदाहरण के लिए, कुत्तों की देखभाल करने वाली इस जगह के मामले में, ड्राइवर को कुत्तों की देखभाल करने वाली जगह से कॉइट टावर तक जाने में करीब 25 मिनट लगते हैं. यहां से उसे बर्नीज़ माउंटेन डॉग को पिक अप करना है.
travelDistanceMeters पूर्णांक यह इस ट्रांज़िशन के दौरान, मीटर में तय की गई दूरी है. उदाहरण के लिए, डॉगी डेकेयर के इस मामले में, ड्राइवर डेकेयर से सात किलोमीटर दूर कॉइट टावर तक जाता है, ताकि बर्नीज़ माउंटेन डॉग को पिक अप किया जा सके.
waitDuration कुल समय यह वह समय है जो अगले पिकअप या डिलीवरी से पहले इंतज़ार करने में बिताया गया. कुत्तों की देखभाल करने वाले इस डेकेयर सेंटर के लिए, तीसरे ट्रांज़िशन में यह समय छह मिनट (356 सेकंड) है. ऐसा इसलिए है, क्योंकि ड्राइवर, ड्रॉपऑफ़ विंडो के सुबह 9:30 बजे खुलने से पहले ही डेकेयर सेंटर पहुंच जाता है. अन्य ट्रांज़िशन के लिए, यह वैल्यू 0 है.
totalDuration कुल समय यह ट्रांज़िशन की कुल अवधि है. इसमें ड्राइविंग और इंतज़ार करने का समय शामिल है. उदाहरण के लिए, ड्राइवर पहले ट्रांज़िशन पर 25 मिनट (25 मिनट ड्राइविंग और 0 मिनट इंतज़ार) खर्च करता है. साथ ही, डेकेयर पर वापस जाने के लिए तीसरे ट्रांज़िशन पर 27 मिनट (21 मिनट ड्राइविंग और 6 मिनट इंतज़ार) खर्च करता है.
startTime टाइमस्टैंप यह यात्रा शुरू होने का समय है. यह पिछली विज़िट के पूरा होने के समय से मेल खाता है. इसके अलावा, पहले ट्रांज़िशन के लिए, वाहन के शुरू होने के समय से मेल खाता है. कुत्ते को डेकेयर ले जाने के उदाहरण में, पहला ट्रांज़िशन सुबह 7:55 बजे शुरू होता है, जब ड्राइवर डेकेयर से निकलता है. दूसरा ट्रांज़िशन सुबह 8:25 बजे शुरू होता है, जब ड्राइवर कॉइट टावर से निकलता है.
Metrics aggregatedRouteMetrics ऑब्जेक्ट (AggregatedMetrics) यह सभी रूट की मेट्रिक का योग है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, आपकी एक वैन की कुल मेट्रिक ये हैं.
usedVehicleCount पूर्णांक यह समाधान में इस्तेमाल किए गए वाहनों की संख्या है. कुत्तों की देखभाल करने वाली इस कंपनी के लिए, सिर्फ़ एक वैन का इस्तेमाल किया जाता है.
earliestVehicleStartTime टाइमस्टैंप यह सभी वाहनों के लिए, यात्रा शुरू करने का सबसे पहला समय है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, वैन का रास्ता सुबह 7:55 बजे शुरू होता है.
latestVehicleEndTime टाइमस्टैंप यह सभी वाहनों के लिए, खत्म होने का सबसे नया समय है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, वैन का रूट सुबह 9:40 बजे खत्म होता है.
totalCost नंबर यह समाधान की कुल लागत है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, पूरे दिन के रूट प्लान की लागत 147.22 है. इसमें ड्राइवर की सैलरी 47.22 और शिपमेंट डिलीवर न करने पर लगने वाला जुर्माना 100 शामिल है.
costs ऑब्जेक्ट (मैप) यहां कैटगरी के हिसाब से कुल लागत की जानकारी दी गई है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, ऑप्टिमाइज़र ने रास्ते की लागत का हिसाब लगाया. यह हिसाब, हर घंटे की लागत और जर्मन शेफ़र्ड को छोड़ने पर लगने वाले जुर्माने के आधार पर लगाया गया.
AggregatedMetrics performedShipmentCount पूर्णांक यह सही तरीके से रूट किए गए शिपमेंट की संख्या है. डॉग डेकेयर की इस स्थिति में, ड्राइवर दो कुत्तों को ले जाता है.
travelDuration कुल समय यह यात्रा में बिताया गया कुल समय है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, ड्राइवर को 79 मिनट तक यात्रा करनी होगी.
waitDuration कुल समय यह इंतज़ार करने में बिताया गया कुल समय है. कुत्तों की देखभाल करने वाले इस डेकेयर सेंटर के उदाहरण में, ड्राइवर डेकेयर सेंटर पर छह मिनट (356 सेकंड) तक इंतज़ार करता है, ताकि ड्रॉपऑफ़ विंडो खुल सके.
delayDuration कुल समय यह वह अतिरिक्त समय है जिसे ट्रांज़िशन एट्रिब्यूट का इस्तेमाल करके तय किया जाता है. जैसे, पार्किंग के लिए रिज़र्व किया गया समय. कुत्तों की देखभाल करने वाली इस सेवा के लिए, आपने अनुरोध में कोई ट्रांज़िशन एट्रिब्यूट तय नहीं किया है. इसलिए, यह वैल्यू शून्य है.
breakDuration कुल समय यह ब्रेक पर बिताया गया कुल समय है. कुत्तों की देखभाल करने वाली इस कंपनी के लिए, कोई ब्रेक नहीं है.
visitDuration कुल समय यह विज़िट के दौरान, सेवाएं देने में बिताया गया कुल समय होता है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, यह समय 20 मिनट है. इसमें चार विज़िट के लिए, हर विज़िट में पांच मिनट का समय शामिल है.
totalDuration कुल समय यह अवधि के सभी कॉम्पोनेंट का योग है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, कुल अवधि 105 मिनट (6,296 सेकंड) है.
travelDistanceMeters पूर्णांक यह मीटर में तय की गई कुल दूरी है. कुत्ते की देखभाल करने वाली इस सेवा के लिए, ड्राइवर कुल 31.5 कि॰मी॰ की दूरी तय करता है.
performedShipmentPenaltyCostSum डबल यह शिपमेंट के लिए तय की गई सभी पेनल्टी का कुल योग होता है. इस मामले में, यह 2000 है, क्योंकि ड्राइवर ने बर्नीज़ माउंटेन डॉग और चिहुआहुआ को पिक किया. इनमें से हर एक के लिए पेनल्टी की कीमत 1000 है.
VehicleFullness maxFullness नंबर यह VehicleFullness के सभी फ़ील्ड में, इस्तेमाल का सबसे ज़्यादा अनुपात है. कुत्तों की देखभाल करने वाली इस सेवा के लिए, यह वैल्यू 0.35 है. इसकी वजह यह है कि ड्राइवर, सुबह की पूरी शिफ़्ट के दौरान सिर्फ़ 105 मिनट के लिए वैन चलाता है. आपने अनुरोध में इस शिफ़्ट को पांच घंटे के तौर पर तय किया है.
activeSpan नंबर यह ड्राइवर की कुल शिफ़्ट की अवधि और रूट प्लान के ऑपरेटिंग घंटों के बीच का अनुपात है. कम संख्या का मतलब है कि ड्राइवर, कामकाजी दिन का कम समय वाहन चलाने में बिताता है. कुत्तों की देखभाल करने वाली कंपनी के इस उदाहरण में, यह वैल्यू 0.35 है. इसकी वजह यह है कि ड्राइवर, पांच घंटे की शिफ़्ट के दौरान 105 मिनट तक वैन चलाता है.
SkippedShipment index पूर्णांक यह मूल अनुरोध में शिपमेंट का शून्य-आधारित इंडेक्स है. इस उदाहरण में, 2 जर्मन शेफ़र्ड को दिखाता है.
label स्ट्रिंग यह वह लेबल है जो आपने अनुरोध में शिपमेंट के लिए तय किया है.
penaltyCost नंबर यह वह जुर्माना है जो ऑप्टिमाइज़र के इस शिपमेंट को छोड़ने पर आपको चुकाना पड़ता है. यह आपके अनुरोध में बताए गए penaltyCost से मेल खाता है.