OptimizeToursResponse

الاستجابة بعد حل مشكلة تحسين الجولة التي تحتوي على المسارات التي تتبعها كل مركبة، والشحنات التي تم تخطيها والتكلفة الإجمالية للحل.

تمثيل JSON
{
  "routes": [
    {
      object (ShipmentRoute)
    }
  ],
  "requestLabel": string,
  "skippedShipments": [
    {
      object (SkippedShipment)
    }
  ],
  "validationErrors": [
    {
      object (OptimizeToursValidationError)
    }
  ],
  "metrics": {
    object (Metrics)
  }
}
الحقول
routes[]

object (ShipmentRoute)

المسارات المحسوبة لكل مركبة؛ يتجاوب المسار i-th مع المركبة i-th في النموذج.

requestLabel

string

نسخة من OptimizeToursRequest.label، إذا تم تحديد تصنيف في الطلب.

skippedShipments[]

object (SkippedShipment)

قائمة بكل الشحنات التي تم تخطّيها

validationErrors[]

object (OptimizeToursValidationError)

قائمة بجميع أخطاء التحقّق من الصحة التي تمكّنا من اكتشافها بشكلٍ مستقل. اطّلِع على شرح "أخطاء متعدّدة" لرسالة OptimizeToursValidationError. بدلاً من الأخطاء، سيتضمّن ذلك تحذيرات في حال كانت قيمة solvingMode هي DEFAULT_SOLVE.

metrics

object (Metrics)

المدة والمسافة ومقاييس الاستخدام لهذا الحلّ

OptimizeToursValidationError

تصف هذه السمة خطأً أو تحذيرًا حدث عند التحقق من صحة OptimizeToursRequest.

تمثيل JSON
{
  "code": integer,
  "displayName": string,
  "fields": [
    {
      object (FieldReference)
    }
  ],
  "errorMessage": string,
  "offendingValues": string
}
الحقول
code

integer

يتم تحديد خطأ في عملية التحقّق من خلال الزوج (code وdisplayName) اللذَين متوفّران دائمًا.

تقدّم الحقول التي تتبع هذا القسم مزيدًا من السياق حول الخطأ.

أخطاء متعددة: عند حدوث أخطاء متعددة، تحاول عملية التحقق إخراج العديد منها. وهي، مثل المحول البرمجي، تعد هذه عملية غير كاملة. ستكون بعض أخطاء التحقّق "خطيرة"، ما يعني أنّها تؤدي إلى إيقاف عملية التحقّق بالكامل. وينطبق ذلك على أخطاء displayName="UNSPECIFIED"، من بين غيرها. قد تؤدي بعض الأخطاء إلى تخطّي عملية التحقّق من الأخطاء الأخرى.

الاستقرار: يجب أن يكون code وdisplayName ثابتَين جدًا. ومع ذلك، قد تظهر الرموز والأسماء المعروضة الجديدة بمرور الوقت، ما قد يتسبب في أن ينتج عن طلب معيّن (غير صالح) زوج مختلف (code وdisplayName) لأنّ الخطأ الجديد أخفى الخطأ القديم. على سبيل المثال، راجِع "MULTIPLE ERRORS".

displayName

string

الاسم المعروض للخطأ

fields[]

object (FieldReference)

قد يتضمّن سياق الخطأ 0 أو 1 حقل (في معظم الأحيان) أو أكثر. على سبيل المثال، يمكن إجراء عملية الاستلام الأولى للمركبة رقم 4 وأول طرد رقم 2 على النحو التالي:

fields { name: "vehicles" index: 4}
fields { name: "shipments" index: 2 subField {name: "pickups" index: 0} }

مع ذلك، تجدر الإشارة إلى أنّ عدد القيم الفريدة للسمة fields يجب ألا يتغيّر لرمز خطأ معيّن.

errorMessage

string

سلسلة تصف الخطأ ويمكن لشخص عادي قراءتها هناك عملية ربط بنسبة 1:1 بين code وerrorMessage (عندما يكون الرمز != "UNSPECIFIED").

الاستقرار: غير ثابت: قد تتغير رسالة الخطأ المرتبطة بعلامة code معيّنة (نأمل أن يتم توضيحها) بمرور الوقت. يُرجى الاعتماد على displayName وcode بدلاً من ذلك.

offendingValues

string

قد يحتوي على قيمة (قيم) الحقول. ولا يتوفّر هذا الخيار في بعض الأحيان. يجب ألا تعتمد عليها مطلقًا وأن تستخدمها فقط لتصحيح أخطاء النموذج اليدوي.

