ردّ بعد حلّ مشكلة تحسين الجولة يحتوي على المسارات التي تتّبعها كل مركبة والشحنات التي تم تخطّيها والتكلفة الإجمالية للحلّ
تمثيل JSON |
---|
{ "routes": [ { object ( |
الحقول | |
---|---|
routes[] |
المسارات التي يتم احتسابها لكل مركبة، ويتوافق المسار i مع المركبة i في النموذج. |
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"، والقيم هي إجمالي التكلفة الناتجة عن حقل التكلفة ذي الصلة، والتي تم تجميعها على الحلّ بالكامل. بمعنى آخر، تكون التكاليف ["model.shipments.pickups.cost"] هي مجموع كل تكاليف الاستلام بدلاً من الحلّ. يتمّ إدراج جميع التكاليف المحدّدة في النموذج بالتفصيل هنا باستثناء التكاليف المرتبطة بعناصر TransitionAttributes التي يتمّ إدراجها فقط بطريقة مجمّعة اعتبارًا من 01/2022. عنصر يحتوي على قائمة بأزواج |
totalCost |
التكلفة الإجمالية للحلّ مجموع كل القيم في خريطة التكاليف. |