الفهرس
RouteOptimization(واجهة)AggregatedMetrics(رسالة)BatchOptimizeToursMetadata(رسالة)BatchOptimizeToursRequest(رسالة)BatchOptimizeToursRequest.AsyncModelConfig(رسالة)BatchOptimizeToursResponse(رسالة)BreakRule(رسالة)BreakRule.BreakRequest(رسالة)BreakRule.FrequencyConstraint(رسالة)DataFormat(تعداد)DistanceLimit(رسالة)GcsDestination(رسالة)GcsSource(رسالة)InjectedSolutionConstraint(رسالة)InjectedSolutionConstraint.ConstraintRelaxation(رسالة)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation(رسالة)InjectedSolutionConstraint.ConstraintRelaxation.Relaxation.Level(تعداد)InputConfig(رسالة)Location(رسالة)OptimizeToursLongRunningMetadata(رسالة)OptimizeToursRequest(رسالة)OptimizeToursRequest.SearchMode(تعداد)OptimizeToursRequest.SolvingMode(تعداد)OptimizeToursResponse(رسالة)OptimizeToursResponse.Metrics(رسالة)OptimizeToursUriMetadata(رسالة)OptimizeToursUriRequest(رسالة)OptimizeToursUriResponse(رسالة)OptimizeToursValidationError(رسالة)OptimizeToursValidationError.FieldReference(رسالة)OutputConfig(رسالة)RouteModifiers(رسالة)Shipment(رسالة)Shipment.Load(رسالة)Shipment.VisitRequest(رسالة)ShipmentModel(رسالة)ShipmentModel.DurationDistanceMatrix(رسالة)ShipmentModel.DurationDistanceMatrix.Row(رسالة)ShipmentModel.Objective(رسالة)ShipmentModel.Objective.Type(تعداد)ShipmentModel.PrecedenceRule(رسالة)ShipmentRoute(رسالة)ShipmentRoute.Break(رسالة)ShipmentRoute.EncodedPolyline(رسالة)ShipmentRoute.Transition(رسالة)ShipmentRoute.VehicleLoad(رسالة)ShipmentRoute.Visit(رسالة)ShipmentRoute.Visit.VisitType(تعداد)ShipmentTypeIncompatibility(رسالة)ShipmentTypeIncompatibility.IncompatibilityMode(تعداد)ShipmentTypeRequirement(رسالة)ShipmentTypeRequirement.RequirementMode(تعداد)SkippedShipment(رسالة)SkippedShipment.Reason(رسالة)SkippedShipment.Reason.Code(تعداد)TimeWindow(رسالة)TransitionAttributes(رسالة)Uri(رسالة)Vehicle(رسالة)Vehicle.DurationLimit(رسالة)Vehicle.LoadLimit(رسالة)Vehicle.LoadLimit.Interval(رسالة)Vehicle.LoadLimit.LoadCost(رسالة)Vehicle.TravelMode(تعداد)Vehicle.UnloadingPolicy(تعداد)VehicleFullness(رسالة)Waypoint(رسالة)
RouteOptimization
خدمة لتحسين جولات المركبات
صلاحية أنواع معيّنة من الحقول:
google.protobuf.Timestamp- يتم عرض الأوقات بتوقيت يونكس: الثواني منذ 1970-01-01T00:00:00+00:00.
- يجب أن تكون الثواني بين [0 و253402300799]، أي بين [1970-01-01T00:00:00+00:00 و9999-12-31T23:59:59+00:00].
- يجب عدم ضبط nanos أو ضبطها على 0.
google.protobuf.Duration- يجب أن تكون الثواني بين [0 و253402300799]، أي بين [1970-01-01T00:00:00+00:00 و9999-12-31T23:59:59+00:00].
- يجب عدم ضبط nanos أو ضبطها على 0.
google.type.LatLng- يجب أن يكون خط العرض بين [-90.0 و90.0].
- يجب أن يكون خط الطول بين [-180.0 و180.0].
- يجب أن يكون خط العرض أو خط الطول أو كلاهما بقيمة غير صفرية.
| BatchOptimizeTours |
|---|
|
تحسِّن هذه الطريقة جولات المركبات لرسالة واحدة أو أكثر من رسائل هذه الطريقة هي عملية طويلة (LRO). تتم قراءة المدخلات الخاصة بالتحسين (رسائل يمكن للمستخدم إجراء استطلاع على إذا كانت قيمة الحقل إذا كان الحقل
|
| OptimizeTours |
|---|
|
يتم إرسال يتكوّن نموذج الهدف هو توفير مهمة من
|
| OptimizeToursLongRunning |
|---|
|
هذا هو أحد خيارات طريقة ستحمل العملية
|
| OptimizeToursUri |
|---|
|
هذا خيار من طريقة يحدّد العميل معرّف الموارد المنتظم (URI) لـ يجب تفضيل هذه الطريقة على طريقة ستحمل العملية
|
AggregatedMetrics
المقاييس المجمّعة لـ "ShipmentRoute" (أو "OptimizeToursResponse") على مستوى جميع عناصر "Transition" و/أو "Visit" (أو على مستوى جميع عناصر "ShipmentRoute").
| الحقول | |
|---|---|
performed_shipment_count |
عدد الشحنات التي تم إجراؤها يُرجى العِلم أنّ زوج الاستلام والتسليم يُحتسب مرّة واحدة فقط. |
travel_duration |
إجمالي مدة السفر لمسار أو حلّ |
wait_duration |
إجمالي مدة الانتظار لمسار أو حلّ |
delay_duration |
إجمالي مدة التأخير لمسار أو حلّ |
break_duration |
إجمالي مدة الاستراحة لمسار أو حلّ |
visit_duration |
إجمالي مدة الزيارة لمسار أو حلّ |
total_duration |
يجب أن تكون المدة الإجمالية مساوية لمجموع كل المدد المذكورة أعلاه. بالنسبة إلى المسارات، يتوافق أيضًا مع: |
travel_distance_meters |
إجمالي مسافة السفر لمسار أو حلّ |
max_loads |
الحد الأقصى للحمولة التي تم تحقيقها على المسار بأكمله (أو الحل)، لكل كمية على هذا المسار (أو الحل)، ويتم احتسابها كحد أقصى على جميع |
performed_mandatory_shipment_count |
عدد عمليات الشحن الإلزامية التي تم إجراؤها تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
performed_shipment_penalty_cost_sum |
مجموع تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
BatchOptimizeToursMetadata
هذا النوع لا يحتوي على حقول.
البيانات الوصفية لعمليات طلبات BatchOptimizeToursRequest
BatchOptimizeToursRequest
طلب تحسين الجولات بشكل مجمّع كعملية غير متزامنة يجب أن يحتوي كل ملف إدخال على OptimizeToursRequest واحد، وسيحتوي كل ملف إخراج على OptimizeToursResponse واحد. يحتوي الطلب على معلومات لقراءة/كتابة الملفات وتحليلها. يجب أن تكون جميع ملفات الإدخال والإخراج ضمن المشروع نفسه.
| الحقول | |
|---|---|
parent |
الحقل مطلوب. يُرجى تحديد المشروع والموقع الجغرافي المستهدفَين لإجراء مكالمة. التنسيق:
لا تتوفّر قيم |
model_configs[] |
الحقل مطلوب. معلومات الإدخال/الإخراج لكل نموذج شراء، مثل مسارات الملفات وتنسيقات البيانات |
AsyncModelConfig
معلومات لحلّ نموذج تحسين واحد بشكل غير متزامن
| الحقول | |
|---|---|
display_name |
اختيارية: اسم النموذج الذي يحدّده المستخدم، ويمكن استخدامه كاسم بديل من قِبل المستخدمين لتتبُّع النماذج. |
input_config |
الحقل مطلوب. معلومات عن النموذج المُدخل |
output_config |
الحقل مطلوب. معلومات الموقع الجغرافي المطلوب للإخراج |
BatchOptimizeToursResponse
هذا النوع لا يحتوي على حقول.
الردّ على BatchOptimizeToursRequest يتم عرض هذه القيمة في "العملية الطويلة" بعد اكتمال العملية.
BreakRule
قواعد لإنشاء فترات استراحة لمركبة (مثل فترات استراحة الغداء) الاستراحة هي فترة زمنية متواصلة تظل فيها المركبة متوقفة في موضعها الحالي ولا يمكنها إجراء أي زيارة. قد يحدث انقطاع في الحالات التالية:
- أثناء التنقّل بين زيارتَين (بما في ذلك الوقت الذي يسبق الزيارة مباشرةً أو يليها مباشرةً، ولكن ليس في منتصف الزيارة)، وفي هذه الحالة يتم تمديد مدة النقل المقابلة بين الزيارتَين
- أو قبل بدء تشغيل المركبة (قد لا تبدأ المركبة في منتصف فترة الاستراحة)، وفي هذه الحالة لا يؤثر ذلك في وقت بدء تشغيل المركبة.
- أو بعد انتهاء المركبة (أيضًا، مع وقت انتهاء المركبة).
| الحقول | |
|---|---|
break_requests[] |
تسلسل الفواصل اطّلِع على رسالة |
frequency_constraints[] |
قد تنطبق عدة |
BreakRequest
يجب معرفة تسلسل فترات الاستراحة (أي عددها وترتيبها) التي تنطبق على كل مركبة مسبقًا. وتحدّد مَعلمات BreakRequest المتكرّرة هذا التسلسل، بالترتيب الذي يجب أن تحدث به. قد تتداخل النوافذ الزمنية (earliest_start_time / latest_start_time)، ولكن يجب أن تكون متوافقة مع الطلب (يتم التحقّق من ذلك).
| الحقول | |
|---|---|
earliest_start_time |
الحقل مطلوب. الحدّ الأدنى (شامل) لبداية الاستراحة |
latest_start_time |
الحقل مطلوب. الحدّ الأقصى (شاملاً) لبداية الاستراحة |
min_duration |
الحقل مطلوب. الحدّ الأدنى لمدة الفاصل الإعلاني يجب أن تكون القيمة موجبة. |
FrequencyConstraint
يمكن فرض قيود إضافية على معدّل تكرار الاستراحات ومدتها المحدّدة أعلاه، وذلك من خلال فرض حدّ أدنى لمعدّل تكرار الاستراحات، مثل "يجب أن تكون هناك استراحة لمدة ساعة واحدة على الأقل كل 12 ساعة". بافتراض أنّه يمكن تفسير ذلك على أنّه "ضمن أي فترة زمنية متغيّرة مدتها 12 ساعة، يجب أن تكون هناك استراحة واحدة على الأقل لمدة ساعة واحدة على الأقل"، سيتم ترجمة هذا المثال إلى FrequencyConstraint التالية:
{
min_break_duration { seconds: 3600 } # 1 hour.
max_inter_break_duration { seconds: 39600 } # 11 hours (12 - 1 = 11).
}
سيراعي توقيت الاستراحات ومدتها في الحلّ جميع هذه القيود، بالإضافة إلى النوافذ الزمنية والحد الأدنى للمدد المحدّدة في BreakRequest.
قد ينطبق FrequencyConstraint من الناحية العملية على فترات الراحة غير المتتالية. على سبيل المثال، يلتزم الجدول الزمني التالي بمثال "ساعة واحدة كل 12 ساعة":
04:00 vehicle start
.. performing travel and visits ..
09:00 1 hour break
10:00 end of the break
.. performing travel and visits ..
12:00 20-min lunch break
12:20 end of the break
.. performing travel and visits ..
21:00 1 hour break
22:00 end of the break
.. performing travel and visits ..
23:59 vehicle end
| الحقول | |
|---|---|
min_break_duration |
الحقل مطلوب. الحدّ الأدنى لمدة الاستراحة لهذا القيد يجب أن تكون القيمة غير سالبة. اطّلِع على وصف |
max_inter_break_duration |
الحقل مطلوب. الحد الأقصى المسموح به لأي فاصل زمني في المسار لا يتضمّن استراحة لمدة |
DataFormat
تنسيقات البيانات لملفات الإدخال والإخراج
| عمليات التعداد | |
|---|---|
DATA_FORMAT_UNSPECIFIED |
القيمة غير صالحة، ويجب ألا يكون التنسيق UNSPECIFIED. |
JSON |
JavaScript Object Notation |
PROTO_TEXT |
تنسيق نص Protocol Buffers يُرجى الاطّلاع على https://protobuf.dev/reference/protobuf/textformat-spec/ |
DistanceLimit
حدّ يحدّد أقصى مسافة يمكن قطعها ويمكن أن يكون الارتداد قويًا أو خفيفًا.
في حال تحديد حدّ أقصى مرن، يجب تحديد كل من soft_max_meters وcost_per_kilometer_above_soft_max وأن يكونا غير سالبَين.
| الحقول | |
|---|---|
max_meters |
حدّ صارم يفرض أن تكون المسافة بحدّ أقصى max_meters. يجب أن يكون الحدّ الأقصى غير سالب. |
soft_max_meters |
حدّ مرن لا يفرض حدًّا أقصى للمسافة، ولكن عند تجاوزه، يؤدي إلى تكلفة تُضاف إلى التكاليف الأخرى المحدّدة في النموذج، بالوحدة نفسها. إذا تم تحديد soft_max_meters، يجب أن تكون قيمتها أقل من max_meters وغير سالبة. |
cost_per_kilometer_below_soft_max |
التكلفة لكل كيلومتر، وتزداد حتى هذه التكلفة غير متاحة في |
cost_per_kilometer_above_soft_max |
التكلفة لكل كيلومتر في حال تجاوزت المسافة الحدّ الأقصى البالغ يجب أن تكون التكلفة غير سالبة. |
GcsDestination
موقع Google Cloud Storage الذي ستتم كتابة ملفات الإخراج فيه
| الحقول | |
|---|---|
uri |
الحقل مطلوب. معرّف الموارد المنتظم (URI) لخدمة Google Cloud Storage |
GcsSource
موقع Google Cloud Storage الذي ستتم قراءة ملف الإدخال منه
| الحقول | |
|---|---|
uri |
الحقل مطلوب. معرّف الموارد المنتظم (URI) لعنصر Google Cloud Storage بالتنسيق |
InjectedSolutionConstraint
الحلّ الذي تم إدخاله في الطلب، بما في ذلك معلومات حول الزيارات التي يجب تقييدها وكيفية تقييدها
| الحقول | |
|---|---|
routes[] |
مسارات الحلول التي سيتم حقنها قد يتم حذف بعض المسارات من الحلّ الأصلي. يجب أن تستوفي المسارات والشحنات التي تم تخطّيها افتراضات الصلاحية الأساسية المدرَجة في |
skipped_shipments[] |
الشحنات التي تم تخطّيها من الحلّ المطلوب إدخاله قد يتم حذف بعضها من الحل الأصلي. يُرجى الاطّلاع على حقل |
constraint_relaxations[] |
بالنسبة إلى صفر أو أكثر من مجموعات المركبات، يحدّد هذا الحقل متى يتم تخفيف القيود ومقدار ذلك. إذا كان هذا الحقل فارغًا، يتم فرض قيود كاملة على جميع مسارات المركبات غير الفارغة. |
ConstraintRelaxation
بالنسبة إلى مجموعة من المركبات، يحدّد هذا الحقل الحدّ الأدنى الذي سيتم عنده تخفيف القيود المفروضة على الزيارات وإلى أي مستوى. يتم تخطّي الشحنات المدرَجة في الحقل skipped_shipment، أي لا يمكن تنفيذها.
| الحقول | |
|---|---|
relaxations[] |
جميع عمليات تخفيف قيود الزيارات التي سيتم تطبيقها على الزيارات في المسارات التي تتضمّن مركبات في |
vehicle_indices[] |
تحدّد هذه السمة فهارس المركبات التي ينطبق عليها قيد الزيارة يتم ربط فهرس المركبة بالطريقة نفسها التي يتم بها ربط |
موسيقى استرخاء
إذا كان الحقل relaxations فارغًا، يتم تقييد وقت البدء وتسلسل جميع الزيارات في routes بالكامل، ولا يمكن إدراج زيارات جديدة أو إضافتها إلى هذه المسارات. بالإضافة إلى ذلك، يكون وقت بدء المركبة وانتهائها في routes مقيّدًا بالكامل، ما لم تكن المركبة فارغة (أي لا تتضمّن أي محطات وتم ضبط used_if_route_is_empty على "خطأ" في النموذج).
تحدّد السمة relaxations(i).level مستوى تخفيف القيود المطبَّق على الزيارة j #التي تستوفي الشروط التالية:
route.visits(j).start_time >= relaxations(i).threshold_timeوj + 1 >= relaxations(i).threshold_visit_count
وبالمثل، يتم تخفيف وقت بدء المركبة إلى relaxations(i).level إذا كان يستوفي الشروط التالية:
vehicle_start_time >= relaxations(i).threshold_timeو- يتم تخفيف
relaxations(i).threshold_visit_count == 0ونهاية المركبة إلىrelaxations(i).levelإذا كان يستوفي ما يلي: vehicle_end_time >= relaxations(i).threshold_timeوroute.visits_size() + 1 >= relaxations(i).threshold_visit_count
لتطبيق مستوى تخفيف إذا كانت الزيارة تستوفي threshold_visit_count أو threshold_time، أضِف relaxations مع level نفسه: أحدهما مع ضبط threshold_visit_count فقط والآخر مع ضبط threshold_time فقط. إذا استوفت الزيارة شروط relaxations متعددة، يتم تطبيق المستوى الأكثر تساهلاً. نتيجةً لذلك، من بداية المركبة إلى نهاية المركبة، يصبح مستوى الاسترخاء أكثر استرخاءً: أي أنّ مستوى الاسترخاء لا ينخفض مع تقدّم المسار.
إنّ توقيت وتسلسل زيارات المسار التي لا تستوفي شروط الحد الأدنى لأي relaxations تكون مقيّدة بالكامل ولا يجوز إدراج أي زيارات في هذه التسلسلات. بالإضافة إلى ذلك، إذا لم تستوفِ بداية المركبة أو نهايتها شروط أي تخفيف، يتم تثبيت الوقت، ما لم تكن المركبة فارغة.
| الحقول | |
|---|---|
level |
مستوى تخفيف القيود الذي ينطبق عند استيفاء الشروط في |
threshold_time |
الوقت الذي يمكن فيه تطبيق الاسترخاء |
threshold_visit_count |
عدد الزيارات التي يمكن تطبيق الاسترخاء إذا كانت القيمة |
المستوى
يعبّر عن مستويات تخفيف القيود المختلفة التي يتم تطبيقها على زيارة معيّنة والزيارات التي تليها عندما تستوفي شروط الحدّ الأدنى.
يكون التعداد أدناه بترتيب تصاعدي حسب مستوى التخفيف.
| عمليات التعداد | |
|---|---|
LEVEL_UNSPECIFIED |
مستوى التخفيف التلقائي الضمني: لا يتم تخفيف أي قيود، أي أنّ جميع الزيارات مقيّدة بالكامل. يجب عدم استخدام هذه القيمة بشكل صريح في |
RELAX_VISIT_TIMES_AFTER_THRESHOLD |
سيتم تخفيف أوقات بدء الزيارة وأوقات بدء/انتهاء المركبة، ولكن تظل كل زيارة مرتبطة بالمركبة نفسها ويجب مراعاة تسلسل الزيارة: لا يمكن إدراج أي زيارة بينهما أو قبلهما. |
RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD |
تتطابق هذه الحالة مع RELAX_VISIT_TIMES_AFTER_THRESHOLD، ولكن يتم أيضًا تخفيف تسلسل الزيارات: لا يمكن إجراء الزيارات إلا من خلال هذه المركبة، ولكن من المحتمل أن تصبح غير مُنفَّذة. |
RELAX_ALL_AFTER_THRESHOLD |
تتطابق هذه الحالة مع RELAX_VISIT_TIMES_AND_SEQUENCE_AFTER_THRESHOLD، ولكن يتم أيضًا تخفيف القيود على المركبة: تكون الزيارات مجانية تمامًا في وقت الحدّ الأدنى أو بعده، وقد لا يتم تنفيذها. |
InputConfig
يُرجى تحديد إدخال لـ [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| الحقول | |
|---|---|
data_format |
الحقل مطلوب. تنسيق بيانات الإدخال |
حقل الربط source الحقل مطلوب. يمكن أن يكون التعليق source إحدى القيم التالية فقط: |
|
gcs_source |
موقع Google Cloud Storage يجب أن يكون هذا كائنًا واحدًا (ملفًا). |
الموقع الجغرافي
تتضمّن موقعًا جغرافيًا (نقطة جغرافية وعنوانًا اختياريًا).
| الحقول | |
|---|---|
lat_lng |
الإحداثيات الجغرافية للنقطة على المسار |
heading |
تمثّل هذه السمة اتجاه البوصلة المرتبط باتجاه تدفق حركة المرور. تُستخدَم هذه القيمة لتحديد جانب الطريق الذي يجب استخدامه للركوب والنزول. يمكن أن تتراوح قيم الاتجاه من 0 إلى 360، حيث يشير الرقم 0 إلى اتجاه الشمال، ويشير الرقم 90 إلى اتجاه الشرق، وما إلى ذلك. |
OptimizeToursLongRunningMetadata
هذا النوع لا يحتوي على حقول.
البيانات الوصفية لعمليات طلبات OptimizeToursLongRunning
OptimizeToursRequest
طلب يتم تقديمه إلى أداة حلّ تحسين الجولات التي تحدّد نموذج الشحنة المطلوب حلّه بالإضافة إلى مَعلمات التحسين
| الحقول | |
|---|---|
parent |
الحقل مطلوب. يُرجى تحديد المشروع أو الموقع الجغرافي المستهدَف لإجراء مكالمة. التنسيق:
لا تتوفّر قيم |
timeout |
إذا تم ضبط هذه المهلة، يعرض الخادم استجابة قبل انقضاء فترة المهلة أو الوصول إلى الموعد النهائي للخادم للطلبات المتزامنة، أيهما أقرب. بالنسبة إلى الطلبات غير المتزامنة، سينشئ الخادم حلاً (إن أمكن) قبل انتهاء المهلة. |
model |
نموذج الشحنة المطلوب حلّه |
solving_mode |
يكون وضع الحلّ التلقائي هو |
search_mode |
وضع البحث المستخدَم لحلّ الطلب |
injected_first_solution_routes[] |
توجيه خوارزمية التحسين في العثور على حل أول مشابه لحل سابق. يتم تقييد النموذج عند إنشاء الحل الأول. يتم تخطّي أي شحنات لم يتم تنفيذها على مسار ضمنيًا في الحل الأول، ولكن يمكن تنفيذها في الحلول المتتالية. يجب أن يستوفي الحل بعض افتراضات الصلاحية الأساسية:
إذا لم يكن الحلّ المُدخل ممكنًا، لن يتم بالضرورة عرض خطأ في عملية التحقّق، وقد يتم عرض خطأ يشير إلى عدم إمكانية التنفيذ بدلاً من ذلك. |
injected_solution_constraint |
تقييد خوارزمية التحسين للعثور على حل نهائي مشابه لحل سابق على سبيل المثال، يمكن استخدام هذا الخيار لتجميد أجزاء من المسارات التي تم إكمالها أو التي سيتم إكمالها ولكن يجب عدم تعديلها. إذا لم يكن الحلّ المُدخل ممكنًا، لن يتم بالضرورة عرض خطأ في عملية التحقّق، وقد يتم عرض خطأ يشير إلى عدم إمكانية التنفيذ بدلاً من ذلك. |
refresh_details_routes[] |
إذا لم تكن فارغة، ستتم إعادة تحميل المسارات المحدّدة بدون تعديل تسلسل الزيارات أو مُدد الرحلات الأساسية: سيتم تعديل التفاصيل الأخرى فقط. لا يؤدي هذا إلى حل النموذج. اعتبارًا من نوفمبر 2020، لا يؤدي هذا إلا إلى تعبئة الخطوط المتعدّدة للمسارات غير الفارغة ويتطلّب ضبط قد تكون حقول يجب عدم استخدام هذا الحقل مع ولا تؤثر السمتان |
interpret_injected_solutions_using_labels |
إذا كانت القيمة صحيحة:
ينطبق هذا التفسير على الحقول إذا كانت القيمة هي true، يجب أن تظهر التصنيفات في الفئات التالية مرة واحدة على الأكثر في فئتها:
إذا لم يتطابق قد تؤثر إزالة زيارات المسارات أو المسارات بأكملها من حلّ تم إدخاله في القيود الضمنية، ما قد يؤدي إلى تغيير في الحلّ أو أخطاء في التحقّق أو عدم إمكانية التنفيذ. ملاحظة: يجب أن يضمن المتصل أنّ كل |
consider_road_traffic |
يُرجى مراعاة تقدير عدد الزيارات عند احتساب حقول |
populate_polylines |
في حال ضبط هذه المَعلمة على "صحيح"، ستتم تعبئة الخطوط المتعدّدة في الردود |
populate_transition_polylines |
إذا كانت القيمة "صحيح"، سيتم ملء الخطوط المتعدّدة ورموز المسارات في الردّ |
allow_large_deadline_despite_interruption_risk |
في حال ضبط هذا الخيار، يمكن أن يكون للطلب موعد نهائي (يُرجى الاطّلاع على https://grpc.io/blog/deadlines) يصل إلى 60 دقيقة. وإلا، فإن الحد الأقصى للموعد النهائي هو 30 دقيقة فقط. يُرجى العِلم أنّ الطلبات الطويلة الأمد تكون أكثر عرضة للمقاطعة (ولكن تظلّ نسبة المخاطر منخفضة). |
use_geodesic_distances |
إذا كانت القيمة صحيحة، سيتم احتساب مسافات السفر باستخدام المسافات الجيوديسية بدلاً من مسافات "خرائط Google"، وسيتم احتساب مُدد الرحلات باستخدام المسافات الجيوديسية مع سرعة يحدّدها الحقل |
label |
تصنيف يمكن استخدامه لتحديد هذا الطلب، ويتم إرساله مرة أخرى في |
geodesic_meters_per_second |
عندما تكون قيمة |
max_validation_errors |
يتم اقتطاع عدد أخطاء التحقّق من الصحة التي يتم عرضها. يتم عادةً إرفاق هذه الأخطاء بحمولة خطأ INVALID_ARGUMENT كتفاصيل خطأ BadRequest (https://cloud.google.com/apis/design/errors#error_details)، ما لم يكن solving_mode=VALIDATE_ONLY: راجِع الحقل |
SearchMode
الوضع الذي يحدّد سلوك البحث، والموازنة بين وقت الاستجابة وجودة الحلّ في جميع الأوضاع، يتم فرض الموعد النهائي العام للطلبات.
| عمليات التعداد | |
|---|---|
SEARCH_MODE_UNSPECIFIED |
وضع بحث غير محدّد، يعادل RETURN_FAST. |
RETURN_FAST |
أوقِف البحث بعد العثور على أول حل جيد. |
CONSUME_ALL_AVAILABLE_TIME |
قضاء كل الوقت المتاح للبحث عن حلول أفضل. |
SolvingMode
تحدّد هذه السمة كيفية تعامل أداة الحلّ مع الطلب. في جميع الأوضاع باستثناء VALIDATE_ONLY، إذا كان الطلب غير صالح، ستتلقّى خطأ INVALID_REQUEST. يمكنك الاطّلاع على max_validation_errors لتحديد الحد الأقصى لعدد الأخطاء التي يتم عرضها.
| عمليات التعداد | |
|---|---|
DEFAULT_SOLVE |
حلّ النموذج قد يتم إصدار تحذيرات في [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
يتحقّق من صحة النموذج فقط بدون حلّه: يملأ أكبر عدد ممكن من OptimizeToursResponse.validation_errors. |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
يملأ فقط ملاحظة مهمة: لا يتم عرض جميع الشحنات غير الصالحة هنا، بل يتم عرض الشحنات التي تم رصدها على أنّها غير صالحة أثناء المعالجة المُسبقة فقط. |
TRANSFORM_AND_RETURN_REQUEST |
لا يعمل هذا الوضع إلا إذا لم يكن الحقل ميزة تجريبية: يُرجى الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request لمزيد من التفاصيل. |
OptimizeToursResponse
الردّ بعد حلّ مشكلة تحسين الجولة التي تحتوي على المسارات التي تتبعها كل مركبة، والشحنات التي تم تخطّيها، والتكلفة الإجمالية للحلّ.
| الحقول | |
|---|---|
routes[] |
المسارات المحسوبة لكل مركبة، حيث يتوافق المسار i مع المركبة i في النموذج. |
request_label |
نسخة من |
skipped_shipments[] |
قائمة بجميع الشحنات التي تم تخطّيها |
validation_errors[] |
قائمة بجميع أخطاء التحقّق التي تمكّنا من رصدها بشكل مستقل يُرجى الاطّلاع على شرح "أخطاء متعددة" لرسالة |
processed_request |
في بعض الحالات، نعدّل الطلب الوارد قبل حلّه، أي نضيف التكاليف. إذا كانت قيمة solving_mode تساوي TRANSFORM_AND_RETURN_REQUEST، يتم عرض الطلب المعدَّل هنا. ميزة تجريبية: يُرجى الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request لمزيد من التفاصيل. |
metrics |
مقاييس المدة والمسافة والاستخدام لهذا الحلّ |
المقاييس
المقاييس الإجمالية، مجمّعة على مستوى جميع المسارات
| الحقول | |
|---|---|
aggregated_route_metrics |
يتم تجميعها على مستوى المسارات. كل مقياس هو مجموع (أو الحد الأقصى، لعمليات التحميل) لجميع حقول |
skipped_mandatory_shipment_count |
عدد الشحنات الإلزامية التي تم تخطّيها |
used_vehicle_count |
عدد المركبات المستخدَمة ملاحظة: إذا كان مسار المركبة فارغًا وكانت قيمة |
earliest_vehicle_start_time |
أقرب وقت بدء لمركبة مستخدَمة، ويتم احتسابه كأدنى قيمة لجميع المركبات المستخدَمة في |
latest_vehicle_end_time |
آخر وقت انتهاء لمركبة مستخدَمة، ويتم احتسابه كحد أقصى لجميع المركبات المستخدَمة في |
costs |
تكلفة الحلّ، مقسّمة حسب حقول الطلبات ذات الصلة بالتكلفة المفاتيح هي مسارات أولية، نسبةً إلى طلب OptimizeToursRequest المُدخل، مثل "model.shipments.pickups.cost"، والقيم هي إجمالي التكلفة التي تم إنشاؤها بواسطة حقل التكلفة المقابل، ويتم تجميعها على مستوى الحلّ بالكامل. بمعنى آخر، costs["model.shipments.pickups.cost"] هو مجموع كل تكاليف الاستلام في الحلّ. يتم هنا عرض تفاصيل جميع التكاليف المحدّدة في النموذج، باستثناء التكاليف المرتبطة بسمات TransitionAttributes التي يتم عرضها بشكل مجمّع فقط اعتبارًا من يناير 2022. |
total_cost |
التكلفة الإجمالية للحلّ مجموع كل القيم في خريطة التكاليف. |
OptimizeToursUriMetadata
هذا النوع لا يحتوي على حقول.
البيانات الوصفية لعمليات طلبات OptimizeToursUri
OptimizeToursUriRequest
طلب تستخدمه طريقة OptimizeToursUri.
| الحقول | |
|---|---|
parent |
الحقل مطلوب. يُرجى تحديد المشروع أو الموقع الجغرافي المستهدَف لإجراء مكالمة. التنسيق:
لا تتوفّر قيم |
input |
الحقل مطلوب. معرّف الموارد المنتظم (URI) لعنصر Cloud Storage الذي يحتوي على |
output |
الحقل مطلوب. معرّف الموارد المنتظم (URI) لعنصر Cloud Storage الذي سيحتوي على |
OptimizeToursUriResponse
ردّ يتم عرضه من خلال طريقة OptimizeToursUri.
| الحقول | |
|---|---|
output |
اختيارية: معرّف الموارد المنتظم (URI) لعنصر Cloud Storage الذي يحتوي على يمكن استخدام |
OptimizeToursValidationError
يصف هذا الحقل خطأ أو تحذيرًا حدث أثناء التحقّق من صحة OptimizeToursRequest.
| الحقول | |
|---|---|
code |
يتم تحديد خطأ التحقّق من خلال الزوج ( توفّر الحقول التي تلي هذا القسم مزيدًا من السياق حول الخطأ. أخطاء متعددة: في حال حدوث أخطاء متعددة، تحاول عملية التحقّق من الصحة إخراج العديد منها. مثل برنامج التجميع، هذه العملية غير مثالية. ستكون بعض أخطاء التحقّق "خطيرة"، ما يعني أنّها ستوقف عملية التحقّق بأكملها. وينطبق ذلك على أخطاء الثبات: يجب أن يكون كل من |
display_name |
الاسم المعروض للخطأ |
fields[] |
قد يتضمّن سياق الخطأ صفرًا أو حقلًا واحدًا (في معظم الأحيان) أو أكثر. على سبيل المثال، يمكن الإشارة إلى المركبة رقم 4 وأول عملية استلام للشحنة رقم 2 على النحو التالي: يُرجى العِلم أنّه يجب عدم تغيير عدد القيم الفريدة للسمة |
error_message |
سلسلة يمكن لشخص عادي قراءتها تصف الخطأ هناك ربط بين الثبات: غير ثابتة، فقد تتغيّر رسالة الخطأ المرتبطة بـ |
offending_values |
قد يحتوي على قيم الحقول. قد لا يكون هذا الخيار متاحًا في بعض الأحيان. لذا، يجب عدم الاعتماد عليه واستخدامه فقط لتصحيح أخطاء النموذج يدويًا. |
FieldReference
يحدّد سياقًا لخطأ التحقّق من الصحة. يشير FieldReference دائمًا إلى حقل معيّن في هذا الملف ويتّبع البنية الهرمية نفسها. على سبيل المثال، يمكننا تحديد العنصر رقم 2 من start_time_windows للمركبة رقم 5 باستخدام:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
ومع ذلك، نحذف الكيانات ذات المستوى الأعلى، مثل OptimizeToursRequest أو ShipmentModel، لتجنُّب ازدحام الرسالة.
| الحقول | |
|---|---|
name |
اسم الحقل، مثل "vehicles". |
sub_field |
حقل فرعي متداخل بشكل متكرر، إذا لزم الأمر. |
حقل الربط يمكن أن يكون التعليق |
|
index |
فهرس الحقل إذا كان متكررًا |
key |
المفتاح إذا كان الحقل خريطة |
OutputConfig
حدِّد وجهة لنتائج [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
| الحقول | |
|---|---|
data_format |
الحقل مطلوب. تنسيق بيانات الناتج |
حقل الربط destination الحقل مطلوب. يمكن أن يكون التعليق destination إحدى القيم التالية فقط: |
|
gcs_destination |
موقع Google Cloud Storage الذي ستتم كتابة الناتج فيه |
RouteModifiers
تتضمّن مجموعة من الشروط الاختيارية التي يجب استيفاؤها عند احتساب مسارات المركبات. يشبه هذا الحقل RouteModifiers في Routes Preferred API ضمن "منصة خرائط Google". يُرجى الاطّلاع على: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
| الحقول | |
|---|---|
avoid_tolls |
تحدّد هذه السياسة ما إذا كان يجب تجنّب الطرق برسوم عبور حيثما أمكن. ستُعطى الأولوية للمسارات التي لا تحتوي على طرق برسوم عبور. ينطبق ذلك على وسائل النقل الآلية فقط. |
avoid_highways |
تحدّد ما إذا كان يجب تجنّب الطرق السريعة حيثما أمكن. سيتم إعطاء الأولوية للمسارات التي لا تحتوي على طرق سريعة. ينطبق ذلك على وسائل النقل الآلية فقط. |
avoid_ferries |
تحدّد ما إذا كان يجب تجنُّب العبّارات حيثما أمكن. سيتم إعطاء الأولوية للمسارات التي لا تتضمّن السفر بالعبّارات. ينطبق ذلك على وسائل النقل الآلية فقط. |
avoid_indoor |
اختيارية: تحدّد ما إذا كان يجب تجنُّب التنقّل داخل المباني حيثما كان ذلك معقولاً. ستُعطى الأولوية للمسارات التي لا تحتوي على ميزة التنقّل داخل المباني. ينطبق ذلك على وضع السفر " |
الشحن
شحنة سلعة واحدة، من إحدى عمليات الاستلام إلى إحدى عمليات التسليم. لكي يتم اعتبار الشحنة على أنّها تم تنفيذها، يجب أن تزور مركبة فريدة أحد مواقع الاستلام (وتقلّل من سعاتها الاحتياطية وفقًا لذلك)، ثم تزور أحد مواقع التسليم لاحقًا (وبالتالي تزيد من سعاتها الاحتياطية وفقًا لذلك).
| الحقول | |
|---|---|
display_name |
الاسم المعروض للشحنة الذي يحدّده المستخدم ويمكن أن يصل طوله إلى 63 حرفًا، ويمكن أن يستخدم أحرف UTF-8. |
pickups[] |
مجموعة من بدائل الاستلام المرتبطة بالشحنة في حال عدم تحديدها، يجب أن تزور المركبة فقط الموقع الجغرافي المقابل لعمليات التسليم. |
deliveries[] |
مجموعة من بدائل التسليم المرتبطة بالشحنة في حال عدم تحديدها، يجب أن تزور المركبة فقط موقعًا جغرافيًا يتوافق مع عمليات الاستلام. |
load_demands |
متطلبات حمولة الشحنة (مثل الوزن والحجم وعدد المنصات النقالة وما إلى ذلك) يجب أن تكون المفاتيح في الخريطة معرّفات تصف نوع الحمولة المقابلة، ومن الأفضل أن تتضمّن أيضًا الوحدات. على سبيل المثال: "weight_kg" و"volume_gallons" و"pallet_count" وما إلى ذلك. إذا لم يظهر مفتاح معيّن في الخريطة، يتم اعتبار الحمولة المقابلة فارغة. |
allowed_vehicle_indices[] |
مجموعة المركبات التي قد تنفّذ عملية الشحن هذه إذا كان هذا الحقل فارغًا، يمكن لجميع المركبات تنفيذ المهمة. يتم تحديد المركبات من خلال فهرسها في قائمة |
costs_per_vehicle[] |
يحدّد التكلفة التي يتم تحمّلها عند تسليم هذه الشحنة بواسطة كل مركبة. في حال تحديدها، يجب أن تتضمّن أيًا مما يلي:
يجب أن تكون هذه التكاليف بالوحدة نفسها المستخدَمة في |
costs_per_vehicle_indices[] |
فهارس المركبات التي تنطبق عليها السمة |
pickup_to_delivery_absolute_detour_limit |
تحدّد هذه السمة الحد الأقصى المطلق لوقت الانحراف عن المسار مقارنةً بأقصر مسار من نقطة الاستلام إلى نقطة التسليم. إذا تم تحديد هذه السمة، يجب أن تكون غير سالبة، ويجب أن تحتوي الشحنة على عملية استلام واحدة وعملية تسليم واحدة على الأقل. على سبيل المثال، لنفترض أنّ t هو أقصر وقت يستغرقه الانتقال من بديل الاستلام المحدّد مباشرةً إلى بديل التسليم المحدّد. بعد ذلك، يفرض الإعداد إذا تم تحديد كل من الحدود النسبية والمطلقة في الشحنة نفسها، يتم استخدام الحد الأكثر تقييدًا لكل زوج ممكن من عمليات الاستلام/التسليم. اعتبارًا من تشرين الأول (أكتوبر) 2017، لا يُسمح بالانحرافات إلا عندما لا تعتمد مدة السفر على المركبات. |
pickup_to_delivery_time_limit |
تحدّد هذه السمة الحدّ الأقصى للمدة من بداية استلام الشحنة إلى بداية تسليمها. إذا تم تحديد هذه السمة، يجب أن تكون غير سالبة، ويجب أن تحتوي الشحنة على عملية استلام واحدة وعملية تسليم واحدة على الأقل. ولا يعتمد ذلك على البدائل التي يتم اختيارها للاستلام والتسليم، ولا على سرعة المركبة. يمكن تحديد ذلك إلى جانب قيود الحد الأقصى للانحراف: سيلتزم الحلّ بكلا المواصفتَين. |
shipment_type |
سلسلة غير فارغة تحدّد "نوع" هذه الشحنة. يمكن استخدام هذه الميزة لتحديد حالات عدم التوافق أو المتطلبات بين تختلف هذه السمة عن |
label |
تحدّد هذه السمة تصنيفًا لهذه الشحنة. يتم عرض هذا التصنيف في الردّ في الحقل |
ignore |
إذا كانت القيمة "صحيح"، يتم تخطّي هذه الشحنة، ولكن لا يتم تطبيق يؤدي تجاهل شحنة إلى حدوث خطأ في عملية التحقّق في حال توفّر أي يُسمح بتجاهل شحنة يتم تنفيذها في |
penalty_cost |
إذا لم تكتمل الشحنة، تتم إضافة هذه الغرامة إلى التكلفة الإجمالية للمسارات. تُعتبر الشحنة مكتملة إذا تمت زيارة أحد بدائل الاستلام والتسليم. يمكن التعبير عن التكلفة بالوحدة نفسها المستخدَمة لجميع الحقول الأخرى ذات الصلة بالتكلفة في النموذج، ويجب أن تكون موجبة. ملاحظة مهمة: إذا لم يتم تحديد هذه الغرامة، تُعتبر غير محدودة، أي يجب إكمال الشحنة. |
pickup_to_delivery_relative_detour_limit |
تحدّد هذه السمة الحد الأقصى للوقت النسبي للانعطاف مقارنةً بأقصر مسار من نقطة الاستلام إلى نقطة التسليم. إذا تم تحديد هذه السمة، يجب أن تكون غير سالبة، ويجب أن تحتوي الشحنة على عملية استلام واحدة وعملية تسليم واحدة على الأقل. على سبيل المثال، لنفترض أنّ t هو أقصر وقت يستغرقه الانتقال من بديل الاستلام المحدّد مباشرةً إلى بديل التسليم المحدّد. بعد ذلك، يفرض الإعداد إذا تم تحديد كل من الحدود النسبية والمطلقة في الشحنة نفسها، يتم استخدام الحد الأكثر تقييدًا لكل زوج ممكن من عمليات الاستلام/التسليم. اعتبارًا من تشرين الأول (أكتوبر) 2017، لا يُسمح بالانحرافات إلا عندما لا تعتمد مدة السفر على المركبات. |
التحميل
عند إجراء زيارة، قد تتم إضافة كمية محدّدة مسبقًا إلى حمولة المركبة إذا كانت عملية استلام، أو طرحها إذا كانت عملية تسليم. وتحدّد هذه الرسالة هذا المبلغ. يمكنك الاطّلاع على load_demands.
| الحقول | |
|---|---|
amount |
المقدار الذي ستختلف به حمولة المركبة التي تنفّذ الزيارة المقابلة. بما أنّها قيمة عددية صحيحة، ننصح المستخدمين باختيار وحدة مناسبة لتجنُّب فقدان الدقة. يجب أن تكون القيمة أكبر من أو تساوي 0. |
VisitRequest
طلب زيارة يمكن إجراؤها بواسطة مركبة: يتضمّن موقعًا جغرافيًا (أو موقعَين، انظر أدناه)، وأوقات فتح وإغلاق ممثَّلة بنوافذ زمنية، ومدة خدمة (الوقت الذي تقضيه المركبة بعد وصولها لاستلام السلع أو تسليمها).
| الحقول | |
|---|---|
arrival_location |
الموقع الجغرافي الذي تصل إليه المركبة عند تنفيذ |
arrival_waypoint |
النقطة على المسار التي تصل إليها المركبة عند تنفيذ |
departure_location |
الموقع الجغرافي الذي تغادر منه المركبة بعد إكمال |
departure_waypoint |
النقطة على المسار التي تغادر منها المركبة بعد إكمال هذه |
tags[] |
تحدّد هذه المَعلمة العلامات المرفقة بطلب الزيارة. لا يُسمح بالسلاسل الفارغة أو المكرّرة. |
time_windows[] |
النوافذ الزمنية التي تقيّد وقت الوصول إلى الزيارة يُرجى العِلم أنّ المركبة قد تغادر خارج الإطار الزمني للوصول، أي أنّ وقت الوصول والمدة لا يلزم أن يكونا ضمن إطار زمني. قد يؤدي ذلك إلى الانتظار إذا وصلت المركبة قبل ويعني عدم توفّر يجب أن تكون النوافذ الزمنية منفصلة، أي يجب ألا تتداخل أي نافذة زمنية مع نافذة أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب تصاعدي. لا يمكن ضبط |
duration |
مدة الزيارة، أي الوقت الذي تقضيه المركبة بين الوصول والمغادرة (تتم إضافته إلى وقت الانتظار المحتمل، راجِع |
cost |
تكلفة خدمة طلب الزيارة هذا على مسار مركبة يمكن استخدام هذه السمة لدفع تكاليف مختلفة لكل عملية استلام أو تسليم بديلة لشحنة. يجب أن تكون هذه التكلفة بالوحدة نفسها المستخدَمة في |
load_demands |
تحميل متطلبات طلب الزيارة هذا يشبه هذا الحقل حقل |
visit_types[] |
تحدّد أنواع الزيارة. ويمكن استخدام هذه السمة لتخصيص وقت إضافي مطلوب لمركبة لإكمال هذه الزيارة (راجِع يمكن أن يظهر النوع مرة واحدة فقط. |
label |
تحدّد هذه السمة تصنيفًا لـ |
avoid_u_turns |
يحدّد ما إذا كان يجب تجنُّب الانعطافات على شكل حرف U في مسارات القيادة في هذا الموقع الجغرافي. يتم تجنُّب الانعطاف للخلف قدر الإمكان، ولكن لا يمكن ضمان تجنُّبه بالكامل. هذه ميزة تجريبية وقد يتغيّر سلوكها. ميزة تجريبية: يُرجى الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request لمزيد من التفاصيل. |
ShipmentModel
يحتوي نموذج الشحن على مجموعة من الشحنات التي يجب أن تنفّذها مجموعة من المركبات، مع تقليل التكلفة الإجمالية، وهي مجموع ما يلي:
- تكلفة توجيه المركبات (مجموع التكلفة لكل إجمالي الوقت، والتكلفة لكل مدة رحلة، والتكلفة الثابتة لجميع المركبات).
- عقوبات الشحن غير المنفّذة
- تكلفة المدة الإجمالية للشحنات
| الحقول | |
|---|---|
shipments[] |
مجموعة من الشحنات التي يجب تنفيذها في النموذج |
vehicles[] |
مجموعة من المركبات التي يمكن استخدامها لإجراء الزيارات |
objectives[] |
مجموعة الأهداف لهذا النموذج، والتي سنحوّلها إلى تكاليف. إذا لم يكن النموذج فارغًا، يجب أن يكون نموذج الإدخال مجانيًا. للحصول على الطلب المعدَّل، يُرجى استخدام ميزة تجريبية: يُرجى الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request لمزيد من التفاصيل. |
global_start_time |
وقت البدء والانتهاء العام للنموذج: لا يمكن اعتبار أي أوقات خارج هذا النطاق صالحة. يجب أن يكون النطاق الزمني للنموذج أقل من عام، أي أنّه يجب أن يكون الفارق بين عند استخدام حقول |
global_end_time |
في حال عدم ضبطها، يتم استخدام 00:00:00 بالتوقيت العالمي المنسق، 1 يناير 1971 (أي الثواني: 31536000، النانو ثانية: 0) كقيمة تلقائية. |
global_duration_cost_per_hour |
"المدة الإجمالية" للخطة العامة هي الفرق بين أقرب وقت بدء فعلي وآخر وقت انتهاء فعلي لجميع المركبات. ويمكن للمستخدمين تحديد تكلفة لكل ساعة لتلك الكمية من أجل محاولة تحسين إكمال المهمة في أقرب وقت، على سبيل المثال. يجب أن تكون هذه التكلفة بالوحدة نفسها المستخدَمة في |
duration_distance_matrices[] |
تحدّد مصفوفات المدة والمسافة المستخدَمة في النموذج. إذا كان هذا الحقل فارغًا، سيتم استخدام "خرائط Google" أو المسافات الجيوديسية بدلاً من ذلك، استنادًا إلى قيمة الحقل أمثلة على الاستخدام:
|
duration_distance_matrix_src_tags[] |
علامات تحدّد مصادر مصفوفات المدة والمسافة، حيث تحدّد تتوافق العلامات مع |
duration_distance_matrix_dst_tags[] |
علامات تحدّد وجهات مصفوفات المدة والمسافة، تتوافق العلامات مع |
transition_attributes[] |
تمت إضافة سمات الانتقال إلى النموذج. |
shipment_type_incompatibilities[] |
مجموعات من shipment_types غير المتوافقة (يُرجى الاطّلاع على |
shipment_type_requirements[] |
مجموعات من متطلبات |
precedence_rules[] |
مجموعة من قواعد الأولوية التي يجب فرضها في النموذج ملاحظة مهمة: يؤدي استخدام قواعد الأولوية إلى الحدّ من حجم المشكلة التي يمكن تحسينها. قد يتم رفض الطلبات التي تستخدم قواعد الأولوية التي تتضمّن العديد من الشحنات. |
max_active_vehicles |
يفرض قيودًا على الحد الأقصى لعدد المركبات النشطة. تكون المركبة نشطة إذا كان مسارها ينفّذ شحنة واحدة على الأقل. يمكن استخدام هذه الميزة للحدّ من عدد المسارات في حال كان عدد السائقين أقل من عدد المركبات وكان أسطول المركبات غير متجانس. بعد ذلك، ستختار عملية التحسين أفضل مجموعة فرعية من المركبات لاستخدامها. يجب أن تكون القيمة موجبة تمامًا. |
DurationDistanceMatrix
يحدّد مصفوفة المدة والمسافة من المواقع الجغرافية لبدء الزيارة والمركبة إلى المواقع الجغرافية لانتهاء الزيارة والمركبة.
| الحقول | |
|---|---|
rows[] |
تحدّد هذه السمة صفوف مصفوفة المدة والمسافة. يجب أن يحتوي على عدد عناصر يساوي |
vehicle_start_tag |
علامة تحدّد المركبات التي تنطبق عليها مصفوفة المدة والمسافة هذه. إذا كان هذا الحقل فارغًا، ينطبق ذلك على جميع المركبات، ويمكن أن تكون هناك مصفوفة واحدة فقط. يجب أن تتطابق كل نقطة انطلاق للمركبة مع مصفوفة واحدة بالضبط، أي يجب أن يتطابق حقل يجب أن يكون لكل مصفوفة قيمة مختلفة لسمة |
الصف
تحدّد صفًا من مصفوفة المدة والمسافة.
| الحقول | |
|---|---|
durations[] |
قيم المدة لصف معيّن يجب أن يحتوي على عدد العناصر نفسه في |
meters[] |
قيم المسافة لصف معيّن إذا لم تكن هناك تكاليف أو قيود تشير إلى المسافات في النموذج، يمكن ترك هذا الحقل فارغًا، وإلا يجب أن يحتوي على عدد من العناصر يساوي |
الهدف
تحلّ الأهداف محلّ نموذج التكلفة بالكامل، وبالتالي فهي غير متوافقة مع التكاليف الحالية. يتم ربط كل هدف بعدد من التكاليف المحدّدة مسبقًا، مثل المركبات أو الشحنات أو سمات الانتقال.
ميزة تجريبية: يُرجى الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/objectives/make-request لمزيد من التفاصيل.
| الحقول | |
|---|---|
type |
نوع الهدف |
weight |
مدى أهمية هذا الهدف مقارنةً بالأهداف الأخرى يمكن أن تكون هذه القيمة أي رقم غير سالب، ولا يجب أن يكون مجموع الأوزان 1. تكون القيم التلقائية للأوزان هي 1.0. |
النوع
نوع الهدف الذي سيتم ربطه بمجموعة من التكاليف.
| عمليات التعداد | |
|---|---|
DEFAULT |
سيتم استخدام مجموعة تلقائية من التكاليف لضمان الحصول على حلّ معقول. ملاحظة: يمكن استخدام هذا الهدف بمفرده، ولكن ستتم إضافته دائمًا مع الوزن 1.0، كمرجع، إلى الأهداف التي يحدّدها المستخدم، إذا لم تكن متوفّرة من قبل. |
MIN_DISTANCE |
"الحد الأدنى". تقليل إجمالي المسافة المقطوعة إلى أدنى حد |
MIN_WORKING_TIME |
تقليل إجمالي وقت العمل، الذي يتم جمعه على جميع المركبات. |
MIN_TRAVEL_TIME |
السيناريو نفسه أعلاه ولكن مع التركيز على مدة الرحلة فقط |
MIN_NUM_VEHICLES |
تقليل عدد المركبات المستخدَمة |
PrecedenceRule
قاعدة أسبقية بين حدثَين (كل حدث هو استلام شحنة أو تسليمها): يجب أن يبدأ الحدث "الثاني" بعد مرور offset_duration على الأقل من بدء الحدث "الأول".
يمكن أن تشير عدة أسبقيات إلى الأحداث نفسها (أو ذات الصلة)، على سبيل المثال، "يتم استلام B بعد تسليم A" و "يتم استلام C بعد استلام B".
علاوةً على ذلك، لا تنطبق الأسبقية إلا عند تنفيذ كلتا الشحنتين، ويتم تجاهلها في الحالات الأخرى.
| الحقول | |
|---|---|
first_is_delivery |
تشير إلى ما إذا كان الحدث "الأول" هو عملية تسليم. |
second_is_delivery |
يشير إلى ما إذا كان الحدث "الثاني" هو عملية تسليم. |
offset_duration |
تمثّل هذه السمة الإزاحة بين الحدث "الأول" و "الثاني". ويمكن أن تكون سلبية. |
first_index |
فهرس الشحنة للحدث "الأول". يجب تحديد هذا الحقل. |
second_index |
فهرس الشحنة للحدث "الثاني". يجب تحديد هذا الحقل. |
ShipmentRoute
يمكن تقسيم مسار المركبة على طول المحور الزمني على النحو التالي (نفترض أنّ هناك n زيارة):
| | | | | T[2], | | |
| Transition | Visit #0 | | | V[2], | | |
| #0 | aka | T[1] | V[1] | ... | V[n-1] | T[n] |
| aka T[0] | V[0] | | | V[n-2],| | |
| | | | | T[n-1] | | |
^ ^ ^ ^ ^ ^ ^ ^
vehicle V[0].start V[0].end V[1]. V[1]. V[n]. V[n]. vehicle
start (arrival) (departure) start end start end end
يُرجى العِلم أنّنا نفرّق بين:
- "الأحداث المحدّدة"، مثل بداية الرحلة ونهايتها وبداية كل زيارة ونهايتها (أي الوصول والمغادرة). وتحدث في ثانية معيّنة.
- "الفواصل الزمنية"، مثل الزيارات نفسها، والانتقال بين الزيارات على الرغم من أنّ الفواصل الزمنية يمكن أن تكون مدتها صفرًا في بعض الأحيان، أي تبدأ وتنتهي في الثانية نفسها، إلا أنّها غالبًا ما تكون مدتها إيجابية.
الثوابت:
- إذا كان هناك n زيارة، فهناك n+1 انتقال.
- تكون الزيارة دائمًا محاطة بعملية انتقال قبلها (الفهرس نفسه) وعملية انتقال بعدها (الفهرس + 1).
- تتبع بداية المركبة دائمًا عملية النقل رقم 0.
- تكون نهاية المركبة مسبوقة دائمًا بالانتقال رقم n.
لنلقِ نظرة عن كثب على ما يحدث خلال Transition وVisit:
---+-------------------------------------+-----------------------------+-->
| TRANSITION[i] | VISIT[i] |
| | |
| * TRAVEL: the vehicle moves from | PERFORM the visit: |
| VISIT[i-1].departure_location to | |
| VISIT[i].arrival_location, which | * Spend some time: |
| takes a given travel duration | the "visit duration". |
| and distance | |
| | * Load or unload |
| * BREAKS: the driver may have | some quantities from the |
| breaks (e.g. lunch break). | vehicle: the "demand". |
| | |
| * WAIT: the driver/vehicle does | |
| nothing. This can happen for | |
| many reasons, for example when | |
| the vehicle reaches the next | |
| event's destination before the | |
| start of its time window | |
| | |
| * DELAY: *right before* the next | |
| arrival. E.g. the vehicle and/or | |
| driver spends time unloading. | |
| | |
---+-------------------------------------+-----------------------------+-->
^ ^ ^
V[i-1].end V[i].start V[i].end
أخيرًا، إليك كيفية ترتيب "السفر" و"الاستراحات" و"التأخير" و"الانتظار" أثناء الانتقال.
- ولا تتداخل مع بعضها.
- يجب أن يكون التأخير فريدًا ويجب أن يكون فترة زمنية متجاورة قبل الزيارة التالية (أو نهاية المركبة). وبالتالي، يكفي معرفة مدة التأخير لمعرفة وقت البدء والانتهاء.
- تمثّل الفواصل فترات زمنية متجاورة وغير متداخلة. يحدّد الردّ وقت البدء ومدة كل استراحة.
- "السفر" و"الانتظار" هما حالتان "قابلة للمقاطعة": يمكن مقاطعتهما عدة مرات أثناء هذه العملية. يمكن للعملاء افتراض أنّ السفر يحدث "في أقرب وقت ممكن" وأنّ "الانتظار" يملأ الوقت المتبقي.
مثال (معقّد):
TRANSITION[i]
--++-----+-----------------------------------------------------------++-->
|| | | | | | | ||
|| T | B | T | | B | | D ||
|| r | r | r | W | r | W | e ||
|| a | e | a | a | e | a | l ||
|| v | a | v | i | a | i | a ||
|| e | k | e | t | k | t | y ||
|| l | | l | | | | ||
|| | | | | | | ||
--++-----------------------------------------------------------------++-->
| الحقول | |
|---|---|
vehicle_index |
المركبة التي تسلك المسار، ويتم تحديدها من خلال فهرسها في المصدر |
vehicle_label |
تصنيف المركبة التي تسلك هذا المسار، ويساوي |
vehicle_start_time |
الوقت الذي تبدأ فيه المركبة مسارها |
vehicle_end_time |
الوقت الذي تنهي فيه المركبة مسارها |
visits[] |
تسلسل مرتّب للزيارات يمثّل مسارًا. visits[i] هي الزيارة رقم i في المسار. إذا كان هذا الحقل فارغًا، يتم اعتبار المركبة غير مستخدَمة. |
transitions[] |
قائمة مع ترتيب بالانتقالات للمسار |
has_traffic_infeasibilities |
عند ضبط السمة من المرجّح أن يتم الوصول إلى next_visit في وقت متأخر عن الإطار الزمني الحالي بسبب زيادة تقدير مدة الرحلة |
route_polyline |
تمثيل الخطوط المتعددة المشفَّرة للمسار لا تتم تعبئة هذا الحقل إلا إذا تم ضبط |
breaks[] |
تمثّل هذه السمة فترات الاستراحة المجدوَلة للمركبة التي تسلك هذا المسار. يمثّل التسلسل |
metrics |
مقاييس المدة والمسافة والحمولة لهذا المسار يتم جمع حقول |
vehicle_fullness |
حقل تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
route_costs |
تكلفة المسار، مقسّمة حسب حقول الطلبات ذات الصلة بالتكلفة المفاتيح هي مسارات بروتوكول، نسبةً إلى طلب OptimizeToursRequest المُدخل، مثل "model.shipments.pickups.cost"، والقيم هي إجمالي التكلفة التي تم إنشاؤها بواسطة حقل التكلفة المقابل، ويتم تجميعها على المسار بأكمله. بعبارة أخرى، costs["model.shipments.pickups.cost"] هو مجموع كل تكاليف الاستلام على المسار. يتم هنا عرض تفاصيل جميع التكاليف المحدّدة في النموذج، باستثناء التكاليف المرتبطة بسمات TransitionAttributes التي يتم عرضها بشكل مجمّع فقط اعتبارًا من يناير 2022. |
route_total_cost |
إجمالي تكلفة المسار مجموع كل التكاليف في خريطة التكلفة. |
استراحة
بيانات تمثّل تنفيذ فاصل إعلاني
| الحقول | |
|---|---|
start_time |
وقت بدء الاستراحة |
duration |
مدة الاستراحة |
EncodedPolyline
التمثيل المرمّز لشكل متعدّد الخطوط يمكنك الاطّلاع على مزيد من المعلومات حول ترميز الخطوط المتعدّدة هنا: https://developers.google.com/maps/documentation/utilities/polylinealgorithm https://developers.google.com/maps/documentation/javascript/reference/geometry#encoding.
| الحقول | |
|---|---|
points |
سلسلة تمثّل النقاط المرمّزة للخطوط المتعدّدة |
الانتقال
الانتقال بين حدثَين على المسار يمكنك الاطّلاع على وصف ShipmentRoute.
إذا لم تكن المركبة تحتوي على start_location و/أو end_location، تكون مقاييس السفر المقابلة هي 0.
| الحقول | |
|---|---|
travel_duration |
مدة السفر خلال هذه الفترة الانتقالية |
travel_distance_meters |
المسافة المقطوعة أثناء الانتقال |
traffic_info_unavailable |
عند طلب معلومات عن حركة المرور من خلال |
delay_duration |
مجموع مُدد التأخير المطبَّقة على عملية النقل هذه يبدأ التأخير، إن وُجد، قبل |
break_duration |
مجموع مدة الفواصل التي تحدث أثناء هذا الانتقال، إن وُجدت يتم تخزين تفاصيل حول وقت بدء كل فاصل ومدته في |
wait_duration |
الوقت المستغرَق في الانتظار أثناء هذا الانتقال تتوافق مدة الانتظار مع وقت عدم النشاط ولا تشمل وقت الاستراحة. يُرجى العِلم أيضًا أنّ وقت الانتظار هذا قد يتم تقسيمه إلى عدة فترات غير متجاورة. |
total_duration |
إجمالي مدة الانتقال، ويتم توفيرها لتسهيل الأمر. وهي تساوي:
|
start_time |
وقت بدء هذا الانتقال |
route_polyline |
تمثيل الخطوط المتعددة المرمّزة للمسار الذي تم اتّباعه أثناء الانتقال لا تتم تعبئة هذا الحقل إلا إذا تم ضبط |
route_token |
للعرض فقط. هو رمز مميّز غير شفاف يمكن تمريره إلى حزمة تطوير البرامج للتنقّل لإعادة إنشاء المسار أثناء التنقّل، وفي حال إعادة التوجيه، يتم الالتزام بالهدف الأصلي عند إنشاء المسار. يجب التعامل مع هذا الرمز المميّز على أنّه كائن ثنائي كبير مبهم. لا تقارِن قيمتها في الطلبات المختلفة لأنّ قيمتها قد تتغيّر حتى إذا عرضت الخدمة المسار نفسه بالضبط. لا تتم تعبئة هذا الحقل إلا إذا تم ضبط |
vehicle_loads |
حمولة المركبة أثناء هذا الانتقال، لكل نوع يظهر في تكون الأحمال أثناء عملية النقل الأولى هي الأحمال الأولية لمسار المركبة. بعد ذلك، بعد كل زيارة، تتم إضافة |
VehicleLoad
يُبلغ عن الحمولة الفعلية للمركبة في مرحلة ما على طول المسار، لنوع معيّن (راجِع Transition.vehicle_loads).
| الحقول | |
|---|---|
amount |
مقدار الحمولة على المركبة، حسب النوع المحدّد عادةً ما تتم الإشارة إلى وحدة الحمل حسب النوع. يمكنك الاطّلاع على |
زيارة
زيارة يتم إجراؤها أثناء مسار معيّن تتوافق هذه الزيارة مع استلام أو تسليم Shipment.
| الحقول | |
|---|---|
shipment_index |
فهرس الحقل " |
is_pickup |
إذا كانت القيمة "صحيح"، تتوافق الزيارة مع استلام |
visit_request_index |
فهرس |
start_time |
وقت بدء الزيارة يُرجى العِلم أنّ المركبة قد تصل إلى موقع الزيارة قبل هذا الوقت. تتوافق الأوقات مع |
load_demands |
إجمالي الطلب على حمولة الزيارة هو مجموع الشحنة وطلب الزيارة |
detour |
الوقت الإضافي للانعطاف بسبب الشحنات التي تم تسليمها على المسار قبل الزيارة ووقت الانتظار المحتمل الناتج عن الأُطر الزمنية إذا كانت الزيارة مخصّصة للتسليم، يتم احتساب المسار البديل من زيارة الاستلام المقابلة ويساوي: وإلا، يتم احتسابها من المركبة |
shipment_label |
نسخة من |
visit_label |
نسخة من |
visit_type |
اختيارية: تحدّد هذه السمة نوع الزيارة. يؤدي ذلك إلى إلغاء الحقل |
injected_solution_location_token |
رمز مميّز غير شفاف يمثّل معلومات عن موقع جغرافي تمت زيارته قد تتم تعبئة هذا الحقل في زيارات المسارات الناتجة عندما يتم ضبط ميزة تجريبية: يُرجى الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/u-turn-avoidance/make-request لمزيد من التفاصيل. |
VisitType
يشير هذا الحقل إلى ما إذا كانت الزيارة مخصّصة لاستلام طلب أو توصيله أو زيارة Stop. لا يتم استخدام الزيارات إلى محطة توقّف إلا عند تفعيل ميزة "التحسين المتعدّد الوسائط".
| عمليات التعداد | |
|---|---|
VISIT_TYPE_UNSPECIFIED |
نوع الزيارة غير محدّد. |
PICKUP_SHIPMENT |
تمثّل الزيارة عملية استلام شحنة. |
DELIVER_SHIPMENT |
تتوافق الزيارة مع تسليم شحنة. |
ShipmentTypeIncompatibility
تحدّد حالات عدم التوافق بين الشحنات استنادًا إلى shipment_type. يتم حظر ظهور الشحنات غير المتوافقة على المسار نفسه استنادًا إلى وضع عدم التوافق.
| الحقول | |
|---|---|
types[] |
قائمة بالأنواع غير المتوافقة تكون الشحنتان اللتان تحتويان على |
incompatibility_mode |
الوضع المطبَّق على عدم التوافق |
IncompatibilityMode
الأوضاع التي تحدّد كيفية تقييد ظهور الشحنات غير المتوافقة على المسار نفسه.
| عمليات التعداد | |
|---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
وضع عدم التوافق غير محدّد. يجب عدم استخدام هذه القيمة مطلقًا. |
NOT_PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، لا يمكن أبدًا أن تتشارك شحنتان من نوعين غير متوافقين المركبة نفسها. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
في هذا الوضع، لا يمكن أبدًا أن تكون شحنتان من نوعين غير متوافقين في المركبة نفسها في الوقت نفسه:
|
ShipmentTypeRequirement
تحدّد المتطلبات بين الشحنات استنادًا إلى shipment_type. يتم تحديد تفاصيل المتطلبات من خلال وضع المتطلبات.
| الحقول | |
|---|---|
required_shipment_type_alternatives[] |
قائمة بأنواع الشحن البديلة التي يتطلّبها |
dependent_shipment_types[] |
تتطلّب جميع الشحنات التي لها نوع في الحقل ملاحظة: لا يُسمح بسلاسل المتطلبات التي تعتمد فيها |
requirement_mode |
الوضع المطبَّق على الشرط |
RequirementMode
الأوضاع التي تحدّد مظهر الشحنات التابعة على مسار معيّن
| عمليات التعداد | |
|---|---|
REQUIREMENT_MODE_UNSPECIFIED |
وضع المتطلبات غير محدّد. يجب عدم استخدام هذه القيمة مطلقًا. |
PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، يجب أن تشارك جميع الشحنات "التابعة" المركبة نفسها مع شحنة واحدة على الأقل من الشحنات "المطلوبة". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
في وضع وبالتالي، يجب أن يتوفّر في عملية استلام الشحنة "التابعة" أحد الخيارَين التاليَين:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
كما في السابق، باستثناء أنّ الشحنات "التابعة" يجب أن تتضمّن شحنة "مطلوبة" في مركبتها في وقت التسليم. |
SkippedShipment
تحدّد تفاصيل الشحنات التي لم يتم تنفيذها في الحلّ. بالنسبة إلى الحالات البسيطة و/أو إذا تمكّنا من تحديد سبب التخطّي، سنذكر السبب هنا.
| الحقول | |
|---|---|
index |
يتوافق الفهرس مع فهرس الشحنة في المصدر |
label |
نسخة من |
reasons[] |
قائمة بالأسباب التي توضّح سبب تخطّي الشحنة يُرجى الاطّلاع على التعليق أعلاه |
penalty_cost |
هذه نسخة من تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
estimated_incompatible_vehicle_ratio |
النسبة المقدَّرة للمركبات التي لا يمكنها تنفيذ عملية الشحن هذه لسبب واحد على الأقل من الأسباب أدناه. ملاحظة: يتم ملء هذا الحقل فقط عندما تتضمّن الأسباب مركبة. تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
السبب
إذا كان بإمكاننا شرح سبب تخطّي الشحنة، سيتم إدراج الأسباب هنا. إذا لم يكن السبب نفسه لجميع المركبات، ستحتوي السمة reason على أكثر من عنصر واحد. لا يمكن أن تتضمّن الشحنة التي تم تخطّيها أسبابًا مكرّرة، أي أن تكون جميع الحقول متطابقة باستثناء example_vehicle_index. مثال:
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 1
example_exceeded_capacity_type: "Apples"
}
reasons {
code: DEMAND_EXCEEDS_VEHICLE_CAPACITY
example_vehicle_index: 3
example_exceeded_capacity_type: "Pears"
}
reasons {
code: CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT
example_vehicle_index: 1
}
الشحنة التي تم تخطّيها غير متوافقة مع جميع المركبات. قد تختلف الأسباب لجميع المركبات، ولكن سيتم تجاوز سعة "التفاح" لمركبة واحدة على الأقل (بما في ذلك المركبة 1)، وسيتم تجاوز سعة "الكمثرى" لمركبة واحدة على الأقل (بما في ذلك المركبة 3)، وسيتم تجاوز الحد الأقصى للمسافة لمركبة واحدة على الأقل (بما في ذلك المركبة 1).
| الحقول | |
|---|---|
code |
يُرجى الرجوع إلى التعليقات في الرمز. |
example_vehicle_indices[] |
هذه السمة مماثلة لسمة تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
example_exceeded_capacity_type |
إذا كان رمز السبب هو |
example_vehicle_index |
إذا كان السبب مرتبطًا بعدم توافق الشحنة مع المركبة، يوفّر هذا الحقل فهرس مركبة واحدة ذات صلة. |
الرمز
رمز يحدّد نوع السبب الترتيب هنا لا معنى له. على وجه الخصوص، لا يعطي أي مؤشر على ما إذا كان سبب معين سيظهر قبل سبب آخر في الحل، إذا كان كلاهما ينطبق.
| عمليات التعداد | |
|---|---|
CODE_UNSPECIFIED |
يجب عدم استخدام هذا الخيار مطلقًا. |
NO_VEHICLE |
لا تتوفّر مركبة في النموذج، ما يجعل جميع الشحنات غير قابلة للتنفيذ. |
DEMAND_EXCEEDS_VEHICLE_CAPACITY |
يتجاوز الطلب على الشحنة سعة المركبة لبعض أنواع السعة، ومنها example_exceeded_capacity_type. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DISTANCE_LIMIT |
الحد الأدنى للمسافة اللازمة لإجراء عملية الشحن هذه، أي من يُرجى العِلم أنّنا نستخدم المسافات الجيوديسية في هذه العملية الحسابية. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT |
يتجاوز الحد الأدنى للوقت اللازم لإجراء عملية الشحن هذه، بما في ذلك مدة الرحلة ووقت الانتظار ووقت الخدمة، ملاحظة: يتم احتساب مدة الرحلة في أفضل سيناريو، أي المسافة الجيوديسية × 36 مترًا في الثانية (حوالي 130 كيلومترًا في الساعة). |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TRAVEL_DURATION_LIMIT |
ينطبق ذلك على ما سبق، ولكنّنا نقارن فقط بين الحدّ الأدنى لمدة الرحلة وtravel_duration_limit للمركبة. |
CANNOT_BE_PERFORMED_WITHIN_VEHICLE_TIME_WINDOWS |
لا يمكن للمركبة تنفيذ عملية الشحن هذه في أفضل سيناريو (راجِع CANNOT_BE_PERFORMED_WITHIN_VEHICLE_DURATION_LIMIT لمعرفة طريقة احتساب الوقت) إذا بدأت في أقرب وقت بدء: سيؤدي إجمالي الوقت إلى انتهاء المركبة بعد آخر وقت انتهاء لها. |
VEHICLE_NOT_ALLOWED |
حقل allowed_vehicle_indices للشحنة ليس فارغًا وهذه المركبة لا تنتمي إليه. |
VEHICLE_IGNORED |
حقل تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
SHIPMENT_IGNORED |
الحقل تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
SKIPPED_IN_INJECTED_SOLUTION_CONSTRAINT |
يتم تخطّي الشحنة في تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
VEHICLE_ROUTE_IS_FULLY_SEQUENCE_CONSTRAINED |
لا يسمح تخفيف القيود على مسار المركبة المحدّد في تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
ZERO_PENALTY_COST |
تبلغ تكلفة غرامة الشحنة صفرًا. قد يكون هذا مفيدًا كخيار متقدّم للنمذجة، وقد يفسّر أيضًا سبب تخطّي شحنة معيّنة بعد حدوث ذلك. تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
TimeWindow
تفرض النوافذ الزمنية قيودًا على وقت الحدث، مثل وقت الوصول إلى محطة توقّف أو وقت بدء المركبة وانتهائها.
تفرض حدود الفترة الزمنية الصارمة، start_time وend_time، أقرب وقت وأبعد وقت للحدث، بحيث يكون start_time <= event_time <=
end_time. يعبّر الحد الأدنى للنافذة الزمنية المرنة، soft_start_time، عن تفضيل حدوث الحدث في وقت soft_start_time أو بعده من خلال تحمّل تكلفة تتناسب مع المدة التي تسبق soft_start_time التي يقع فيها الحدث. يعبّر الحد الأعلى للنافذة الزمنية المرنة، soft_end_time، عن تفضيل وقوع الحدث في soft_end_time أو قبله من خلال تحمُّل تكلفة تتناسب مع المدة التي تلي soft_end_time التي يقع فيها الحدث. يجب أن تكون القيم start_time وend_time وsoft_start_time وsoft_end_time ضمن الحدود الزمنية العامة (يُرجى الاطّلاع على ShipmentModel.global_start_time وShipmentModel.global_end_time) وأن تلتزم بما يلي:
0 <= `start_time` <= `end_time` and
0 <= `start_time` <= `soft_start_time` and
0 <= `soft_end_time` <= `end_time`.
| الحقول | |
|---|---|
start_time |
وقت بدء الفترة الزمنية الصارمة في حال عدم تحديدها، سيتم ضبطها على |
end_time |
وقت انتهاء الفترة الزمنية الصارمة في حال عدم تحديدها، سيتم ضبطها على |
soft_start_time |
وقت البدء المرن للنافذة الزمنية |
soft_end_time |
وقت الانتهاء المرن للنافذة الزمنية |
cost_per_hour_before_soft_start_time |
التكلفة في الساعة التي تتم إضافتها إلى التكاليف الأخرى في النموذج إذا وقع الحدث قبل soft_start_time، ويتم احتسابها على النحو التالي: يجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا إذا تم ضبط soft_start_time. |
cost_per_hour_after_soft_end_time |
التكلفة في الساعة التي تتم إضافتها إلى التكاليف الأخرى في النموذج إذا حدثت الفعالية بعد يجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا إذا تم ضبط |
TransitionAttributes
تحدّد سمات عمليات الانتقال بين زيارتَين متتاليتَين على مسار معيّن. قد تنطبق عدة TransitionAttributes على عملية النقل نفسها: في هذه الحالة، تتم إضافة جميع التكاليف الإضافية ويتم تطبيق القيود أو الحدود الأكثر صرامة (باتّباع دلالات "AND" الطبيعية).
| الحقول | |
|---|---|
src_tag |
علامات تحدّد مجموعة عمليات الانتقال (من المصدر إلى الوجهة) التي تنطبق عليها هذه السمات. تتطابق زيارة المصدر أو بداية المركبة إذا كان |
excluded_src_tag |
يمكنك الاطّلاع على |
dst_tag |
تتطابق زيارة الوجهة أو نهاية الرحلة بالمركبة إذا كان الحقل |
excluded_dst_tag |
يمكنك الاطّلاع على |
cost |
يحدّد تكلفة تنفيذ هذا الانتقال. يجب أن تكون هذه القيمة بالوحدة نفسها التي تستخدمها جميع التكاليف الأخرى في النموذج، ويجب ألا تكون سالبة. ويتم تطبيقها بالإضافة إلى جميع التكاليف الحالية الأخرى. |
cost_per_kilometer |
تحدّد هذه السمة التكلفة لكل كيلومتر يتم تطبيقها على المسافة المقطوعة أثناء تنفيذ هذه الرحلة. تتم إضافة هذه السمة إلى أيّ سمة |
distance_limit |
يحدّد هذا الحقل حدًا أقصى للمسافة المقطوعة أثناء إجراء هذا الانتقال. اعتبارًا من حزيران (يونيو) 2021، لا تتوفّر سوى الحدود غير الصارمة. |
delay |
يحدّد هذا الحقل التأخير الذي يحدث عند تنفيذ هذا الانتقال. يحدث هذا التأخير دائمًا بعد الانتهاء من زيارة المصدر وقبل بدء زيارة الوجهة. |
يوري
معرّف موارد منتظم (URI) يشير إلى مورد يمكن قراءته وكتابته من خلال Route Optimization API
| الحقول | |
|---|---|
uri |
معرّف الموارد المنتظم (URI) للمورد قد لا يكون المورد متوفّرًا بعد. يتم ترميز محتوى المورد إما بتنسيق JSON أو textproto. يُسمح فقط بموارد Google Cloud Storage. إذا تم ترميز المورد بتنسيق JSON، يجب أن ينتهي اسم المورد بـ |
مركبة
يمثّل مركبة في مشكلة شحن. سيؤدي حلّ مشكلة شحنة إلى إنشاء مسار يبدأ من start_location وينتهي عند end_location لهذه المركبة. المسار هو سلسلة من الزيارات (يُرجى الاطّلاع على ShipmentRoute).
| الحقول | |
|---|---|
display_name |
الاسم المعروض للمركبة الذي يحدّده المستخدم ويمكن أن يصل طوله إلى 63 حرفًا، ويمكن أن يستخدم أحرف UTF-8. |
travel_mode |
وضع السفر الذي يؤثر في الطرق التي يمكن للمركبة استخدامها وسرعتها يمكنك أيضًا الاطّلاع على |
route_modifiers |
مجموعة من الشروط التي يجب استيفاؤها والتي تؤثر في طريقة احتساب المسارات للمركبة المحدّدة. |
start_location |
الموقع الجغرافي الذي تبدأ منه المركبة قبل استلام أي شحنات وفي حال عدم تحديدها، تبدأ المركبة من أول عملية استلام. إذا كان نموذج الشحنة يحتوي على مصفوفات المدة والمسافة، يجب عدم تحديد |
start_waypoint |
نقطة على المسار تمثّل موقعًا جغرافيًا تبدأ منه المركبة قبل استلام أي شحنات. إذا لم يتم تحديد |
end_location |
الموقع الجغرافي الذي تتوقف فيه المركبة بعد إكمال آخر |
end_waypoint |
نقطة على المسار تمثّل موقعًا جغرافيًا تنتهي فيه المركبة بعد إكمال آخر |
start_tags[] |
تحدّد هذه السمة العلامات المرفقة ببداية مسار المركبة. لا يُسمح بالسلاسل الفارغة أو المكرّرة. |
end_tags[] |
تحدّد العلامات المرفقة بنهاية مسار المركبة. لا يُسمح بالسلاسل الفارغة أو المكرّرة. |
start_time_windows[] |
النوافذ الزمنية التي يمكن للمركبة خلالها مغادرة موقعها الأولي ويجب أن تكون ضمن الحدود الزمنية العالمية (راجِع حقول يجب أن تكون النوافذ الزمنية التي تنتمي إلى الحقل المتكرر نفسه منفصلة، أي لا يمكن أن تتداخل أي نافذة زمنية مع نافذة أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب زمني. لا يمكن ضبط |
end_time_windows[] |
النوافذ الزمنية التي قد تصل خلالها المركبة إلى موقعها النهائي ويجب أن تكون ضمن الحدود الزمنية العالمية (راجِع حقول يجب أن تكون النوافذ الزمنية التي تنتمي إلى الحقل المتكرر نفسه منفصلة، أي لا يمكن أن تتداخل أي نافذة زمنية مع نافذة أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب زمني. لا يمكن ضبط |
unloading_policy |
سياسة التفريغ المفروضة على المركبة |
load_limits |
سعات المركبة (الوزن والحجم وعدد المنصات النقالة على سبيل المثال) المفاتيح في الخريطة هي معرّفات نوع الحمولة، وتتوافق مع مفاتيح الحقل |
cost_per_hour |
تكاليف المركبة: يتم جمع كل التكاليف ويجب أن تكون بالوحدة نفسها المستخدَمة في التكلفة في الساعة لمسار المركبة يتم تطبيق هذه التكلفة على إجمالي الوقت الذي يستغرقه المسار، وتشمل مدة الرحلة ووقت الانتظار ووقت الزيارة. قد يؤدي استخدام |
cost_per_traveled_hour |
التكلفة لكل ساعة من مسار المركبة يتم تطبيق هذه التكلفة فقط على مدة الرحلة التي يستغرقها المسار (أي تلك التي تم الإبلاغ عنها في |
cost_per_kilometer |
التكلفة لكل كيلومتر من مسار المركبة يتم تطبيق هذه التكلفة على المسافة المذكورة في |
fixed_cost |
التكلفة الثابتة التي يتم تطبيقها في حال استخدام هذه المركبة لتسليم شحنة |
used_if_route_is_empty |
لا ينطبق هذا الحقل إلا على المركبات التي لا يخدم مسارها أي شحنات. وتشير إلى ما إذا كان يجب اعتبار المركبة مستعمَلة أم لا في هذه الحالة. إذا كانت القيمة صحيحة، تنتقل المركبة من موقعها الأولي إلى موقعها النهائي حتى إذا لم تكن تنقل أي شحنات، ويتم أخذ تكاليف الوقت والمسافة الناتجة عن انتقالها من الموقع الأولي إلى الموقع النهائي في الاعتبار. وإلا، لن تنتقل من موقع البداية إلى موقع النهاية، ولن تتم جدولة أي |
route_duration_limit |
الحدّ الأقصى المطبَّق على المدة الإجمالية لمسار المركبة في |
travel_duration_limit |
الحدّ الأقصى المطبَّق على مدة الرحلة لمسار المركبة في |
route_distance_limit |
الحدّ الأقصى المطبَّق على إجمالي المسافة التي تقطعها المركبة في مسارها في |
extra_visit_duration_for_visit_type |
تحدّد هذه السمة خريطة من سلاسل visit_types إلى المدد. المدة هي الوقت الذي يُضاف إلى إذا كان طلب الزيارة يتضمّن أنواعًا متعدّدة، ستتم إضافة مدة لكل نوع في الخريطة. |
break_rule |
يصف هذا الحقل الجدول الزمني للاستراحات الذي يجب تطبيقه على هذه المركبة. إذا كان الحقل فارغًا، لن تتم جدولة أي فترات استراحة لهذه المركبة. |
label |
تحدّد هذه السمة تصنيفًا لهذه المركبة. يتم الإبلاغ عن هذا التصنيف في الردّ على أنّه |
ignore |
إذا كانت القيمة "صحيح"، يجب أن تكون قيمة إذا تم تنفيذ شحنة بواسطة مركبة تم تجاهلها في إذا تم تنفيذ شحنة بواسطة مركبة تم تجاهلها في |
travel_duration_multiple |
تحدّد هذه السمة عاملاً مضاعفًا يمكن استخدامه لزيادة أو تقليل مُدد الرحلات لهذه المركبة. على سبيل المثال، يعني ضبط هذه القيمة على 2.0 أنّ هذه المركبة أبطأ وتستغرق مدة رحلة تبلغ ضعف مدة الرحلة للمركبات العادية. لا يؤثر هذا المضاعف في مُدد الزيارات. ويؤثر في التكلفة في حال تحديد تحذير: سيتم تقريب مُدد الرحلات إلى أقرب ثانية بعد تطبيق هذا المضاعف ولكن قبل إجراء أي عمليات حسابية، وبالتالي قد يؤدي المضاعف الصغير إلى فقدان الدقة. يمكنك أيضًا الاطّلاع على " |
DurationLimit
حدّ يحدّد الحدّ الأقصى لمدة مسار المركبة. ويمكن أن يكون إما صلبًا أو ناعمًا.
عند تحديد حقل الحدّ الأقصى المرن، يجب تحديد كلّ من الحدّ الأقصى المرن والتكلفة المرتبطة به معًا.
| الحقول | |
|---|---|
max_duration |
حدّ صارم يفرض أن تكون المدة على الأكثر max_duration. |
soft_max_duration |
هو حدّ مرن لا يفرض حدًّا أقصى للمدة، ولكن عند تجاوزه، يتكبّد المسار تكلفة. تُضاف هذه التكلفة إلى التكاليف الأخرى المحدّدة في النموذج، بالوحدة نفسها. إذا تم تحديد السمة |
quadratic_soft_max_duration |
حدّ مرن لا يفرض حدًّا أقصى للمدة، ولكن عند تجاوزه، يتكبّد المسار تكلفة تربيعية في المدة. تُضاف هذه التكلفة إلى التكاليف الأخرى المحدّدة في النموذج، بالوحدة نفسها. في حال ضبط
|
cost_per_hour_after_soft_max |
التكلفة في الساعة التي يتم تحمّلها في حال تجاوز الحدّ الأقصى لـ يجب أن تكون التكلفة غير سالبة. |
cost_per_square_hour_after_quadratic_soft_max |
التكلفة لكل ساعة مربّعة يتم تحمّلها في حال تجاوز الحدّ الأقصى لـ تكون التكلفة الإضافية 0 إذا كانت المدة أقل من الحدّ الأدنى، وإلا ستعتمد التكلفة على المدة على النحو التالي: يجب أن تكون التكلفة غير سالبة. |
LoadLimit
تحدّد هذه السمة الحدّ الأقصى للحمولة المسموح بها في مركبة معيّنة، مثل "يمكن لهذه الشاحنة أن تحمل ما يصل إلى 3500 كغم فقط". يمكنك الاطّلاع على load_limits.
| الحقول | |
|---|---|
soft_max_load |
الحدّ الأقصى المرن للحمولة يمكنك الاطّلاع على |
cost_per_unit_above_soft_max |
إذا تجاوزت الحمولة في أي وقت |
start_load_interval |
تمثّل هذه السمة الفاصل الزمني المقبول للحمولة في المركبة في بداية المسار. |
end_load_interval |
تمثّل هذه السمة الفاصل الزمني المقبول للحمولة في المركبة في نهاية المسار. |
max_load |
الحد الأقصى المقبول للحِمل |
cost_per_kilometer |
تكلفة نقل وحدة واحدة من الحمولة لمسافة كيلومتر واحد لهذه المركبة. يمكن استخدام ذلك كمؤشر لاستهلاك الوقود: إذا كان الحِمل عبارة عن وزن (بالنيوتن)، فإنّ الحِمل*كيلومتر له بُعد الطاقة. ميزة تجريبية: يُرجى الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request لمزيد من التفاصيل. |
cost_per_traveled_hour |
تكلفة السفر بوحدة حمولة خلال ساعة واحدة لهذه المركبة. ميزة تجريبية: يُرجى الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request لمزيد من التفاصيل. |
الفاصل الزمني
الفاصل الزمني لمقادير الحمل المقبولة
| الحقول | |
|---|---|
min |
الحد الأدنى المقبول للحِمل يجب أن تكون القيمة أكبر من أو تساوي 0. في حال تحديد كليهما، يجب أن تكون قيمة |
max |
الحد الأقصى المقبول للحِمل يجب أن تكون القيمة أكبر من أو تساوي 0. في حال عدم تحديد هذه السمة، لن تفرض هذه الرسالة أي قيود على الحد الأقصى للحمولة. في حال تحديد كليهما، يجب أن تكون قيمة |
LoadCost
تكلفة نقل وحدة واحدة من الحمولة خلال Transition بالنسبة إلى حمولة معيّنة، تكون التكلفة هي مجموع جزأين:
- min(load,
load_threshold) *cost_per_unit_below_threshold - max(0, load -
load_threshold) *cost_per_unit_above_threshold
باستخدام هذه التكلفة، تفضّل الحلول تسليم الطلبات العالية أولاً، أو استلام الطلبات العالية في النهاية. على سبيل المثال، إذا كانت المركبة
load_limit {
key: "weight"
value {
cost_per_kilometer {
load_threshold: 15
cost_per_unit_below_threshold: 2.0
cost_per_unit_above_threshold: 10.0
}
}
}
ومساره هو: البداية، الاستلام، الاستلام، التسليم، التسليم، النهاية مع الانتقالات:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 20 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
تكون التكلفة التي تتكبّدها هذه LoadCost هي (cost_below * load_below * kilometers + cost_above * load_above * kms)
- الانتقال 0: 0.0
- الانتقال 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- الانتقال 2: 2.0 * 15 * 1.0 + 10.0 * (20 - 15) * 1.0 = 80.0
- الانتقال 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- الانتقال 4: 0.0
وبالتالي، فإنّ قيمة LoadCost على طول المسار هي 120.0.
ومع ذلك، إذا كان المسار هو "البداية"، "الاستلام"، "التسليم"، "الاستلام"، "التسليم"، "النهاية" مع عمليات الانتقال:
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 10 }
travel_distance_meters: 1000.0 }
transition { vehicle_load['weight'] { amount: 0 }
travel_distance_meters: 1000.0 }
فإنّ التكلفة التي يتكبّدها هذا LoadCost هي
- الانتقال 0: 0.0
- الانتقال 1: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- الانتقال 2: 0.0
- الانتقال 3: 2.0 * 10 * 1.0 + 10.0 * 0 * 1.0 = 20.0
- الانتقال 4: 0.0
في هذه الحالة، تكون قيمة LoadCost على المسار هي 40.0.
LoadCost يجعل الحلول التي تتضمّن عمليات نقل ثقيلة أكثر تكلفة.
ميزة تجريبية: يُرجى الاطّلاع على https://developers.google.com/maps/tt/route-optimization/experimental/load-cost/make-request لمزيد من التفاصيل.
| الحقول | |
|---|---|
load_threshold |
مقدار الحمولة الذي تتغيّر فوقه تكلفة نقل وحدة الحمولة من cost_per_unit_below_threshold إلى cost_per_unit_above_threshold. يجب أن تكون القيمة أكبر من أو تساوي 0. |
cost_per_unit_below_threshold |
تكلفة نقل وحدة من الحمولة، لكل وحدة بين 0 والحدّ الأدنى يجب أن تكون قيمة محدودة وأكبر من أو تساوي 0. |
cost_per_unit_above_threshold |
تكلفة نقل وحدة من الحمولة، لكل وحدة فوق الحدّ الأدنى في الحالة الخاصة التي يكون فيها الحدّ الأدنى = 0، تكون هذه التكلفة ثابتة لكل وحدة. يجب أن تكون قيمة محدودة وأكبر من أو تساوي 0. |
TravelMode
أنماط السفر التي يمكن للمركبات استخدامها
يجب أن تكون هذه مجموعة فرعية من أوضاع السفر في Routes API ضمن "منصة خرائط Google". يُرجى الاطّلاع على: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteTravelMode
ملاحظة: مسارات WALKING في مرحلة تجريبية، وقد لا تتوفّر أحيانًا أرصفة أو مسارات واضحة للمشاة. يجب عرض هذا التحذير للمستخدم لجميع مسارات المشي التي تعرضها في تطبيقك.
| عمليات التعداد | |
|---|---|
TRAVEL_MODE_UNSPECIFIED |
وسيلة نقل غير محدّدة، تعادل DRIVING. |
DRIVING |
وضع السفر المقابل لاتجاهات القيادة (سيارة، ...). |
WALKING |
وسيلة النقل المقابلة لاتجاهات المشي |
UnloadingPolicy
سياسة حول كيفية تفريغ حمولة المركبة ينطبق ذلك فقط على الشحنات التي تتضمّن كلاً من الاستلام والتسليم.
يمكن أن تتم عمليات الشحن الأخرى في أي مكان على المسار بشكل مستقل عن unloading_policy.
| عمليات التعداد | |
|---|---|
UNLOADING_POLICY_UNSPECIFIED |
سياسة تفريغ غير محدّدة، ويجب أن تتم عمليات التسليم بعد عمليات الاستلام المقابلة لها. |
LAST_IN_FIRST_OUT |
يجب أن تتم عمليات التسليم بترتيب عكسي لعمليات الاستلام |
FIRST_IN_FIRST_OUT |
يجب أن تتم عمليات التسليم بالترتيب نفسه الذي تتم به عمليات الاستلام |
VehicleFullness
VehicleFullness هو مقياس يحسب مدى امتلاء المركبة. وكل حقل VehicleFullness يتراوح بين 0 و1، ويتم احتسابه كنسبة بين حقل مقياس محدود (مثل AggregatedMetrics.travel_distance_meters) والحد الأقصى ذي الصلة للمركبة (مثل Vehicle.route_distance_limit)، إن توفّر. وإلا، ستبقى نسبة الامتلاء غير محدّدة. إذا كان الحدّ الأقصى هو 0، يتم ضبط الحقل على 1. ملاحظة: عندما يكون المسار عرضة لعدم جدوى حركة المرور، قد تتجاوز بعض نِسب الامتلاء الأولية 1.0، على سبيل المثال، قد تتجاوز المركبة الحد الأقصى للمسافة. في هذه الحالات، نحدّد قيم الامتلاء عند 1.0.
| الحقول | |
|---|---|
max_fullness |
الحد الأقصى لجميع الحقول الأخرى في هذه الرسالة. |
distance |
النسبة بين |
travel_duration |
النسبة بين [AggregatedMetrics.travel_duration_seconds][] و |
active_duration |
النسبة بين [AggregatedMetrics.total_duration_seconds][] و |
max_load |
الحد الأقصى للنسبة بين جميع أنواع [AggregatedMetrics.max_load][] و |
active_span |
The ratio (vehicle_end_time - vehicle_start_time) / (latest_vehicle_end_time - earliest_vehicle_start_time) for a given vehicle. إذا لم يكن المقام متوفّرًا، يتم استخدام ( |
النقطة الوسيطة
يغلّف نقطة على المسار. تحدّد النقاط على المسار المواقع الجغرافية للوصول والمغادرة في VisitRequests، ومواقع بدء المركبات وانتهائها.
| الحقول | |
|---|---|
side_of_road |
اختيارية: تشير إلى أنّ الموقع الجغرافي لهذه النقطة على المسار يهدف إلى تفضيل توقّف المركبة على جانب معيّن من الطريق. عند ضبط هذه القيمة، سيمرّ المسار عبر الموقع الجغرافي لكي تتمكّن المركبة من التوقّف على جانب الطريق الذي يميل إليه الموقع الجغرافي من وسط الطريق. لا يعمل هذا الخيار مع وضع السفر "WALKING". |
vehicle_stopover |
يشير هذا الخيار إلى أنّ النقطة على المسار مخصّصة لتوقّف المركبات، حيث يكون الغرض إما الركوب أو النزول. لا يعمل هذا الخيار إلا مع وضع السفر "القيادة"، وعندما يكون "location_type" هو "location". تجريبي: قد يتغيّر سلوك هذا الحقل أو وجوده في المستقبل. |
حقل الربط location_type طرق مختلفة لتمثيل موقع جغرافي يمكن أن يكون التعليق location_type إحدى القيم التالية فقط: |
|
location |
نقطة محدّدة باستخدام الإحداثيات الجغرافية، بما في ذلك عنوان اختياري |
place_id |
رقم تعريف المكان المرتبط بنقطة المسار عند استخدام رقم تعريف مكان لتحديد موقع الوصول أو المغادرة في VisitRequest، استخدِم رقم تعريف مكان محدّدًا بما يكفي لتحديد موقع LatLng للتنقّل إلى المكان. على سبيل المثال، يُعدّ رقم تعريف المكان الذي يمثّل مبنى مناسبًا، ولكن لا يُنصح باستخدام رقم تعريف المكان الذي يمثّل طريقًا. |