टाइम विंडो

टाइम विंडो, `ShipmentModel` में, पिकअप और डिलीवरी ऑब्जेक्ट में `Shipment` में, और `Vehicle` में मौजूद होती हैं.

टाइम विंडो से, किसी रास्ते पर होने वाले इवेंट के समय का पता चलता है. इन इवेंट में, ड्राइवर के रूट की शुरुआत और खत्म होने का समय, पिकअप और डिलीवरी का शेड्यूल किया गया समय या पूरे रूट की अवधि शामिल हो सकती है.

टाइम विंडो का इस्तेमाल, इन कामों के लिए किया जा सकता है:

  • तय समयसीमा में पिकअप और डिलीवरी को प्राथमिकता दें.
  • कारोबार के खुले होने के समय के हिसाब से रूट प्लान करें.
  • पक्का करें कि वाहन, तय की गई समयसीमा के अंदर रूट शुरू और खत्म करें.

स्ट्रक्चर

डायग्राम में दिखाए गए तरीके के मुताबिक, टाइम विंडो को इस तरह से व्यवस्थित किया जाता है:

ज़रूरी चीज़ों की चेकलिस्ट

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

प्रॉपर्टी

यहां दी गई टेबल में, ग्लोबल टाइम विंडो की प्रॉपर्टी के बारे में बताया गया है.

प्रॉपर्टी फ़ॉर्मैट ब्यौरा
globalStartTime Timestamp किसी इवेंट के लिए सबसे पहले का समय.
globalEndTime Timestamp किसी इवेंट के लिए सबसे देर का समय.

यहां दी गई टेबल में, शिपमेंट और वाहनों के लिए टाइम विंडो की प्रॉपर्टी के बारे में बताया गया है.

Parent प्रॉपर्टी फ़ॉर्मैट ब्यौरा
Shipment.pickups timeWindows TimeWindow मैसेज टाइप का कलेक्शन. इससे शिपमेंट पिकअप के लिए समयावधि तय की जाती है.
Shipment.deliveries timeWindows इससे शिपमेंट की डिलीवरी के लिए समय अंतराल तय किया जाता है.
Vehicle startTimeWindows इससे वाहन के ऑपरेटिंग शेड्यूल के शुरू होने के समय की जानकारी मिलती है.
endTimeWindows इससे वाहन के ऑपरेटिंग शेड्यूल के खत्म होने के समय की जानकारी मिलती है.

नीचे दी गई टेबल में, TimeWindow मैसेज टाइप की प्रॉपर्टी के बारे में बताया गया है.

प्रॉपर्टी फ़ॉर्मैट ब्यौरा
startTime स्ट्रिंग (RFC3339 यूटीसी "ज़ुलु" फ़ॉर्मैट) समयसीमा की शुरुआत.
endTime स्ट्रिंग (RFC3339 यूटीसी "ज़ुलु" फ़ॉर्मैट) समयसीमा खत्म होने की तारीख.

उदाहरण

इस सेक्शन में तीन तरह के उदाहरण शामिल हैं:

  • कोड सैंपल, जो टाइम विंडो के स्ट्रक्चर के बारे में बताते हैं.
  • एक उदाहरण, जिसमें कारोबार के लक्ष्य को हासिल करने के लिए, टाइम विंडो का इस्तेमाल करने का एक तरीका दिखाया गया है.
  • अनुरोध का एक उदाहरण, जिसमें उदाहरण के तौर पर दी गई स्थिति में सेट की गई वैल्यू शामिल हैं.

कोड सैंपल

यहां दिए गए सेक्शन में, अलग-अलग तरह की समयावधि के कोड सैंपल दिखाए गए हैं.

ग्लोबल टाइम विंडो

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

{
  "model": {
    "globalStartTime": "YYYY-MM-DDTHH:MM:SSZ",
    "globalEndTime": "YYYY-MM-DDTHH:MM:SSZ",
    "shipments": [ ... ],
    "vehicles": [ ... ]
  }
}

पिकअप और डिलीवरी के लिए टाइम विंडो

यहां दिए गए कोड सैंपल में, शिपमेंट के पिकअप और डिलीवरी के लिए टाइम विंडो का स्ट्रक्चर दिखाया गया है:

