স্বাভাবিকভাবে, যানবাহন যেকোনো দিক থেকে পিকআপ বা ডেলিভারির স্থানে পৌঁছাতে পারে এবং তারপর যেকোনো দিকে চলে যেতে পারে। কিছু ক্ষেত্রে, এর ফলে যানবাহনটিকে গন্তব্যে ইউ-টার্ন নিতে হয়, যা গাড়ির আকার, সেই স্থানের ট্র্যাফিক চিহ্ন বা সাধারণ যান চলাচলের অবস্থার কারণে কঠিন বা অসম্ভব হতে পারে।
কোনো নির্দিষ্ট পিকআপ বা ডেলিভারি লোকেশনে পৌঁছানো এবং ছাড়ার মধ্যবর্তী সময়ে যানবাহনের দিক পরিবর্তন রোধ করতে, আপনি সেই লোকেশনের জন্য avoid_u_turns কে true সেট করতে পারেন। এই সেটিং-এর অধীনে, যানবাহনটি একই দিকে মুখ করে লোকেশনে পৌঁছাবে এবং ছেড়ে যাবে, ফলে ইউ-টার্ন এড়ানো যাবে। দ্বিমুখী রাস্তায়, রুট অপটিমাইজেশনের অংশ হিসেবে সলভার উভয় দিকই বিবেচনা করবে এবং একটিকে বেছে নেবে।
আপনি side_of_road true সেট করে এমন একটি রুট পেতে পারেন, যেখানে যানবাহনটি ওয়েপয়েন্টের সবচেয়ে কাছের রাস্তার পাশ দিয়ে আসে এবং যায়। এই ক্ষেত্রে, যানবাহনটি আসা এবং যাওয়ার মধ্যবর্তী সময়ে তার দিকও পরিবর্তন করে না। একই ফলাফল পেতে side_of_road এবং avoid_u_turns উভয়কেই true সেট করা সম্ভব। বিস্তারিত জানতে, “অন্যান্য বৈশিষ্ট্যের সাথে মিথস্ক্রিয়া” দেখুন।
বাস্তবে, ওয়েপয়েন্টে পৌঁছানোর জন্য রাস্তা পার হওয়া নিরাপদ হলে avoid_u_turns ব্যবহার করা উচিত। রাস্তা পার হওয়া নিরুৎসাহিত করা হলে বা সম্ভব না হলে side_of_road ব্যবহার করুন।
উদাহরণ: avoid_u_turns সহ একটি OptimizeTours অনুরোধ করুন
OptimizeTours অনুরোধ REST অথবা gRPC ব্যবহার করে করা যেতে পারে।
অনুরোধ করার আগে, নিম্নলিখিত প্যারামিটারগুলো আপনার পরিবেশের জন্য উপযুক্ত মান দিয়ে প্রতিস্থাপন করুন:
- OAuth ব্যবহার অংশে বর্ণিত পদ্ধতি অনুযায়ী আপনার অ্যাপ্লিকেশন ডিফল্ট ক্রেডেনশিয়াল কনফিগার করা আছে কিনা, তা নিশ্চিত করুন।
PROJECT_NUMBER_OR_ID আপনার ক্লাউড প্রজেক্ট নম্বর বা আইডিতে সেট করুন।
নিম্নলিখিত কমান্ডটি রুট অপটিমাইজেশন এপিআই-তে একটি
OptimizeToursঅনুরোধ পাঠায় এবং সিনক্রোনাসভাবে একটি প্রতিক্রিয়া গ্রহণ করে।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 { "model": { "shipments": [ { "pickups": [ { "arrivalLocation": { "latitude": 37.42506261000996, "longitude": -122.09535511930135 }, "avoidUTurns": true } ], "deliveries": [ { "arrivalLocation": { "latitude": 37.42421503206021, "longitude": -122.09526063135228 }, "avoidUTurns": true } ] } ], "vehicles": [ { "travelMode": "DRIVING", "costPerKilometer": 1.0 } ], } } EOM
অনুরোধটি সম্পন্ন হলে আপনি একটি প্রতিক্রিয়া বার্তা পাবেন।
অন্যান্য বৈশিষ্ট্যের সাথে মিথস্ক্রিয়া
-
avoid_u_turnsside_of_road = trueএর সাথে একত্রে ব্যবহার করা যায়। এক্ষেত্রে, ইউ-টার্ন এড়ানো হয়, কিন্তু সলভার এমন একটি রুট বেছে নেয় যেখানে যানবাহনটি ওয়েপয়েন্টের মতো রাস্তার একই পাশে থাকে, যা শুধুside_of_road = trueসেট করার মতোই। - যখন কোনো নির্দিষ্ট ভিজিট রিকোয়েস্টের জন্য
avoid_u_turns = true, তখন সংশ্লিষ্ট রেসপন্সেরShipmentRoute.Visitএinjected_solution_location_tokenফিল্ডটি সেট করা থাকে। এর মানের সুনির্দিষ্ট অর্থ একটি ইমপ্লিমেন্টেশন ডিটেইল, তবে এটি সলভার দ্বারা নির্বাচিত রাস্তার দিক সম্পর্কিত তথ্য এনকোড করে। - যখন আপনি ইনপুট অনুরোধের অংশ হিসেবে একটি
ShipmentRoute.Visitব্যবহার করেন, যদি সেইShipmentRoute.Visitএমন একটিVisitRequestসাথে সম্পর্কিত হয় যেখানেavoid_u_turns = true, তাহলেShipmentRoute.Visitঅবশ্যই সলভার দ্বারা পূর্বে ফেরত দেওয়া একটিinjected_solution_location_tokenথাকতে হবে।
সীমাবদ্ধতা
ইউ-টার্ন এড়ানোর জন্য যথাসাধ্য চেষ্টা করা হয়। কিছু পরিস্থিতিতে, রুটে এখনও ইউ-টার্ন থাকতে পারে:
-
avoid_u_turnsশুধুমাত্র সেইসব ট্র্যাভেল মোডের সাথে কাজ করে যেগুলোside_of_roadসমর্থন করে। বিশেষত, এটিWALKINGট্র্যাভেল মোডের জন্য সমর্থিত নয়। - যেসব পিকআপ এবং ডেলিভারির আগমন ও প্রস্থান একই সময়ে হয় না, সেগুলোর ক্ষেত্রে
avoid_u_turnsব্যবহার করা যাবে না। - যখন কোনো পিকআপ বা ডেলিভারি একটি বন্ধ রাস্তায় থাকে, তখন রাস্তাটি ছাড়ার জন্য ইউ-টার্ন নেওয়া আবশ্যক।
- এই ফিচারের উদ্দেশ্য হলো পিকআপ এবং ডেলিভারি লোকেশনে ইউ-টার্ন এড়ানো। ওয়েপয়েন্টগুলোর মধ্যে ইউ-টার্ন এড়ানো হয় না।
- ভিন্ন রাস্তায় খুব তীক্ষ্ণ বাঁকগুলোকে ইউ-টার্ন হিসেবে গণ্য করা হয় না এবং সাধারণত সেগুলো এড়ানো হয় না।
এই ফিচারটি নির্মাণাধীন থাকায় কিছু অতিরিক্ত সীমাবদ্ধতা রয়েছে। আমরা আশা করি, ফিচারটির বিকাশের সাথে সাথে এই সীমাবদ্ধতাগুলো দূর হয়ে যাবে।
-
avoid_u_turnsএবংinterpret_injected_solutions_using_labelsএকসাথে ব্যবহার করা যায় না।