Method: projects.optimizeTours
একটি ShipmentModel
সম্বলিত একটি OptimizeToursRequest
পাঠায় এবং ShipmentRoute
s সম্বলিত একটি OptimizeToursResponse
ফেরত দেয়, যা সামগ্রিক খরচ কমিয়ে যানবাহনের দ্বারা সম্পাদিত রুটের একটি সেট।
একটি ShipmentModel
মডেল প্রধানত Shipment
নিয়ে গঠিত যা চালাতে হবে এবং Vehicle
যা Shipment
পরিবহনের জন্য ব্যবহার করা যেতে পারে৷ ShipmentRoute
Vehicle
Shipment
বরাদ্দ করে৷ আরও নির্দিষ্টভাবে, তারা প্রতিটি গাড়ির জন্য একটি সিরিজ Visit
নির্ধারণ করে, যেখানে একটি Visit
একটি VisitRequest
সাথে মিলে যায়, যা একটি Shipment
জন্য একটি পিকআপ বা ডেলিভারি।
লক্ষ্য হল Vehicle
ShipmentRoute
একটি অ্যাসাইনমেন্ট প্রদান করা যা মোট খরচ কমিয়ে দেয় যেখানে খরচের অনেকগুলি উপাদান ShipmentModel
সংজ্ঞায়িত করা হয়েছে৷
HTTP অনুরোধ
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
URL gRPC ট্রান্সকোডিং সিনট্যাক্স ব্যবহার করে।
পাথ প্যারামিটার
পরামিতি |
---|
parent | string প্রয়োজন। একটি কল করতে লক্ষ্য প্রকল্প বা অবস্থান. বিন্যাস: * projects/{project-id} * projects/{project-id}/locations/{location-id} কোনো অবস্থান নির্দিষ্ট না থাকলে, একটি অঞ্চল স্বয়ংক্রিয়ভাবে বেছে নেওয়া হবে। |
শরীরের অনুরোধ
অনুরোধের অংশে নিম্নলিখিত কাঠামো সহ ডেটা রয়েছে:
JSON প্রতিনিধিত্ব |
---|
{
"timeout": string,
"model": {
object (ShipmentModel )
},
"solvingMode": enum (SolvingMode ),
"searchMode": enum (SearchMode ),
"injectedFirstSolutionRoutes": [
{
object (ShipmentRoute )
}
],
"injectedSolutionConstraint": {
object (InjectedSolutionConstraint )
},
"refreshDetailsRoutes": [
{
object (ShipmentRoute )
}
],
"interpretInjectedSolutionsUsingLabels": boolean,
"considerRoadTraffic": boolean,
"populatePolylines": boolean,
"populateTransitionPolylines": boolean,
"allowLargeDeadlineDespiteInterruptionRisk": boolean,
"useGeodesicDistances": boolean,
"label": string,
"geodesicMetersPerSecond": number,
"maxValidationErrors": integer
} |
ক্ষেত্র |
---|
timeout | string ( Duration format) এই টাইমআউট সেট করা থাকলে, টাইমআউট পিরিয়ড অতিবাহিত হওয়ার আগে বা সিঙ্ক্রোনাস অনুরোধের জন্য সার্ভারের সময়সীমা পৌঁছে যাওয়ার আগে সার্ভার একটি প্রতিক্রিয়া প্রদান করে, যেটি তাড়াতাড়ি হয়। অ্যাসিঙ্ক্রোনাস অনুরোধের জন্য, সময় শেষ হওয়ার আগে সার্ভার একটি সমাধান (যদি সম্ভব হয়) তৈরি করবে। নয়টি পর্যন্ত ভগ্নাংশের সংখ্যা সহ সেকেন্ডে একটি সময়কাল, ' s ' দিয়ে শেষ হয়৷ উদাহরণ: "3.5s" । |
model | object ( ShipmentModel ) সমাধানের জন্য চালানের মডেল। |
solvingMode | enum ( SolvingMode ) ডিফল্টরূপে, সমাধানের মোড হল DEFAULT_SOLVE (0)। |
searchMode | enum ( SearchMode ) অনুসন্ধান মোড অনুরোধ সমাধান করতে ব্যবহৃত. |
injectedFirstSolutionRoutes[] | object ( ShipmentRoute ) পূর্ববর্তী সমাধানের অনুরূপ একটি প্রথম সমাধান খুঁজে পেতে অপ্টিমাইজেশান অ্যালগরিদমকে গাইড করুন। প্রথম সমাধান নির্মিত হলে মডেলটি সীমাবদ্ধ। কোনো রুটে সঞ্চালিত নয় এমন কোনো চালান প্রথম সমাধানে পরোক্ষভাবে বাদ দেওয়া হয়, তবে সেগুলো ধারাবাহিক সমাধানে সঞ্চালিত হতে পারে। সমাধানটি অবশ্যই কিছু মৌলিক বৈধতা অনুমান পূরণ করবে: - সমস্ত রুটের জন্য,
vehicleIndex অবশ্যই পরিসরে থাকতে হবে এবং নকল করা যাবে না। - সমস্ত ভিজিটের জন্য,
shipmentIndex এবং visitRequestIndex অবশ্যই পরিসরে থাকতে হবে। - একটি চালান শুধুমাত্র একটি রুটে উল্লেখ করা যেতে পারে.
- একটি পিকআপ-ডেলিভারি চালানের পিকআপ ডেলিভারির আগে সঞ্চালিত করা আবশ্যক।
- একটি চালানের একাধিক পিকআপ বিকল্প বা বিতরণ বিকল্প সঞ্চালিত হতে পারে না।
- সব রুটের জন্য, সময় বাড়ছে (যেমন,
vehicleStartTime <= visits[0].start_time <= visits[1].start_time ... <= vehicleEndTime )। - একটি চালান শুধুমাত্র অনুমোদিত যানবাহনে সঞ্চালিত হতে পারে।
Shipment.allowed_vehicle_indices খালি থাকলে বা এর vehicleIndex Shipment.allowed_vehicle_indices এ অন্তর্ভুক্ত থাকলে একটি গাড়ির অনুমতি দেওয়া হয়।
যদি ইনজেকশন দেওয়া দ্রবণটি সম্ভব না হয়, তবে একটি বৈধতা ত্রুটি অগত্যা ফেরত দেওয়া হয় না এবং এর পরিবর্তে অসম্ভাব্যতা নির্দেশ করে একটি ত্রুটি ফেরত দেওয়া হতে পারে। |
injectedSolutionConstraint | object ( InjectedSolutionConstraint ) অপ্টিমাইজেশান অ্যালগরিদম সীমাবদ্ধ করুন একটি চূড়ান্ত সমাধান খুঁজে পেতে যা পূর্ববর্তী সমাধানের মতো। উদাহরণস্বরূপ, এটি রুটের অংশগুলিকে হিমায়িত করতে ব্যবহার করা যেতে পারে যা ইতিমধ্যে সম্পন্ন হয়েছে বা যা সম্পূর্ণ করা হবে কিন্তু সংশোধন করা উচিত নয়। যদি ইনজেকশন দেওয়া দ্রবণটি সম্ভব না হয়, তবে একটি বৈধতা ত্রুটি অগত্যা ফেরত দেওয়া হয় না এবং এর পরিবর্তে অসম্ভাব্যতা নির্দেশ করে একটি ত্রুটি ফেরত দেওয়া হতে পারে। |
refreshDetailsRoutes[] | object ( ShipmentRoute ) যদি খালি না হয়, প্রদত্ত রুটগুলি রিফ্রেশ করা হবে, তাদের ভিজিট বা ভ্রমণের সময়গুলির অন্তর্নিহিত ক্রম পরিবর্তন না করে: শুধুমাত্র অন্যান্য বিবরণ আপডেট করা হবে। এটি মডেলের সমাধান করে না। 2020/11 অনুসারে, এটি শুধুমাত্র খালি নয় এমন রুটের পলিলাইনগুলিকে পপুলেট করে এবং populatePolylines সত্য হওয়া প্রয়োজন৷ পাস করা রুটের routePolyline ক্ষেত্রগুলি রুট transitions সাথে অসামঞ্জস্যপূর্ণ হতে পারে। এই ক্ষেত্রটি অবশ্যই injectedFirstSolutionRoutes বা injectedSolutionConstraint এর সাথে ব্যবহার করা উচিত নয়। Shipment.ignore এবং Vehicle.ignore আচরণের উপর কোন প্রভাব ফেলে না। সংশ্লিষ্ট চালান বা যানবাহন উপেক্ষা করা হোক না কেন, সমস্ত অ-খালি রুটে সমস্ত ভিজিটের মধ্যে পলিলাইনগুলি এখনও জনবহুল। |
interpretInjectedSolutionsUsingLabels | boolean সত্য হলে: এই ব্যাখ্যাটি injectedFirstSolutionRoutes , injectedSolutionConstraint , এবং refreshDetailsRoutes ক্ষেত্রে প্রযোজ্য। এটি ব্যবহার করা যেতে পারে যখন অনুরোধে চালান বা যানবাহনের সূচকগুলি সমাধানটি তৈরি হওয়ার পর থেকে পরিবর্তিত হয়, সম্ভবত শিপমেন্ট বা যানবাহন অনুরোধ থেকে সরানো হয়েছে বা যোগ করা হয়েছে। সত্য হলে, নিম্নলিখিত বিভাগের লেবেলগুলি অবশ্যই তাদের বিভাগে একবারে উপস্থিত হতে হবে: যদি ইনজেকশনের দ্রবণে একটি vehicleLabel অনুরোধের গাড়ির সাথে মিল না থাকে, তাহলে সংশ্লিষ্ট রুটটি তার পরিদর্শন সহ সমাধান থেকে সরানো হয়। যদি ইনজেকশনের দ্রবণে একটি shipmentLabel একটি অনুরোধ চালানের সাথে সঙ্গতিপূর্ণ না হয়, তাহলে সংশ্লিষ্ট ভিজিটটি সমাধান থেকে সরানো হয়। যদি ইনজেকশন করা দ্রবণে একটি SkippedShipment.label অনুরোধ চালানের সাথে সামঞ্জস্যপূর্ণ না হয়, SkippedShipment সমাধান থেকে সরানো হয়। একটি ইনজেকশনযুক্ত দ্রবণ থেকে রুট ভিজিট বা সম্পূর্ণ রুটগুলি সরানো অন্তর্নিহিত সীমাবদ্ধতার উপর প্রভাব ফেলতে পারে, যা সমাধানে পরিবর্তন, বৈধতা ত্রুটি বা অসম্ভাব্যতা হতে পারে। দ্রষ্টব্য: কলকারীকে অবশ্যই নিশ্চিত করতে হবে যে প্রতিটি Vehicle.label (resp. Shipment.label ) দুটি প্রাসঙ্গিক অনুরোধ জুড়ে ব্যবহৃত একটি যানবাহন (resp. শিপমেন্ট) সত্তাকে স্বতন্ত্রভাবে সনাক্ত করে: অতীতের অনুরোধ যা ইনজেকশনের সমাধানে ব্যবহৃত OptimizeToursResponse তৈরি করেছিল এবং বর্তমান অনুরোধ যাতে ইনজেকশনের সমাধান অন্তর্ভুক্ত থাকে। উপরে বর্ণিত স্বতন্ত্রতা পরীক্ষাগুলি এই প্রয়োজনীয়তার গ্যারান্টি দেওয়ার জন্য যথেষ্ট নয়। |
considerRoadTraffic | boolean ShipmentRoute ক্ষেত্র Transition.travel_duration , Visit.start_time , এবং vehicleEndTime গণনা করার ক্ষেত্রে ট্রাফিক অনুমান বিবেচনা করুন; ShipmentRoute.has_traffic_infeasibilities ক্ষেত্র সেট করতে এবং OptimizeToursResponse.total_cost ফিল্ড গণনা করতে। |
populatePolylines | boolean সত্য হলে, ShipmentRoute s এর প্রতিক্রিয়ায় পলিলাইনগুলি পপুলেট করা হবে। |
populateTransitionPolylines | boolean সত্য হলে, ShipmentRoute.transitions এ পলিলাইন এবং রুট টোকেনগুলি পূরণ করা হবে। |
allowLargeDeadlineDespiteInterruptionRisk | boolean যদি এটি সেট করা থাকে, তাহলে অনুরোধের একটি সময়সীমা থাকতে পারে ( https://grpc.io/blog/deadlines দেখুন) 60 মিনিট পর্যন্ত। অন্যথায়, সর্বোচ্চ সময়সীমা মাত্র 30 মিনিট। মনে রাখবেন যে দীর্ঘস্থায়ী অনুরোধগুলির একটি উল্লেখযোগ্যভাবে বড় (কিন্তু এখনও ছোট) বাধার ঝুঁকি রয়েছে। |
useGeodesicDistances | boolean যদি সত্য হয়, ভ্রমণের দূরত্বগুলি Google মানচিত্রের দূরত্বের পরিবর্তে জিওডেসিক দূরত্ব ব্যবহার করে গণনা করা হবে, এবং ভ্রমণের সময়গুলি geodesicMetersPerSecond দ্বারা সংজ্ঞায়িত গতির সাথে জিওডেসিক দূরত্ব ব্যবহার করে গণনা করা হবে। |
label | string এই অনুরোধ শনাক্ত করতে ব্যবহার করা হতে পারে এমন লেবেল, OptimizeToursResponse.request_label এ আবার রিপোর্ট করা হয়েছে। |
geodesicMetersPerSecond | number যখন useGeodesicDistances সত্য হয়, এই ক্ষেত্রটি অবশ্যই সেট করতে হবে এবং ভ্রমণের সময় গণনা করার জন্য প্রয়োগ করা গতি সংজ্ঞায়িত করতে হবে। এর মান কমপক্ষে 1.0 মিটার/সেকেন্ড হতে হবে। |
maxValidationErrors | integer প্রত্যাবর্তিত বৈধতা ত্রুটির সংখ্যা ছেঁটে ফেলে৷ এই ত্রুটিগুলি সাধারণত একটি INVALID_ARGUMENT ত্রুটির পেলোডের সাথে একটি BadRequest ত্রুটি বিবরণ ( https://cloud.google.com/apis/design/errors#error_details ) হিসাবে সংযুক্ত থাকে, যদি না solvingMode=VALIDATE_ONLY: OptimizeToursResponse.validation_errors ক্ষেত্রটি দেখুন৷ এটি ডিফল্ট 100 এবং 10,000 এ সীমাবদ্ধ। |
প্রতিক্রিয়া শরীর
সফল হলে, প্রতিক্রিয়া বডিতে OptimizeToursResponse
এর একটি উদাহরণ থাকে।
অনুমোদনের সুযোগ
নিম্নলিখিত OAuth সুযোগ প্রয়োজন:
-
https://www.googleapis.com/auth/cloud-platform
আইএএম অনুমতি
parent
রিসোর্সে নিম্নলিখিত IAM অনুমতির প্রয়োজন:
-
routeoptimization.locations.use
আরও তথ্যের জন্য, IAM ডকুমেন্টেশন দেখুন।
অন্য কিছু উল্লেখ না করা থাকলে, এই পৃষ্ঠার কন্টেন্ট Creative Commons Attribution 4.0 License-এর অধীনে এবং কোডের নমুনাগুলি Apache 2.0 License-এর অধীনে লাইসেন্স প্রাপ্ত। আরও জানতে, Google Developers সাইট নীতি দেখুন। Java হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-01-11 UTC-তে শেষবার আপডেট করা হয়েছে।
[null,null,["2025-01-11 UTC-তে শেষবার আপডেট করা হয়েছে।"],[[["The Route Optimization API minimizes the total cost of routes by assigning `ShipmentRoute`s to `Vehicle`s."],["The API takes an `OptimizeToursRequest` with a `ShipmentModel` and returns an `OptimizeToursResponse` with `ShipmentRoute`s."],["The `ShipmentModel` defines the `Shipment`s to be transported, the `Vehicle`s available, and the cost components."],["The API considers various factors, including traffic, time windows, and vehicle capacities, to optimize the routes."],["Authorization is required using OAuth scope `https://www.googleapis.com/auth/cloud-platform` and IAM permission `routeoptimization.locations.use`."]]],[]]