এই ডকুমেন্টটিতে একটি বাস্তব-জগতের ব্যবহারের উদাহরণ দিয়ে দেখানো হয়েছে, কীভাবে রাউট অপটিমাইজেশন এপিআই-তে আপনার প্রথম অনুরোধটি পাঠাতে হয়।
সরলতার জন্য, উদাহরণটিতে REST API প্রদর্শন করতে HTTP এবং JSON ব্যবহার করা হয়েছে। তবে, আপনার প্রোডাকশন এনভায়রনমেন্টের জন্য এর পারফরম্যান্স সুবিধার কারণে gRPC ব্যবহার করার সার্বিক সুপারিশ করা হয় । কিন্তু, gRPC ইনস্টল করার প্রয়োজন হয়। আরও তথ্যের জন্য, Route Optimization API client libraries দেখুন।
দৃশ্যকল্প

আপনি সান ফ্রান্সিসকোতে সকাল ৭টা থেকে সন্ধ্যা ৭টা পর্যন্ত একটি ডগি ডে-কেয়ার পরিষেবা চালান। আজ সকালে, আপনাকে শহরের দুটি ভিন্ন স্থান থেকে দুটি কুকুরকে নিয়ে আসতে হবে। উভয় কুকুরের মালিকই আপনাকে সকাল ৭:৩০ থেকে ৯:৩০ এর মধ্যে কুকুর দুটি নিয়ে আসার সময়সীমা দিয়েছেন।
এই কাজের জন্য আপনার একটি ভ্যান আছে এবং আপনি চালককে প্রতি ঘণ্টায় ২৭ ডলার দেন। চালক ও ভ্যানটি সকাল ৭:০০ টায় আপনার দিবাযত্ন কেন্দ্র থেকে দিনের কাজ শুরু করে এবং দুপুরের খাবারের বিরতির জন্য দুপুর ১২:০০ টার মধ্যে সকালের কাজ সেরে ফিরে আসতে হয়।
আজ ১৩ই ফেব্রুয়ারি, ২০২৪, এবং চালকের নিম্নলিখিত কাজগুলো রয়েছে:
- কোয়েট টাওয়ারের কাছে বার্নিজ পাহাড়ি কুকুরটিকে খুঁজে নিন।
- সাউথ সানসেট প্লেগ্রাউন্ড পার্ক থেকে চিহুয়াহুয়াটিকে নিয়ে যান।
- মিশন ডলোরেস পার্কের ডগি ডে-কেয়ার সেন্টারে কুকুর দুটিকে রেখে আসুন।
আপনাকে এমন একটি রুট খুঁজে বের করতে হবে, যা কুকুরগুলোকে ভ্যানে কম সময় কাটাতে সাহায্য করবে এবং একই সাথে তাদেরকে আনা-নেওয়ার শর্তগুলোও পূরণ করবে।
শুরু করার আগে
এই উদাহরণ দৃশ্যে কোডটি চালানোর জন্য, আপনাকে প্রথমে রুট অপ্টিমাইজেশন এপিআই সেট আপ করুন (Set up the Route Optimization API) -এ দেওয়া নির্দেশাবলী সম্পূর্ণ করতে হবে।
১. আপনার রুট অপ্টিমাইজেশন পদ্ধতি বেছে নিন
আপনার অপ্টিমাইজেশন সমস্যার জটিলতার উপর নির্ভর করে, রুট অপ্টিমাইজেশন এপিআই-তে বেছে নেওয়ার জন্য একাধিক মেথড রয়েছে।
যেহেতু এই ডগি ডে-কেয়ার সিনারিওটি একটি ছোট এবং সহজ অনুরোধ, তাই optimizeTours মতো একটি ব্লকিং মেথড ব্যবহার করুন, যা ছোট অনুরোধগুলির জন্য দ্রুত ফলাফল প্রদান করে। রাউট অপটিমাইজেশন এপিআই মেথডগুলি সম্পর্কে আরও তথ্যের জন্য, সিনক্রোনাস এবং অ্যাসিঙ্ক্রোনাস এন্ডপয়েন্টগুলি দেখুন।
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": "..." } }কাঠামো সম্পর্কে আরও তথ্যের জন্য, মূল কাঠামোর (শিপমেন্ট মডেল, শিপমেন্ট এবং যানবাহন) মূল ধারণা নির্দেশিকাটি দেখুন।
শিপমেন্ট নির্ধারণ করুন।
shipmentsফিল্ডে, সকালে যে কুকুরগুলোকে পিক আপ এবং ড্রপ অফ করতে হবে, সেগুলোর প্রত্যেকটির জন্য একটিShipmentমেসেজ যোগ করুন। এখানেই আপনি প্রতিটি কুকুরের মালিকের পছন্দের পিক আপের স্থান ও সময় এবং ডে-কেয়ার সেন্টারে কুকুরগুলোকে ড্রপ অফ করার স্থান ও সময় নির্ধারণ করবেন।প্রতিটি কুকুরের জন্য, পিকআপের জন্য একটি
VisitRequestএবং ডেলিভারির জন্য আরেকটি তৈরি করুন, যা এই ক্ষেত্রে ডে-কেয়ার ড্রপঅফ হিসাবে উল্লেখ করা হয়েছে।পিকআপের ক্ষেত্রে,
arrivalWaypointকুকুরের পিকআপ লোকেশনে (বার্নিজ মাউন্টেন ডগের জন্য কোয়েট টাওয়ার অথবা চিহুয়াহুয়ার জন্য সাউথ সানসেট প্লেগ্রাউন্ড পার্ক) এবংtimeWindowsকে মালিকের অনুরোধ করা পিকআপের সময়ে (সকাল ৭:৩০ থেকে সকাল ৯:৩০) সেট করুন।ডেলিভারির ক্ষেত্রে,
arrivalWaypointহিসেবে ডে-কেয়ার সেন্টার এবংtimeWindowsহিসেবে প্রয়োজনীয় ড্রপঅফ সময় (সকাল ৯:৩০ থেকে সকাল ১১:৩০) সেট করুন।
টাইম উইন্ডো সম্পর্কে আরও তথ্যের জন্য, টাইম উইন্ডো দেখুন।
আপনি
labelফিল্ড ব্যবহার করে প্রতিটি চালানের জন্য একটি শনাক্তকারী যোগ করতে পারেন, যেমন 'বার্নিজ মাউন্টেন ডগ' এবং 'চিহুয়াহুয়া'। এটি আপনাকে রেসপন্সে চালানগুলো শনাক্ত করতে সাহায্য করতে পারে।
চালানের সংজ্ঞা সম্পর্কে আরও তথ্যের জন্য, চালান (Shipment) দেখুন।
যানবাহন নির্ধারণ করুন।
vehiclesফিল্ডে, আপনার একটি ভ্যানের জন্য একটিVehicleবার্তা যোগ করুন, যেখানে শুরু এবং শেষ বিন্দু হিসেবে ডে-কেয়ার সেন্টার, চালকের মজুরির খরচ এবং ভ্যানটির পরিচালনার সময় উল্লেখ থাকবে।ভ্যানটির জন্য
startWaypointএবংendWaypointদিনের শুরু ও শেষের স্থানে সেট করুন, যা হলো মিশন ডলোরেস পার্কের নিকটবর্তী ডে-কেয়ার সেন্টার।আপনার পরিচালন ব্যয় সর্বনিম্ন করতে, আপনাকে অবশ্যই আপনার ব্যবসার ব্যয়ের সীমাবদ্ধতা নির্ধারণ করতে হবে।
costPerHourব্যয় প্যারামিটারটি ২৭-এ সেট করুন, যা আপনি ডগি ডে-কেয়ার ভ্যান চালানোর জন্য ড্রাইভারকে প্রদান করেন। ব্যয় প্যারামিটার সম্পর্কে আরও তথ্যের জন্য, ‘Cost model’ দেখুন।অপ্টিমাইজার যাতে ভ্যানের কর্মঘণ্টার মধ্যে একটি রুট তৈরি করে, তা নিশ্চিত করতে, ড্রাইভারের ভ্যান চালানো শুরু করার জন্য
startTimeWindowsকে গ্রহণযোগ্য পরিসরে এবং ড্রাইভারের ডে-কেয়ার সেন্টারে ফিরে আসার জন্যendTimeWindowsগ্রহণযোগ্য পরিসরে নির্ধারণ করুন। টাইম উইন্ডো সম্পর্কে আরও তথ্যের জন্য, টাইম উইন্ডোজ দেখুন।
যানবাহনের সংজ্ঞা সম্পর্কে আরও তথ্যের জন্য, যানবাহন দেখুন।
একটি গ্লোবাল টাইম উইন্ডো সেট করুন। এই গ্লোবাল টাইম উইন্ডোটি সেই সময়সীমাকে বোঝায়, যার মধ্যে ভ্যানটি সারাদিন ধরে আপনার ডে-কেয়ারের জন্য পিকআপ এবং ড্রপঅফ করতে পারে। এই ক্ষেত্রে, ফেব্রুয়ারি ১৩, ২০২৪ তারিখের জন্য
globalStartTimeসকাল ৭:০০ টায় এবংglobalEndTimeসন্ধ্যা ৭:০০ টায় সেট করুন, যা আপনার ডগি ডে-কেয়ারের কার্যক্রমের সময়কে নির্দেশ করে।
৩. অনুরোধটি পাঠান
নিচেরটি ডগি ডে-কেয়ার পরিস্থিতির উপর ভিত্তি করে তৈরি একটি সাধারণ curl রিকোয়েস্ট এবং এতে ব্লকিং optimizeTours মেথডটি ব্যবহার করা হয়েছে।
অনুরোধ পাঠানোর আগে, নমুনা কোডে থাকা PROJECT_NUMBER_OR_ID জায়গায় আপনার গুগল ক্লাউড প্রজেক্ট আইডি বসান।
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 | সময়কাল | এই প্যারামিটারটি নির্ধারণ করে যে, একটি প্রতিক্রিয়া ফেরত দেওয়ার আগে সার্ভার একটি অনুরোধের উপর সর্বাধিক কতক্ষণ কাজ করবে। আপনার অপেক্ষার সময় কমাতে এই প্যারামিটারটি ব্যবহার করুন। ছোট এবং দ্রুত অনুরোধের জন্য, যেমন এই ডগি ডে-কেয়ার পরিস্থিতি, এই মানটি ২ সেকেন্ডে সেট করুন। | |
ShipmentModel | shipments[] | অবজেক্টের অ্যারে ( Shipment ) | এটি অবজেক্টের একটি অ্যারে, যেখানে প্রতিটি অবজেক্ট এমন একটি কুকুরকে প্রতিনিধিত্ব করে যাকে তুলে আনতে বা নামিয়ে দিতে হবে। |
vehicles[] | অবজেক্টের অ্যারে ( Vehicle ) | এটি অবজেক্টের একটি অ্যারে, যেখানে প্রতিটি অবজেক্ট আপনার ফ্লিটের একটি যানবাহনকে সংজ্ঞায়িত করে। এখানেই আপনি আপনার রিসোর্সগুলোর বর্ণনা দেন, যেমন পিকআপ এবং ড্রপঅফের কাজ করা ভ্যানটি। একটি অপ্টিমাইজড রুট পেতে আপনাকে অবশ্যই অন্তত একটি যানবাহন সংজ্ঞায়িত করতে হবে। | |
globalStartTime | টাইমস্ট্যাম্প | এটি আপনার সম্পূর্ণ মডেলের যেকোনো ঘটনা ঘটার সম্ভাব্য সবচেয়ে প্রথম সময়। এই প্যারামিটারটি অপটিমাইজেশন সমস্যাটিকে সময়ের দিক থেকে সংকুচিত করে, যা সঠিক ট্র্যাফিক এবং রুটিং গণনার জন্য অত্যন্ত গুরুত্বপূর্ণ। এই ডগি ডে-কেয়ার পরিস্থিতির জন্য, এটিকে সেই সবচেয়ে প্রথম সময়ে সেট করুন যখন ড্রাইভার দিনের জন্য ভ্যানটি চালাতে পারবেন, যা ১৩ই ফেব্রুয়ারি, ২০২৪-এর জন্য সকাল ৭:০০ টা। | |
globalEndTime | টাইমস্ট্যাম্প | আপনার সম্পূর্ণ মডেলে যেকোনো ঘটনা ঘটার জন্য এটিই হলো সর্বশেষ সম্ভাব্য সময়। এই ডগি ডে-কেয়ার সিনারিওর জন্য, এটিকে সেই সময়ে সেট করুন যখন ভ্যানটির কার্যক্রম শেষ হওয়ার কথা, যা হলো ১৩ই ফেব্রুয়ারি, ২০২৪-এর জন্য সন্ধ্যা ৭:০০ টা। | |
Shipment | pickups[] | অবজেক্টের অ্যারে ( VisitRequest ) | এটি চালানের জন্য সমস্ত সম্ভাব্য পিকআপ বিকল্পের একটি তালিকা। অপটিমাইজার আপনার সমস্যা সমাধানের জন্য সেরাটি বেছে নেয়। এই ডগি ডে-কেয়ারের ক্ষেত্রে, প্রতিটি কুকুরের জন্য প্রত্যেক মালিকের দেওয়া পিকআপের স্থান এবং সময়সীমা তালিকাভুক্ত করুন। |
deliveries[] | অবজেক্টের অ্যারে ( VisitRequest ) | এটি চালানটির জন্য সম্ভাব্য সমস্ত ড্রপঅফ বিকল্পের একটি তালিকা। অপটিমাইজার আপনার সমস্যা সমাধানের জন্য সেরাটি বেছে নেয়। এই ডগি ডে-কেয়ার পরিস্থিতির জন্য, ডগি ডে-কেয়ার কেন্দ্রটির অবস্থান এবং প্রতিটি কুকুরের জন্য দুপুরের খাবারের বিরতিতে ড্রাইভারের ফিরে আসার সময়সীমা উল্লেখ করুন। | |
label | স্ট্রিং | এটি আপনার অনুরোধে থাকা একটি নির্দিষ্ট চালানের শনাক্তকারী। প্রতিক্রিয়াটি পড়া সহজ করার জন্য আপনি আপনার অনুরোধে লেবেল উল্লেখ করতে পারেন। এই ডগি ডে-কেয়ার পরিস্থিতির জন্য, এপিআই প্রতিক্রিয়া পাওয়ার সময় আপনার ইনপুটের সাথে সমাধানটি মেলানোর জন্য "চিহুয়াহুয়া", "বার্নিজ মাউন্টেন ডগ" বা কুকুরটির নামের মতো একটি বর্ণনামূলক স্ট্রিং ব্যবহার করুন। | |
VisitRequest | arrivalWaypoint[] | বস্তু ( Waypoint ) | এটি রুটের একটি নির্দিষ্ট পরিদর্শনের অবস্থান। আপনি অক্ষাংশ ও দ্রাঘিমাংশের স্থানাঙ্ক, একটি স্থান আইডি, বা একটি শিরোনাম ব্যবহার করে এটি নির্ধারণ করতে পারেন। এই ডগি ডে-কেয়ারের ক্ষেত্রে, pickups জন্য মালিকের দেওয়া অবস্থানে এবং deliveries জন্য ডে-কেয়ার সেন্টারের ঠিকানায় এটি সেট করুন। |
timeWindows[] | অবজেক্টের অ্যারে ( TimeWindow ) | এটি অবজেক্টের একটি অ্যারে যা পিকআপ বা ডেলিভারির জন্য সময়ের সীমাবদ্ধতা নির্ধারণ করে। এই ক্ষেত্রে, প্রতিটি কুকুরের জন্য পিকআপের সময়সীমা এবং ডে-কেয়ার সেন্টারে কুকুরগুলোকে রেখে আসার গ্রহণযোগ্য সময়সীমা নির্ধারণ করতে এটি ব্যবহার করুন। | |
Vehicle | startWaypoint[] | বস্তু ( Waypoint ) | এটি গাড়ির রুটের শুরুর স্থান, যা অক্ষাংশ ও দ্রাঘিমাংশের স্থানাঙ্ক অথবা একটি স্থান আইডি দ্বারা নির্ধারিত হয়। এই প্যারামিটারটি অপটিমাইজারকে বলে দেয় যে গাড়িটিকে কোথা থেকে রুট শুরু করতে হবে। আপনি যদি এই ওয়েপয়েন্টটি নির্ধারণ না করেন, তাহলে অপটিমাইজার পিকআপ বা ডেলিভারিগুলোর মধ্যে থেকে কোনো একটিকে শুরুর স্থান হিসেবে বেছে নেয়। এই ডগি ডে-কেয়ার পরিস্থিতির জন্য, যেহেতু চালক ডে-কেয়ার কেন্দ্র থেকে দিন শুরু করেন, তাই মিশন ডলোরেস পার্কের স্থানাঙ্ক ব্যবহার করুন। |
endWaypoint[] | বস্তু ( Waypoint ) | এটি গাড়ির রুটের চূড়ান্ত গন্তব্য, যা অক্ষাংশ ও দ্রাঘিমাংশের স্থানাঙ্ক অথবা একটি স্থান আইডি দ্বারা নির্ধারিত হয়। এই প্যারামিটারটি অপটিমাইজারকে বলে দেয় যে গাড়িটিকে তার রুটটি কোথায় শেষ করতে হবে। আপনি যদি এই ওয়েপয়েন্টটি নির্ধারণ না করেন, তাহলে অপটিমাইজার রুটের শেষ হিসেবে পিকআপ বা ডেলিভারিগুলোর মধ্যে একটিকে বেছে নেয়। এই ডগি ডে-কেয়ার পরিস্থিতির জন্য, যেহেতু চালককে দিনের শেষে ডে-কেয়ার সেন্টারে পৌঁছাতে হবে, তাই মিশন ডলোরেস পার্কের স্থানাঙ্ক ব্যবহার করুন। | |
costPerHour | সংখ্যা | একটি যানবাহন চলমান বা স্থির থাকা অবস্থায়, প্রতি ঘণ্টা ব্যবহারের জন্য এই খরচটি হয়। এই ডগি ডে-কেয়ার পরিস্থিতির জন্য, একজন চালকের ঘণ্টাপ্রতি মজুরির মডেল তৈরি করতে এটি ব্যবহার করুন। | |
startTimeWindows[] | অবজেক্টের অ্যারে ( TimeWindow ) | সকালের কুকুরগুলো নিয়ে আসার জন্য চালকের ভ্যান চালানো শুরু করার এটাই উপযুক্ত সময়। | |
endTimeWindows[] | অবজেক্টের অ্যারে ( TimeWindow ) | চালকের জন্য ভ্যান চালানো শেষ করে ডগি ডে কেয়ার সেন্টারে পার্ক করার এটাই গ্রহণযোগ্য সময়সীমা। |