الاستجابة بعد حل مشكلة تحسين الجولة التي تحتوي على المسارات التي تتبعها كل مركبة، والشحنات التي تم تخطيها والتكلفة الإجمالية للحل.
| تمثيل 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 |
التكلفة الإجمالية للحلّ مجموع جميع القيم في خريطة التكاليف |