الاستجابة بعد حل مشكلة تحسين الجولة التي تحتوي على المسارات التي تتبعها كل مركبة، والشحنات التي تم تخطيها والتكلفة الإجمالية للحل.
تمثيل JSON |
---|
{ "routes": [ { object ( |
الحقول | |
---|---|
routes[] |
المسارات المحسوبة لكل مركبة؛ يتجاوب المسار i-th مع المركبة i-th في النموذج. |
requestLabel |
نسخة من |
skippedShipments[] |
قائمة بكل الشحنات التي تم تخطّيها |
validationErrors[] |
قائمة بجميع أخطاء التحقّق من الصحة التي تمكّنا من اكتشافها بشكلٍ مستقل. اطّلِع على شرح "أخطاء متعدّدة" لرسالة |
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 "Zulu" وبدقة تصل إلى نانوثانية وما يصل إلى تسعة أرقام كسور. أمثلة: |
latestVehicleEndTime |
آخر وقت انتهاء لمركبة مستعملة، ويتم احتسابه على أنّه الحد الأقصى لجميع المركبات المستعمَلة التي تبلغ يجب أن يكون طابعًا زمنيًا بالتنسيق RFC3339 UTC "Zulu" وبدقة تصل إلى نانوثانية وما يصل إلى تسعة أرقام كسور. أمثلة: |
costs |
تكلفة الحلّ، مقسّمة حسب حقول الطلبات ذات الصلة بالتكلفة وتتمثّل القيم الرئيسية في مسارات النماذج الأوّلية، مقارنةً بنموذج OptimizeToursRequest المُدخل، على سبيل المثال "model.shipments.pickups.cost"، والقيم هي إجمالي التكلفة الناتجة عن حقل التكلفة ذي الصلة، والتي تم تجميعها على الحلّ بالكامل. بعبارة أخرى، costs["model.shipments.pickups.cost"] هي مجموع جميع تكاليف الاستلام على مستوى الحلّ. يتمّ إدراج جميع التكاليف المحدّدة في النموذج بالتفصيل هنا باستثناء التكاليف المرتبطة بعناصر TransitionAttributes التي يتمّ إدراجها فقط بطريقة مجمّعة اعتبارًا من 01/2022. |
totalCost |
التكلفة الإجمالية للحلّ مجموع جميع القيم في خريطة التكاليف |