टाइम विंडो से, किसी रास्ते पर होने वाले इवेंट का समय तय किया जाता है. इन इवेंट में, ड्राइवर के रास्ते की शुरुआत और खत्म होने का समय, पिकअप और डिलीवरी के लिए शेड्यूल किया गया समय या पूरे रास्ते की अवधि शामिल हो सकती है.
टाइम विंडो की मदद से, इन जैसे मकसद पूरे किए जा सकते हैं:
- पिकअप और डिलीवरी को तय समयसीमा में पूरा करने को प्राथमिकता दें.
- कारोबार के खुले होने के समय के हिसाब से, रास्तों की योजना बनाएं.
- पक्का करें कि वाहन, तय समयसीमा के अंदर ही यात्रा शुरू और खत्म करें.
बनावट
डायग्राम में दिखाए गए मुताबिक, टाइम विंडो को इस तरह से व्यवस्थित किया जाता है:
globalStartTime
औरglobalEndTime
,ShipmentModel
की प्रॉपर्टी हैंtimeWindows
, इनकी प्रॉपर्टी हैं:Shipment
मेंpickups
.Shipment
मेंdeliveries
.
startTimeWindows
औरendTimeWindows
,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 }