टाइम विंडो

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

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

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

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

स्ट्रक्चर

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

Essentials की चेकलिस्ट

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

अंदर होनी चाहिए.

प्रॉपर्टी

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

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

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

Parent प्रॉपर्टी फ़ॉर्मैट ब्यौरा
Shipment.pickups timeWindows TimeWindow मैसेज टाइप का ऐरे. यह कुकी, शिपमेंट पिकअप करने के लिए समय अंतराल तय करती है.
Shipment.deliveries timeWindows इससे शिपमेंट की डिलीवरी के लिए समय अंतराल तय किए जाते हैं.
Vehicle startTimeWindows इससे किसी वाहन के चलने के शेड्यूल के शुरू होने का समय पता चलता है.
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
    }