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)
  },

  // The following is a list of mutually exclusive fields. At most one of the
  // fields will be set in a response:
  "index": integer,
  "key": string
  // End of mutually exclusive fields.
}
الحقول
name

string

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

subField

object (FieldReference)

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

في ما يلي قائمة بالحقول التي يستبعد كلّ منها الآخر. سيتم ضبط حقل واحد على الأكثر في الرد:
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"] هو مجموع جميع تكاليف الاستلام في الحل. يتم هنا عرض جميع التكاليف المحدّدة في النموذج بالتفصيل، باستثناء التكاليف المتعلّقة بسمات TransitionAttributes التي يتم عرضها بشكل مجمّع فقط اعتبارًا من 2022/01.

totalCost

number

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