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 कि॰मी॰ ड्राइव करें. शिफ़्ट सुबह 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 से मेल खाता है.