टाइम विंडो

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

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

टाइम विंडो की मदद से, इन जैसे मकसद पूरे किए जा सकते हैं:

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

स्ट्रक्चर

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

Essentials की चेकलिस्ट

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

प्रॉपर्टी

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

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

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

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

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

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

उदाहरण

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

कोड सैंपल

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

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

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

{
  "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
    }