{
  "model": {
    "shipments": [
      {
        "pickups": [
          {
            "timeWindows": [
              {
                "startTime": "YYYY-MM-DDTHH:MM:SSZ",
                "endTime": "YYYY-MM-DDTHH:MM:SSZ"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "timeWindows": [
              {
                "startTime": "YYYY-MM-DDTHH:MM:SSZ",
                "endTime": "YYYY-MM-DDTHH:MM:SSZ"
              }
            ]
          }
        ]
      }
    ],
    "vehicles": [ ... ]
  }
}

वाहन के लिए समयावधियां

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

{
  "model": {
    "shipments": [ ... ],
    "vehicles": [
      {
        "startTimeWindows": [
          {
            "startTime": "YYYY-MM-DDTHH:MM:SSZ",
            "endTime": "YYYY-MM-DDTHH:MM:SSZ"
          }
        ],
        "endTimeWindows": [
          {
            "startTime": "YYYY-MM-DDTHH:MM:SSZ",
            "endTime": "YYYY-MM-DDTHH:MM:SSZ"
          }
        ]
      }
    ]
  }
}

उदाहरण के तौर पर

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

इस उदाहरण के लिए, अनुरोध में प्रॉपर्टी की वैल्यू ये हैं:

Parent प्रॉपर्टी वैल्यू स्थिति
ShipmentModel globalStartTime 2023-01-13T07:00:00Z यह आपके डॉगी डेकेयर के खुलने का समय दिखाता है. इस समय से पहले, कोई भी पिकअप या डिलीवरी नहीं की जा सकती.
ShipmentModel globalEndTime 2023-01-13T19:00:00Z यह आपके डॉगी डेकेयर के बंद होने का समय दिखाता है. सभी पिकअप और डिलीवरी इस समय तक पूरी हो जानी चाहिए.
Shipment.pickups timeWindows startTime:
2023-01-13T07:30:00Z
इससे पता चलता है कि ग्राहक के घर से कुत्ते को पिक अप करने के लिए, कौनसी समयावधि सही है. इस उदाहरण में, आपने दोनों ग्राहकों को सुबह 7:30 से 9:00 बजे के बीच पिकअप के लिए उपलब्ध रहने के लिए कहा है.
endTime:
2023-01-13T09:00:00Z
Shipment.deliveries timeWindows startTime:
2023-01-13T17:00:00Z
इससे यह तय होता है कि ग्राहक के घर पर कुत्ते को छोड़ने के लिए, कौनसा समय सही रहेगा. इस उदाहरण में, आपने दोनों ग्राहकों को बताया कि उनके कुत्तों को शाम 5:00 बजे से 6:30 बजे के बीच छोड़ दिया जाएगा.
endTime:
2023-01-13T18:30:00Z
Vehicle startTimeWindows startTime:
2023-01-13T07:00:00Z
endTime:
2023-01-13T07:15:00Z
इससे वाहन के शुरू होने (सुबह 7:00 बजे से सुबह 7:15 बजे तक) और खत्म होने (शाम 5:00 बजे से शाम 5:15 बजे तक) की मान्य विंडो तय होती है.
endTimeWindows startTime:
2023-01-13T18:45:00Z
endTime:
2023-01-13T19:00:00Z

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

कई टाइमलाइन, ग्लोबल टाइम विंडो, पिकअप और डिलीवरी की टाइम विंडो, वाहन के शुरू और खत्म होने की टाइम विंडो, और वाहन के काम करने के घंटों को दिखाती हैं.

इस उदाहरण में, जैसा कि डायग्राम में दिखाया गया है, टाइम विंडो इस तरह काम करती हैं:

  • ग्लोबल टाइम विंडो, डॉगी डेकेयर के कारोबार के खुले होने का समय दिखाती है. अन्य सभी टाइम विंडो, इस टाइम विंडो के अंदर होनी चाहिए.
  • पिकअप और डिलीवरी के लिए, दिन की शुरुआत और आखिर में अलग-अलग timeWindows होते हैं.
  • वाहन के startTimeWindows, वाहन ऑपरेटर को एक समयसीमा देते हैं जिसमें उन्हें काम शुरू करना होता है. साथ ही, endTimeWindows एक और समयसीमा देते हैं जिसमें उन्हें अपना दिन खत्म करना होता है.
  • पहले startTimeWindow के शुरू होने का समय और आखिरी endTimeWindow के खत्म होने का समय, वाहन के कारोबार के खुले होने का समय तय करता है. इस मामले में, ये घंटे ग्लोबल टाइम विंडो के बराबर हैं.

अनुरोध का उदाहरण

यहां दिए गए उदाहरण में, optimizeTours अनुरोध का स्ट्रक्चर दिखाया गया है. इसमें उदाहरण के तौर पर, टाइम विंडो की वैल्यू शामिल की गई हैं.

{
  "model": {
    "globalStartTime": "2023-01-13T07:00:00Z",
    "globalEndTime": "2023-01-13T19:00:00Z",
    "shipments": [
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.8024,
              "longitude": -122.4058
            },
            "timeWindows": [
              {
                "startTime": "2023-01-13T07:30:00Z",
                "endTime": "2023-01-13T09:00:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            },
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:00:00Z",
                "endTime": "2023-01-13T18:30:00Z"
              }
            ]
          }
        ]
      },
      {
        "pickups": [
          {
            "arrivalLocation": {
              "latitude": 37.7359,
              "longitude": -122.5011
            },
            "timeWindows": [
              {
                "startTime": "2023-01-13T07:30:00Z",
                "endTime": "2023-01-13T09:00:00Z"
              }
            ]
          }
        ],
        "deliveries": [
          {
            "arrivalLocation": {
              "latitude": 37.759773,
              "longitude": -122.427063
            },
            "timeWindows": [
              {
                "startTime": "2023-01-13T17:00:00Z",
                "endTime": "2023-01-13T18:30:00Z"
              }
            ]
          }
        ]
      }
    ],
    "vehicles": [
      {
        "startLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "endLocation": {
          "latitude": 37.759773,
          "longitude": -122.427063
        },
        "costPerHour": 27,
        "startTimeWindows": [
          {
            "startTime": "2023-01-13T07:00:00Z",
            "endTime": "2023-01-13T07:15:00Z"
          }
        ],
        "endTimeWindows": [
          {
            "startTime": "2023-01-13T18:45:00Z",
            "endTime": "2023-01-13T19:00:00Z"
          }
        ]
      }
    ]
  }
}

