टाइम विंडो

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

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

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

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

स्ट्रक्चर

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

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

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

प्रॉपर्टी

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

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

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

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

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

प्रॉपर्टी फ़ॉर्मैट ब्यौरा
startTime स्ट्रिंग (RFC3339 UTC "Zulu" फ़ॉर्मैट) समयसीमा शुरू होने का समय.
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
    }