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