सॉफ़्ट टाइम विंडो

टाइम विंडो को सॉफ़्ट कंस्ट्रेंट के तौर पर इस्तेमाल किया जा सकता है. इसके लिए, TimeWindow मैसेज टाइप में softStartTime और softEndTime को तय करें. इससे ऑप्टिमाइज़र को तय की गई लागत पर, तय की गई समयावधि से अलग होने की अनुमति मिलती है. साथ ही, फ़ायदा होने पर, समयावधि का सख्ती से पालन करने के बजाय, कुल ऑप्टिमाइज़ेशन को प्राथमिकता दी जाती है.

सॉफ़्ट टाइम विंडो के इस्तेमाल करने की सीमाएं ये हैं:

  • इन्हें globalStartTime और globalEndTime पर लागू नहीं किया जा सकता, क्योंकि ये TimeWindow मैसेज टाइप का इस्तेमाल नहीं करते.
  • ये सिर्फ़ तब लागू होते हैं, जब सूची में एक TimeWindow हो.

प्रॉपर्टी

नीचे दी गई टेबल में, टाइम विंडो के लिए सॉफ़्ट कंस्ट्रेंट की प्रॉपर्टी के बारे में बताया गया है.

प्रॉपर्टी का नाम फ़ॉर्मैट प्रॉपर्टी का ब्यौरा
softStartTime टाइमस्टैम्प इससे सॉफ़्ट टाइम विंडो की शुरुआत का पता चलता है. अगर इस समय से पहले कोई इवेंट होता है, तो शुल्क लिया जाता है.
softEndTime टाइमस्टैम्प इससे पता चलता है कि सॉफ़्ट टाइम विंडो कब खत्म होगी. अगर इस समय के बाद कोई इवेंट होता है, तो शुल्क लिया जाता है.
costPerHourBeforeSoftStartTime संख्या अगर कोई इवेंट softStartTime से पहले शुरू होता है, तो हर घंटे के हिसाब से लगने वाला शुल्क. softStartTime का इस्तेमाल करते समय, यह प्रॉपर्टी ज़रूरी है. लागत लागू करने के तरीके के बारे में ज़्यादा जानने के लिए, लागत मॉडल का मुख्य कॉन्सेप्ट देखें.
costPerHourAfterSoftEndTime संख्या softEndTime के बाद, इवेंट खत्म होने पर हर घंटे के हिसाब से लगने वाला शुल्क. softEndTime का इस्तेमाल करते समय, यह प्रॉपर्टी ज़रूरी है. लागत लागू करने के तरीके के बारे में ज़्यादा जानने के लिए, लागत मॉडल का मुख्य कॉन्सेप्ट देखें.

कोड सैंपल

यहां दिए गए उदाहरण में, TimeWindow मैसेज टाइप की सॉफ़्ट कंस्ट्रेंट प्रॉपर्टी का स्ट्रक्चर दिखाया गया है:

    {
      "softStartTime": "SOFT_START_TIME",
      "softEndTime": "SOFT_END_TIME",
      "costPerHourBeforeSoftStartTime": COST_BEFORE_START_TIME,
      "costPerHourAfterSoftEndTime": COST_AFTER_END_TIME
    }