الفهرس
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
(رسالة)RouteModifiers
(رسالة)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
- الأوقات بتوقيت Unix: ثانية منذ 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). تتم قراءة/كتابة مدخلات التحسين ( يمكن للمستخدم استطلاع رأي إذا كان حقل إذا كان حقل LRO
|
OptimizeTours |
---|
لإرسال يتكوّن نموذج والهدف من ذلك هو توفير تخصيص
|
AggregatedMetrics
المقاييس المجمّعة لـ ShipmentRoute
(resp. لـ 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_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 عنوانًا للشرق المستحق، وما إلى ذلك. |
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 |
إذا كانت القيمة هي true:
ينطبق هذا التفسير على الحقول إذا كانت القيمة هي 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.Verifyation_errors]. |
VALIDATE_ONLY |
لا يتم التحقّق من صحة النموذج إلّا بدون حلّه: تتم تعبئة أكبر عدد ممكن من OptimizeToursResponse.validation_errors . |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
تتم تعبئة ملاحظة مهمّة: لا يتم إرجاع جميع الشحنات غير المجدية إلى هنا، بل يتم فقط إرجاع الشحنات التي تبيّن أنّها غير قابلة للتنفيذ أثناء المعالجة المُسبقة. |
OptimizeToursResponse
الاستجابة بعد حل مشكلة تحسين الجولة التي تحتوي على المسارات التي تتبعها كل مركبة، والشحنات التي تم تخطيها والتكلفة الإجمالية للحل.
الحقول | |
---|---|
routes[] |
المسارات المحسوبة لكل مركبة ويتجاوب المسار i-th مع المركبة i-th في النموذج. |
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/2022. |
total_cost |
التكلفة الإجمالية للحلّ مجموع كل القيم في خريطة التكاليف. |
OptimizeToursValidationError
تصف هذه السمة خطأً أو تحذيرًا حدث عند التحقق من صحة OptimizeToursRequest
.
الحقول | |
---|---|
code |
يتم تحديد خطأ في عملية التحقّق من خلال الزوج ( توفّر الحقول الأخرى (أدناه) المزيد من السياق حول الخطأ. أخطاء متعددة: عند حدوث أخطاء متعددة، تحاول عملية التحقق إخراج العديد منها. تمامًا مثل المحول البرمجي، هذه عملية غير كاملة. ستكون بعض أخطاء التحقّق "فادحة"، ما يعني أنّها توقِف عملية التحقّق بأكملها. ينطبق هذا الأمر على الاستقرار: يجب أن يكون مرجع: قائمة بجميع الأزواج (الرمز، الاسم):
|
display_name |
الاسم المعروض للخطأ. |
fields[] |
قد يشتمل سياق الخطأ على 0 أو 1 (في معظم الأوقات) أو أكثر من الحقول. على سبيل المثال، يمكن إجراء عملية الاستلام الأولى للمركبة رقم 4 والشحنة رقم 2 على النحو التالي:
يُرجى العلم أنّ عدد القيم الفريدة للسمة |
error_message |
سلسلة تصف الخطأ ويمكن لشخص عادي قراءتها هناك عملية ربط بنسبة 1:1 بين الاستقرار: غير ثابت: قد تتغير رسالة الخطأ المرتبطة بعلامة |
offending_values |
قد تحتوي على قيم الحقول. لا تتوفّر هذه الميزة دائمًا. يجب ألا تعتمد عليها مطلقًا وأن تستخدمها فقط لتصحيح أخطاء النموذج اليدوي. |
مرجع حقل
تُحدِّد سياقًا لخطأ التحقّق. يشير 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.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
الحقول | |
---|---|
data_format |
مطلوب. تنسيق بيانات الإخراج: |
حقل الاتحاد destination . مطلوب. يمكن أن يكون destination واحدًا فقط مما يلي: |
|
gcs_destination |
موقع Google Cloud Storage لكتابة الإخراج إليه. |
RouteModifiers
يشير هذا المصطلح إلى مجموعة من الشروط الاختيارية التي يجب استيفاؤها عند حساب مسارات المركبات. يشبه هذا الإجراء العنصر RouteModifiers
في واجهة برمجة التطبيقات المفضّلة لمسارات "منصّة خرائط 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 |
تحدّد هذه السمة الحد الأقصى لوقت الانتقال المطلق مقارنةً بأقصر مسار بدءًا من استلام الطلب إلى توصيله. وفي حال تحديدها، يجب أن تكون قيمة غير سالبة، وأن تحتوي الشحنة على الأقل على استلام الطلبات وتوصيلها. على سبيل المثال، يجب ألا تكون أقصر وقت ممكن للانتقال مباشرةً من خيار الاستلام المحدّد إلى خيار التسليم المحدَّد. بعد ذلك، يفرض الإعداد
في حال تحديد الحدود النسبية والمطلقة في الشحنة نفسها، يتم استخدام الحدّ الأكثر تقييدًا لكلّ زوج من عمليات الاستلام/التسليم المحتملة. اعتبارًا من 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 |
في حال ترك السياسة بدون ضبط، سيتم استخدام يوم 1 كانون الثاني (يناير) 1971 (أي الثواني: 31536000، nanos: 0) وفقًا بالتوقيت العالمي المنسّق (UTC) كإعداد تلقائي. |
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_type_requirements[] |
مجموعات متطلبات |
precedence_rules[] |
مجموعة من قواعد الأسبقية التي يجب تطبيقها في النموذج. |
max_active_vehicles |
تفرض قيودًا على الحد الأقصى لعدد المركبات النشطة. تكون المركبة نشطة إذا كان مسارها يتيح شحنة واحدة على الأقل. ويمكن استخدام ذلك للحد من عدد المسارات في حالة وجود سائقين أقل من المركبات في حالة وجود أسطول من المركبات غير متجانس. بعد ذلك، سيحدِّد التحسين أفضل مجموعة فرعية من المركبات لاستخدامها. يجب أن تكون موجبة بالتأكيد. |
DurationDistanceMatrix
تحدّد هذه السياسة مصفوفة المدّة والمسافة من المواقع الجغرافية لبدء زيارة المركبات والمواقع الجغرافية للمركبات والمواقع الجغرافية للمركبات والزيارة.
الحقول | |
---|---|
rows[] |
تُستخدَم لتحديد صفوف مصفوفة المدة والمسافة. يجب أن يحتوي على عدد العناصر نفسه مثل |
vehicle_start_tag |
علامة تحدّد المركبات التي تنطبق عليها مصفوفة المدة والمسافة. وإذا كانت فارغة، فإن ذلك ينطبق على جميع المركبات، ولا يمكن أن يكون هناك أكثر من مصفوفة واحدة. يجب أن تتطابق جميع مرات بدء مركبة مع مصفوفة واحدة بالضبط، أي يجب أن يتطابق حقل واحد بالضبط من حقول يجب أن يكون لكل المصفوفات |
الصف
تحدّد هذه السمة صفًا من مصفوفة المدة والمسافة.
الحقول | |
---|---|
durations[] |
قيم المدة لصف معيّن يجب أن يحتوي على عدد العناصر نفسه مثل |
meters[] |
قيم المسافة لصف معين. وإذا لم تكن هناك تكاليف أو قيود تشير إلى المسافات في النموذج، فيمكن ترك هذه المسافات فارغة؛ وبخلاف ذلك، يجب أن يحتوي على عدد العناصر نفسه مثل |
PrecedenceRule
قاعدة الأسبقية بين حدثَين (كلّ حدث هو استلام الشحنة أو تسليمها): "الثانية" يجب أن يبدأ الحدث لمدة offset_duration
على الأقل بعد "الأول" بدأت.
يمكن أن تشير عدة أولويات إلى الأحداث نفسها (أو ذات الصلة)، على سبيل المثال: "يتم استلام الطلب (ب) بعد تسليم الطلب (أ)" و"يحدث استلام 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
أخيرًا، إليك كيفية ترتيب TRAVEL وBREAKS وDELAY وWAIT أثناء الانتقال.
- لا تتداخل.
- تجدر الإشارة إلى أنّ مدة التأخير فريدة ويجب أن تكون فترة زمنية متجاورة قبل الزيارة التالية (أو نهاية المركبة) مباشرةً. وبالتالي، يكفي معرفة مدة التأخير لمعرفة وقت البدء والانتهاء.
- الفواصل الزمنية هي فترات زمنية متجاورة وغير متداخلة. يحدِّد الردّ وقت بدء كل استراحة ومدتها.
- تُعد TRAVEL وWAIT "متوقعين": يمكن مقاطعتهما عدة مرات أثناء هذه المرحلة الانتقالية. يمكن للعملاء افتراض أن السفر يحدث "في أقرب وقت ممكن" وأن "الانتظار" يملأ الوقت المتبقي.
مثال (معقد):
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"، والقيم هي إجمالي التكلفة الناتجة عن حقل التكلفة المقابل، والتي يتم تجميعها على مسار الرحلة بالكامل. بعبارة أخرى، فإنّ costs["model.shipments.pickups.cost"] هي مجموع جميع تكاليف الاستلام على طول المسار. يتم الإبلاغ عن جميع التكاليف المحدّدة في النموذج هنا بالتفصيل، باستثناء التكاليف المرتبطة بسمات TransitionAttributes التي يتم الإبلاغ عنها بطريقة مجمّعة فقط اعتبارًا من 2022/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 |
تمثيل الخطوط المتعددة المشفر للمسار الذي تم اتباعه أثناء الانتقال. تتم تعبئة هذا الحقل فقط عند ضبط |
vehicle_loads |
حمولات المركبات خلال هذه الفترة الانتقالية، لكل نوع يظهر ضمن الأحمال التي يتم تشغيلها خلال المرحلة الانتقالية الأولى هي الأحمال الأولية لمسار المركبة. وبعد ذلك، بعد كل زيارة، يتم إما إضافة أو طرح |
VehicleLoad
يُستخدَم لتسجيل الحمولة الفعلية للمركبة في نقطة معيّنة على طول المسار، لنوع معيّن (راجِع Transition.vehicle_loads
).
الحقول | |
---|---|
amount |
تمثّل هذه السمة مقدار الحِمل على المركبة للنوع المحدّد. يُشار عادةً إلى وحدة التحميل حسب النوع. يمكنك الاطّلاع على |
زيارة
زيارة تم إجراؤها خلال مسار معيّن تتطابق هذه الزيارة مع عملية استلام أو تسليم Shipment
.
الحقول | |
---|---|
shipment_index |
فهرس الحقل |
is_pickup |
في حال كانت القيمة true، تتجاوب الزيارة مع طلب استلام |
visit_request_index |
مؤشر |
start_time |
وقت بدء الزيارة. يُرجى العِلم أنّه قد تصل المركبة إلى موقع الزيارة قبل هذا التاريخ. تتوافق الأوقات مع |
load_demands |
إجمالي الطلب على تحميل الزيارة بصفته مجموع الشحنة وطلب الزيارة |
detour |
وقت الانحراف الإضافي بسبب الشحنات التي تمت زيارتها على المسار قبل الزيارة وفترة الانتظار المحتملة الناتجة عن الفترات الزمنية. إذا كانت الزيارة عبارة عن توصيل، تُحتسب قيمة التحويلة من زيارة الاستلام المقابلة تساوي:
بخلاف ذلك، يتم احتسابها من المركبة
|
shipment_label |
نسخة من |
visit_label |
نسخة من |
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[] |
قائمة بالأسباب التي تفسّر سبب تخطّي الشحنة عرض التعليق فوق |
السبب
إذا تمكّنا من توضيح سبب تخطي الشحنة، سيتم إدراج الأسباب هنا. إذا لم يكن السبب هو نفسه لكل المركبات، ستتضمّن السمة 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_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` <= `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 |
العلامات التي تعرِّف مجموعة الانتقالات (src->dst) التي تنطبق عليها هذه السمات. تتطابق زيارة المصدر أو بدء المركبة إذا كانت |
excluded_src_tag |
يمكنك الاطّلاع على |
dst_tag |
تتطابق زيارة الوجهة أو نهاية المركبة إذا كانت |
excluded_dst_tag |
يمكنك الاطّلاع على |
cost |
تحدّد تكلفة لإجراء هذا النقل. ويكون هذا في نفس الوحدة مثل جميع التكاليف الأخرى في النموذج ويجب ألا يكون سالبًا. ويتم تطبيقها بالإضافة إلى جميع التكاليف الحالية الأخرى. |
cost_per_kilometer |
تحدّد التكلفة لكل كيلومتر المطبّقة على المسافة التي تم قطعها أثناء إجراء هذا الانتقال. ويضيف ما يصل إلى أي |
distance_limit |
تحدد حدًا للمسافة التي تم قطعها أثناء إجراء هذا الانتقال. اعتبارًا من 2021/6، سيتم السماح بالحدود المسموح بها فقط. |
delay |
تحدد هذه السياسة التأخير الذي يحدث عند إجراء عملية النقل هذه. ويحدث هذا التأخير دائمًا بعد الانتهاء من زيارة المصدر وقبل بدء زيارة الوجهة. |
مركبة
تصمم مركبة في مشكلة شحن. سيؤدي حلّ مشكلة الشحن إلى إنشاء مسار يبدأ من 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 |
تحدِّد هذه السياسة خريطة من سلاسل traffic_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 |
الحد الأقصى المسموح به لحجم التحميل. |
الفاصل
فاصل كميات التحميل المقبولة
الحقول | |
---|---|
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 |
يجب أن يتم تسليم الطلبات بنفس ترتيب استلام الطلب. |
النقطة الوسيطة
يتم تغليف نقطة وسيطة. تشير نقاط الطرق إلى مواقع وصول ومغادرة طلبات الزيارات، ومواقع بدء المركبات ونهايتها.
الحقول | |
---|---|
side_of_road |
اختياريّ. يشير إلى أنّ الموقع الجغرافي لنقطة المرور هذه مخصّص لاختيار جانب معيّن من الطريق لتوقف المركبة. عند تعيين هذه القيمة، يمر المسار عبر الموقع بحيث يمكن للمركبة التوقف في جانب الطريق الذي يتحيز الموقع نحوه من وسط الطريق. لا يصلح هذا الخيار لطريقة "التنزّه". وضع السفر. |
حقل الاتحاد location_type . الطرق المختلفة لتمثيل الموقع الجغرافي. يمكن أن يكون location_type واحدًا فقط مما يلي: |
|
location |
نقطة يتم تحديدها باستخدام الإحداثيات الجغرافية، بما في ذلك عنوان اختياري. |
place_id |
معرّف مكان نقطة الاهتمام المرتبط بنقطة الطريق |