الفهرس
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
(رسالة)OptimizeToursRequest
(رسالة)OptimizeToursRequest.SearchMode
(تعداد)OptimizeToursRequest.SolvingMode
(تعداد)OptimizeToursResponse
(رسالة)OptimizeToursResponse.Metrics
(رسالة)OptimizeToursValidationError
(رسالة)OptimizeToursValidationError.FieldReference
(رسالة)OutputConfig
(رسالة)Shipment
(رسالة)Shipment.Load
(رسالة)Shipment.VisitRequest
(رسالة)ShipmentModel
(رسالة)ShipmentModel.DurationDistanceMatrix
(رسالة)ShipmentModel.DurationDistanceMatrix.Row
(رسالة)ShipmentModel.PrecedenceRule
(رسالة)ShipmentRoute
(رسالة)ShipmentRoute.Break
(رسالة)ShipmentRoute.EncodedPolyline
(رسالة)ShipmentRoute.Transition
(رسالة)ShipmentRoute.VehicleLoad
(رسالة)ShipmentRoute.Visit
(رسالة)ShipmentTypeIncompatibility
(رسالة)ShipmentTypeIncompatibility.IncompatibilityMode
(تعداد)ShipmentTypeRequirement
(رسالة)ShipmentTypeRequirement.RequirementMode
(تعداد)SkippedShipment
(رسالة)SkippedShipment.Reason
(رسالة)SkippedShipment.Reason.Code
(تعداد)TimeWindow
(رسالة)TransitionAttributes
(رسالة)Vehicle
(رسالة)Vehicle.DurationLimit
(رسالة)Vehicle.LoadLimit
(رسالة)Vehicle.LoadLimit.Interval
(رسالة)Vehicle.TravelMode
(تعداد)Vehicle.UnloadingPolicy
(تعداد)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 |
---|
لإرسال يتكوّن نموذج الهدف هو توفير قيمة
|
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 |
الحد الأقصى للحِمل الذي تم تحقيقه على المسار بأكمله (محلول الاستجابة)، لكل كمية من الكميات على هذا المسار (محلول الرضا)، والذي يتم احتسابه على أنّه الحد الأقصى على مستوى |
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 |
تنسيق نص المخازن المؤقتة للبروتوكولات يمكنك الاطّلاع على 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_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.routeOptimize.v1.RouteOptimizationService.BatchOptimizeTours].
الحقول | |
---|---|
data_format |
مطلوبة. تمثّل هذه السمة تنسيق بيانات الإدخال. |
حقل الاتحاد source مطلوبة. يمكن أن يكون الحقل "source " واحدًا فقط مما يلي: |
|
gcs_source |
موقع جغرافي على Google Cloud Storage ويجب أن يكون كائنًا واحدًا (ملفًا). |
الموقع الجغرافي
تتضمن هذه السمة موقعًا (نقطة جغرافية وعنوان اختياري).
الحقول | |
---|---|
lat_lng |
الإحداثيات الجغرافية لنقطة الطريق |
heading |
يرتبط عنوان البوصلة باتجاه تدفق حركة المرور. تُستخدم هذه القيمة لتحديد جانب الطريق المراد استخدامه للاستلام والتسليم. يمكن أن تتراوح قيم العنوان من 0 إلى 360، حيث يشير الرقم 0 إلى عنوان باتجاه الشمال، بينما يحدد الرقم 90 عنوانًا باتجاه الشرق المطلوب، وما إلى ذلك. |
OptimizeToursRequest
يتم طلب تقديم طلب إلى أداة لحلّ تحسين الجولات تحدِّد نموذج الشحن المطلوب حلّه بالإضافة إلى مَعلمات التحسين.
الحقول | |
---|---|
parent |
مطلوبة. المشروع أو الموقع الجغرافي المستهدف لإجراء مكالمة. التنسيق: * إذا لم يتم تحديد أي موقع جغرافي، سيتم اختيار المنطقة تلقائيًا. |
timeout |
إذا تم تعيين هذه المهلة، يعرض الخادم استجابة قبل انقضاء مدة المهلة أو بلوغ الموعد النهائي للخادم للطلبات المتزامنة، أيهما أقرب. وبالنسبة إلى الطلبات غير المتزامنة، سينشئ الخادم حلاً (إن أمكن) قبل انقضاء المهلة. |
model |
يجب حلّ نموذج الشحن. |
solving_mode |
يكون وضع الحلّ تلقائيًا هو |
search_mode |
وضع البحث المُستخدَم لحل الطلب. |
injected_first_solution_routes[] |
توجيه خوارزمية التحسين لإيجاد حل أول مشابه للحل السابق. يتم تقييد النموذج عند إنشاء الحل الأول. يتم تخطّي أي شحنات لا يتم إجراؤها على مسار معيّن ضمنيًا في الحل الأول، ولكن يمكن إجراؤها في حلول متتابعة. يجب أن يفي الحل ببعض افتراضات الصلاحية الأساسية:
إذا لم يكن المحلول الذي تم حقنه ممكنًا، فليس بالضرورة أن يظهر خطأ في عملية التحقق، وقد يظهر بدلاً من ذلك خطأ يشير إلى عدم إمكانية الحدوث. |
injected_solution_constraint |
تقييد خوارزمية التحسين لإيجاد حل نهائي مشابه للحل السابق. على سبيل المثال، يمكن استخدام هذا لتجميد أجزاء من المسارات التي سبق أن تم إكمالها أو التي سيتم إكمالها ولكن يجب عدم تعديلها. إذا لم يكن المحلول الذي تم حقنه ممكنًا، فليس بالضرورة أن يظهر خطأ في عملية التحقق، وقد يظهر بدلاً من ذلك خطأ يشير إلى عدم إمكانية الحدوث. |
refresh_details_routes[] |
وإذا لم يكن هذا الحقل فارغًا، ستتم إعادة تحميل المسارات بدون تعديل التسلسل الأساسي للزيارات أو مدد السفر: سيتم تحديث التفاصيل الأخرى فقط. هذا لا يحل النموذج. اعتبارًا من 2020/2011، ستؤدي هذه السياسة إلى تعبئة الخطوط المتعددة للمسارات غير الفارغة فقط وتتطلب أن تكون قيمة قد تكون حقول يجب عدم استخدام هذا الحقل مع وليس لكل من |
interpret_injected_solutions_using_labels |
في حال صحته:
ينطبق هذا التفسير على الحقول إذا كان الأمر صحيحًا، يجب أن تظهر التصنيفات في الفئات التالية مرة واحدة في فئتها مرة واحدة على الأكثر:
إذا كان قد تؤثر إزالة زيارات المسارات أو المسارات بالكامل من المحلول الذي تم إدخاله على القيود الضمنية، ما قد يؤدي إلى حدوث تغيير في الحل أو حدوث أخطاء في عملية التحقق من الصحة أو عدم القدرة على تلبية المتطلبات. ملاحظة: يجب أن يتأكد المتصل من أن كل |
consider_road_traffic |
ننصحك بتقدير عدد الزيارات في حساب حقول |
populate_polylines |
إذا كانت القيمة "صحيح"، ستتم تعبئة الخطوط المتعددة في رموز الاستجابة |
populate_transition_polylines |
إذا كانت القيمة "true"، ستتم تعبئة الخطوط المتعددة في الرد |
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 |
لاقتطاع عدد أخطاء التحقّق من الصحة التي تم عرضها. عادةً ما يتم إرفاق هذه الأخطاء بحمولة خطأ VLOOKUP كتفاصيل خطأ BadRequest (https://cloud.google.com/apis/design/errors#error_details)، إلا في حال حلول Solution_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 |
حل النموذج. |
VALIDATE_ONLY |
يتحقّق من صحة النموذج فقط بدون حلّه: تتم تعبئة أكبر عدد ممكن من OptimizeToursResponse.validation_errors . |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
تتم تعبئة ملاحظة مُهمة: لا يتم هنا إرجاع جميع الشحنات غير الصالحة، بل يتم فقط إرجاع الشحنات التي تم رصدها على أنّها غير قابلة للتنفيذ أثناء المعالجة المسبقة. |
OptimizeToursResponse
الرد بعد حل مشكلة تحسين الجولة التي تحتوي على المسارات التي تتبعها كل مركبة، والشحنات التي تم تخطيها والتكلفة الإجمالية للحل.
الحقول | |
---|---|
routes[] |
المسارات المحسوبة لكل مركبة؛ يتجاوب المسار i مع المركبة i في النموذج. |
request_label |
نسخة من |
skipped_shipments[] |
قائمة بجميع الشحنات التي تم تخطّيها |
validation_errors[] |
قائمة بجميع أخطاء التحقق من الصحة التي تمكنا من اكتشافها بشكل مستقل. يمكنك الاطلاع على شرح "MULTIPLE ERRORS" للرسالة |
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"، والقيم هي إجمالي التكلفة الناتجة عن حقل التكلفة المطابِق، ويتم تجميعها على الحل بأكمله. بمعنى آخر، إنّ التكاليف["model.shipments.pickups.cost"] هي مجموع تكاليف الاستلام التي تفوق الحلّ. يتم هنا الإبلاغ بالتفصيل عن جميع التكاليف المحدّدة في النموذج، باستثناء التكاليف المتعلّقة بسمات TransitionAttributes التي يتم إعداد تقارير عنها بطريقة مجمّعة اعتبارًا من 2022/2021. |
total_cost |
تمثّل هذه السمة التكلفة الإجمالية للحلّ. مجموع كل القيم في خريطة التكاليف. |
OptimizeToursValidationError
تصف هذه السمة الخطأ الذي حدث عند التحقّق من صحة OptimizeToursRequest
.
الحقول | |
---|---|
code |
ويتم تحديد خطأ التحقّق من الصحة من خلال الزوج ( توفّر الحقول الأخرى (أدناه) مزيدًا من السياق حول الخطأ. أخطاء متعددة: عند وجود عدة أخطاء، تحاول عملية التحقق عرض العديد منها. وهذه عملية غير كاملة، مثلها مثل المحول البرمجي. ستكون بعض أخطاء التحقق من الصحة "فادحة"، مما يعني أنها توقف عملية التحقق بأكملها. وينطبق ذلك على أخطاء الثبات: يجب أن يكون المرجع: قائمة بكل الأزواج (الرمز والاسم):
|
display_name |
الاسم المعروض للخطأ |
fields[] |
قد يتضمّن سياق الخطأ 0 أو 1 (في معظم الأوقات) أو أكثر من الحقول. على سبيل المثال، يمكن الإشارة إلى المركبة رقم 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 |
اسم الحقل، على سبيل المثال "المركبات". |
sub_field |
حقل فرعي متداخل على نحو متكرر، إذا لزم الأمر. |
حقل الاتحاد يمكن أن يكون الحقل " |
|
index |
فهرس الحقل في حال تكراره. |
key |
مفتاح إذا كان الحقل عبارة عن خريطة. |
OutputConfig
تحديد وجهة لنتائج [BatchOptimizeTours][google.maps.routeOptimize.v1.RouteOptimizationService.BatchOptimizeTours].
الحقول | |
---|---|
data_format |
مطلوبة. تمثّل هذه السمة تنسيق بيانات المخرجات. |
حقل الاتحاد destination مطلوبة. يمكن أن يكون الحقل "destination " واحدًا فقط مما يلي: |
|
gcs_destination |
الموقع الجغرافي على Google Cloud Storage لكتابة المخرجات إليه |
الشحنة
شحن سلعة واحدة، من إحدى عمليات الاستلام إلى إحدى عمليات التسليم عند النظر في إتمام عملية الشحن، يجب أن تزور مركبة فريدة أحد مواقع الاستلام الخاصة بها (مع تخفيض السعة الاحتياطية لها وفقًا لذلك)، ثم زيارة أحد مواقع التسليم في وقت لاحق (وبالتالي إعادة زيادة السعة الاحتياطية وفقًا لذلك).
الحقول | |
---|---|
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 |
تحدّد هذه السمة الحد الأقصى لمدة التحويل المطلق مقارنةً بأقصر مسار بدءًا من استلام الطلب إلى مكان التسليم. وفي حال تحديدها، يجب أن تكون القيمة غير سالبة، ويجب أن تحتوي الشحنة على قيمة استلام وتسليم على الأقل. على سبيل المثال، اجعل أقل وقت يمكن فيه الانتقال من خيار استلام الطلب البديل مباشرةً إلى خيار التوصيل المحدّد. بعد ذلك، يفرض ضبط "
في حال تحديد حدود نسبية ومطلقة على الشحنة نفسها، يتم استخدام الحدّ الأكثر تقييدًا لكل زوج من الطلبات التي يمكن استلامها أو توصيلها. اعتبارًا من 2017/2010، أصبحت عمليات التحويل متاحة فقط عندما لا تعتمد مُدد السفر على المركبات. |
pickup_to_delivery_time_limit |
تحدّد هذه السمة الحدّ الأقصى للمدة الزمنية من بداية الاستلام إلى بداية تسليم الشحنة. وفي حال تحديدها، يجب أن تكون القيمة غير سالبة، ويجب أن تحتوي الشحنة على قيمة استلام وتسليم على الأقل. ولا يعتمد ذلك على البدائل التي يتم اختيارها للاستلام والتسليم، ولا على سرعة المركبة. ويمكن تحديد ذلك إلى جانب الحد الأقصى لقيود التحويل: سيلتزم الحلّ بكلا المواصفات. |
shipment_type |
سلسلة غير فارغة تحدد "النوع" لهذه الشحنة يمكن استخدام هذه الميزة لتحديد حالات عدم التوافق أو المتطلبات في الفترة بين تختلف عن السمة |
label |
لتحديد تصنيف لهذه الشحنة. يتم الإبلاغ عن هذا التصنيف في الرد ضمن |
ignore |
في حال اختيار القيمة "صحيح"، يمكنك تخطّي هذه الشحنة بدون تطبيق سمة يؤدي تجاهل شحنة إلى حدوث خطأ في عملية التحقّق في حال وجود أي يُسمح بتجاهل الشحنة التي يتم تنفيذها في |
penalty_cost |
إذا لم تكتمل الشحنة، تُضاف هذه العقوبة إلى التكلفة الإجمالية للمسارات. تُعتبر الشحنة مكتملة إذا تم زيارة أحد بدائل الاستلام والتسليم. قد يتم التعبير عن التكلفة في الوحدة نفسها المستخدمة في جميع الحقول الأخرى ذات الصلة بالتكلفة في النموذج، ويجب أن تكون موجبة. ملاحظة مُهمة: إذا لم يتم تحديد هذه العقوبة، تُعتبر غير محدودة، أي يجب إكمال الشحنة. |
pickup_to_delivery_relative_detour_limit |
تحدّد هذه السمة الحد الأقصى لمدة التحويل النسبي مقارنةً بأقصر مسار بدءًا من استلام الطلب وصولاً إلى التسليم. وفي حال تحديدها، يجب أن تكون القيمة غير سالبة، ويجب أن تحتوي الشحنة على قيمة استلام وتسليم على الأقل. على سبيل المثال، اجعل أقل وقت يمكن فيه الانتقال من خيار استلام الطلب البديل مباشرةً إلى خيار التوصيل المحدّد. بعد ذلك، يفرض ضبط "
في حال تحديد حدود نسبية ومطلقة على الشحنة نفسها، يتم استخدام الحدّ الأكثر تقييدًا لكل زوج من الطلبات التي يمكن استلامها أو توصيلها. اعتبارًا من 2017/2010، أصبحت عمليات التحويل متاحة فقط عندما لا تعتمد مُدد السفر على المركبات. |
تحميل
عند إجراء زيارة، قد تتم إضافة مبلغ محدّد مسبقًا إلى حمولة المركبة إذا كانت عملية نقل، أو يتم طرحها إذا كانت عملية تسليم. وتحدّد هذه الرسالة المبلغ. يمكنك الاطّلاع على load_demands
.
الحقول | |
---|---|
amount |
يختلف مقدار حمولة المركبة التي تؤدي الزيارة المقابلة لها. ونظرًا لأنه عدد صحيح، ننصح المستخدمين باختيار وحدة مناسبة لتجنب فقدان الدقة. يجب أن تكون القيمة ≥ 0. |
VisitRequest
طلب زيارة يمكن للمركبة أن تنفذه: يحتوي على موقع جغرافي (أو اثنين، انظر أدناه)، وأوقات الفتح والإغلاق التي يتم تمثيلها بالنوافذ الزمنية، ومدة الخدمة (الوقت الذي تقضيه المركبة بعد وصولها لاستلام السلع أو تسليمها).
الحقول | |
---|---|
arrival_location |
الموقع الجغرافي الذي تصل إليه المركبة عند تنفيذ |
arrival_waypoint |
نقطة الطريق التي تصل فيها المركبة عند تنفيذ |
departure_location |
الموقع الجغرافي الذي تغادر فيه المركبة بعد إكمال |
departure_waypoint |
تمثّل هذه السمة نقطة الطريق التي تغادر فيها المركبة بعد إكمال عملية |
tags[] |
تُستخدَم لتحديد العلامات المُرفَقة بطلب الزيارة. غير مسموح بالسلاسل الفارغة أو المكرّرة. |
time_windows[] |
يشير ذلك المصطلح إلى فترات زمنية تحدّ من وقت الوصول إلى إحدى الزيارات. يُرجى العِلم أنّ المركبة قد تغادر خارج فترة الوصول، أي أنّ وقت الوصول والمدة ليست شرطًا أن تكون ضمن النافذة الزمنية. قد يؤدي ذلك إلى زيادة وقت الانتظار في حال وصول المركبة قبل يعني عدم توفّر يجب أن تكون الفترات الزمنية منفصلة، بمعنى ألا تتداخل فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب متزايد. لا يمكن ضبط كل من |
duration |
مدة الزيارة، أي الوقت الذي تقضيه المركبة بين الوصول والمغادرة (ستتم إضافتها إلى وقت الانتظار المحتمل، يُرجى الاطّلاع على |
cost |
تكلفة خدمة طلب الزيارة هذا على مسار المركبة. يمكن استخدام هذه الطريقة لدفع تكاليف مختلفة لكل عملية استلام أو تسليم بديلة لشحنة. يجب أن تكون هذه التكلفة في وحدة |
load_demands |
تحميل طلبات طلب الزيارة هذا يشبه ذلك الحقل |
visit_types[] |
تُحدِّد أنواع الزيارات. يمكن استخدام ذلك لتخصيص وقت إضافي مطلوب لمركبة لإكمال هذه الزيارة (يُرجى الاطّلاع على لا يمكن أن يظهر النوع سوى مرة واحدة. |
label |
تُحدِّد تصنيفًا لهذا |
ShipmentModel
يتضمّن نموذج الشحن مجموعة من الشحنات التي يجب أن تقوم بها مجموعة من المركبات مع تقليل التكلفة الإجمالية وهي مجموع ما يلي:
- تكلفة توجيه المركبات (مجموع التكلفة لكل مدة زمنية إجمالية والتكلفة لكل وقت سفر والتكلفة الثابتة على جميع المركبات).
- بعقوبات الشحن غير المطبقة.
- وتكلفة المدة العالمية للشحنات
الحقول | |
---|---|
shipments[] |
تمثّل هذه السمة مجموعة عمليات الشحن التي يجب إجراؤها في النموذج. |
vehicles[] |
مجموعة من المركبات التي يمكن استخدامها لإجراء الزيارات. |
global_start_time |
وقت البدء والانتهاء العالمي للنموذج: لا يمكن اعتبار أي أوقات خارج هذا النطاق صالحة. يجب أن تكون الفترة الزمنية للنموذج أقل من سنة، أي أنّ عند استخدام حقول |
global_end_time |
في حال ترك هذه السياسة بدون ضبط، سيتم استخدام الوضع التلقائي 00:00:00 حسب التوقيت العالمي المنسَّق (UTC) 1 كانون الثاني (يناير) 1971 (أي الثواني: 31536000 وnanos: 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[] |
مجموعات من shipping_types (أنواع_الشحن) غير المتوافقة (يُرجى الاطّلاع على |
shipment_type_requirements[] |
مجموعات من متطلبات |
precedence_rules[] |
مجموعة قواعد الأولوية التي يجب فرضها في النموذج. |
max_active_vehicles |
تفرض هذه السياسة قيودًا على الحد الأقصى لعدد المركبات النشِطة. تكون المركبة نشطة إذا كان مسارها يؤدي عملية شحن واحدة على الأقل. ويمكن استخدام ذلك للحد من عدد المسارات في حال كان عدد السائقين أقل من عدد المركبات وإذا كان أسطول المركبات غير متجانس. بعد ذلك، تختار عملية التحسين أفضل مجموعة فرعية من المركبات لاستخدامها. يجب أن يكون إيجابيًا تمامًا. |
DurationDistanceMatrix
تحدِّد هذه السياسة مصفوفة المدة والمسافة من المواقع الجغرافية للزيارة وبداية المركبات إلى المواقع الجغرافية لانتهاء المركبة.
الحقول | |
---|---|
rows[] |
لتحديد صفوف مصفوفة المدة والمسافة. يجب أن يحتوي على العديد من العناصر مثل |
vehicle_start_tag |
علامة تحدد المركبات التي تنطبق عليها هذه المدة ومصفوفة المسافة إذا كان الحقل فارغًا، ينطبق ذلك على جميع المركبات، ويمكن أن يكون هناك مصفوفة واحدة فقط. يجب أن تتطابق بداية كل مركبة مع مصفوفة واحدة فقط، أي يجب أن يتطابق حقل واحد فقط من حقول يجب أن تحتوي جميع المصفوفات على |
الصف
لتحديد صف لمصفوفة المدة والمسافة.
الحقول | |
---|---|
durations[] |
قيم المدة لصف محدَّد. يجب أن يحتوي على العديد من العناصر مثل |
meters[] |
تمثّل هذه السمة قيم المسافة لصف محدَّد. إذا لم تكن هناك تكاليف أو قيود تشير إلى المسافات في النموذج، يمكن ترك هذا الحقل فارغًا، وإلا يجب أن يحتوي على عدد عناصر يساوي |
PrecedenceRule
قاعدة الأولوية بين حدثَين (يمثّل كلّ حدث استلام شحنة أو تسليمها): يجب أن يبدأ الحدث "الثاني" على الأقل بعد offset_duration
من بدء الحدث "الأول".
يمكن أن تشير العديد من الأسبقية إلى الأحداث نفسها (أو ذات صلة)، على سبيل المثال، "يتمّ استلام الطلب من السلعة (ب) بعد تسليم الطلب (أ)" و"يتمّ استلام الطلب (ج) بعد استلام الطلب (ب)).
إضافةً إلى ذلك، لا تسري الأسبقية إلا عند تنفيذ كلتا الشحنتين وتجاهلهما.
الحقول | |
---|---|
first_is_delivery |
يشير إلى ما إذا كان الحدث "الأول" عبارة عن عملية تسليم. |
second_is_delivery |
يشير إلى ما إذا كان الحدث "الثاني" عبارة عن عملية تسليم. |
offset_duration |
الإزاحة بين الحدث "الأول" و "الثاني". ويمكن أن تكون سلبية. |
first_index |
مؤشر الشحن للحدث "الأول" يجب تحديد هذا الحقل. |
second_index |
مؤشر الشحن للحدث "الثاني" يجب تحديد هذا الحقل. |
ShipmentRoute
يمكن أن يتحلل مسار المركبة، على طول المحور الزمني، على النحو التالي (نفترض أن هناك عدد ن من الزيارات):
| | | | | 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[] |
تسلسل مرتب من الزيارات يمثل مسارًا. الزيارات[i] هي الزيارة الأولى في المسار. إذا كان هذا الحقل فارغًا، تُعتبر المركبة غير مُستخدَمة. |
transitions[] |
قائمة مرتبة من الانتقالات للمسار. |
has_traffic_infeasibilities |
عندما يتم ضبط
من المحتمل أن يتم الوصول في next_visit بعد الفترة الزمنية الحالية بسبب الزيادة التقديرية لوقت السفر |
route_polyline |
تمثيل الخطوط المتعددة المشفّر للمسار. لا تتم تعبئة هذا الحقل إلّا إذا تم ضبط |
breaks[] |
عدد الفواصل الإعلانية المجدوَلة للمركبة التي تنفّذ هذا المسار. يمثّل تسلسل |
metrics |
مقاييس المدة والمسافة والحمولة لهذا المسار يتم تلخيص حقول |
route_costs |
تكلفة المسار، مقسَّمة حسب حقول الطلب المتعلّقة بالتكلفة. المفاتيح هي مسارات أولية، بالنسبة إلى الإدخال OptimizeToursRequest، مثل "model.shipments.pickups.cost"، والقيم هي إجمالي التكلفة الناتجة عن حقل التكلفة المطابِق، والتي يتم تجميعها على المسار بأكمله. بمعنى آخر، تمثّل التكاليف ["model.shipments.pickups.cost"] مجموع كل تكاليف الاستلام على المسار. يتم هنا الإبلاغ بالتفصيل عن جميع التكاليف المحدّدة في النموذج، باستثناء التكاليف المتعلّقة بسمات TransitionAttributes التي يتم إعداد تقارير عنها بطريقة مجمّعة اعتبارًا من 2022/2021. |
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 |
تمثيل الخطوط المتعددة المشفر للمسار الذي تم اتباعه أثناء الانتقال. لا تتم تعبئة هذا الحقل إلّا إذا تم ضبط |
vehicle_loads |
أحمال المركبات خلال عملية النقل هذه، لكل نوع يظهر في الأحمال أثناء عملية الانتقال الأولى هي أحمال البدء لمسار المركبة. وبعد ذلك، بعد كل زيارة، تتم إضافة أو طرح |
VehicleLoad
تشير هذه السمة إلى الحمولة الفعلية للمركبة عند نقطة معيّنة على المسار، وذلك لنوع معيّن (راجِع Transition.vehicle_loads
).
الحقول | |
---|---|
amount |
مقدار الحمولة في المركبة للنوع المحدّد. عادةً ما يشار إلى وحدة التحميل من خلال النوع. يمكنك الاطّلاع على |
انتقال
زيارة تم إجراؤها أثناء المسار. تتوافق هذه الزيارة مع استلام أو تسليم سيارة Shipment
.
الحقول | |
---|---|
shipment_index |
فهرس الحقل |
is_pickup |
إذا كانت الزيارة صحيحة، تتوافق الزيارة مع عملية استلام |
visit_request_index |
فهرس |
start_time |
وقت بدء الزيارة يُرجى العِلم أنّ المركبة قد تصل قبل هذا التاريخ في موقع الزيارة. تتوافق الأوقات مع |
load_demands |
إجمالي طلب تحميل الزيارة كمجموع الشحن وطلب الزيارة |
detour |
وقت إضافي للطريق بسبب الشحنات التي تمت زيارتها على المسار قبل الزيارة، بالإضافة إلى وقت الانتظار المحتمل الناتج عن الفترات الزمنية. إذا كانت الزيارة إحالة ناجحة، يتمّ احتساب الإحالة الناجحة من زيارة الاستلام المقابلة لها، فتساوى ما يلي:
وبخلاف ذلك، يتم احتساب القيمة من المركبة
|
shipment_label |
نسخة من |
visit_label |
نسخة من |
ShipmentTypeIncompatibility
تحدد أوجه عدم التوافق بين الشحنات استنادًا إلى نوع الشحنة. يتم تقييد ظهور الشحنات غير المتوافقة على المسار نفسه استنادًا إلى وضع عدم التوافق.
الحقول | |
---|---|
types[] |
قائمة الأنواع غير المتوافقة. الشحنتان اللتان تتضمّنان سمة |
incompatibility_mode |
تم تطبيق الوضع على عدم التوافق. |
IncompatibilityMode
الأوضاع التي تحدّد كيفية حظر ظهور الشحنات غير المتوافقة على المسار نفسه
عمليات التعداد | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
وضع عدم التوافق غير محدَّد. يجب عدم استخدام هذه القيمة مطلقًا. |
NOT_PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، لا يمكن مطلقًا لشحنتين ذات نوعَين غير متوافقَين مشاركة المركبة نفسها. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
بالنسبة إلى شحنتين ذات نوعَين غير متوافقَين مع وضع عدم التوافق في "
|
ShipmentTypeRequirement
تحدد المتطلبات بين عمليات الشحن استنادًا إلى shipping_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[] |
قائمة بالأسباب التي توضّح سبب تخطّي الشحنة اطّلِع على التعليق أعلاه |
السبب
إذا كان بإمكاننا توضيح سبب تخطّي عملية الشحن، سيتم سرد الأسباب هنا. إذا لم يكن السبب هو نفسه لكل المركبات، ستتضمّن السمة 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 |
راجع تعليقات Code. |
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 في الشحنة ليس فارغًا وهذه المركبة لا تنتمي إليه. |
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` <= `soft_start_time` <= `end_time` and
0 <= `start_time` <= `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
على عملية الانتقال نفسها: في هذه الحالة، يتم جمع جميع التكاليف الإضافية ويتم تطبيق القيد أو الحد الأكثر صرامة (باتباع دلالات "و" الطبيعية).
الحقول | |
---|---|
src_tag |
العلامات التي تحدّد مجموعة عمليات النقل (src->dst) التي تنطبق عليها هذه السمات. تتطابق زيارة المصدر أو بدء المركبة إذا كانت |
excluded_src_tag |
يمكنك الاطّلاع على |
dst_tag |
تتطابق زيارة الوجهة أو نهاية المركبة إذا كانت |
excluded_dst_tag |
يمكنك الاطّلاع على |
cost |
تُحدِّد تكلفة تنفيذ عملية النقل هذه. هذه الوحدة موجودة في نفس الوحدة مثل جميع التكاليف الأخرى في النموذج ويجب ألا تكون سالبة. ويتم تطبيقه على جميع التكاليف الحالية الأخرى. |
cost_per_kilometer |
لتحديد التكلفة لكل كيلومتر يتم تطبيقها على المسافة التي تم قطعها أثناء إجراء هذا الانتقال. يمكن إضافة أي |
distance_limit |
تحدد هذه السمة حدًا للمسافة المقطوعة أثناء إجراء عملية الانتقال هذه. اعتبارًا من عام 2021/2021، ستتم إتاحة الحدود القصوى فقط. |
delay |
تحدِّد هذه السياسة المهلة الزمنية عند تنفيذ عملية النقل هذه. ويحدث هذا التأخير دائمًا بعد الانتهاء من زيارة المصدر وقبل بدء زيارة الوجهة. |
مركبة
يصور مركبة في مشكلة شحن. يؤدي حلّ مشكلة الشحن إلى إنشاء مسار لهذه المركبة يبدأ من start_location
وينتهي في end_location
. المسار هو سلسلة من الزيارات (راجِع ShipmentRoute
).
الحقول | |
---|---|
display_name |
تشير هذه السمة إلى الاسم المعروض الذي يحدّده المستخدم للمركبة. يمكن أن يصل طوله إلى 63 حرفًا، وقد يستخدم أحرف UTF-8. |
travel_mode |
وضع السفر الذي يؤثر في الطرق التي يمكن للمركبة استخدامها وسرعتها. يمكنك أيضًا الاطّلاع على |
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 |
تُستخدَم لتحديد خريطة من سلاسل view_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
تحدّد هذه السمة حد الحمولة الذي ينطبق على أي مركبة، على سبيل المثال "لا يمكن لهذه الشاحنة حمل أكثر من 3, 500 كلغ". يمكنك الاطّلاع على load_limits
.
الحقول | |
---|---|
soft_max_load |
حد خفيف للتحميل. يمكنك الاطّلاع على |
cost_per_unit_above_soft_max |
إذا تجاوز الحمل |
start_load_interval |
فاصل التحميل المقبول للمركبة في بداية المسار. |
end_load_interval |
فاصل التحميل المقبول للمركبة في نهاية المسار. |
max_load |
الحد الأقصى المقبول لحجم التحميل |
الفاصل الزمني
الفاصل الزمني لمعدّل تحميل البيانات المقبولة
الحقول | |
---|---|
min |
أدنى حِمل مقبول. يجب أن تكون القيمة ≥ 0. إذا تم تحديد كلاهما، يجب أن تكون قيمة الحقل |
max |
الحد الأقصى للتحميل المقبول. يجب أن تكون القيمة ≥ 0. وفي حال عدم تحديد هذه الرسالة، لن يتم فرض قيود على الحد الأقصى للتحميل. إذا تم تحديد كلاهما، يجب أن تكون قيمة الحقل |
TravelMode
وسائل النقل التي يمكن للمركبات استخدامها
ويجب أن تكون هذه القنوات مجموعة فرعية من أوضاع التنقّل في واجهة برمجة التطبيقات المفضَّلة لـ "منصة خرائط Google"، ويمكنك الاطّلاع على: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
عمليات التعداد | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
وضع السفر غير محدّد، يعادل DRIVING . |
DRIVING |
وضع السفر المقابل لاتجاهات القيادة (سيارة، ...). |
WALKING |
وضع السفر المقابل لاتجاهات المشي. |
UnloadingPolicy
سياسة حول كيفية تفريغ حمولات المركبة ينطبق ذلك فقط على الشحنات التي يتمّ فيها استلام الطلب وتوصيله.
ويمكن إجراء عمليات شحن أخرى مجانًا في أي مكان على المسار بشكل مستقل عن unloading_policy
.
عمليات التعداد | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
سياسة تفريغ شحن غير محدّدة: يجب أن يتم تسليم الطلبات بعد عمليات استلام الطلبات المقابلة لها. |
LAST_IN_FIRST_OUT |
يجب أن يتم تسليم الطلبات بترتيب عكسي لعمليات الاستلام. |
FIRST_IN_FIRST_OUT |
يجب أن تكون عمليات التسليم بنفس ترتيب استلام الطلبات. |
النقطة الوسيطة
تتضمن هذه الطريقة نقطة وسيطة. تحدد نقاط الطرق مواقع الوصول والمغادرة فيvisitRequests ومواقع بدء ونهاية المركبات.
الحقول | |
---|---|
side_of_road |
اختياريّ. تشير هذه القيمة إلى أن موقع نقطة الطريق هذه يتم تفضيله للمركبة للتوقف على جانب معين من الطريق. عند تعيين هذه القيمة، سيمر المسار عبر الموقع بحيث يمكن للمركبة أن تتوقف على جانب الطريق الذي يكون الموقع متحيزًا له من مركز الطريق. لا يعمل هذا الخيار مع وضع السفر "المشي". |
حقل الاتحاد location_type طرق مختلفة لتمثيل موقع جغرافي يمكن أن يكون الحقل "location_type " واحدًا فقط مما يلي: |
|
location |
نقطة يتم تحديدها باستخدام الإحداثيات الجغرافية، بما في ذلك عنوان اختياري. |
place_id |
رقم تعريف مكان نقطة الاهتمام المرتبط بالنقطة الوسيطة |