الاستجابة بعد حل مشكلة تحسين الجولة التي تحتوي على المسارات التي تتبعها كل مركبة، والشحنات التي تم تخطيها والتكلفة الإجمالية للحل.
تمثيل JSON |
---|
{ "routes": [ { object ( |
الحقول | |
---|---|
routes[] |
المسارات المحسوبة لكل مركبة ويتجاوب المسار i-th مع المركبة i-th في النموذج. |
requestLabel |
نسخة من |
skippedShipments[] |
قائمة بكل الشحنات التي تم تخطّيها |
validationErrors[] |
قائمة بجميع أخطاء التحقّق من الصحة التي تمكّنا من اكتشافها بشكلٍ مستقل. عرض "MULTIPLE ERRORS" شرح لرسالة |
metrics |
المدة والمسافة ومقاييس الاستخدام لهذا الحلّ |
OptimizeToursValidationError
يصِف هذا القسم خطأً حدث عند التحقّق من صحة OptimizeToursRequest
.
تمثيل JSON |
---|
{
"code": integer,
"displayName": string,
"fields": [
{
object ( |
الحقول | |
---|---|
code |
يتم تحديد خطأ في عملية التحقّق من خلال الزوج ( توفّر الحقول الأخرى (أدناه) المزيد من السياق حول الخطأ. أخطاء متعددة: عند حدوث أخطاء متعددة، تحاول عملية التحقق إخراج العديد منها. تمامًا مثل المحول البرمجي، هذه عملية غير كاملة. ستكون بعض أخطاء التحقّق "فادحة"، ما يعني أنّها توقِف عملية التحقّق بأكملها. ينطبق هذا الأمر على الاستقرار: يجب أن يكون مرجع: قائمة بجميع الأزواج (الرمز، الاسم):
|
displayName |
الاسم المعروض للخطأ. |
fields[] |
قد يشتمل سياق الخطأ على 0 أو 1 (في معظم الأوقات) أو أكثر من الحقول. على سبيل المثال، يمكن إجراء عملية الاستلام الأولى للمركبة رقم 4 والشحنة رقم 2 على النحو التالي:
مع ذلك، تجدر الإشارة إلى أنّ عدد القيم الفريدة للسمة |
errorMessage |
سلسلة تصف الخطأ ويمكن لشخص عادي قراءتها هناك عملية ربط بنسبة 1:1 بين الاستقرار: غير ثابت: قد تتغير رسالة الخطأ المرتبطة بعلامة |
offendingValues |
قد يحتوي على قيمة (قيم) الحقول. لا تتوفّر هذه الميزة دائمًا. يجب ألا تعتمد عليها مطلقًا وأن تستخدمها فقط لتصحيح أخطاء النموذج اليدوي. |
FieldReference
تحدد هذه السمة سياق خطأ التحقق من الصحة. يشير FieldReference
دائمًا إلى حقل معيّن في هذا الملف ويتبع البنية الهرمية نفسها. على سبيل المثال، قد نحدِّد العنصر رقم 2 من startTimeWindows
للمركبة رقم 5 باستخدام:
name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }
ومع ذلك، نحذف كيانات المستوى الأعلى، مثل OptimizeToursRequest
أو ShipmentModel
لتجنُّب ازدحام الرسالة.
تمثيل JSON |
---|
{ "name": string, "subField": { object ( |
الحقول | |
---|---|
name |
اسم الحقل، مثلاً "المركبات". |
subField |
حقل فرعي متداخل بشكل متكرر، إذا لزم الأمر. |
حقل الاتحاد يمكن أن يكون |
|
index |
فهرس الحقل في حال التكرار. |
key |
مفتاح إذا كان الحقل خريطة. |
المقاييس
المقاييس العامة، المجمّعة من كل المسارات
تمثيل JSON |
---|
{
"aggregatedRouteMetrics": {
object ( |
الحقول | |
---|---|
aggregatedRouteMetrics |
وهي مجمّعة فوق المسارات. يمثّل كل مقياس المجموع (أو الحد الأقصى لعمليات التحميل) في جميع حقول |
skippedMandatoryShipmentCount |
عدد الشحنات الإلزامية التي تم تخطّيها |
usedVehicleCount |
عدد المركبات المستخدَمة ملاحظة: إذا كان مسار المركبة فارغًا وكانت السمة |
earliestVehicleStartTime |
أقرب وقت بدء لمركبة مستعمَلة، ويتم احتسابه للحد الأدنى من جميع المركبات المستعمَلة من طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
latestVehicleEndTime |
آخر وقت انتهاء لمركبة مستعمَلة، ويتم احتسابه على أنّه الحد الأقصى لجميع المركبات المستعمَلة من طابع زمني بتنسيق RFC3339 حسب التوقيت العالمي المنسَّق (UTC) "زولو" بدقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
costs |
تكلفة الحل مقسَّمة حسب حقول الطلب المتعلقة بالتكلفة. وتمثل المفاتيح مسارات أولية بالنسبة إلى إدخال OptimizeToursRequest، على سبيل المثال: "model.shipments.pickups.cost"، والقيم هي إجمالي التكلفة الناتجة عن حقل التكلفة المقابل، والتي يتم تجميعها على مستوى الحلّ بالكامل. بمعنى آخر، تكون التكاليف ["model.shipments.pickups.cost"] هي مجموع كل تكاليف الاستلام بدلاً من الحل. يتم الإبلاغ عن جميع التكاليف المحدّدة في النموذج هنا بالتفصيل، باستثناء التكاليف المرتبطة بسمات TransitionAttributes التي يتم الإبلاغ عنها بطريقة مجمّعة فقط اعتبارًا من 2022/2022. عنصر يحتوي على قائمة بأزواج |
totalCost |
التكلفة الإجمالية للحلّ مجموع كل القيم في خريطة التكاليف. |