OptimizeToursResponse

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

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

object (ShipmentRoute)

المسارات المحسوبة لكل مركبة، ويتطابق المسار رقم i مع المركبة رقم i في النموذج.

requestLabel

string

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

skippedShipments[]

object (SkippedShipment)

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

validationErrors[]

object (OptimizeToursValidationError)

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

processedRequest

object (OptimizeToursRequest)

في بعض الحالات، نعدّل الطلب الوارد قبل حلّه، أي نضيف تكاليف. إذا كانت قيمة solvingMode هي TRANSFORM_AND_RETURN_REQUEST، يتم عرض الطلب المعدَّل هنا.

تجريبي: يمكنك الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request لمزيد من التفاصيل.

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) لأنّ الخطأ الجديد أخفى الخطأ القديم. على سبيل المثال، اطّلِع على "أخطاء متعدّدة".

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

اسم الحقل، مثل "vehicles".

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.

يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: "2014-10-02T15:01:23Z" أو "2014-10-02T15:01:23.045123456Z" أو "2014-10-02T15:01:23+05:30".

latestVehicleEndTime

string (Timestamp format)

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

يستخدم المعيار RFC 3339، حيث يكون الناتج الذي يتم إنشاؤه مُمثلاً بالتوقيت العالمي المنسَّق مع حرف Z في النهاية ويستخدم الأرقام الجزئية 0 أو 3 أو 6 أو 9. تُقبل أيضًا المعادلات الأخرى التي لا تستخدم حرف Z. أمثلة: "2014-10-02T15:01:23Z" أو "2014-10-02T15:01:23.045123456Z" أو "2014-10-02T15:01:23+05:30".

costs

map (key: string, value: number)

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

totalCost

number

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