الفهرس
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
- يتم عرض الأوقات بتوقيت يونكس: الثواني منذ 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
(أو OptimizeToursResponse
على مستوى جميع عناصر Transition
و/أو Visit
)ShipmentRoute
الحقول | |
---|---|
performed_ |
عدد عمليات الشحن التي تم إجراؤها يُرجى العلم أنّه يتم احتساب زوج الاستلام والتسليم مرّة واحدة فقط. |
travel_ |
إجمالي مدة التنقّل في مسار أو حلّ |
wait_ |
إجمالي مدة الانتظار لمسار أو حلّ |
delay_ |
إجمالي مدة التأخير لمسار أو حلّ |
break_ |
إجمالي مدة التوقف في مسار أو حلّ |
visit_ |
إجمالي مدة الزيارة لمسار أو حلّ |
total_ |
يجب أن يكون إجمالي المدة مساويًا لمجموع جميع المدّات أعلاه. بالنسبة إلى المسارات، يتوافق ذلك أيضًا مع ما يلي:
|
travel_ |
إجمالي مسافة التنقّل لمسار أو حلّ |
max_ |
الحد الأقصى للحمولة التي تمّ تحقيقها على طول المسار بأكمله (أو الحلّ)، لكلّ من الكميّات على هذا المسار (أو الحلّ)، ويتم احتسابه على أنّه الحدّ الأقصى لجميع |
BatchOptimizeToursMetadata
لا يتضمّن هذا النوع أيّ حقول.
البيانات الوصفية للعملية لمكالمات BatchOptimizeToursRequest
BatchOptimizeToursRequest
يمكنك طلب تحسين الجولات بشكل مجمّع كعملية غير متزامنة. يجب أن يحتوي كل ملف إدخال على OptimizeToursRequest
واحد، وسيحتوي كل ملف إخراج على OptimizeToursResponse
واحد. يحتوي الطلب على معلومات لقراءة/كتابة الملفات وتحليلها. يجب أن تكون جميع ملفات الإدخال والإخراج ضمن المشروع نفسه.
الحقول | |
---|---|
parent |
مطلوب. استهدِف المشروع والموقع الجغرافي لإجراء مكالمة. التنسيق: * في حال عدم تحديد موقع جغرافي، سيتم اختيار منطقة تلقائيًا. |
model_ |
مطلوب. معلومات الإدخال/الإخراج لكل نموذج شراء، مثل مسارات الملفات وتنسيقات البيانات |
AsyncModelConfig
معلومات لحلّ نموذج تحسين واحد بشكل غير متزامن
الحقول | |
---|---|
display_ |
اختيارية: اسم الطراز الذي يحدّده المستخدم، ويمكن للمستخدمين استخدامه كاسم بديل لتتبُّع الطُرز. |
input_ |
مطلوب. معلومات عن نموذج الإدخال |
output_ |
مطلوب. معلومات الموقع الجغرافي المطلوب للإخراج |
BatchOptimizeToursResponse
لا يتضمّن هذا النوع أيّ حقول.
ردّ على BatchOptimizeToursRequest
يتم عرض هذا الإجراء في "العملية التي تستغرق وقتًا طويلاً" بعد اكتمال العملية.
BreakRule
قواعد لإنشاء فواصل زمنية لمركبة (مثل فواصل الغداء) الفاصل هو فترة زمنية متّصلة تظل خلالها المركبة في وضع السكون في موقعها الحالي ولا يمكنها إجراء أي زيارة. قد يحدث انقطاع في البث في الحالات التالية:
- أثناء التنقّل بين زيارتَين (بما في ذلك الوقت قبل الزيارة مباشرةً أو بعدها مباشرةً، ولكن ليس في منتصف الزيارة)، وفي هذه الحالة يتم تمديد وقت التنقّل المقابل بين الزيارات،
- أو قبل بدء تشغيل المركبة (قد لا يتم تشغيل المركبة في منتصف فترة الراحة)، وفي هذه الحالة لا يؤثر ذلك في وقت بدء تشغيل المركبة.
- أو بعد نهاية المركبة (بالمثل، مع وقت نهاية المركبة).
الحقول | |
---|---|
break_ |
تسلسل الفواصل اطّلِع على رسالة |
frequency_ |
قد تنطبق عدة |
BreakRequest
يجب معرفة تسلسل الفواصل (أي عددها وترتيبها) التي تنطبق على كل مركبة مسبقًا. تحدِّد العناصر BreakRequest
المتكرّرة هذا التسلسل بالترتيب الذي يجب أن تحدث به. قد تتداخل الفترات الزمنية (earliest_start_time
/ latest_start_time
)، ولكن يجب أن تكون متوافقة مع الطلب (يتم وضع علامة في المربّع بجانب هذا الخيار).
الحقول | |
---|---|
earliest_ |
مطلوب. الحدّ الأدنى (شاملاً) لبداية الاستراحة |
latest_ |
مطلوب. الحدّ الأقصى (شاملاً) لبداية الاستراحة |
min_ |
مطلوب. الحد الأدنى لمدة الفاصل يجب أن تكون موجبة. |
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_ |
مطلوب. الحد الأدنى لمدة الفاصل لهذا القيد غير سالب اطّلِع على وصف |
max_ |
مطلوب. الحد الأقصى المسموح به لأي فاصل زمني في المسار الذي لا يتضمّن فاصلًا |
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_ |
حدّ ثابت يفرض ألا تتجاوز المسافة max_meters يجب أن يكون الحدّ غير سالب. |
soft_ |
حدّ غير صارم لا يفرض حدًّا أقصى للمسافة، ولكن عند مخالفته يؤدي إلى تكلفة تضاف إلى التكاليف الأخرى المحدّدة في النموذج، باستخدام الوحدة نفسها. إذا تم تحديد soft_max_meters، يجب أن تكون قيمته أقل من max_meters ويجب ألا تكون سالبة. |
cost_ |
التكلفة المتكبّدة لكل كيلومتر، والتي تزيد حتى
هذه التكلفة غير متاحة في |
cost_ |
التكلفة لكل كيلومتر يتم تحصيلها إذا كانت المسافة تتجاوز الحدّ الأقصى
يجب أن تكون التكلفة غير سالبة. |
GcsDestination
الموقع الجغرافي في Google Cloud Storage الذي ستتم كتابة ملفات الإخراج فيه.
الحقول | |
---|---|
uri |
مطلوب. معرّف الموارد المنتظم (URI) لخدمة Google Cloud Storage |
GcsSource
الموقع في Google Cloud Storage الذي ستتم قراءة ملف الإدخال منه.
الحقول | |
---|---|
uri |
مطلوب. معرّف الموارد المنتظم لعنصر في Google Cloud Storage بالتنسيق |
InjectedSolutionConstraint
الحلّ الذي تمّ إدراجه في الطلب، بما في ذلك معلومات عن الزيارات التي يجب تقييدها وكيفية تقييدها
الحقول | |
---|---|
routes[] |
مسارات المحلول المطلوب حقنه قد يتم حذف بعض المسارات من الحلّ الأصلي. يجب أن تستوفي المسارات والشحنات التي تم تخطّيها افتراضات الصلاحية الأساسية المُدرَجة في |
skipped_ |
تم تخطي شحنات المحلول المطلوب حقنه. وقد يتم حذف بعض العناصر من الحلّ الأصلي. اطّلِع على حقل |
constraint_ |
بالنسبة إلى مجموعة واحدة أو أكثر من المركبات، يحدِّد هذا المقياس وقت تخفيف القيود ومقدار التخفيف. إذا كان هذا الحقل فارغًا، يتم فرض قيود كاملة على جميع مسارات المركبات غير الفارغة. |
ConstraintRelaxation
بالنسبة إلى مجموعة من المركبات، يحدِّد هذا الحقل الحدود التي سيتم عندها تخفيف القيود المفروضة على الزيارات إلى المستوى المطلوب. يتم فرض تخطّي الشحنات المدرَجة في الحقل skipped_shipment
، أي أنّه لا يمكن تنفيذها.
الحقول | |
---|---|
relaxations[] |
جميع إجراءات تخفيف القيود المفروضة على الزيارات التي سيتم تطبيقها على الزيارات على المسارات التي تتضمّن مركبات في |
vehicle_ |
تحدّد فهارس المركبات التي ينطبق عليها قيد الزيارة يتمّ ربط فهرس المركبة بالطريقة نفسها التي يتمّ بها ربط |
استرخاء
إذا كان الحقل relaxations
فارغًا، يتم فرض قيود كاملة على وقت بدء جميع الزيارات على routes
وتسلسلها، ولا يمكن إدراج أي زيارات جديدة أو إضافتها إلى هذه المسارات. بالإضافة إلى ذلك، يكون وقت بدء ونهاية المركبة في routes
محدودًا بالكامل، ما لم تكن المركبة فارغة (أي ليس لها زيارات وتم ضبط used_if_route_is_empty
على false في النموذج).
يحدِّد 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_ |
الوقت الذي يمكن فيه تطبيق |
threshold_ |
عدد الزيارات التي يمكن عندها أو بعدها تطبيق التخفيض إذا كان |
المستوى
يعبّر عن مستويات تخفيف القيود المختلفة التي يتم تطبيقها على زيارة وتلك التي تليها عند استيفاء شروط الحدّ الأدنى.
تم ترتيب النقاط أدناه حسب ترتيب زيادة الاسترخاء.
عمليات التعداد | |
---|---|
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_ |
مطلوب. تنسيق بيانات الإدخال |
حقل الربط source مطلوب. يمكن أن يكون source واحدًا فقط مما يلي: |
|
gcs_ |
موقع Google Cloud Storage يجب أن يكون هذا عنصرًا واحدًا (ملفًا). |
الموقع الجغرافي
تُحاط بموقع جغرافي (نقطة جغرافية وعنوان اختياري).
الحقول | |
---|---|
lat_ |
الإحداثيات الجغرافية لنقطة الطريق |
heading |
اتجاه البوصلة المرتبط باتجاه تدفق حركة المرور تُستخدَم هذه القيمة لتحديد جانب الطريق الذي سيتم استخدامه لعمليات الاستلام والإرجاع. يمكن أن تتراوح قيم الاتجاه بين 0 و360، حيث يحدد الصفر اتجاهًا شماليًا تمامًا، ويحدد 90 اتجاهًا شرقيًا تمامًا، وما إلى ذلك. |
OptimizeToursRequest
طلب تسليمه إلى أداة حلّ تحسين الجولات التي تحدّد نموذج الشحنة المطلوب حلّها بالإضافة إلى مَعلمات التحسين
الحقول | |
---|---|
parent |
مطلوب. استهدِف المشروع أو الموقع الجغرافي لإجراء مكالمة. التنسيق: * في حال عدم تحديد موقع جغرافي، سيتم اختيار منطقة تلقائيًا. |
timeout |
في حال ضبط هذه المهلة، يعرض الخادم استجابة قبل انقضاء فترة المهلة أو بلوغ الموعد النهائي للخادم للطلبات المتزامنة، أيهما أقرب. بالنسبة إلى الطلبات غير المتزامنة، سينشئ الخادم حلًا (إن أمكن) قبل انتهاء المهلة. |
model |
نموذج الشحن لحلّ المشكلة |
solving_ |
يكون وضع الحل تلقائيًا هو |
search_ |
وضع البحث المستخدَم لحلّ الطلب |
injected_ |
توجيه خوارزمية التحسين في العثور على حلّ أوّل مشابه لحلّ سابق يتم تقييد النموذج عند إنشاء الحلّ الأول. يتمّ تخطّي أيّ شحنات لم يتمّ تنفيذها على مسار معيّن بشكل ضمني في الحلّ الأول، ولكن قد يتمّ تنفيذها في الحلول اللاحقة. يجب أن يستوفي الحلّ بعض الافتراضات الأساسية للصلاحية:
إذا لم يكن الحلّ المُدرَج قابلاً للتطبيق، لا يعني ذلك بالضرورة ظهور خطأ في عملية التحقّق، بل قد يظهر خطأ يشير إلى عدم قابلية الحلّ للتطبيق. |
injected_ |
تقييد خوارزمية التحسين للعثور على حل نهائي مشابه لحلّ سابق على سبيل المثال، يمكن استخدام هذا الإجراء لتجميد أجزاء من المسارات التي سبق إكمالها أو التي سيتم إكمالها ولكن يجب عدم تعديلها. إذا لم يكن الحلّ المُدرَج قابلاً للتطبيق، لا يعني ذلك بالضرورة ظهور خطأ في عملية التحقّق، بل قد يظهر خطأ يشير إلى عدم قابلية الحلّ للتطبيق. |
refresh_ |
إذا لم تكن فارغة، سيتمّ تعديل المسارات المحدّدة بدون تعديل تسلسل الزيارات أو أوقات التنقّل الأساسية: سيتمّ تعديل التفاصيل الأخرى فقط. لا يؤدي ذلك إلى حلّ المشكلة في النموذج. اعتبارًا من تشرين الثاني (نوفمبر) 2020، لا يتمّ ملء خطوط البوليجون إلا للمسارات غير الفارغة، ويتطلّب ذلك ضبط قد تكون حقول يجب عدم استخدام هذا الحقل مع لا يؤثّر الخياران |
interpret_ |
إذا كان صحيحًا:
ينطبق هذا التفسير على الحقول إذا كانت القيمة هي true، يجب أن تظهر التصنيفات في الفئات التالية مرة واحدة فقط في فئتها:
إذا لم يكن قد تؤدي إزالة زيارات المسار أو مسارات كاملة من حلّ تمّت حقنه إلى التأثير في القيود الضمنية، ما قد يؤدي إلى تغيير في الحلّ أو أخطاء في التحقّق أو عدم القابلية للتنفيذ. ملاحظة: على المتصل التأكّد من أنّ كل |
consider_ |
ننصحك بالأخذ في الاعتبار تقدير عدد الزيارات عند احتساب حقول |
populate_ |
إذا كان صحيحًا، ستتم تعبئة الخطوط المتعددة في |
populate_ |
إذا كانت القيمة "صحيح"، سيتم تعبئة الخطوط المتعددة ورموز المسارات في الاستجابة |
allow_ |
في حال ضبط هذا الخيار، يمكن أن يكون للطلب مهلة (راجِع https://grpc.io/blog/deadlines) تصل إلى 60 دقيقة. بخلاف ذلك، تكون المهلة القصوى 30 دقيقة فقط. يُرجى العِلم أنّ الطلبات التي تستمر لفترة طويلة تكون أكثر عرضة للانقطاع (ولكن بنسبة صغيرة). |
use_ |
إذا كان صحيحًا، سيتم احتساب مسافات التنقّل باستخدام المسافات الجيوديسية بدلاً من مسافات "خرائط Google"، وسيتم احتساب أوقات التنقّل باستخدام المسافات الجيوديسية بسرعة محدّدة بواسطة |
label |
التصنيف الذي يمكن استخدامه لتحديد هذا الطلب، والذي تم الإبلاغ عنه في |
geodesic_ |
عندما تكون قيمة |
max_ |
تقتطع عدد أخطاء التحقّق التي يتم عرضها. يتم عادةً إرفاق هذه الأخطاء بحمولة خطأ INVALID_ARGUMENT كتفاصيل خطأ BadRequest (https://cloud.google.com/apis/design/errors#error_details)، ما لم يكن solving_mode=VALIDATE_ONLY: راجِع الحقل |
SearchMode
وضع يحدّد سلوك البحث، ويوازن بين وقت الاستجابة وجودة الحلّ في جميع الأوضاع، يتم فرض الموعد النهائي العام للطلب.
عمليات التعداد | |
---|---|
SEARCH_MODE_UNSPECIFIED |
وضع بحث غير محدّد، ما يعادل RETURN_FAST . |
RETURN_FAST |
توقّف عن البحث بعد العثور على أول حلّ جيد. |
CONSUME_ALL_AVAILABLE_TIME |
اقضِ كل الوقت المتاح في البحث عن حلول أفضل. |
SolvingMode
تحدِّد كيفية تعامل أداة حلّ المشاكل مع الطلب. في جميع الأوضاع باستثناء VALIDATE_ONLY
، إذا كان الطلب غير صالح، ستتلقّى خطأ INVALID_REQUEST
. راجِع max_validation_errors
لتحديد الحد الأقصى لعدد الأخطاء التي يتم عرضها.
عمليات التعداد | |
---|---|
DEFAULT_SOLVE |
حلّ النموذج قد يتم إصدار التحذيرات في [OptimizeToursResponse.validation_errors][google.cloud.optimization.v1.OptimizeToursResponse.validation_errors]. |
VALIDATE_ONLY |
التحقّق من صحة النموذج فقط بدون حلّه: تعبئة أكبر عدد ممكن من OptimizeToursResponse.validation_errors |
DETECT_SOME_INFEASIBLE_SHIPMENTS |
يتم تعبئة ملاحظة مهمة: لا يتمّ عرض جميع الشحنات غير الممكنة هنا، ولكن يتمّ عرض الشحنات التي يتمّ رصدها على أنّها غير ممكنة أثناء المعالجة المُسبَقة فقط. |
OptimizeToursResponse
ردّ بعد حلّ مشكلة تحسين الجولة يحتوي على المسارات التي تتّبعها كل مركبة والشحنات التي تم تخطّيها والتكلفة الإجمالية للحلّ
الحقول | |
---|---|
routes[] |
المسارات المحسوبة لكل مركبة، حيث يتطابق المسار i مع المركبة i في النموذج. |
request_ |
نسخة من |
skipped_ |
تم تخطّي قائمة جميع الشحنات. |
validation_ |
قائمة بجميع أخطاء التحقّق التي تمكّنا من رصدها بشكل مستقل اطّلِع على شرح "أخطاء متعدّدة" لرسالة |
metrics |
مقاييس المدة والمسافة والاستخدام لهذا الحلّ |
المقاييس
المقاييس العامة المجمّعة على مستوى جميع المسارات
الحقول | |
---|---|
aggregated_ |
يتم احتساب هذه النسبة بشكل مجمع على مدار المسارات. كل مقياس هو مجموع (أو الحد الأقصى للتحميلات) لجميع حقول |
skipped_ |
عدد الشحنات الإلزامية التي تم تخطّيها |
used_ |
عدد المركبات المستخدَمة ملاحظة: إذا كان مسار المركبة فارغًا وكانت القيمة |
earliest_ |
أقرب وقت بدء لمركبة مستعملة، ويتم احتسابه على أنّه الحد الأدنى لجميع المركبات المستعمَلة التي تبلغ |
latest_ |
آخر وقت انتهاء لمركبة مستعملة، ويتم احتسابه على أنّه الحد الأقصى لجميع المركبات المستعمَلة التي تبلغ |
costs |
تكلفة الحلّ، مقسّمة حسب حقول الطلبات ذات الصلة بالتكلفة المفاتيح هي مسارات نموذجية، نسبةً إلى إدخال OptimizeToursRequest، على سبيل المثال "model.shipments.pickups.cost"، والقيم هي التكلفة الإجمالية التي تم إنشاؤها بواسطة حقل التكلفة المقابل، ويتم تجميعها على مستوى الحلّ بأكمله. بعبارة أخرى، costs["model.shipments.pickups.cost"] هي مجموع جميع تكاليف الاستلام على مستوى الحلّ. يتمّ إدراج جميع التكاليف المحدّدة في النموذج بالتفصيل هنا باستثناء التكاليف المرتبطة بعناصر TransitionAttributes التي يتمّ إدراجها فقط بطريقة مجمّعة اعتبارًا من 01/2022. |
total_ |
التكلفة الإجمالية للحلّ مجموع جميع القيم في خريطة التكاليف |
OptimizeToursValidationError
يصف هذا الحقل خطأ أو تحذيرًا حدث أثناء التحقّق من صحة OptimizeToursRequest
.
الحقول | |
---|---|
code |
يتم تحديد خطأ التحقّق من الصحة من خلال الزوج ( تقدّم الحقول التي تتبع هذا القسم مزيدًا من السياق حول الخطأ. أخطاء متعددة: عندما تكون هناك أخطاء متعددة، تحاول عملية التحقّق من الصحة عرض العديد منها. هذه عملية غير كاملة، تمامًا مثل عملية الترجمة. ستكون بعض أخطاء التحقّق "خطيرة"، ما يعني أنّها تؤدي إلى إيقاف عملية التحقّق بالكامل. وينطبق ذلك على أخطاء الثبات: يجب أن يكون |
display_ |
الاسم المعروض للخطأ |
fields[] |
قد يتضمّن سياق الخطأ 0 أو 1 حقل (في معظم الأحيان) أو أكثر. على سبيل المثال، يمكن الإشارة إلى عملية الاستلام الأولى للمركبة رقم 4 والشحنة رقم 2 على النحو التالي:
يُرجى العلم أنّ عدد القيم الفريدة للسمة |
error_ |
سلسلة تصف الخطأ ويمكن لشخص عادي قراءتها هناك تعيين بنسبة 1:1 بين الثبات: غير ثابت: قد تتغيّر رسالة الخطأ المرتبطة بقيمة |
offending_ |
قد تحتوي على قيم الحقول. ولا يتوفّر هذا الخيار في بعض الأحيان. يجب عدم الاعتماد عليه مطلقًا واستخدامه فقط لتصحيح أخطاء النموذج يدويًا. |
FieldReference
تُحدِّد سياقًا لخطأ التحقّق. يشير FieldReference
دائمًا إلى حقل معيّن في هذا الملف ويتّبع البنية الهرمية نفسها. على سبيل المثال، يمكننا تحديد العنصر رقم 2 من start_time_windows
للمركبة رقم 5 باستخدام:
name: "vehicles" index: 5 sub_field { name: "end_time_windows" index: 2 }
ومع ذلك، نتجاهل الكيانات من المستوى الأعلى، مثل OptimizeToursRequest
أو ShipmentModel
لتجنُّب تشويش الرسالة.
الحقول | |
---|---|
name |
اسم الحقل، على سبيل المثال: "مركبات". |
sub_ |
حقل فرعي مُدمَج بشكل تسلسلي، إذا لزم الأمر |
حقل الربط يمكن أن يكون |
|
index |
فهرس الحقل في حال تكراره |
key |
مفتاح إذا كان الحقل خريطة |
OutputConfig
حدِّد وجهة لنتائج [BatchOptimizeTours][google.maps.routeoptimization.v1.RouteOptimizationService.BatchOptimizeTours].
الحقول | |
---|---|
data_ |
مطلوب. تنسيق البيانات الناتجة |
حقل الربط destination مطلوب. يمكن أن يكون destination واحدًا فقط مما يلي: |
|
gcs_ |
الموقع الجغرافي في Google Cloud Storage لكتابة الإخراج |
RouteModifiers
تُحاط مجموعة من الشروط الاختيارية التي يجب استيفاؤها عند احتساب مسارات المركبات. يشبه هذا الإجراء العنصر RouteModifiers
في واجهة برمجة التطبيقات المفضّلة للمسارات في "منصّة خرائط Google". يُرجى الاطّلاع على: https://developers.google.com/maps/documentation/routes/reference/rest/v2/RouteModifiers.
الحقول | |
---|---|
avoid_ |
لتحديد ما إذا كنت تريد تجنُّب الطرق ذات الرسوم في الحالات المعقولة سيتم منح الأولوية للمسارات التي لا تتضمّن طرقًا ذات رسوم عبور. لا ينطبق إلا على وسائل النقل الآلية. |
avoid_ |
يحدّد ما إذا كان يجب تجنُّب الطرق السريعة كلما أمكن ذلك. وسيتم منح الأولوية للمسارات التي لا تحتوي على طرق سريعة. لا ينطبق إلا على وسائل النقل الآلية. |
avoid_ |
تُحدِّد ما إذا كان يجب تجنُّب العبّارات كلما أمكن ذلك. سيتم منح الأولوية للمسارات التي لا تتضمّن السفر عبر العبّارات. لا ينطبق إلا على وسائل النقل الآلية. |
avoid_ |
اختيارية: تحدِّد ما إذا كان يجب تجنُّب التنقّل داخل المباني حيثما أمكن. سيتم منح الأولوية للمسارات التي لا تتضمّن التنقّل داخل المباني. ينطبق ذلك على وضع السفر |
الشحن
شحن سلعة واحدة من مكان جمعها إلى مكان تسليمها لكي يتم اعتبار الشحنة مكتملة، يجب أن تزور مركبة فريدة أحد مواقع الاستلام (وتُخفض سعتها الاحتياطية وفقًا لذلك)، ثم تزور أحد مواقع التسليم لاحقًا (وبالتالي تُعيد زيادة سعتها الاحتياطية وفقًا لذلك).
الحقول | |
---|---|
display_ |
الاسم المعروض الذي يحدّده المستخدم للشحنة يمكن أن يصل طوله إلى 63 حرفًا وقد يستخدم أحرف UTF-8. |
pickups[] |
مجموعة من بدائل الاستلام المرتبطة بالشحنة في حال عدم تحديد موقع جغرافي، يجب أن تزور المركبة موقعًا جغرافيًا يتوافق مع عمليات التسليم. |
deliveries[] |
مجموعة من بدائل التسليم المرتبطة بالشحنة في حال عدم تحديد موقع جغرافي، يجب أن تزور المركبة موقعًا جغرافيًا يتطابق مع مواقع الاستلام. |
load_ |
متطلبات تحميل الشحنة (مثل الوزن والحجم وعدد المنصات وما إلى ذلك) يجب أن تكون المفاتيح في الخريطة معرّفات تصف نوع الحمولة المقابلة، ويُفضّل أن تتضمّن أيضًا الوحدات. على سبيل المثال: "weight_kg" و"volume_gallons" و"pallet_count" وما إلى ذلك. إذا لم يظهر مفتاح معيّن في الخريطة، يُعتبَر الحمولة المقابلة فارغة. |
allowed_ |
مجموعة المركبات التي يمكنها تنفيذ هذه الشحنة إذا كان الحقل فارغًا، يمكن لجميع المركبات تنفيذه. يتم عرض المركبات حسب فهرسها في قائمة |
costs_ |
تُستخدَم لتحديد التكلفة المتكبّدة عند تسليم هذه الشحنة بواسطة كل مركبة. في حال تحديدها، يجب أن تتضمّن أيًا مما يلي:
يجب أن تكون هذه التكاليف بالوحدة نفسها المستخدَمة في |
costs_ |
مؤشرات المركبات التي ينطبق عليها |
pickup_ |
تُستخدَم لتحديد الحد الأقصى للوقت المطلق للمسار غير المباشر مقارنةً بأقصر مسار من نقطة الاستلام إلى نقطة التسليم. في حال تحديده، يجب أن يكون موجبًا، ويجب أن تحتوي الشحنة على عملية استلام وتسليم واحدة على الأقل. على سبيل المثال، لنفترض أنّ t هو أقصر وقت يستغرقه الانتقال من خيار استلام الطلب المحدّد مباشرةً إلى خيار التسليم المحدّد. بعد ذلك، يفرض الإعداد
في حال تحديد الحدود النسبية والمطلقة في الشحنة نفسها، يتم استخدام الحد الأكثر تقييدًا لكل زوج من عمليات الاستلام/التسليم المحتملة. اعتبارًا من تشرين الأول (أكتوبر) 2017، لا تتوفّر الالتفافات إلا عندما لا تعتمد مدد التنقّل على المركبات. |
pickup_ |
تحدّد هذه السمة الحد الأقصى لمدة عملية الشحن من بداية الاستلام إلى بدء التسليم. في حال تحديده، يجب أن يكون موجبًا، ويجب أن تحتوي الشحنة على عملية استلام وتسليم واحدة على الأقل. ولا يعتمد ذلك على البدائل التي يتم اختيارها للاستلام والتسليم، ولا على سرعة المركبة. ويمكن تحديد ذلك إلى جانب قيود الانحراف القصوى: سيلتزم الحل بكلتا المواصفات. |
shipment_ |
سلسلة غير فارغة تحدّد "نوعًا" لهذه الشحنة يمكن استخدام هذه الميزة لتحديد حالات عدم التوافق أو المتطلبات بين يختلف عن |
label |
تُحدِّد تصنيفًا لهذه الشحنة. يتم تسجيل هذا التصنيف في الردّ في |
ignore |
إذا كانت القيمة صحيحة، تخطّ هذه الشحنة، ولكن لا تطبِّق يؤدي تجاهل شحنة إلى حدوث خطأ في التحقّق عند توفّر أي يُسمح بتجاهل شحنة يتم تنفيذها في |
penalty_ |
في حال عدم اكتمال الشحنة، تتم إضافة هذه الغرامة إلى التكلفة الإجمالية للمسارات. تُعتبر الشحنة مكتملة إذا تم زيارة أحد خيارات الاستلام والتسليم. يمكن التعبير عن التكلفة بالوحدة نفسها المستخدَمة في جميع الحقول الأخرى ذات الصلة بالتكلفة في النموذج، ويجب أن تكون موجبة. ملاحظة مهمة: إذا لم يتم تحديد هذه العقوبة، سيتم اعتبارها غير محدودة، أي أنّه يجب إكمال الشحنة. |
pickup_ |
تُحدِّد الحد الأقصى للوقت النسبي للمسار غير المباشر مقارنةً بالمسار الأقصر من نقطة الاستلام إلى نقطة التسليم. في حال تحديده، يجب أن يكون موجبًا، ويجب أن تحتوي الشحنة على عملية استلام وتسليم واحدة على الأقل. على سبيل المثال، لنفترض أنّ t هو أقصر وقت يستغرقه الانتقال من خيار استلام الطلب المحدّد مباشرةً إلى خيار التسليم المحدّد. بعد ذلك، يفرض الإعداد
في حال تحديد الحدود النسبية والمطلقة في الشحنة نفسها، يتم استخدام الحد الأكثر تقييدًا لكل زوج من عمليات الاستلام/التسليم المحتملة. اعتبارًا من تشرين الأول (أكتوبر) 2017، لا تتوفّر الالتفافات إلا عندما لا تعتمد مدد التنقّل على المركبات. |
تحميل
عند إجراء زيارة، قد تتم إضافة مبلغ محدّد مسبقًا إلى حمولة المركبة إذا كانت عملية استلام، أو طرحه إذا كانت عملية تسليم. وتحدِّد هذه الرسالة هذا المبلغ. يمكنك الاطّلاع على load_demands
.
الحقول | |
---|---|
amount |
مقدار الاختلاف في حمولة المركبة التي تُجري الزيارة المعنيّة. وبما أنّه عدد صحيح، ننصح المستخدمين باختيار وحدة مناسبة لتجنُّب فقدان الدقة. يجب أن تكون القيمة أكبر من أو تساوي 0. |
VisitRequest
طلب زيارة يمكن إجراؤها بواسطة مركبة: لها موقع جغرافي (أو موقعان، راجِع المعلومات أدناه)، وأوقات افتتاح وإغلاق يتم تمثيلها من خلال الفترات الزمنية، ومدة الخدمة (الوقت الذي تقضيه المركبة بعد وصولها لجمع السلع أو تسليمها).
الحقول | |
---|---|
arrival_ |
الموقع الجغرافي الذي تصل إليه المركبة عند تنفيذ هذا |
arrival_ |
نقطة الطريق التي تصل إليها المركبة عند تنفيذ هذه |
departure_ |
الموقع الجغرافي الذي تغادر منه المركبة بعد إكمال هذا |
departure_ |
نقطة الطريق التي تغادر منها المركبة بعد إكمال هذا |
tags[] |
تحدِّد العلامات المرفقة بطلب الزيارة. لا يُسمح باستخدام سلاسل فارغة أو مكرّرة. |
time_ |
الفترات الزمنية التي تحدّ من وقت الوصول في إحدى الزيارات يُرجى العِلم أنّه قد تغادر المركبة خارج فترة وقت الوصول، أي أنّ وقت الوصول + المدة لا يجب أن يكونا ضمن فترة زمنية. وقد يؤدي ذلك إلى الانتظار إذا وصلت المركبة قبل يعني عدم توفّر يجب أن تكون الفترات الزمنية غير متداخلة، أي يجب ألا تتداخل أي فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب متزايد. لا يمكن ضبط |
duration |
مدة الزيارة، أي الوقت الذي تقضيه المركبة بين الوصول والمغادرة (تُضاف إلى وقت الانتظار المحتمَل، راجِع |
cost |
تكلفة خدمة طلب الزيارة هذا على مسار مركبة. ويمكن استخدامها لدفع تكاليف مختلفة لكل عملية استلام أو تسليم بديلة للشحنة. يجب أن تكون هذه التكلفة بالوحدة نفسها المستخدَمة في |
load_ |
تحميل متطلبات طلب الزيارة هذا يشبه هذا الحقل حقل |
visit_ |
تحدِّد أنواع الزيارة. ويمكن استخدام هذا الوقت لتحديد الوقت الإضافي المطلوب لمركبة لإكمال هذه الزيارة (راجِع يمكن أن يظهر النوع مرّة واحدة فقط. |
label |
تُحدِّد تصنيفًا لهذا |
ShipmentModel
يحتوي نموذج الشحن على مجموعة من الشحنات التي يجب تنفيذها بواسطة مجموعة من المركبات، مع تقليل التكلفة الإجمالية إلى أدنى حد، وهي مجموع ما يلي:
- تكلفة توجيه المركبات (مجموع التكلفة لكل إجمالي الوقت والتكلفة لكل وقت السفر والتكلفة الثابتة على جميع المركبات)
- عقوبات الشحن غير المنفَّذ
- تكلفة المدة الزمنية الإجمالية للشحنات
الحقول | |
---|---|
shipments[] |
مجموعة الشحنات التي يجب تنفيذها في النموذج |
vehicles[] |
مجموعة من المركبات التي يمكن استخدامها لإجراء الزيارات |
global_ |
وقتا البدء والانتهاء العامان للنموذج: لا يمكن اعتبار أي أوقات خارج هذا النطاق صالحة. يجب أن تكون الفترة الزمنية للنموذج أقل من عام، أي أنّ عند استخدام حقول |
global_ |
في حال عدم ضبط القيمة، يتم استخدام 00:00:00 بالتوقيت العالمي المنسق، 1 كانون الثاني (يناير) 1971 (أي الثواني: 31536000، النانو ثانية: 0) كقيمة تلقائية. |
global_ |
"المدة الإجمالية" للخطة العامة هي الفرق بين أقرب وقت بدء سارٍ وآخر وقت انتهاء سارٍ لجميع المركبات. يمكن للمستخدمين تحديد تكلفة لكل ساعة لهذه الكمية لمحاولة تحسينها من أجل إكمال المهمة في أقرب وقت ممكن، على سبيل المثال. يجب أن تكون هذه التكلفة بالوحدة نفسها المستخدَمة في |
duration_ |
تُحدِّد مصفوفات المدة والمسافة المستخدَمة في النموذج. إذا كان هذا الحقل فارغًا، سيتم استخدام "خرائط Google" أو المسافات الجيوديسية بدلاً من ذلك، استنادًا إلى قيمة الحقل أمثلة على الاستخدام:
|
duration_ |
علامات تحدّد مصادر مصفوفتَي المدة والمسافة: تتطابق العلامات مع |
duration_ |
علامات تحدّد وجهات مصفوفتَي المدة والمسافة؛ تتطابق العلامات مع |
transition_ |
تمّت إضافة سمات الانتقال إلى النموذج. |
shipment_ |
مجموعات من أنواع الشحن غير المتوافقة (راجِع |
shipment_ |
مجموعات من متطلبات |
precedence_ |
مجموعة من قواعد الأسبقية التي يجب فرضها في النموذج |
max_ |
تحدّ من الحد الأقصى لعدد المركبات النشطة. تكون المركبة نشطة إذا كان مسارها ينقل شحنة واحدة على الأقل. يمكن استخدام هذا الإجراء للحدّ من عدد المسارات في حال كان عدد السائقين أقل من عدد المركبات وكان أسطول المركبات غير متجانس. بعد ذلك، سيحدِّد التحسين أفضل مجموعة فرعية من المركبات لاستخدامها. يجب أن تكون موجبة بالتأكيد. |
DurationDistanceMatrix
تُحدِّد مصفوفة المدة والمسافة من مواقع بدء الزيارة والمركبة إلى مواقع انتهاء الزيارة والمركبة.
الحقول | |
---|---|
rows[] |
تحدّد صفوف مصفوفة المدة والمسافة. يجب أن يحتوي على عدد عناصر يساوي |
vehicle_ |
علامة تحدِّد المركبات التي تنطبق عليها مصفوفة المدة والمسافة هذه إذا كان هذا الحقل فارغًا، ينطبق ذلك على جميع المركبات، ولا يمكن أن تتوفّر سوى مصفوفة واحدة. يجب أن يتطابق كل بدء مركبة مع مصفوفة واحدة بالضبط، أي أن يتطابق حقل يجب أن تحتوي جميع المصفوفات على |
الصف
تحدّد صفًا من مصفوفة المدة والمسافة.
الحقول | |
---|---|
durations[] |
قيم المدة لصف معيّن يجب أن يحتوي على عدد عناصر يساوي |
meters[] |
قيم المسافة لصف معيّن إذا لم تكن أي تكاليف أو قيود تشير إلى المسافات في النموذج، يمكن ترك هذا الحقل فارغًا، وإلا يجب أن يحتوي على عدد عناصر يساوي |
PrecedenceRule
قاعدة الأولوية بين حدثَين (كل حدث هو استلام أو تسليم شحنة): يجب أن يبدأ الحدث "الثاني" بعد offset_duration
على الأقل من بدء الحدث "الأول".
يمكن أن تشير عدة أولويات إلى الأحداث نفسها (أو ذات الصلة)، على سبيل المثال: "يتم استلام الطلب (ب) بعد تسليم الطلب (أ)" و "يتم استلام الطلب (ج) بعد استلام الطلب (ب)".
بالإضافة إلى ذلك، لا تسري الأولويات إلا عند تنفيذ كلتا الشحنتَين ويتم تجاهلها بخلاف ذلك.
الحقول | |
---|---|
first_ |
يشير إلى ما إذا كان الحدث "الأول" هو عملية إرسال. |
second_ |
يشير إلى ما إذا كان الحدث "الثاني" تسليمًا. |
offset_ |
الفاصل الزمني بين الحدث "الأول" والحدث "الثاني". يمكن أن تكون سلبية. |
first_ |
فهرس الشحنة للحدث "الأول". يجب تحديد هذا الحقل. |
second_ |
فهرس الشحنة للحدث "الثاني". يجب تحديد هذا الحقل. |
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 أثناء عملية النقل.
- ولا تتداخل هذه المجموعات.
- يكون DELAY فريدًا ويجب أن يكون فترة زمنية متصلة مباشرةً قبل الزيارة التالية (أو نهاية المركبة). وبالتالي، يكفي معرفة مدة التأخير لمعرفة وقت البدء والانتهاء.
- الفواصل هي فترات زمنية متصلة وغير متداخلة. يحدِّد الردّ وقت بدء كل استراحة ومدتها.
- 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_ |
المركبة التي تسير في المسار، ويتم تحديدها من خلال فهرسها في المصدر |
vehicle_ |
تصنيف المركبة التي تسلك هذا المسار، يساوي |
vehicle_ |
الوقت الذي تبدأ فيه المركبة مسارها |
vehicle_ |
الوقت الذي تنتهي فيه المركبة من مسارها |
visits[] |
تسلسل منتظم للزيارات يمثّل مسارًا. وvisits[i] هي الزيارة رقم i في المسار. إذا كان هذا الحقل فارغًا، تُعتبر المركبة غير مستخدَمة. |
transitions[] |
قائمة بحالات النقل للمسار مرتبة حسب الترتيب |
has_ |
عند ضبط
من المرجّح أن يتم الوصول إلى next_visit في وقت متأخر عن الوقت المحدّد حاليًا بسبب الزيادة في تقدير وقت التنقّل |
route_ |
تمثيل المسار المشفَّر بالخطوط المتعددة لا تتم تعبئة هذا الحقل إلا إذا تم ضبط |
breaks[] |
فترات الراحة المُجدوَلة للمركبة التي تسير في هذا المسار يمثّل تسلسل |
metrics |
مقاييس المدة والمسافة والحمولة لهذا المسار يتم تجميع حقول |
route_ |
تكلفة المسار، مقسّمة حسب حقول الطلبات ذات الصلة بالتكلفة المفاتيح هي مسارات نموذجية، نسبةً إلى إدخال OptimizeToursRequest، مثل "model.shipments.pickups.cost"، والقيم هي التكلفة الإجمالية التي تم إنشاؤها بواسطة حقل التكلفة المقابل، ويتم تجميعها على مستوى المسار بأكمله. بعبارة أخرى، فإنّ costs["model.shipments.pickups.cost"] هي مجموع جميع تكاليف الاستلام على طول المسار. يتمّ إدراج جميع التكاليف المحدّدة في النموذج بالتفصيل هنا باستثناء التكاليف المرتبطة بعناصر TransitionAttributes التي يتمّ إدراجها بطريقة مجمّعة فقط اعتبارًا من 01/2022. |
route_ |
التكلفة الإجمالية للمسار مجموع كل التكاليف في خريطة التكلفة. |
استراحة
بيانات تمثّل تنفيذ فاصل
الحقول | |
---|---|
start_ |
وقت بدء الفاصل |
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_ |
مدة التنقّل خلال هذه الفترة الانتقالية |
travel_ |
المسافة المقطوعة أثناء عملية النقل |
traffic_ |
عند طلب عدد الزيارات من خلال |
delay_ |
مجموع مدد التأخير المطبَّقة على هذا الانتقال يبدأ التأخير، إن وجد، قبل |
break_ |
مجموع مدّة الفواصل التي تحدث أثناء هذا الانتقال، إن توفّرت يتم تخزين تفاصيل وقت بدء كل استراحة ومدتها في |
wait_ |
الوقت الذي تمّ انتظاره خلال هذه الفترة الانتقالية تتوافق مدة الانتظار مع وقت التوقف ولا تشمل وقت الاستراحة. يُرجى العلم أيضًا أنّ وقت الانتظار هذا قد يتم تقسيمه إلى عدة فترات غير متصلة. |
total_ |
إجمالي مدة الانتقال، مقدَّمة لتسهيل الاستخدام وهي تساوي:
|
start_ |
وقت بدء عملية النقل هذه |
route_ |
تمثيل الخطوط المتعددة المشفَّرة للمسار الذي تم اتّباعه أثناء عملية النقل لا تتم تعبئة هذا الحقل إلا إذا تم ضبط |
route_ |
النتائج فقط. رمز تعريف غير شفاف يمكن تمريره إلى حزمة تطوير البرامج (SDK) للتنقّل لإعادة إنشاء المسار أثناء التنقّل، وفي حال إعادة التوجيه، يتم الالتزام بالنية الأصلية عند إنشاء المسار. يجب التعامل مع هذا الرمز المميّز كمجموعة بيانات غير شفافة. لا تقارِن قيمته في جميع الطلبات لأنّ قيمته قد تتغيّر حتى إذا كانت الخدمة تعرض المسار نفسه بالضبط. لا تتم تعبئة هذا الحقل إلا إذا تم ضبط |
vehicle_ |
أحمال المركبات أثناء عملية النقل هذه، لكل نوع يظهر في الأحمال أثناء عملية النقل الأولى هي الأحمال الأولية لمسار المركبة. بعد ذلك، بعد كل زيارة، تتم إضافة |
VehicleLoad
يُستخدَم لتسجيل الحمولة الفعلية للمركبة في نقطة معيّنة على طول المسار، لنوع معيّن (راجِع Transition.vehicle_loads
).
الحقول | |
---|---|
amount |
كمية الحمولة على المركبة، لنوع معيّن يتم عادةً الإشارة إلى وحدة الحمل حسب النوع. يمكنك الاطّلاع على |
انتقال
زيارة تم إجراؤها أثناء مسار ترتبط هذه الزيارة باستلام أو تسليم Shipment
.
الحقول | |
---|---|
shipment_ |
فهرس حقل |
is_ |
إذا كانت القيمة صحيحة، تشير الزيارة إلى استلام |
visit_ |
فهرس |
start_ |
الوقت الذي تبدأ فيه الزيارة. يُرجى العِلم أنّه قد تصل المركبة إلى موقع الزيارة قبل هذا الموعد. تتوافق الأوقات مع |
load_ |
إجمالي طلب تحميل الزيارات كحاصل جمع الشحنة وطلب الزيارة |
detour |
وقت الالتفاف الإضافي بسبب الشحنات التي تمّت زيارتها على المسار قبل الزيارة ووقت الانتظار المحتمَل الناتج عن النوافذ الزمنية إذا كانت الزيارة عبارة عن عملية تسليم، يتم احتساب المسار غير المباشر من زيارة الاستلام المقابلة لها، وهو يساوي:
وبخلاف ذلك، يتم احتسابه من المركبة
|
shipment_ |
نسخة من |
visit_ |
نسخة من |
ShipmentTypeIncompatibility
تُحدِّد حالات عدم التوافق بين الشحنات استنادًا إلى shipment_type. يتم حظر ظهور الشحنات غير المتوافقة على المسار نفسه استنادًا إلى وضع عدم التوافق.
الحقول | |
---|---|
types[] |
قائمة بالأنواع غير المتوافقة الشحنتان اللتان تتضمّنان |
incompatibility_ |
الوضع الذي تم تطبيقه على عدم التوافق |
IncompatibilityMode
أوضاع تحدّد كيفية حظر ظهور الشحنات غير المتوافقة على المسار نفسه
عمليات التعداد | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
وضع عدم التوافق غير محدّد يجب عدم استخدام هذه القيمة مطلقًا. |
NOT_PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، لا يمكن مطلقًا أن تشترك شحنتان من أنواع غير متوافقة في المركبة نفسها. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
بالنسبة إلى شحنتَين بنوعَين غير متوافقَين في وضع عدم التوافق
|
ShipmentTypeRequirement
تُحدِّد المتطلبات بين الشحنات استنادًا إلى shipment_type. يتم تحديد تفاصيل المتطلّب حسب وضع المتطلّب.
الحقول | |
---|---|
required_ |
قائمة بأنواع الشحن البديلة المطلوبة من قِبل |
dependent_ |
تتطلّب جميع الشحنات التي تحتوي على نوع في الحقل ملاحظة: لا يُسمح بسلسلة المتطلبات التي تعتمد فيها |
requirement_ |
الوضع الذي تم تطبيقه على الشرط |
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_ |
إذا كان رمز السبب هو |
example_ |
إذا كان السبب مرتبطًا بعدم توافق الشحنة مع المركبة، يقدّم هذا الحقل فهرسًا لمركبة واحدة ذات صلة. |
الرمز
رمز يحدِّد نوع السبب لا معنى للترتيب هنا. على وجه الخصوص، لا يشير ذلك إلى ما إذا كان سبب معيّن سيظهر قبل سبب آخر في الحل، إذا كان كلاهما ينطبق.
عمليات التعداد | |
---|---|
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_ |
وقت بدء الفترة الزمنية الثابتة إذا لم يتم تحديدها، سيتم ضبطها على |
end_ |
وقت انتهاء الفترة الزمنية الصارمة إذا لم يتم تحديدها، سيتم ضبطها على |
soft_ |
وقت بدء الفترة الزمنية |
soft_ |
وقت الانتهاء النهائي لفترة زمنية معيّنة |
cost_ |
تكلفة لكل ساعة تُضاف إلى التكاليف الأخرى في النموذج إذا حدث الحدث قبل soft_start_time، ويتم احتسابها على النحو التالي:
يجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا إذا تم ضبط soft_start_time. |
cost_ |
تكلفة لكل ساعة تُضاف إلى التكاليف الأخرى في النموذج إذا حدث الحدث بعد
يجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا إذا تم ضبط |
TransitionAttributes
تُحدِّد سمات الانتقالات بين زيارتَين متتاليتَين على مسار. قد تنطبق عدة TransitionAttributes
على عملية النقل نفسها: في هذه الحالة، تُجمع كل التكاليف الإضافية وينطبق الحدّ الأقصى أو القيود الأكثر صرامة (وفقًا للدلالات الطبيعية "و").
الحقول | |
---|---|
src_ |
علامات تحدّد مجموعة التحولات (src->dst) التي تنطبق عليها هذه السمات تتطابق زيارة مصدر أو بدء مركبة إذا كان حقل |
excluded_ |
يمكنك الاطّلاع على |
dst_ |
تتطابق زيارة الوجهة أو نهاية المركبة إذا كان الحقل |
excluded_ |
يمكنك الاطّلاع على |
cost |
تحدّد تكلفة لتنفيذ هذا النقل. تكون هذه القيمة بالوحدة نفسها المستخدَمة في جميع التكاليف الأخرى في النموذج، ويجب ألا تكون سالبة. ويتم تطبيقها بالإضافة إلى جميع التكاليف الحالية الأخرى. |
cost_ |
تحدّد تكلفة لكل كيلومتر تُطبَّق على المسافة المقطوعة أثناء تنفيذ هذا النقل. ويضاف إلى أي |
distance_ |
تحدّد هذه السمة حدًا أقصى للمسافة التي يتم قطعها أثناء تنفيذ هذا الانتقال. اعتبارًا من حزيران (يونيو) 2021، أصبح بإمكانك استخدام الحدود الدنيا فقط. |
delay |
تُحدِّد هذه السمة تأخّرًا يحدث عند تنفيذ هذا الانتقال. يحدث هذا التأخير دائمًا بعد إنهاء زيارة المصدر وقبل بدء زيارة الوجهة. |
مركبة
نماذج مركبة تواجه مشكلة في الشحن سيؤدي حلّ مشكلة الشحن إلى إنشاء مسار يبدأ من start_location
وينتهي في end_location
لهذه المركبة. المسار هو تسلسل من الزيارات (راجِع ShipmentRoute
).
الحقول | |
---|---|
display_ |
الاسم المعروض للمركبة الذي حدّده المستخدم يمكن أن يصل طوله إلى 63 حرفًا وقد يستخدم أحرف UTF-8. |
travel_ |
وضع التنقّل الذي يؤثر في الطرق التي يمكن للمركبة استخدامها وسرعتها يمكنك أيضًا الاطّلاع على |
route_ |
مجموعة من الشروط التي يجب استيفاؤها والتي تؤثّر في طريقة احتساب المسارات للمركبة المحدّدة. |
start_ |
الموقع الجغرافي الذي تبدأ منه المركبة قبل استلام أي شحنات إذا لم يتم تحديده، تبدأ المركبة في أول عملية استلام. إذا كان نموذج الشحن يتضمّن مصفوفات المدة والمسافة، يجب عدم تحديد |
start_ |
نقطة طريق تمثّل موقعًا جغرافيًا تبدأ منه المركبة قبل استلام أي شحنات. إذا لم يتم تحديد |
end_ |
الموقع الجغرافي الذي تنتهي فيه المركبة بعد إكمال آخر |
end_ |
نقطة طريق تمثّل موقعًا جغرافيًا تنتهي فيه المركبة بعد إكمال آخر |
start_ |
تُحدِّد العلامات المرفقة ببداية مسار المركبة. لا يُسمح باستخدام سلاسل فارغة أو مكرّرة. |
end_ |
تحدّد العلامات المرفقة بنهاية مسار المركبة. لا يُسمح باستخدام سلاسل فارغة أو مكرّرة. |
start_ |
الفترات الزمنية التي يمكن خلالها للمركبة مغادرة موقعها الجغرافي الأولي ويجب أن تكون ضمن الحدود الزمنية العامة (راجِع حقول يجب أن تكون الفترات الزمنية التي تنتمي إلى الحقل المتكرّر نفسه غير متداخلة، أي لا يمكن أن تتداخل أي فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بالترتيب الزمني. لا يمكن ضبط |
end_ |
الفترات الزمنية التي قد تصل خلالها المركبة إلى موقعها النهائي ويجب أن تكون ضمن الحدود الزمنية العامة (راجِع حقول يجب أن تكون الفترات الزمنية التي تنتمي إلى الحقل المتكرّر نفسه غير متداخلة، أي لا يمكن أن تتداخل أي فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بالترتيب الزمني. لا يمكن ضبط |
unloading_ |
تم فرض سياسة التفريغ على المركبة. |
load_ |
سعة المركبة (الوزن والحجم وعدد المنصات مثلاً) المفاتيح في الخريطة هي معرّفات لنوع الحمولة، بما يتوافق مع مفاتيح حقل |
cost_ |
تكاليف المركبات: تُجمع جميع التكاليف ويجب أن تكون بالوحدة نفسها المستخدَمة في التكلفة لكل ساعة من مسار المركبة يتم تطبيق هذه التكلفة على إجمالي الوقت المستغرَق في المسار، ويشمل ذلك وقت التنقّل ووقت الانتظار ووقت الزيارة. قد يؤدي استخدام |
cost_ |
التكلفة لكل ساعة من مسار المركبة لا تُطبَّق هذه التكلفة إلا على مدة التنقّل التي يستغرقها المسار (أي المدة المُسجَّلة في |
cost_ |
التكلفة لكل كيلومتر من مسار المركبة يتم تطبيق هذه التكلفة على المسافة الواردة في |
fixed_ |
يتم تطبيق تكلفة ثابتة إذا تم استخدام هذه المركبة لمعالجة شحنة. |
used_ |
لا ينطبق هذا الحقل إلا على المركبات التي لا يمرّ مسارها بأي شحنات. يشير ذلك إلى ما إذا كان يجب اعتبار المركبة مستعملة أم لا في هذه الحالة. إذا كان صحيحًا، تنتقل المركبة من موقعها الجغرافي الأول إلى موقعها الجغرافي النهائي حتى إذا لم تكن تنقل أي شحنات، ويتم أخذ تكاليف الوقت والمسافة الناتجة عن التنقّل من نقطة البداية إلى نقطة النهاية في الاعتبار. بخلاف ذلك، لا تنتقل المركبة من موقع البدء إلى موقع النهاية، ولا يتم تحديد أي |
route_ |
الحدّ الذي يتم تطبيقه على إجمالي مدة مسار المركبة في |
travel_ |
الحدّ المفروض على مدة التنقّل في مسار المركبة في |
route_ |
الحدّ الذي يتم تطبيقه على إجمالي مسافة مسار المركبة في |
extra_ |
تحدِّد خريطة من سلاسل visit_types إلى المدّات. المدة هي الوقت بالإضافة إلى إذا كان طلب الزيارة يتضمّن أنواعًا متعدّدة، ستتم إضافة مدة لكل نوع في الخريطة. |
break_ |
يصف جدول الراحة الذي سيتم فرضه على هذه المركبة. إذا كانت فارغة، لن يتم جدولة أي فواصل لهذه المركبة. |
label |
تُحدِّد تصنيفًا لهذه المركبة. يتم تسجيل هذا التصنيف في الردّ على أنّه |
ignore |
إذا كانت القيمة صحيحة، يجب أن تكون إذا تم تنفيذ عملية شحن بواسطة مركبة تم تجاهلها في إذا تم تنفيذ عملية شحن بواسطة مركبة تم تجاهلها في |
travel_ |
تُحدِّد هذه السمة عاملاً مضاعِفًا يمكن استخدامه لزيادة أو تقليل أوقات التنقّل لهذه المركبة. على سبيل المثال، يعني ضبط هذا المقياس على 2.0 أنّ هذه المركبة أبطأ وأنّ مدد التنقّل فيها ضعف مدد التنقّل في المركبات العادية. ولا يؤثّر هذا المُضاعِف في مدّة الزيارة. ويؤثر ذلك في التكلفة في حال تحديد تحذير: سيتم تقريب أوقات التنقّل إلى أقرب ثانية بعد تطبيق هذا المُضاعِف ولكن قبل إجراء أي عمليات رقمية، وبالتالي قد يؤدي المُضاعِف الصغير إلى فقدان الدقة. يُرجى الاطّلاع أيضًا على |
DurationLimit
حدّ يحدّد الحدّ الأقصى لمدة مسار مركبة يمكن أن يكون صلبًا أو لينًا.
عند تحديد حقل حدّ أدنى غير صارم، يجب تحديد الحدّ الأقصى غير الصارم والتكلفة المرتبطة به معًا.
الحقول | |
---|---|
max_ |
حدّ ثابت يفرض ألا تتجاوز المدة max_duration |
soft_ |
الحدّ المقبول هو حدّ لا يفرض الحدّ الأقصى لمدة الرحلة، ولكن عند مخالفته، يتسبب في تحمّل المسار تكلفة. تضاف هذه التكلفة إلى التكاليف الأخرى المحدّدة في النموذج، باستخدام الوحدة نفسها. يجب أن تكون |
quadratic_ |
الحدّ المُعتدل هو حدّ لا يفرض الحدّ الأقصى لمدة الرحلة، ولكن عند انتهاكه، يتسبب في تحمّل المسار تكلفةً تتناسب طرديًا مع المدة. تضاف هذه التكلفة إلى التكاليف الأخرى المحدّدة في النموذج، باستخدام الوحدة نفسها. يجب أن تكون
|
cost_ |
التكلفة لكل ساعة يتم تحصيلها في حال انتهاك الحدّ الأقصى
يجب أن تكون التكلفة غير سالبة. |
cost_ |
التكلفة لكل ساعة مربّعة يتمّ تحصيلها في حال انتهاك الحدّ الأقصى تكون التكلفة الإضافية 0 إذا كانت المدة أقل من الحدّ الأدنى، وإلا تعتمد التكلفة على المدة على النحو التالي:
يجب أن تكون التكلفة غير سالبة. |
LoadLimit
تُحدِّد الحد الأقصى للحمولة التي يمكن أن تحملها المركبة، مثلاً "يمكن أن تحمل هذه الشاحنة ما يصل إلى 3500 كيلوغرام فقط". يمكنك الاطّلاع على load_limits
.
الحقول | |
---|---|
soft_ |
حدّ غير حاسم للحمل يمكنك الاطّلاع على |
cost_ |
إذا تجاوز الحمولة |
start_ |
الفاصل الزمني المقبول لتحميل المركبة في بداية المسار |
end_ |
الفاصل الزمني المقبول لتحميل المركبة في نهاية المسار |
max_ |
الحد الأقصى المسموح به للحمل |
الفاصل الزمني
الفاصل الزمني لمقدار الحمل المقبول
الحقول | |
---|---|
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_ |
اختيارية: يشير ذلك إلى أنّ الموقع الجغرافي لنقطة المرور هذه يُفضّل أن تتوقف المركبة على جانب معيّن من الطريق. عند ضبط هذه القيمة، سيمرّ المسار عبر الموقع الجغرافي لكي تتمكّن المركبة من التوقف على جانب الطريق الذي يميل إليه الموقع الجغرافي من مركز الطريق. لا يعمل هذا الخيار مع وضع التنقّل "المشي". |
حقل الربط location_type طرق مختلفة لتمثيل موقع جغرافي يمكن أن يكون location_type واحدًا فقط مما يلي: |
|
location |
نقطة محدّدة باستخدام إحداثيات جغرافية، بما في ذلك عنوان اختياري |
place_ |
معرّف مكان نقطة الاهتمام المرتبط بنقطة الطريق |