বাস্তব-জীবনের ব্যবহারের কেস-স্টাডি সিনারিও ব্যবহার করে কীভাবে Route Optimization API-তে আপনার প্রথম অনুরোধ করতে হয় তা এই ডকুমেন্টে দেখানো হয়েছে।
সহজভাবে বোঝানোর জন্য, REST API-এর উদাহরণে HTTP এবং JSON ব্যবহার করা হয়েছে। তবে, আপনার প্রোডাকশন এনভায়রনমেন্টের জন্য, সামগ্রিক সাজেশন হল পারফর্ম্যান্সের সুবিধা পেতে gRPC ব্যবহার করা। তবে, gRPC ইনস্টল করতে হয়। আরও তথ্যের জন্য, Route Optimization API ক্লায়েন্ট লাইব্রেরি দেখুন।
পরিস্থিতি
আপনি সান ফ্রান্সিসকোতে সকাল ৭টা থেকে সন্ধ্যা ৭টা পর্যন্ত কুকুরের ডে-কেয়ার পরিষেবা চালান। আজ সকালে, আপনাকে শহরের বিভিন্ন লোকেশন থেকে দুটি কুকুরকে নিয়ে আসতে হবে। দু'জন কুকুরের মালিকই আপনাকে সকাল ৭:৩০ থেকে ৯:৩০-এর মধ্যে পিক-আপ উইন্ডো দিয়েছেন।
আপনার কাছে কাজের জন্য একটি ভ্যান আছে এবং আপনি ড্রাইভারকে প্রতি ঘন্টায় ২৭ ডলার দেন। ড্রাইভার ও ভ্যান সকাল ৭:০০ টায় আপনার ডে-কেয়ার সেন্টার থেকে দিনের কাজ শুরু করে এবং দুপুরের খাবারের জন্য ১২:০০ টার মধ্যে সকালের পিক-আপ থেকে ফিরে আসতে হবে।
আজ ১৩ ফেব্রুয়ারি, ২০২৪ এবং ড্রাইভারের নিম্নলিখিত টাস্ক আছে:
- কয়েট টাওয়ারের কাছে বার্নিজ মাউন্টেন ডগ পিক-আপ করুন।
- সাউথ সানসেট প্লেগ্রাউন্ড পার্ক থেকে চিহুয়াহুয়াকে তুলে নাও।
- মিশন ডলোরেস পার্কের ডগি ডে কেয়ার সেন্টারে দুটি কুকুরকেই ছেড়ে দিন।
আপনাকে এমন একটি রুট খুঁজে বের করতে হবে যাতে কুকুরদের ভ্যানে থাকার সময় যতটা সম্ভব কম হয়, একই সাথে পিক-আপ ও ড্রপ-অফের প্রয়োজনীয়তাও পূরণ হয়।
শুরু করার আগে
এই উদাহরণে দেখানো পরিস্থিতিতে কোড রান করতে, আপনাকে প্রথমে Route Optimization API সেট-আপ করুন লিঙ্কে দেওয়া নির্দেশাবলী সম্পূর্ণ করতে হবে।
১. আপনার রুট অপ্টিমাইজেশন অ্যাপ্রোচ বেছে নিন
আপনার অপ্টিমাইজেশন সংক্রান্ত সমস্যার জটিলতার উপর নির্ভর করে, Route Optimization API-তে বেছে নেওয়ার জন্য একাধিক পদ্ধতি রয়েছে।
যেহেতু এই ডগি ডে কেয়ারের পরিস্থিতিটি একটি ছোট ও সহজ অনুরোধ, তাই optimizeTours-এর মতো
ব্লকিং পদ্ধতি ব্যবহার করুন, যা ছোট অনুরোধের জন্য দ্রুত ফলাফল
প্রদান করে। Route Optimization API পদ্ধতি সম্পর্কে আরও তথ্যের জন্য, সিঙ্ক্রোনাস ও অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্ট দেখুন।
optimizeTours পদ্ধতিতে HTTP POST অনুরোধ করতে নিম্নলিখিত URL ব্যবহার করুন:
https://routeoptimization.googleapis.com/v1/projects/PROJECT_OR_ID:optimizeTours
এছাড়াও, আপনাকে টাইমআউট এবং ডেডলাইন সেটিংস কম সময়ের জন্য সেট করতে হবে যাতে অপ্রয়োজনীয় অপেক্ষার সময় কমানো যায়। এই ডগি ডে-কেয়ারের ক্ষেত্রে, অপ্টিমাইজার আপনার অনুরোধের উত্তর দিতে বেশি সময় নেয় না, তাই নিম্নলিখিত সেটিংস ব্যবহার করুন:
timeoutপ্যারামিটারটি ২ সেকেন্ডে সেট করুন।- ডেডলাইন সেটিংস ডিফল্ট হিসেবেই রাখুন, যা REST অনুরোধের জন্য ৬০ সেকেন্ড।
২. অনুরোধ মেসেজের বডি তৈরি করা
ব্লকিং optimizeTours পদ্ধতি বেছে নেওয়ার পরে এবং টাইমআউট ও ডেডলাইন সেটিংস
সংজ্ঞায়িত করার পরে, আপনার পরবর্তী ধাপ হল অনুরোধ মেসেজের বডি
তৈরি করা।
এই পরিস্থিতিতে, অনুরোধটি হল REST API-তে JSON হিসেবে এনকোড করা
একটি OptimizeToursRequest মেসেজ।
অনুরোধ মেসেজ তৈরি করতে, পরবর্তী ধাপগুলি অনুসরণ করুন:
অনুরোধের প্রাথমিক স্ট্রাকচার দিয়ে শুরু করুন, যা নিচে দেওয়া হল:
{ "timeout": ..., "model": { "shipments": [...], "vehicles": [...], "globalStartTime": "...", "globalEndTime": "..." } }স্ট্রাকচার সম্পর্কে আরও তথ্যের জন্য, বেস স্ট্রাকচার (ShipmentModel, Shipment এবং Vehicle)-এর জন্য মূল ধারণার নির্দেশিকা দেখুন।
শিপমেন্টের সংজ্ঞা দিন।
shipmentsফিল্ডে, সকালে পিক-আপ ও ড্রপ-অফ করতে হবে এমন প্রতিটি কুকুরের জন্য একটিShipmentমেসেজ যোগ করুন। এখানে আপনি কুকুরের মালিকের পিক-আপের জন্য পছন্দের লোকেশন ও সময় এবং ডে-কেয়ার সেন্টারের লোকেশন ও কুকুরের ড্রপ-অফের সময় উল্লেখ করেন।প্রতিটি কুকুরের জন্য, পিক-আপের জন্য একটি
VisitRequestএবং ডেলিভারির জন্য আরেকটি তৈরি করুন, যা এই পরিস্থিতির জন্য, ডে-কেয়ার ড্রপ-অফ হিসেবে উল্লেখ করা হয়।পিক-আপে,
arrivalWaypointকুকুরের পিক-আপ লোকেশনে (বার্নিজ মাউন্টেন ডগের জন্য কোইট টাওয়ার বা চিহুয়াহুয়ার জন্য সাউথ সানসেট প্লেগ্রাউন্ড পার্ক) এবংtimeWindowsমালিকের অনুরোধ করা পিক-আপের সময়ে (সকাল ৭:৩০ থেকে সকাল ৯:৩০) সেট করুন।ডেলিভারির ক্ষেত্রে,
arrivalWaypointডে-কেয়ার সেন্টারে এবংtimeWindowsপ্রয়োজনীয় ড্রপ-অফ সময়ের (সকাল ৯:৩০ থেকে ১১:৩০) জন্য সেট করুন।
টাইম উইন্ডো সম্পর্কে আরও জানতে, টাইম উইন্ডো দেখুন।
আপনি প্রতিটি শিপমেন্টের জন্য শনাক্তকারী যোগ করতে
labelফিল্ড ব্যবহার করতে পারেন, যেমন "বার্নিজ মাউন্টেন ডগ" এবং "চিহুয়াহুয়া"। এটি আপনাকে উত্তরে শিপমেন্ট শনাক্ত করতে সাহায্য করতে পারে।
শিপমেন্টের সংজ্ঞা সম্পর্কে আরও জানতে, শিপমেন্ট দেখুন।
গাড়ির সংজ্ঞা দাও।
vehiclesফিল্ডে, আপনার একটি ভ্যানের জন্যVehicleমেসেজ যোগ করুন, যেখানে ডে-কেয়ার সেন্টারটি শুরু এবং শেষ পয়েন্ট হিসেবে থাকবে, ড্রাইভারের মজুরির খরচ এবং ভ্যানের অপারেশনাল সময় উল্লেখ করুন।ভ্যানের জন্য
startWaypointএবংendWaypointসেট করুন দিনের শুরু এবং শেষের লোকেশন, যা হল মিশন ডলোরেস পার্কের কাছাকাছি ডে কেয়ার সেন্টার।অপারেশনের খরচ কমাতে, আপনাকে ব্যবসার খরচ সংক্রান্ত সীমাবদ্ধতা নির্ধারণ করতে হবে। খরচের প্যারামিটার
costPerHour২৭-এ সেট করো, যা হল কুকুরদের ডে-কেয়ার ভ্যান চালানোর জন্য ড্রাইভারকে তোমার দেওয়া পেমেন্ট। খরচ সংক্রান্ত প্যারামিটার সম্পর্কে আরও জানতে, খরচ মডেল দেখুন।অপ্টিমাইজার যাতে ভ্যানের কর্মসময়ের মধ্যে রুট তৈরি করে তা নিশ্চিত করতে, ড্রাইভারের ভ্যান চালানো শুরু করার জন্য গ্রহণযোগ্য রেঞ্জে
startTimeWindowsএবং ড্রাইভারকে অবশ্যই ডে-কেয়ার সেন্টারে ফিরে আসার জন্য গ্রহণযোগ্য রেঞ্জেendTimeWindowsসংজ্ঞায়িত করুন। টাইম উইন্ডো সম্পর্কে আরও জানতে, টাইম উইন্ডো দেখুন।
গাড়ির সংজ্ঞা সম্পর্কে আরও তথ্যের জন্য, গাড়ি দেখুন।
গ্লোবাল টাইম উইন্ডো সেট করুন। গ্লোবাল টাইম উইন্ডো হল সেই সময়সীমা যখন ভ্যানটি আপনার ডে কেয়ারের জন্য সারাদিন ধরে পিক-আপ ও ড্রপ-অফ করতে পারে। এই পরিস্থিতিতে, ১৩ ফেব্রুয়ারি, ২০২৪-এর জন্য
globalStartTimeসকাল ৭:০০টা এবংglobalEndTimeসন্ধ্যা ৭:০০টায় সেট করুন, যা আপনার ডগি ডে-কেয়ারের কর্মসময়কে দেখায়।
৩. অনুরোধ পাঠান
নিচে curl ডগি ডে কেয়ার পরিস্থিতির উপর ভিত্তি করে একটি সাধারণ অনুরোধ
দেওয়া হল এবং এতে ব্লকিং optimizeTours পদ্ধতি ব্যবহার করা হয়েছে।
অনুরোধ পাঠানোর আগে, স্যাম্পেল কোডে PROJECT_NUMBER_OR_ID-এর জায়গায় আপনার Google Cloud প্রোজেক্ট আইডি লিখুন।
curl -X POST 'https://routeoptimization.googleapis.com/v1/projects/PROJECT_NUMBER_OR_ID:optimizeTours' \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
--data @- << EOM
{
"timeout": "2s",
"model": {
"shipments": [
{
"pickups": [
{
"arrivalWaypoint": {
"location": {
"latLng": {
"latitude": 37.802395,
"longitude": -122.405822
}
}
},
"timeWindows": [
{
"startTime": "2024-02-13T07:30:00Z",
"endTime": "2024-02-13T09:30:00Z"
}
]
}
],
"deliveries": [
{
"arrivalWaypoint": {
"location": {
"latLng": {
"latitude": 37.760202,
"longitude": -122.426796
}
}
},
"timeWindows": [
{
"startTime": "2024-02-13T09:30:00Z",
"endTime": "2024-02-13T11:30:00Z"
}
]
}
],
"label": "Bernese mountain dog"
},
{
"pickups": [
{
"arrivalWaypoint": {
"location": {
"latLng": {
"latitude": 37.738067,
"longitude": -122.498593
}
}
},
"timeWindows": [
{
"startTime": "2024-02-13T07:30:00Z",
"endTime": "2024-02-13T09:30:00Z"
}
]
}
],
"deliveries": [
{
"arrivalWaypoint": {
"location": {
"latLng": {
"latitude": 37.760202,
"longitude": -122.426796
}
}
},
"timeWindows": [
{
"startTime": "2024-02-13T09:30:00Z",
"endTime": "2024-02-13T11:30:00Z"
}
]
}
],
"label": "Chihuahua"
}
],
"vehicles": [
{
"startWaypoint": {
"location": {
"latLng": {
"latitude": 37.760202,
"longitude": -122.426796
}
}
},
"endWaypoint": {
"location": {
"latLng": {
"latitude": 37.760202,
"longitude": -122.426796
}
}
},
"costPerHour": 27,
"startTimeWindows": [
{
"startTime": "2024-02-13T07:00:00Z",
"endTime": "2024-02-13T07:15:00Z"
}
],
"endTimeWindows": [
{
"startTime": "2024-02-13T11:45:00Z",
"endTime": "2024-02-13T12:00:00Z"
}
]
}
],
"globalStartTime": "2024-02-13T07:00:00Z",
"globalEndTime": "2024-02-13T19:00:00Z"
}
}
EOM
অনুরোধে ব্যবহৃত অনুরোধের প্যারামিটার
নিম্নলিখিত সারণীতে উদাহরণ দৃশ্যের অনুরোধের বডিতে ব্যবহৃত অনুরোধের প্যারামিটারগুলি বর্ণনা করা হয়েছে। আপনি পেরেন্ট বা টেক্সট সার্চের মাধ্যমে কন্টেন্ট ফিল্টার করতে পারবেন।
| মা বাবা | প্যারামিটার | প্রপার্টির ধরন | বিবরণ |
|---|---|---|---|
OptimizeToursRequest |
model |
অবজেক্ট (ShipmentModel) |
এটি আপনার অনুরোধের মূল বিষয়। এটি একটি একক অবজেক্ট যেখানে আপনি
আপনার সম্পূর্ণ সমস্যাটি সংজ্ঞায়িত করেন, যার মধ্যে রয়েছে আপনার পিক আপ এবং
ড্রপ অফ করার জন্য প্রয়োজনীয় সমস্ত কুকুর (shipments)
এবং আপনার ফ্লিটে থাকা ভ্যান
(vehicles)।
আপনি যে সমস্যাটি অপ্টিমাইজ করতে চান তার সম্পূর্ণ ব্লুপ্রিন্ট হিসাবে এটিকে ভাবুন। |
timeout |
সময়সীমা | এই প্যারামিটারটি সেই সর্বাধিক সময় নির্দিষ্ট করে যার মধ্যে সার্ভার কোনও উত্তর ফেরানোর আগে কোনও অনুরোধে কাজ করে। অপেক্ষা করার সময় কমাতে এই প্যারামিটার ব্যবহার করুন। ছোট এবং দ্রুত অনুরোধের জন্য, যেমন এই ডগি ডে-কেয়ার দৃশ্যকল্প, এই মানটি 2s-এ সেট করুন। | |
ShipmentModel |
shipments[] |
অবজেক্টের অ্যারে (Shipment) |
এটি অবজেক্টের একটি অ্যারে যেখানে প্রতিটি অবজেক্ট এমন একটি কুকুরকে বোঝায় যাকে পিক-আপ বা ড্রপ-অফ করতে হবে। |
vehicles[] |
অবজেক্টের অ্যারে (Vehicle) |
এটি হল অবজেক্টের একটি অ্যারে যেখানে প্রতিটি অবজেক্ট আপনার ফ্লিটের একটি করে গাড়ি নির্ধারণ করে। এখানে আপনি নিজের রিসোর্স সম্পর্কে বর্ণনা করেন, যেমন পিক-আপ ও ড্রপ-অফ করার জন্য ব্যবহার করা ভ্যান। অপ্টিমাইজ করা রুট পেতে হলে আপনাকে অন্তত একটি গাড়ি সংজ্ঞায়িত করতে হবে। | |
globalStartTime |
টাইমস্ট্যাম্প | আপনার সম্পূর্ণ মডেলে কোনও ইভেন্ট ঘটার জন্য এটি হল সবচেয়ে আগেকার সম্ভাব্য সময়। এই প্যারামিটারটি সময়ের মধ্যে অপ্টিমাইজেশন সংক্রান্ত সমস্যাকে সংকুচিত করে, যা সঠিক ট্রাফিক ও রাউটিং গণনার জন্য অত্যন্ত গুরুত্বপূর্ণ। এই ডগি ডে-কেয়ারের ক্ষেত্রে, ড্রাইভার দিনের যে সবচেয়ে আগে ভ্যান চালাতে পারবেন সেই সময় সেট করুন, যা হল ১৩ ফেব্রুয়ারি, ২০২৪-এর সকাল ৭:০০টা। | |
globalEndTime |
টাইমস্ট্যাম্প | আপনার সম্পূর্ণ মডেলে কোনও ইভেন্ট ঘটার জন্য এটিই হল সর্বশেষ সম্ভাব্য সময়। কুকুরের ডে-কেয়ারের এই পরিস্থিতিতে, ভ্যানটি কখন তার অপারেশন শেষ করবে বলে আশা করা হচ্ছে, সেই সময়টি সেট করুন, যা ১৩ ফেব্রুয়ারি, ২০২৪-এর সন্ধ্যা ৭:০০টা। | |
Shipment |
pickups[] |
অবজেক্টের অ্যারে (VisitRequest) |
এটি হল শিপমেন্টের জন্য সম্ভাব্য সব পিক-আপ বিকল্পের তালিকা। আপনার সমস্যার সমাধান করার জন্য অপ্টিমাইজার সবচেয়ে ভালটি বেছে নেয়। এই ডগি ডে কেয়ারের ক্ষেত্রে, প্রতিটি কুকুরের মালিকের দেওয়া পিক-আপ লোকেশন ও টাইম উইন্ডোর তালিকা তৈরি করো। |
deliveries[] |
অবজেক্টের অ্যারে (VisitRequest) |
এটি হল শিপমেন্টের জন্য সম্ভাব্য সবকটি ড্রপ-অফ বিকল্পের তালিকা। আপনার সমস্যার সমাধান করার জন্য অপ্টিমাইজার সবচেয়ে ভালটি বেছে নেয়। এই ডগি ডে-কেয়ারের পরিস্থিতির জন্য, ডগি ডে-কেয়ার সুবিধার লোকেশন এবং প্রতিটি কুকুরের জন্য ড্রাইভারকে কখন লাঞ্চের জন্য ফিরে আসতে হবে তার সময়সীমা তালিকাভুক্ত করো। | |
label |
স্ট্রিং | আপনার অনুরোধে নির্দিষ্ট শিপমেন্টের জন্য এটি একটি শনাক্তকারী। উত্তরটি আরও সহজে পড়ার জন্য আপনি অনুরোধে লেবেল নির্দিষ্ট করতে পারেন। এই ডগি ডে-কেয়ারের ক্ষেত্রে, API রেসপন্স পাওয়ার সময় আপনার ইনপুটের সাথে সমাধান ম্যাচ করতে "চিহুয়াহুয়া", "বার্নিজ মাউন্টেন ডগ" বা কুকুরের নামের মতো বর্ণনামূলক স্ট্রিং ব্যবহার করুন। | |
VisitRequest |
arrivalWaypoint[] |
অবজেক্ট (Waypoint) |
এটি হল রুটের কোনও নির্দিষ্ট ভিজিটের লোকেশন। আপনি অক্ষাংশ ও দ্রাঘিমাংশ স্থানাঙ্ক, কোনও স্থানের আইডি বা হেডিং ব্যবহার করে
এটি নির্ধারণ করতে পারেন। এই
ডগি ডে কেয়ারের ক্ষেত্রে, pickups-এর জন্য মালিকের দেওয়া লোকেশন
এবং deliveries-এর জন্য ডে কেয়ার সেন্টারের ঠিকানা
সেট করুন। |
timeWindows[] |
অবজেক্টের অ্যারে (TimeWindow) |
এটি হল অবজেক্টের একটি অ্যারে যা পিক-আপ বা ডেলিভারির জন্য সময়ের সীমাবদ্ধতা নির্ধারণ করে। এই পরিস্থিতিতে, প্রতিটি কুকুরের জন্য পিক-আপ উইন্ডো এবং ডে-কেয়ার সেন্টারে কুকুরদের ড্রপ করার জন্য গ্রহণযোগ্য উইন্ডো নির্ধারণ করতে এটি ব্যবহার করুন। | |
Vehicle |
startWaypoint[] |
অবজেক্ট (Waypoint) |
এটি হল গাড়ির রুটের শুরুর লোকেশন, যা অক্ষাংশ ও দ্রাঘিমাংশ স্থানাঙ্ক বা কোনও স্থানের আইডি দিয়ে সংজ্ঞায়িত করা হয়। এই প্যারামিটার অপ্টিমাইজারকে জানায় যে গাড়িটি কোথা থেকে রুট শুরু করবে। আপনি এই ওয়েপয়েন্ট নির্ধারণ না করলে, অপ্টিমাইজার পিক-আপ বা ডেলিভারির মধ্যে একটিকে শুরুর লোকেশন হিসেবে বেছে নেয়। এই ডগি ডে কেয়ারের ক্ষেত্রে, যেহেতু ড্রাইভার ডে কেয়ার সুবিধা থেকে দিন শুরু করছেন, তাই মিশন ডলোরেস পার্কের কোঅর্ডিনেট ব্যবহার করুন। |
endWaypoint[] |
অবজেক্ট (Waypoint) |
এটি হল গাড়ির রুটের চূড়ান্ত গন্তব্য, যা অক্ষাংশ ও দ্রাঘিমাংশ কোঅর্ডিনেট বা প্লেস আইডির মাধ্যমে নির্ধারণ করা হয়। এই প্যারামিটার অপ্টিমাইজারকে জানায় যে গাড়িটিকে কোথায় রুট শেষ করতে হবে। আপনি এই ওয়েপয়েন্ট নির্ধারণ না করলে, অপ্টিমাইজার রুটের শেষ হিসেবে পিক-আপ বা ডেলিভারির মধ্যে থেকে একটি বেছে নেয়। এই ডগি ডে কেয়ারের ক্ষেত্রে, যেহেতু ড্রাইভারকে ডে কেয়ার সেন্টারে দিনের কাজ শেষ করতে হবে, তাই মিশন ডলোরেস পার্কের কোঅর্ডিনেট ব্যবহার করুন। | |
costPerHour |
নম্বর | গাড়িটি চলছে না দাঁড়িয়ে আছে, তা নির্বিশেষে, প্রতি ঘন্টায় গাড়িটি ব্যবহার করার জন্য এই খরচ বহন করতে হয়। এই ডগি ডে কেয়ারের ক্ষেত্রে, ড্রাইভারের প্রতি ঘণ্টার মজুরি মডেল করতে এটি ব্যবহার করুন। | |
startTimeWindows[] |
অবজেক্টের অ্যারে (TimeWindow) |
সকালে কুকুরদের পিক-আপ করার জন্য ভ্যান চালানোর এই সময়সীমার মধ্যে ড্রাইভারকে শুরু করতে হবে। | |
endTimeWindows[] |
অবজেক্টের অ্যারে (TimeWindow) |
ড্রাইভারের ভ্যান চালানো শেষ করে ডগি ডে-কেয়ার সেন্টারে পার্ক করার জন্য এটিই গ্রহণযোগ্য উইন্ডো। |