টাইম উইন্ডো কোনও রুটের ইভেন্টের সময়সীমা নির্দিষ্ট করে। এইসব ইভেন্টের মধ্যে থাকতে পারে ড্রাইভারের রুটের শুরু ও শেষ, শিডিউল করা পিক-আপ ও ডেলিভারির সময় অথবা সম্পূর্ণ রুটের সময়সীমা।
টাইম উইন্ডো এই ধরনের উদ্দেশ্য পূরণ করতে সাহায্য করতে পারে:
- নির্দিষ্ট টাইমফ্রেমের মধ্যে পিক-আপ ও ডেলিভারি সম্পূর্ণ করার কাজকে অগ্রাধিকার দিন।
- ওভারঅল ব্যবসায়িক সময়ের মধ্যে কাজ করার জন্য রুট প্ল্যান করুন।
- গাড়ি যাতে নির্দিষ্ট সময়সীমার মধ্যে রুট শুরু ও শেষ করে তা নিশ্চিত করুন।
স্ট্রাকচার
ডায়াগ্রামে যেমন দেখানো হয়েছে, টাইম উইন্ডো এইভাবে সাজানো থাকে:
globalStartTimeওglobalEndTimeহলShipmentModel-এর প্রপার্টিtimeWindowsহল:pickups-এর মধ্যেShipment।deliveries-এর মধ্যেShipment।
startTimeWindowsওendTimeWindowsহলVehicle-এর প্রপার্টি।
প্রয়োজনীয় চেকলিস্ট
নিম্নলিখিত চেকলিস্টে সেইসব প্রয়োজনীয় তথ্য বর্ণনা করা হয়েছে যা টাইম উইন্ডো সম্পর্কিত সম্ভাব্য ভুল এড়াতে সাহায্য করে। এই তালিকাটি আপনার অনুরোধ যাচাই করতে এবং আপনার উত্তর সংক্রান্ত সমস্যার সমাধান করতে সাহায্য করতে পারে।
প্রপার্টি
নিম্নলিখিত সারণীতে গ্লোবাল টাইম উইন্ডো প্রপার্টি বর্ণনা করা আছে।
| প্রপার্টি | ফর্ম্যাট | বিবরণ |
|---|---|---|
globalStartTime |
Timestamp |
যেকোনও ইভেন্টের জন্য সবচেয়ে আগেকার সময়। |
globalEndTime |
Timestamp |
যেকোনও ইভেন্টের জন্য লেটেস্ট সময়। |
নিচের সারণীতে শিপমেন্ট ও গাড়িতে টাইম উইন্ডো প্রপার্টির বিবরণ দেওয়া আছে।
| মা বাবা | প্রপার্টি | ফর্ম্যাট | বিবরণ |
|---|---|---|---|
Shipment.pickups |
timeWindows |
TimeWindow মেসেজের ধরনের অ্যারে। |
শিপমেন্ট পিক-আপের জন্য সময়সীমা নির্দিষ্ট করে। |
Shipment.deliveries |
timeWindows |
শিপমেন্ট ডেলিভারির জন্য সময়ের ব্যবধান নির্দিষ্ট করে। | |
Vehicle |
startTimeWindows |
কোনও গাড়ির অপারেটিং শিডিউলের শুরুর সময় নির্দিষ্ট করে। | |
endTimeWindows |
কোনও গাড়ির অপারেটিং শিডিউল শেষ হওয়ার সময় নির্দিষ্ট করে। |
নিম্নলিখিত সারণীতে TimeWindow মেসেজের ধরন
সম্পর্কে বর্ণনা করা হয়েছে।
| প্রপার্টি | ফর্ম্যাট | বিবরণ |
|---|---|---|
startTime |
স্ট্রিং (RFC3339 UTC "Zulu" ফর্ম্যাট) | টাইম উইন্ডোর শুরু। |
endTime |
স্ট্রিং (RFC3339 UTC "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" } ] } ] } }
পরিস্থিতির উদাহরণ
এই বিভাগে কুকুরের ডে-কেয়ার ব্যবসার উদাহরণ ব্যবহার করা হয়েছে। উদাহরণটি দুটি ভিন্ন বাড়ি থেকে কুকুর পিক-আপ এবং ড্রপ-অফের জন্য রুট অপ্টিমাইজ করে এবং মালিকদের একই পিক-আপ এবং ড্রপ-অফ টাইম উইন্ডো রয়েছে। অপ্টিমাইজারকে ডে-কেয়ারের কর্মসময়, গ্রাহকদের জন্য নির্দিষ্ট পিক-আপ ও ড্রপ-অফ উইন্ডো এবং ড্রাইভারের কর্মসময় মেনে চলতে হবে।
এই উদাহরণের জন্য, অনুরোধে প্রপার্টির ভ্যালুগুলি হল:
| মা বাবা | প্রপার্টি | ভ্যালু | পরিস্থিতি |
|---|---|---|---|
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 }