ShipmentModel সম্বলিত একটি OptimizeToursRequest পাঠায় এবং ShipmentRoute সম্বলিত একটি OptimizeToursResponse ফেরত দেয়, যা যানবাহন দ্বারা সম্পাদিত রুটের একটি সেট যা সামগ্রিক খরচ কমিয়ে দেয়।
একটি ShipmentModel মডেলে মূলত এমন Shipment থাকে যা বহন করতে হয় এবং Vehicle যা Shipment পরিবহনের জন্য ব্যবহার করা যেতে পারে। ShipmentRoute গুলি VehicleShipment নির্ধারণ করে। আরও স্পষ্টভাবে বলতে গেলে, তারা প্রতিটি যানবাহনে Visit s এর একটি সিরিজ বরাদ্দ করে, যেখানে একটি Visit একটি VisitRequest এর সাথে মিলে যায়, যা একটি Shipment জন্য একটি পিকআপ বা ডেলিভারি।
লক্ষ্য হল ShipmentRouteVehicle একটি অ্যাসাইনমেন্ট প্রদান করা যা মোট খরচ কমিয়ে আনে যেখানে ShipmentModel এ cost-এর অনেক উপাদান সংজ্ঞায়িত করা হয়েছে।
HTTP অনুরোধ
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
যদি এই টাইমআউট সেট করা থাকে, তাহলে টাইমআউট পিরিয়ড শেষ হওয়ার আগে অথবা সিঙ্ক্রোনাস রিকোয়েস্টের জন্য সার্ভারের সময়সীমা পৌঁছানোর আগে, যেটি আগে হয়, সার্ভার একটি প্রতিক্রিয়া ফেরত পাঠায়।
অ্যাসিঙ্ক্রোনাস অনুরোধের জন্য, সার্ভার সময়সীমা শেষ হওয়ার আগে একটি সমাধান (যদি সম্ভব হয়) তৈরি করবে।
সেকেন্ডে একটি সময়কাল যার সর্বোচ্চ নয়টি ভগ্নাংশ সংখ্যা ' s ' দিয়ে শেষ হয়। উদাহরণ: "3.5s" ।
পূর্ববর্তী সমাধানের অনুরূপ একটি প্রথম সমাধান খুঁজে বের করার জন্য অপ্টিমাইজেশন অ্যালগরিদমকে নির্দেশ করুন।
প্রথম সমাধান তৈরির সময় মডেলটি সীমাবদ্ধ থাকে। কোনও রুটে সম্পাদিত না হওয়া কোনও চালান প্রথম সমাধানে পরোক্ষভাবে এড়িয়ে যায়, তবে সেগুলি ধারাবাহিক সমাধানগুলিতে সম্পাদিত হতে পারে।
সমাধানটি অবশ্যই কিছু মৌলিক বৈধতা অনুমান পূরণ করবে:
সকল রুটের জন্য, vehicleIndex অবশ্যই পরিসরে থাকতে হবে এবং ডুপ্লিকেট করা যাবে না।
সমস্ত ভিজিটের জন্য, shipmentIndex এবং visitRequestIndex অবশ্যই সীমার মধ্যে থাকতে হবে।
একটি চালান শুধুমাত্র একটি রুটে রেফারেন্স করা যেতে পারে।
পিকআপ-ডেলিভারি চালানের পিকআপ ডেলিভারির আগে করতে হবে।
একটি চালানের একাধিক পিকআপ বিকল্প বা ডেলিভারি বিকল্প করা যাবে না।
সকল রুটের জন্য, সময় বাড়ছে (অর্থাৎ, vehicleStartTime <= visits[0].start_time <= visits[1].start_time ... <= vehicleEndTime )।
যদি ইনজেক্ট করা সমাধানটি সম্ভব না হয়, তাহলে একটি বৈধতা ত্রুটি অগত্যা ফেরত পাঠানো হবে না এবং পরিবর্তে অসম্ভাব্যতা নির্দেশ করে একটি ত্রুটি ফেরত পাঠানো হতে পারে।
পূর্ববর্তী সমাধানের অনুরূপ একটি চূড়ান্ত সমাধান খুঁজে পেতে অপ্টিমাইজেশন অ্যালগরিদমকে সীমাবদ্ধ করুন। উদাহরণস্বরূপ, এটি এমন কিছু রুট হিমায়িত করতে ব্যবহার করা যেতে পারে যা ইতিমধ্যেই সম্পন্ন হয়েছে বা যা সম্পূর্ণ করতে হবে কিন্তু পরিবর্তন করা উচিত নয়।
যদি ইনজেক্ট করা সমাধানটি সম্ভব না হয়, তাহলে একটি বৈধতা ত্রুটি অগত্যা ফেরত পাঠানো হবে না এবং পরিবর্তে অসম্ভাব্যতা নির্দেশ করে একটি ত্রুটি ফেরত পাঠানো হতে পারে।
যদি খালি না থাকে, তাহলে প্রদত্ত রুটগুলি রিফ্রেশ করা হবে, তাদের পরিদর্শনের অন্তর্নিহিত ক্রম বা ভ্রমণের সময় পরিবর্তন না করে: শুধুমাত্র অন্যান্য বিবরণ আপডেট করা হবে। এটি মডেলটির সমাধান করে না।
২০২০/১১ সালের হিসাবে, এটি শুধুমাত্র খালি নয় এমন রুটের পলিলাইনগুলিকে পূরণ করে এবং populatePolylines সত্য হওয়া প্রয়োজন।
পাস-ইন করা রুটের routePolyline ক্ষেত্রগুলি রুট transitions সাথে অসঙ্গতিপূর্ণ হতে পারে।
এই ক্ষেত্রটি injectedFirstSolutionRoutes বা injectedSolutionConstraint এর সাথে একসাথে ব্যবহার করা উচিত নয়।
Shipment.ignore এবং Vehicle.ignore আচরণের উপর কোন প্রভাব ফেলে না। সম্পর্কিত চালান বা যানবাহন উপেক্ষা করা হোক না কেন, সমস্ত খালি নয় এমন রুটে সমস্ত ভিজিটের মধ্যে পলিলাইনগুলি এখনও পূরণ করা হয়।
এই ব্যাখ্যাটি injectedFirstSolutionRoutes , injectedSolutionConstraint , এবং refreshDetailsRoutes ক্ষেত্রে প্রযোজ্য। সমাধান তৈরির পর থেকে অনুরোধে থাকা শিপমেন্ট বা যানবাহনের সূচকগুলি পরিবর্তিত হলে এটি ব্যবহার করা যেতে পারে, সম্ভবত কারণ অনুরোধ থেকে শিপমেন্ট বা যানবাহনগুলি সরানো হয়েছে বা যোগ করা হয়েছে।
যদি সত্য হয়, তাহলে নিম্নলিখিত বিভাগগুলির লেবেলগুলিকে তাদের বিভাগে সর্বাধিক একবার উপস্থিত হতে হবে:
যদি ইনজেক্টেড সলিউশনে থাকা কোনও vehicleLabel অনুরোধকারী গাড়ির সাথে সঙ্গতিপূর্ণ না হয়, তাহলে সমাধান থেকে সংশ্লিষ্ট রুটটি তার ভিজিট সহ সরিয়ে ফেলা হয়। যদি ইনজেক্টেড সলিউশনে থাকা কোনও shipmentLabel অনুরোধকারী গাড়ির সাথে সঙ্গতিপূর্ণ না হয়, তাহলে সমাধান থেকে সংশ্লিষ্ট ভিজিটটি সরিয়ে ফেলা হয়। যদি ইনজেক্টেড সলিউশনে থাকা কোনও SkippedShipment.label অনুরোধকারী গাড়ির সাথে সঙ্গতিপূর্ণ না হয়, তাহলে সমাধান থেকে SkippedShipment টি সরিয়ে ফেলা হয়।
ইনজেক্টেড সলিউশন থেকে রুট ভিজিট বা সম্পূর্ণ রুট অপসারণ করলে অন্তর্নিহিত সীমাবদ্ধতার উপর প্রভাব পড়তে পারে, যার ফলে সমাধানে পরিবর্তন, বৈধতা ত্রুটি বা অসম্ভাব্যতা দেখা দিতে পারে।
দ্রষ্টব্য: কলকারীকে নিশ্চিত করতে হবে যে প্রতিটি Vehicle.label (resp. Shipment.label ) দুটি প্রাসঙ্গিক অনুরোধে ব্যবহৃত একটি যানবাহন (resp. shipment) সত্তাকে স্বতন্ত্রভাবে চিহ্নিত করে: পূর্ববর্তী অনুরোধ যা ইনজেক্টেড সলিউশনে ব্যবহৃত OptimizeToursResponse তৈরি করেছিল এবং বর্তমান অনুরোধ যাতে ইনজেক্টেড সলিউশন অন্তর্ভুক্ত ছিল। উপরে বর্ণিত স্বতন্ত্রতা পরীক্ষাগুলি এই প্রয়োজনীয়তা নিশ্চিত করার জন্য যথেষ্ট নয়।
যদি সত্য হয়, তাহলে ShipmentRoute s এর প্রতিক্রিয়ায় পলিলাইনগুলি পূরণ করা হবে।
populateTransitionPolylines
boolean
যদি সত্য হয়, তাহলে ShipmentRoute.transitions প্রতিক্রিয়ায় পলিলাইন এবং রুট টোকেনগুলি পূরণ করা হবে।
allowLargeDeadlineDespiteInterruptionRisk
boolean
যদি এটি সেট করা থাকে, তাহলে অনুরোধটির সময়সীমা ৬০ মিনিট পর্যন্ত হতে পারে ( https://grpc.io/blog/deadlines দেখুন)। অন্যথায়, সর্বোচ্চ সময়সীমা মাত্র ৩০ মিনিট। মনে রাখবেন যে দীর্ঘস্থায়ী অনুরোধগুলিতে বাধার ঝুঁকি উল্লেখযোগ্যভাবে বেশি (কিন্তু তবুও ছোট) থাকে।
useGeodesicDistances
boolean
যদি সত্য হয়, তাহলে ভ্রমণের দূরত্ব Google Maps দূরত্বের পরিবর্তে জিওডেসিক দূরত্ব ব্যবহার করে গণনা করা হবে এবং ভ্রমণের সময় জিওডেসিক দূরত্ব ব্যবহার করে গণনা করা হবে যার গতি geodesicMetersPerSecond দ্বারা নির্ধারিত হবে।
যখন useGeodesicDistances সত্য হয়, তখন এই ক্ষেত্রটি সেট করতে হবে এবং ভ্রমণের সময় গণনা করার জন্য প্রয়োগ করা গতি নির্ধারণ করতে হবে। এর মান কমপক্ষে 1.0 মিটার/সেকেন্ড হতে হবে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-11-10 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],["This content details the `OptimizeTours` API, which optimizes routes for shipments using vehicles. The core action involves sending a `POST` request to `https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours`, specifying a `ShipmentModel` within the request body. This model defines shipments, vehicles, and cost parameters. The API returns an `OptimizeToursResponse` that details `ShipmentRoute`s, assigning visits to each vehicle to minimize costs. The request body allows for parameters like `timeout`, `solvingMode`, and `injectedSolutionConstraint` to further fine-tune the route optimization process.\n"]]