टाइम विंडो से, किसी रास्ते पर होने वाले इवेंट के समय का पता चलता है. इन इवेंट में, ड्राइवर के रूट की शुरुआत और खत्म होने का समय, पिकअप और डिलीवरी का शेड्यूल किया गया समय या पूरे रूट की अवधि शामिल हो सकती है.
टाइम विंडो का इस्तेमाल, इन कामों के लिए किया जा सकता है:
- तय समयसीमा में पिकअप और डिलीवरी को प्राथमिकता दें.
- कारोबार के खुले होने के समय के हिसाब से रूट प्लान करें.
- पक्का करें कि वाहन, तय की गई समयसीमा के अंदर रूट शुरू और खत्म करें.
स्ट्रक्चर
डायग्राम में दिखाए गए तरीके के मुताबिक, टाइम विंडो को इस तरह से व्यवस्थित किया जाता है:
globalStartTimeऔरglobalEndTime,ShipmentModelकी प्रॉपर्टी हैंtimeWindows, इनकी प्रॉपर्टी हैं:Shipmentमेंpickups.Shipmentमेंdeliveries.
startTimeWindowsऔरendTimeWindows,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:00ZendTime:2023-01-13T07:15:00Z |
इससे वाहन के शुरू होने (सुबह 7:00 बजे से सुबह 7:15 बजे तक) और खत्म होने (शाम 5:00 बजे से शाम 5:15 बजे तक) की मान्य विंडो तय होती है. |
endTimeWindows |
startTime:2023-01-13T18:45:00ZendTime: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 }