یک OptimizeToursRequest حاوی ShipmentModel ارسال می کند و OptimizeToursResponse حاوی ShipmentRoute را برمی گرداند، که مجموعه ای از مسیرها هستند که باید توسط وسایل نقلیه انجام شود و هزینه کلی را به حداقل می رساند.
یک مدل ShipmentModel عمدتاً شامل Shipment هایی است که باید انجام شوند و Vehicle که می توانند برای حمل و نقل Shipment ها استفاده شوند. ShipmentRouteShipment s را به Vehicle s اختصاص می دهد. به طور خاص، آنها یک سری از Visit را به هر وسیله نقلیه اختصاص می دهند، که در آن یک Visit مربوط به VisitRequest است، که یک تحویل یا تحویل برای یک Shipment است.
هدف این است که تخصیصی از ShipmentRoute به Vehicle ارائه شود که هزینه کل را در جایی که هزینه دارای اجزای زیادی است که در ShipmentModel تعریف شده است، به حداقل می رساند.
درخواست HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*/locations/*}:optimizeTours
الگوریتم بهینه سازی را در یافتن راه حل اول که مشابه راه حل قبلی است، راهنمایی کنید.
وقتی اولین راه حل ساخته می شود، مدل محدود می شود. هر محموله ای که در یک مسیر انجام نشده باشد به طور ضمنی در راه حل اول نادیده گرفته می شود، اما ممکن است در راه حل های متوالی انجام شود.
راه حل باید برخی از مفروضات اعتبار پایه را برآورده کند:
برای همه مسیرها، vehicleIndex باید در محدوده باشد و تکراری نباشد.
برای همه بازدیدها، shipmentIndex و visitRequestIndex باید در محدوده باشند.
یک محموله ممکن است فقط در یک مسیر ارجاع داده شود.
تحویل محموله وانت باید قبل از تحویل انجام شود.
بیش از یک بار جایگزین یا جایگزین تحویل یک محموله را نمی توان انجام داد.
برای همه مسیرها، زمان در حال افزایش است (به عنوان مثال، vehicleStartTime <= visits[0].start_time <= visits[1].start_time ... <= vehicleEndTime ).
الگوریتم بهینه سازی را برای یافتن راه حل نهایی که مشابه راه حل قبلی است محدود کنید. به عنوان مثال، این ممکن است برای مسدود کردن بخشهایی از مسیرهایی که قبلاً تکمیل شدهاند یا باید تکمیل شوند اما نباید اصلاح شوند استفاده شود.
اگر راه حل تزریق شده امکان پذیر نباشد، یک خطای اعتبار سنجی لزوما برگردانده نمی شود و ممکن است به جای آن خطای نشان دهنده غیرممکن بودن برگردانده شود.
در صورت خالی نبودن، مسیرهای داده شده بدون تغییر توالی بازدیدها یا زمان سفر، به روز می شوند: فقط سایر جزئیات به روز می شوند. این مدل را حل نمی کند.
از سال 2020/11، این فقط چند خطوط مسیرهای غیر خالی را پر می کند و مستلزم آن است که populatePolylines درست باشد.
فیلدهای routePolyline مسیرهای تصویب شده ممکن است با transitions مسیر ناسازگار باشد.
این فیلد نباید همراه با injectedFirstSolutionRoutes یا injectedSolutionConstraint استفاده شود.
Shipment.ignore و Vehicle.ignore هیچ تاثیری بر رفتار ندارند. خطوط چندگانه همچنان بین همه بازدیدها در همه مسیرهای غیر خالی بدون توجه به محموله ها یا وسایل نقلیه مربوطه پر شده است.
این تفسیر برای فیلدهای injectedFirstSolutionRoutes ، injectedSolutionConstraint و refreshDetailsRoutes اعمال می شود. می توان از آن زمانی استفاده کرد که شاخص های حمل و نقل یا وسیله نقلیه در درخواست از زمان ایجاد راه حل تغییر کرده است، شاید به این دلیل که محموله ها یا وسایل نقلیه از درخواست حذف شده یا به آن اضافه شده اند.
اگر درست باشد، برچسبهای دستههای زیر باید حداکثر یک بار در دسته خود ظاهر شوند:
اگر vehicleLabel در محلول تزریق شده با وسیله نقلیه درخواستی مطابقت نداشته باشد، مسیر مربوطه به همراه بازدیدهای آن از محلول حذف می شود. اگر یک shipmentLabel در محلول تزریق شده با یک ارسال درخواست مطابقت نداشته باشد، بازدید مربوطه از محلول حذف می شود. اگر یک SkippedShipment.label در محلول تزریق شده با یک ارسال درخواست مطابقت نداشته باشد، SkippedShipment از محلول حذف می شود.
حذف بازدیدهای مسیر یا کل مسیرها از یک راه حل تزریقی ممکن است بر محدودیت های ضمنی تأثیر بگذارد، که ممکن است منجر به تغییر در راه حل، خطاهای اعتبارسنجی یا غیرممکن شود.
توجه: تماس گیرنده باید اطمینان حاصل کند که هر Vehicle.label (مثلاً Shipment.label ) به طور منحصر به فرد یک وسیله نقلیه (resp. shipment) مورد استفاده در دو درخواست مربوطه را شناسایی می کند: درخواست قبلی که OptimizeToursResponse استفاده شده در محلول تزریق شده را تولید کرده است و درخواست فعلی. درخواستی که شامل محلول تزریق شده است. بررسی های منحصر به فرد توضیح داده شده در بالا برای تضمین این نیاز کافی نیست.
اگر این تنظیم شده باشد، درخواست می تواند حداکثر 60 دقیقه مهلت داشته باشد (به https://grpc.io/blog/deadlines مراجعه کنید). در غیر این صورت حداکثر مهلت فقط 30 دقیقه است. توجه داشته باشید که درخواست های طولانی مدت خطر وقفه به طور قابل توجهی بزرگتر (اما هنوز کوچک) دارند.
use Geodesic Distances
boolean
اگر درست باشد، مسافتهای سفر با استفاده از فواصل ژئودزیکی به جای فواصل Google Maps و زمان سفر با استفاده از فواصل ژئودزیکی با سرعتی که توسط geodesicMetersPerSecond تعریف شده است، محاسبه میشود.
وقتی useGeodesicDistances درست است، این فیلد باید تنظیم شود و سرعت اعمال شده برای محاسبه زمان سفر را مشخص کند. مقدار آن باید حداقل 1.0 متر در ثانیه باشد.
تاریخ آخرین بهروزرسانی 2024-12-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"]],["تاریخ آخرین بهروزرسانی 2024-12-10 بهوقت ساعت هماهنگ جهانی."],[[["Sends an `OptimizeToursRequest` and returns an `OptimizeToursResponse` containing optimized `ShipmentRoute`s for a given `ShipmentModel` and `Vehicle`s."],["The service aims to minimize the total cost of routes by assigning `Shipment`s to `Vehicle`s and optimizing their `Visit` sequences."],["Request body includes parameters to guide the optimization process such as timeout, model, solving mode, search mode, and constraints."],["The response contains the optimized routes, including details like polylines, travel durations, and total cost."],["Requires the `https://www.googleapis.com/auth/cloud-platform` OAuth scope and `routeoptimization.locations.use` IAM permission."]]],[]]