টাইম উইন্ডো একটি রুটের বিভিন্ন ঘটনার সময় নির্ধারণ করে। এই ঘটনাগুলোর মধ্যে একজন চালকের রুটের শুরু ও শেষ, নির্ধারিত পিকআপ ও ডেলিভারির সময়, অথবা একটি সম্পূর্ণ রুটের সময়কাল অন্তর্ভুক্ত থাকতে পারে।
সময়সীমা নিম্নলিখিত উদ্দেশ্যগুলিকে সমর্থন করতে পারে:
- নির্দিষ্ট সময়সীমার মধ্যে পণ্য সংগ্রহ এবং বিতরণের কাজ সম্পন্ন করাকে অগ্রাধিকার দিন ।
- সামগ্রিক কর্মঘন্টার মধ্যে কার্যক্রম পরিচালনার জন্য রুট পরিকল্পনা করুন ।
- যানবাহনগুলো যেন নির্দিষ্ট সময়সীমার মধ্যে তাদের রুট শুরু ও শেষ করে, তা নিশ্চিত করুন ।
কাঠামো
ডায়াগ্রামে যেমন দেখানো হয়েছে, টাইম উইন্ডোগুলো নিম্নরূপভাবে বিন্যস্ত করা হয়েছে:
-
globalStartTimeএবংglobalEndTimeহলোShipmentModelএর প্রপার্টি। -
timeWindowsহলো নিম্নলিখিতগুলির বৈশিষ্ট্য:-
Shipmentভিতরেpickups। -
Shipmentভিতরেdeliveries।
-
-
startTimeWindowsএবংendTimeWindowsহলোVehicleএর প্রপার্টি।
প্রয়োজনীয় জিনিসপত্রের চেকলিস্ট
নিম্নলিখিত চেকলিস্টটিতে এমন কিছু অপরিহার্য জ্ঞান বর্ণনা করা হয়েছে যা টাইম উইন্ডো সম্পর্কিত সম্ভাব্য ভুল প্রতিরোধ করে। এই তালিকাটি আপনাকে আপনার অনুরোধ যাচাই করতে এবং আপনার প্রতিক্রিয়ার সমস্যা সমাধানে সাহায্য করতে পারে।
বৈশিষ্ট্য
নিম্নলিখিত সারণিতে গ্লোবাল টাইম উইন্ডো বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।
| সম্পত্তি | ফর্ম্যাট | বর্ণনা |
|---|---|---|
globalStartTime | Timestamp | যেকোনো অনুষ্ঠানের জন্য সর্বনিম্ন সময়। |
globalEndTime | Timestamp | যেকোনো ইভেন্টের জন্য সর্বশেষ সময়। |
নিম্নলিখিত সারণিতে চালান এবং যানবাহনের সময়সীমার বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।
| অভিভাবক | সম্পত্তি | ফর্ম্যাট | বর্ণনা |
|---|---|---|---|
Shipment . pickups | timeWindows | TimeWindow মেসেজ টাইপগুলোর অ্যারে। | চালান সংগ্রহের জন্য সময়সীমা নির্দিষ্ট করে। |
Shipment . deliveries | timeWindows | চালান সরবরাহের জন্য সময়সীমা নির্দিষ্ট করে। | |
Vehicle | startTimeWindows | যানবাহনের পরিচালন সময়সূচীর শুরুর সময় নির্দিষ্ট করে। | |
endTimeWindows | একটি যানবাহনের পরিচালন সময়সূচির সমাপ্তির সময় নির্দিষ্ট করে। |
নিম্নোক্ত সারণিতে TimeWindow মেসেজ টাইপের বৈশিষ্ট্যগুলো বর্ণনা করা হয়েছে।
| সম্পত্তি | ফর্ম্যাট | বর্ণনা |
|---|---|---|
startTime | স্ট্রিং (RFC3339 UTC "জুলু" ফরম্যাট) | একটি নির্দিষ্ট সময়সীমার শুরু। |
endTime | স্ট্রিং (RFC3339 UTC "জুলু" ফরম্যাট) | একটি নির্দিষ্ট সময়সীমার সমাপ্তি। |
উদাহরণ
এই অংশে তিন ধরনের উদাহরণ আলোচনা করা হয়েছে:
- টাইম উইন্ডোর গঠন ব্যাখ্যা করে এমন কোড নমুনা ।
- একটি উদাহরণমূলক পরিস্থিতি যা ব্যবসায়িক উদ্দেশ্য অর্জনের জন্য সময়সীমা ব্যবহারের একটি উপায় দেখায়।
- একটি অনুরোধের উদাহরণ , যাতে উদাহরণ সিনারিওতে সেট করা মানগুলো অন্তর্ভুক্ত রয়েছে।
কোডের নমুনা
নিম্নলিখিত বিভাগগুলিতে বিভিন্ন ধরণের টাইম উইন্ডোর কোড নমুনা দেখানো হয়েছে।
বৈশ্বিক সময় উইন্ডো
নিম্নলিখিত কোড নমুনাটি গ্লোবাল টাইম উইন্ডোগুলোর গঠন দেখায়:
{ "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" } ] } ] } }
উদাহরণ দৃশ্যকল্প
এই বিভাগে একটি ডগি ডে-কেয়ার ব্যবসার পরিস্থিতি ব্যবহার করা হয়েছে। উদাহরণটি দুটি ভিন্ন বাড়ি থেকে কুকুর আনা-নেওয়ার জন্য রুট অপ্টিমাইজ করে, এবং মালিকদের কুকুর আনা-নেওয়ার জন্য একই সময়সীমা থাকে। অপ্টিমাইজারটিকে অবশ্যই ডে-কেয়ারের কার্যঘণ্টা, গ্রাহকদের জন্য নির্দিষ্ট আনা-নেওয়ার সময়সীমা এবং ড্রাইভারের কাজের সময়কে সম্মান করতে হবে।
এই উদাহরণের ক্ষেত্রে, অনুরোধের প্রপার্টি মানগুলো হলো নিম্নরূপ:
| অভিভাবক | সম্পত্তি | মূল্য | দৃশ্যকল্প |
|---|---|---|---|
ShipmentModel | globalStartTime | 2023-01-13T07:00:00Z | এটি আপনার ডগি ডে-কেয়ার খোলার সময়। এই সময়ের আগে কোনো পিকআপ বা ডেলিভারি করা যাবে না। |
ShipmentModel | globalEndTime | 2023-01-13T19:00:00Z | এটি আপনার ডগি ডে-কেয়ার বন্ধ হওয়ার সময়। এই সময়ের মধ্যে সমস্ত পিকআপ এবং ডেলিভারি সম্পন্ন করতে হবে। |
Shipment.pickups | timeWindows | startTime :2023-01-13T07:30:00Z | গ্রাহকের বাড়ি থেকে কুকুর নিয়ে আসার জন্য গ্রহণযোগ্য সময়সীমা নির্ধারণ করে। এই উদাহরণে, আপনি উভয় গ্রাহককে সকাল ৭:৩০ থেকে ৯:০০ টার মধ্যে কুকুরটি নিয়ে আসার জন্য উপস্থিত থাকতে বলেছেন। |
endTime :2023-01-13T09:00:00Z | |||
Shipment.deliveries | timeWindows | startTime :2023-01-13T17:00:00Z | গ্রাহকের বাড়িতে কুকুর পৌঁছে দেওয়ার জন্য গ্রহণযোগ্য সময়সীমা নির্ধারণ করে। এই উদাহরণে, আপনি উভয় গ্রাহককে বলেছেন যে তাদের কুকুরগুলো বিকাল ৫:০০টা থেকে সন্ধ্যা ৬:৩০টার মধ্যে পৌঁছে দিতে হবে। |
endTime :2023-01-13T18:30:00Z | |||
Vehicle | startTimeWindows | startTime :2023-01-13T07:00:00ZendTime :2023-01-13T07:15:00Z | যানবাহনটি চালু (সকাল ৭:০০টা থেকে ৭:১৫টা) এবং শেষ (বিকাল ৫:০০টা থেকে ৫:১৫টা) হওয়ার গ্রহণযোগ্য সময়সীমা নির্ধারণ করে। |
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 }