تُرسِل OptimizeToursRequest تحتوي على ShipmentModel وتُعرِض OptimizeToursResponse تحتوي على ShipmentRoute، وهي مجموعة من المسارات التي ستقطعها المركبات بأقل تكلفة إجمالية.
يتكوّن نموذج ShipmentModel بشكلٍ أساسي من Shipment التي يجب تنفيذها وVehicles التي يمكن استخدامها لنقل Shipment. تُسنِد ShipmentRoute Shipment إلى Vehicle. على وجه التحديد، يتم تخصيص سلسلة من Visit لكل مركبة، حيث يتوافق Visit مع VisitRequest، وهو عملية استلام أو تسليم Shipment.
والهدف من ذلك هو توفير تخصيص ShipmentRoute إلى Vehicle، ما يقلّل من إجمالي التكلفة حيث تكون التكلفة محددة في ShipmentModel.
طلب HTTP
POST https://routeoptimization.googleapis.com/v1/{parent=projects/*}:optimizeTours
يستخدِم عنوان URL بنية تحويل ترميز gRPC.
مَعلمات المسار
| المعلمات | |
|---|---|
parent |
مطلوب. استهدِف المشروع أو الموقع الجغرافي لإجراء مكالمة. التنسيق: * في حال عدم تحديد موقع جغرافي، سيتم اختيار منطقة تلقائيًا. |
نص الطلب
يحتوي نص الطلب على بيانات بالبنية التالية:
| تمثيل JSON |
|---|
{ "timeout": string, "model": { object ( |
| الحقول | |
|---|---|
timeout |
إذا تم ضبط هذه المهلة، يعرض الخادم استجابة قبل انقضاء مدة المهلة أو بلوغ الموعد النهائي للخادم لتنفيذ الطلبات المتزامنة، أيهما أقرب. بالنسبة إلى الطلبات غير المتزامنة، سينشئ الخادم حلًا (إن أمكن) قبل انتهاء المهلة. مدة بالثواني تضم تسعة أرقام كسور كحد أقصى وتنتهي بـ " |
model |
نموذج الشحن لحلّ المشكلة |
solvingMode |
يكون وضع الحل تلقائيًا هو |
searchMode |
وضع البحث المُستخدَم لحل الطلب |
injectedFirstSolutionRoutes[] |
توجيه خوارزمية التحسين في العثور على حلّ أوّل مشابه لحلّ سابق يتم تقييد النموذج عند إنشاء الحلّ الأول. يتم ضمنيًا تخطي أي شحنات لا يتم إجراؤها على المسار في الحل الأول، ولكن قد يتم إجراؤها في حلول متتالية. يجب أن يستوفي الحلّ بعض الافتراضات الأساسية للصلاحية:
وإذا لم يكن الحل الذي تم إدخاله قابلاً للتنفيذ، لا يتم بالضرورة عرض خطأ في عملية التحقّق وقد يتم عرض خطأ يشير إلى عدم الجدوى بدلاً من ذلك. |
injectedSolutionConstraint |
تقييد خوارزمية التحسين لإيجاد حل نهائي مشابه لحل سابق. على سبيل المثال، يمكن استخدام ذلك لتجميد أجزاء من المسارات التي تم إكمالها من قبل أو التي سيتم إكمالها ولكن يجب عدم تعديلها. إذا لم يكن الحلّ المُدرَج قابلاً للتطبيق، لا يعني ذلك بالضرورة ظهور خطأ في عملية التحقّق، بل قد يظهر خطأ يشير إلى عدم قابلية الحلّ للتطبيق. |
refreshDetailsRoutes[] |
وإذا لم يكن الحقل فارغًا، سيتم تحديث المسارات بدون تعديل التسلسل الأساسي للزيارات أو مُدد السفر: سيتم تعديل التفاصيل الأخرى فقط. لا يؤدي ذلك إلى حلّ المشكلة في النموذج. اعتبارًا من تشرين الثاني (نوفمبر) 2020، لا يتمّ ملء خطوط البوليجون إلا للمسارات غير الفارغة، ويتطلّب ذلك ضبط قد تكون الحقول يجب عدم استخدام هذا الحقل مع لا يؤثّر الخياران |
interpretInjectedSolutionsUsingLabels |
إذا كانت القيمة هي true:
ينطبق هذا التفسير على الحقول إذا كانت القيمة هي true، يجب أن تظهر التصنيفات في الفئات التالية مرة واحدة فقط في فئتها:
إذا كانت وقد يكون لإزالة زيارات المسارات أو المسارات بأكملها من الحل الذي تم إدخاله تأثير على القيود الضمنية، ما قد يؤدي إلى تغيير الحل أو حدوث أخطاء في التحقّق أو عدم إمكانية تنفيذ ذلك. ملاحظة: على المتصل التأكّد من أنّ كل |
considerRoadTraffic |
ننصحك بالأخذ في الاعتبار تقدير عدد الزيارات عند احتساب حقول |
populatePolylines |
في حال كانت القيمة "صحيح"، ستتم تعبئة الخطوط المتعددة في الردود |
populateTransitionPolylines |
في حال كانت القيمة "صحيح"، ستتم تعبئة الخطوط المتعددة في الاستجابة |
allowLargeDeadlineDespiteInterruptionRisk |
وفي حال ضبط هذه السياسة، يمكن أن يتم تحديد موعد نهائي للطلب (راجِع https://grpc.io/blog/deadlines) يصل إلى 60 دقيقة. بخلاف ذلك، تكون المهلة القصوى 30 دقيقة فقط. يُرجى العِلم أنّ الطلبات التي تستمر لفترة طويلة تكون أكثر عرضة للانقطاع (ولكن بنسبة صغيرة). |
useGeodesicDistances |
إذا كان صحيحًا، سيتم احتساب مسافات التنقّل باستخدام المسافات الجيوديسية بدلاً من مسافات "خرائط Google"، وسيتم احتساب أوقات التنقّل باستخدام المسافات الجيوديسية بسرعة محدّدة بواسطة |
label |
تصنيف يمكن استخدامه لتحديد هذا الطلب، وتم الإبلاغ عنه في |
geodesicMetersPerSecond |
عند ضبط |
maxValidationErrors |
لاقتطاع عدد أخطاء التحقق من الصحة التي تم عرضها. عادةً ما ترتبط هذه الأخطاء بحمولة خطأ INSERT_SELECTED كتفاصيل خطأ BadRequest (https://cloud.google.com/apis/design/errors#error_details)، ما لم يكن العنوان SolutionMode=VALIDATE_ONLY: يُرجى الاطّلاع على الحقل |
نص الاستجابة
إذا كانت الاستجابة ناجحة، يحتوي نص الاستجابة على مثال OptimizeToursResponse.
نطاقات التفويض
يجب توفير نطاق OAuth التالي:
https://www.googleapis.com/auth/cloud-platform
أذونات إدارة الهوية وإمكانية الوصول
يتطلب هذا الإجراء الحصول على إذن إدارة الهوية وإمكانية الوصول التالي في مورد parent:
routeoptimization.locations.use
ولمزيد من المعلومات، اطّلِع على مستندات إدارة الهوية وإمكانية الوصول.