یک OptimizeToursRequest حاوی یک ShipmentModel ارسال میکند و یک OptimizeToursResponse حاوی ShipmentRoute ها برمیگرداند، که مجموعهای از مسیرها هستند که باید توسط وسایل نقلیه انجام شوند و هزینه کلی را به حداقل برسانند.
یک مدل ShipmentModel عمدتاً شامل Shipment هایی است که باید انجام شوند و Vehicle هایی که میتوانند برای حمل Shipment ها استفاده شوند. ShipmentRoute ها، Shipment ها را به Vehicle ها اختصاص میدهند. به طور خاصتر، آنها مجموعهای از Visit ها را به هر وسیله نقلیه اختصاص میدهند، که در آن Visit معادل VisitRequest است که به معنای دریافت یا تحویل Shipment است.
هدف، ارائه تخصیصی از ShipmentRoute ها به Vehicle ها است که در مواردی که cost دارای اجزای زیادی است که در ShipmentModel تعریف شدهاند، هزینه کل را به حداقل برساند.
درخواست 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 برابر با true باشد.
فیلدهای routePolyline مسیرهای ارسالی ممکن است با transitions ناسازگار باشند.
این فیلد نباید همراه با injectedFirstSolutionRoutes یا injectedSolutionConstraint استفاده شود.
Shipment.ignore و Vehicle.ignore هیچ تاثیری بر رفتار ندارند. خطوط چندخطی همچنان بین تمام بازدیدها در تمام مسیرهای غیر خالی، صرف نظر از اینکه محمولهها یا وسایل نقلیه مرتبط نادیده گرفته شوند یا خیر، پر میشوند.
این تفسیر در مورد فیلدهای injectedFirstSolutionRoutes ، injectedSolutionConstraint و refreshDetailsRoutes اعمال میشود. این تفسیر میتواند زمانی استفاده شود که شاخصهای حمل و نقل یا وسیله نقلیه در درخواست از زمان ایجاد راهحل تغییر کرده باشند، شاید به این دلیل که محمولهها یا وسایل نقلیه از درخواست حذف یا به آن اضافه شدهاند.
اگر درست باشد، برچسبهای موجود در دستههای زیر باید حداکثر یک بار در دسته خود ظاهر شوند:
اگر یک vehicleLabel در راهحل تزریقشده با یک وسیله نقلیه درخواست مطابقت نداشته باشد، مسیر مربوطه به همراه بازدیدهای آن از راهحل حذف میشود. اگر یک shipmentLabel در راهحل تزریقشده با یک محموله درخواست مطابقت نداشته باشد، بازدید مربوطه از راهحل حذف میشود. اگر یک SkippedShipment.label در راهحل تزریقشده با یک محموله درخواست مطابقت نداشته باشد، SkippedShipment از راهحل حذف میشود.
حذف بازدیدهای مسیر یا کل مسیرها از یک راهحل تزریقشده ممکن است بر محدودیتهای ضمنی تأثیر بگذارد، که ممکن است منجر به تغییر در راهحل، خطاهای اعتبارسنجی یا عدم امکانسنجی شود.
نکته: فراخواننده باید اطمینان حاصل کند که هر Vehicle.label (به نام Shipment.label ) به طور منحصر به فرد یک موجودیت vehicle (به نام shipping) را که در دو درخواست مربوطه استفاده میشود، شناسایی میکند: درخواست قبلی که OptimizeToursResponse مورد استفاده در راهحل تزریق شده را تولید کرده است و درخواست فعلی که شامل راهحل تزریق شده است. بررسیهای منحصر به فرد بودن که در بالا توضیح داده شد، برای تضمین این الزام کافی نیستند.
اگر این تنظیم شده باشد، درخواست میتواند مهلتی (به https://grpc.io/blog/deadlines مراجعه کنید) تا ۶۰ دقیقه داشته باشد. در غیر این صورت، حداکثر مهلت فقط ۳۰ دقیقه است. توجه داشته باشید که درخواستهای طولانی مدت، خطر وقفه بسیار بیشتری (اما همچنان کم) دارند.
useGeodesicDistances
boolean
اگر درست باشد، مسافتهای سفر به جای مسافتهای نقشههای گوگل، با استفاده از مسافتهای ژئودزیک محاسبه میشوند و زمانهای سفر با استفاده از مسافتهای ژئودزیک با سرعتی که توسط geodesicMetersPerSecond تعریف میشود، محاسبه میشوند.
وقتی useGeodesicDistances برابر با true باشد، این فیلد باید تنظیم شود و سرعت اعمال شده برای محاسبه زمان سفر را تعریف کند. مقدار آن باید حداقل ۱.۰ متر بر ثانیه باشد.
تاریخ آخرین بهروزرسانی 2025-11-10 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","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 بهوقت ساعت هماهنگ جهانی."],[],["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"]]