Method: projects.optimizeTours
یک OptimizeToursRequest
حاوی ShipmentModel
ارسال می کند و OptimizeToursResponse
حاوی ShipmentRoute
را برمی گرداند، که مجموعه ای از مسیرها هستند که باید توسط وسایل نقلیه انجام شود و هزینه کلی را به حداقل می رساند.
یک مدل ShipmentModel
عمدتاً شامل Shipment
هایی است که باید انجام شوند و Vehicle
که می توانند برای حمل و نقل Shipment
ها استفاده شوند. ShipmentRoute
Shipment
s را به Vehicle
s اختصاص می دهد. به طور خاص، آنها یک سری از Visit
را به هر وسیله نقلیه اختصاص می دهند، که در آن یک Visit
مربوط به VisitRequest
است، که یک تحویل یا تحویل برای یک Shipment
است.
هدف این است که تخصیصی از ShipmentRoute
به Vehicle
ارائه شود که هزینه کل را در جایی که هزینه دارای اجزای زیادی است که در ShipmentModel
تعریف شده است، به حداقل می رساند.
درخواست HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
URL از دستور GRPC Transcoding استفاده می کند.
پارامترهای مسیر
پارامترها |
---|
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 (مثلاً Shipment.label ) به طور منحصر به فرد یک وسیله نقلیه (resp. shipment) مورد استفاده در دو درخواست مربوطه را شناسایی می کند: درخواست قبلی که 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 اگر این تنظیم شده باشد، درخواست می تواند حداکثر 60 دقیقه مهلت داشته باشد (به https://grpc.io/blog/deadlines مراجعه کنید). در غیر این صورت حداکثر مهلت فقط 30 دقیقه است. توجه داشته باشید که درخواست های طولانی مدت خطر وقفه به طور قابل توجهی بزرگتر (اما هنوز کوچک) دارند. |
useGeodesicDistances | boolean اگر درست باشد، مسافتهای سفر با استفاده از فواصل ژئودزیکی به جای فواصل Google Maps و زمان سفر با استفاده از فواصل ژئودزیکی با سرعتی که توسط 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 است و روی 10000 محدود شده است. |
بدن پاسخگو
در صورت موفقیت آمیز بودن، بدنه پاسخ حاوی نمونه ای از OptimizeToursResponse
است.
محدوده مجوز
به محدوده OAuth زیر نیاز دارد:
-
https://www.googleapis.com/auth/cloud-platform
مجوزهای IAM
به مجوز IAM زیر در منبع parent
نیاز دارد:
-
routeoptimization.locations.use
برای اطلاعات بیشتر، به مستندات IAM مراجعه کنید.
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-01-11 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-01-11 بهوقت ساعت هماهنگ جهانی."],[[["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`."]]],[]]