FieldReference

تحدد هذه السمة سياق خطأ التحقق من الصحة. يشير FieldReference دائمًا إلى حقل معيّن في هذا الملف ويتبع البنية الهرمية نفسها. على سبيل المثال، يمكننا تحديد العنصر رقم 2 من startTimeWindows للمركبة رقم 5 باستخدام:

name: "vehicles" index: 5 subField { name: "endTimeWindows" index: 2 }

ومع ذلك، نحذف الكيانات ذات المستوى الأعلى، مثل OptimizeToursRequest أو ShipmentModel، لتجنُّب ازدحام الرسالة.

تمثيل JSON
{
  "name": string,
  "subField": {
    object (FieldReference)
  },

  // Union field index_or_key can be only one of the following:
  "index": integer,
  "key": string
  // End of list of possible types for union field index_or_key.
}
الحقول
name

string

اسم الحقل، مثلاً "المركبات".

subField

object (FieldReference)

حقل فرعي متداخل بشكل متكرر، إذا لزم الأمر.

حقل الربط index_or_key

يمكن أن يكون index_or_key واحدًا فقط مما يلي:

index

integer

فهرس الحقل في حال التكرار.

key

string

مفتاح إذا كان الحقل خريطة.

المقاييس

المقاييس العامة، المجمّعة من كل المسارات

تمثيل JSON
{
  "aggregatedRouteMetrics": {
    object (AggregatedMetrics)
  },
  "skippedMandatoryShipmentCount": integer,
  "usedVehicleCount": integer,
  "earliestVehicleStartTime": string,
  "latestVehicleEndTime": string,
  "costs": {
    string: number,
    ...
  },
  "totalCost": number
}
الحقول
aggregatedRouteMetrics

object (AggregatedMetrics)

يتم احتساب هذه النسبة بشكل مجمع على مدار المسارات. يمثّل كل مقياس المجموع (أو الحد الأقصى لعمليات التحميل) في جميع حقول ShipmentRoute.metrics التي تحمل الاسم نفسه.

skippedMandatoryShipmentCount

integer

عدد الشحنات الإلزامية التي تم تخطّيها

usedVehicleCount

integer

عدد المركبات المستخدَمة ملاحظة: إذا كان مسار المركبة فارغًا وكانت قيمة Vehicle.used_if_route_is_empty صحيحة، تُعتبر المركبة مستعملة.

earliestVehicleStartTime

string (Timestamp format)

أقرب وقت بدء لمركبة مستعمَلة، ويتم احتسابه للحد الأدنى من جميع المركبات المستعمَلة من ShipmentRoute.vehicle_start_time

يجب أن يكون طابعًا زمنيًا بالتنسيق RFC3339 UTC "Zulu"‎ وبدقة تصل إلى نانوثانية وما يصل إلى تسعة أرقام كسور. أمثلة: "2014-10-02T15:01:23Z" و"2014-10-02T15:01:23.045123456Z".

latestVehicleEndTime

string (Timestamp format)

آخر وقت انتهاء لمركبة مستعملة، ويتم احتسابه على أنّه الحد الأقصى لجميع المركبات المستعمَلة التي تبلغ ShipmentRoute.vehicle_end_time.

يجب أن يكون طابعًا زمنيًا بالتنسيق RFC3339 UTC "Zulu"‎ وبدقة تصل إلى نانوثانية وما يصل إلى تسعة أرقام كسور. أمثلة: "2014-10-02T15:01:23Z" و"2014-10-02T15:01:23.045123456Z".

costs

map (key: string, value: number)

تكلفة الحلّ، مقسّمة حسب حقول الطلبات ذات الصلة بالتكلفة وتتمثّل القيم الرئيسية في مسارات النماذج الأوّلية، مقارنةً بنموذج OptimizeToursRequest المُدخل، على سبيل المثال "model.shipments.pickups.cost"، والقيم هي إجمالي التكلفة الناتجة عن حقل التكلفة ذي الصلة، والتي تم تجميعها على الحلّ بالكامل. بعبارة أخرى، costs["model.shipments.pickups.cost"] هي مجموع جميع تكاليف الاستلام على مستوى الحلّ. يتمّ إدراج جميع التكاليف المحدّدة في النموذج بالتفصيل هنا باستثناء التكاليف المرتبطة بعناصر TransitionAttributes التي يتمّ إدراجها فقط بطريقة مجمّعة اعتبارًا من 01/2022.

totalCost

number

التكلفة الإجمالية للحلّ مجموع جميع القيم في خريطة التكاليف