- تمثيل JSON
- الشحن
- VisitRequest
- LatLng
- نقطة المسار
- الموقع الجغرافي
- TimeWindow
- مركبة
- TravelMode
- UnloadingPolicy
- LoadLimit
- الفاصل
- DurationLimit
- DistanceLimit
- BreakRule
- BreakRequest
- FrequencyConstraint
- DurationDistanceMatrix
- الصف
- TransitionAttributes
- ShipmentTypeIncompatibility
- IncompatibilityMode
- ShipmentTypeRequirement
- RequirementMode
- PrecedenceRule
يتضمّن نموذج الشحن مجموعة من الشحنات التي يجب أن تقوم بها مجموعة من المركبات مع تقليل التكلفة الإجمالية وهي مجموع ما يلي:
- تكلفة توجيه المركبات (مجموع التكلفة لكل مدة زمنية إجمالية والتكلفة لكل وقت سفر والتكلفة الثابتة على جميع المركبات).
- بعقوبات الشحن غير المطبقة.
- وتكلفة المدة العالمية للشحنات
تمثيل JSON |
---|
{ "shipments": [ { object ( |
الحقول | |
---|---|
shipments[] |
تمثّل هذه السمة مجموعة عمليات الشحن التي يجب إجراؤها في النموذج. |
vehicles[] |
مجموعة من المركبات التي يمكن استخدامها لإجراء الزيارات. |
globalStartTime |
وقت البدء والانتهاء العالمي للنموذج: لا يمكن اعتبار أي أوقات خارج هذا النطاق صالحة. يجب أن تكون الفترة الزمنية للنموذج أقل من سنة، أي أنّ عند استخدام حقول طابع زمني بتنسيق RFC3339 UTC "Zulu" ، مع دقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
globalEndTime |
في حال ترك هذه السياسة بدون ضبط، سيتم استخدام الوضع التلقائي 00:00:00 حسب التوقيت العالمي المنسَّق (UTC) 1 كانون الثاني (يناير) 1971 (أي الثواني: 31536000 وnanos: 0). طابع زمني بتنسيق RFC3339 UTC "Zulu" ، مع دقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
globalDurationCostPerHour |
"المدة العالمية" للخطة الإجمالية هي الفرق بين أقرب وقت بدء فعّال وأحدث وقت انتهاء فعّال لجميع المركبات. ويمكن للمستخدمين تحديد تكلفة في الساعة لتلك الكمية من أجل محاولة تحسينها لإكمال المهام في أقرب وقت ممكن، على سبيل المثال. يجب أن تكون هذه التكلفة في وحدة |
durationDistanceMatrices[] |
لتحديد مصفوفات المدة والمسافة المستخدمة في النموذج. إذا كان هذا الحقل فارغًا، سيتمّ استخدام "خرائط Google" أو المسافات الجيوديسية بدلاً من ذلك، وفقًا لقيمة الحقل أمثلة على استخدام هذه الكلمة في جملة:
|
durationDistanceMatrixSrcTags[] |
علامات تحدد مصادر مصفوفات المدة والمسافة؛ تتوافق العلامات مع |
durationDistanceMatrixDstTags[] |
علامات تحدد وجهات مصفوفات المدة والمسافة؛ تتوافق العلامات مع |
transitionAttributes[] |
سمات الانتقال المضافة إلى النموذج. |
shipmentTypeIncompatibilities[] |
مجموعات من shipping_types (أنواع_الشحن) غير المتوافقة (يُرجى الاطّلاع على |
shipmentTypeRequirements[] |
مجموعات من متطلبات |
precedenceRules[] |
مجموعة قواعد الأولوية التي يجب فرضها في النموذج. |
maxActiveVehicles |
تفرض هذه السياسة قيودًا على الحد الأقصى لعدد المركبات النشِطة. تكون المركبة نشطة إذا كان مسارها يؤدي عملية شحن واحدة على الأقل. ويمكن استخدام ذلك للحد من عدد المسارات في حال كان عدد السائقين أقل من عدد المركبات وإذا كان أسطول المركبات غير متجانس. بعد ذلك، تختار عملية التحسين أفضل مجموعة فرعية من المركبات لاستخدامها. يجب أن يكون إيجابيًا تمامًا. |
الشحنة
شحن سلعة واحدة، من إحدى عمليات الاستلام إلى إحدى عمليات التسليم عند النظر في إتمام عملية الشحن، يجب أن تزور مركبة فريدة أحد مواقع الاستلام الخاصة بها (مع تخفيض السعة الاحتياطية لها وفقًا لذلك)، ثم زيارة أحد مواقع التسليم في وقت لاحق (وبالتالي إعادة زيادة السعة الاحتياطية وفقًا لذلك).
تمثيل JSON |
---|
{ "displayName": string, "pickups": [ { object ( |
الحقول | |
---|---|
displayName |
الاسم المعروض الذي يحدده المستخدم للشحنة يمكن أن يصل طوله إلى 63 حرفًا، وقد يستخدم أحرف UTF-8. |
pickups[] |
مجموعة بدائل الاستلام المرتبطة بالشحنة وفي حال عدم تحديد هذه السياسة، لن تحتاج المركبة سوى إلى زيارة الموقع الجغرافي المرتبط بعمليات التسليم. |
deliveries[] |
مجموعة بدائل التوصيل المرتبطة بالشحنة. في حال عدم تحديد هذه السمة، يجب أن تزور المركبة الموقع الجغرافي المرتبط بخدمات استلام الطلب فقط. |
loadDemands |
متطلبات تحميل الشحنة (مثل الوزن والحجم وعدد المنصّات وما إلى ذلك) يجب أن تكون المفاتيح في الخريطة عبارة عن معرّفات تصف نوع الحمل المقابل، ومن الأفضل تضمين الوحدات أيضًا. على سبيل المثال: "weight_kg" و"Volume_gallons" و"pallet_count" وما إلى ذلك. إذا لم يظهر مفتاح معيّن في الخريطة، سيتم اعتبار التحميل المقابل فارغًا. عنصر يحتوي على قائمة من أزواج |
allowedVehicleIndices[] |
تمثّل هذه السمة مجموعة المركبات التي يمكنها تنفيذ هذه الشحنة. ويمكن لجميع المركبات تنفيذ هذا الإجراء إذا كانت فارغة. تتوفّر المركبات حسب الفهرس الخاص بها في قائمة |
costsPerVehicle[] |
تحدّد التكلفة التي يتم تكبدها عند تسليم هذه الشحنة من قِبل كل مركبة. إذا تم تحديدها، يجب أن تحتوي على أي مما يلي:
يجب أن تكون هذه التكاليف في وحدة |
costsPerVehicleIndices[] |
مؤشرات للمركبات التي ينطبق عليها |
pickupToDeliveryAbsoluteDetourLimit |
تحدّد هذه السمة الحد الأقصى لمدة التحويل المطلق مقارنةً بأقصر مسار بدءًا من استلام الطلب إلى مكان التسليم. وفي حال تحديدها، يجب أن تكون القيمة غير سالبة، ويجب أن تحتوي الشحنة على قيمة استلام وتسليم على الأقل. على سبيل المثال، اجعل أقل وقت يمكن فيه الانتقال من خيار استلام الطلب البديل مباشرةً إلى خيار التوصيل المحدّد. بعد ذلك، يفرض ضبط "
في حال تحديد حدود نسبية ومطلقة على الشحنة نفسها، يتم استخدام الحدّ الأكثر تقييدًا لكل زوج من الطلبات التي يمكن استلامها أو توصيلها. اعتبارًا من 2017/2010، أصبحت عمليات التحويل متاحة فقط عندما لا تعتمد مُدد السفر على المركبات. مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
pickupToDeliveryTimeLimit |
تحدّد هذه السمة الحدّ الأقصى للمدة الزمنية من بداية الاستلام إلى بداية تسليم الشحنة. وفي حال تحديدها، يجب أن تكون القيمة غير سالبة، ويجب أن تحتوي الشحنة على قيمة استلام وتسليم على الأقل. ولا يعتمد ذلك على البدائل التي يتم اختيارها للاستلام والتسليم، ولا على سرعة المركبة. ويمكن تحديد ذلك إلى جانب الحد الأقصى لقيود التحويل: سيلتزم الحلّ بكلا المواصفات. مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
shipmentType |
سلسلة غير فارغة تحدد "النوع" لهذه الشحنة يمكن استخدام هذه الميزة لتحديد حالات عدم التوافق أو المتطلبات في الفترة بين تختلف عن السمة |
label |
لتحديد تصنيف لهذه الشحنة. يتم الإبلاغ عن هذا التصنيف في الرد ضمن |
ignore |
في حال اختيار القيمة "صحيح"، يمكنك تخطّي هذه الشحنة بدون تطبيق سمة يؤدي تجاهل شحنة إلى حدوث خطأ في عملية التحقّق في حال وجود أي يُسمح بتجاهل الشحنة التي يتم تنفيذها في |
penaltyCost |
إذا لم تكتمل الشحنة، تُضاف هذه العقوبة إلى التكلفة الإجمالية للمسارات. تُعتبر الشحنة مكتملة إذا تم زيارة أحد بدائل الاستلام والتسليم. قد يتم التعبير عن التكلفة في الوحدة نفسها المستخدمة في جميع الحقول الأخرى ذات الصلة بالتكلفة في النموذج، ويجب أن تكون موجبة. ملاحظة مُهمة: إذا لم يتم تحديد هذه العقوبة، تُعتبر غير محدودة، أي يجب إكمال الشحنة. |
pickupToDeliveryRelativeDetourLimit |
تحدّد هذه السمة الحد الأقصى لمدة التحويل النسبي مقارنةً بأقصر مسار بدءًا من استلام الطلب وصولاً إلى التسليم. وفي حال تحديدها، يجب أن تكون القيمة غير سالبة، ويجب أن تحتوي الشحنة على قيمة استلام وتسليم على الأقل. على سبيل المثال، اجعل أقل وقت يمكن فيه الانتقال من خيار استلام الطلب البديل مباشرةً إلى خيار التوصيل المحدّد. بعد ذلك، يفرض ضبط "
في حال تحديد حدود نسبية ومطلقة على الشحنة نفسها، يتم استخدام الحدّ الأكثر تقييدًا لكل زوج من الطلبات التي يمكن استلامها أو توصيلها. اعتبارًا من 2017/2010، أصبحت عمليات التحويل متاحة فقط عندما لا تعتمد مُدد السفر على المركبات. |
VisitRequest
طلب زيارة يمكن للمركبة أن تنفذه: يحتوي على موقع جغرافي (أو اثنين، انظر أدناه)، وأوقات الفتح والإغلاق التي يتم تمثيلها بالنوافذ الزمنية، ومدة الخدمة (الوقت الذي تقضيه المركبة بعد وصولها لاستلام السلع أو تسليمها).
تمثيل JSON |
---|
{ "arrivalLocation": { object ( |
الحقول | |
---|---|
arrivalLocation |
الموقع الجغرافي الذي تصل إليه المركبة عند تنفيذ |
arrivalWaypoint |
نقطة الطريق التي تصل فيها المركبة عند تنفيذ |
departureLocation |
الموقع الجغرافي الذي تغادر فيه المركبة بعد إكمال |
departureWaypoint |
تمثّل هذه السمة نقطة الطريق التي تغادر فيها المركبة بعد إكمال عملية |
tags[] |
تُستخدَم لتحديد العلامات المُرفَقة بطلب الزيارة. غير مسموح بالسلاسل الفارغة أو المكرّرة. |
timeWindows[] |
يشير ذلك المصطلح إلى فترات زمنية تحدّ من وقت الوصول إلى إحدى الزيارات. يُرجى العِلم أنّ المركبة قد تغادر خارج فترة الوصول، أي أنّ وقت الوصول والمدة ليست شرطًا أن تكون ضمن النافذة الزمنية. قد يؤدي ذلك إلى زيادة وقت الانتظار في حال وصول المركبة قبل يعني عدم توفّر يجب أن تكون الفترات الزمنية منفصلة، بمعنى ألا تتداخل فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب متزايد. لا يمكن ضبط كل من |
duration |
مدة الزيارة، أي الوقت الذي تقضيه المركبة بين الوصول والمغادرة (ستتم إضافتها إلى وقت الانتظار المحتمل، يُرجى الاطّلاع على مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
cost |
تكلفة خدمة طلب الزيارة هذا على مسار المركبة. يمكن استخدام هذه الطريقة لدفع تكاليف مختلفة لكل عملية استلام أو تسليم بديلة لشحنة. يجب أن تكون هذه التكلفة في وحدة |
loadDemands |
تحميل طلبات طلب الزيارة هذا يشبه ذلك الحقل عنصر يحتوي على قائمة من أزواج |
visitTypes[] |
تُحدِّد أنواع الزيارات. يمكن استخدام ذلك لتخصيص وقت إضافي مطلوب لمركبة لإكمال هذه الزيارة (يُرجى الاطّلاع على لا يمكن أن يظهر النوع سوى مرة واحدة. |
label |
تُحدِّد تصنيفًا لهذا |
LatLng
يشير ذلك المصطلح إلى كائن يمثّل زوجًا من خط العرض/خط الطول. يتم التعبير عن ذلك كزوج من الزوجين لتمثيل خطوط الطول والعرض بالدرجات. يجب أن يتوافق هذا العنصر مع معيار WGS84 ما لم يرد خلاف ذلك. يجب أن تكون القيم ضمن النطاقات التي تمت تسويتها.
تمثيل JSON |
---|
{ "latitude": number, "longitude": number } |
الحقول | |
---|---|
latitude |
تمثّل هذه السمة خط العرض بالدرجات. يجب أن يكون ضمن النطاق [-90.0، +90.0]. |
longitude |
خط الطول بالدرجات. يجب أن يكون ضمن النطاق [-180.0، +180.0]. |
النقطة الوسيطة
تتضمن هذه الطريقة نقطة وسيطة. تحدد نقاط الطرق مواقع الوصول والمغادرة فيvisitRequests ومواقع بدء ونهاية المركبات.
تمثيل JSON |
---|
{ "sideOfRoad": boolean, // Union field |
الحقول | |
---|---|
sideOfRoad |
اختياريّ. تشير هذه القيمة إلى أن موقع نقطة الطريق هذه يتم تفضيله للمركبة للتوقف على جانب معين من الطريق. عند تعيين هذه القيمة، سيمر المسار عبر الموقع بحيث يمكن للمركبة أن تتوقف على جانب الطريق الذي يكون الموقع متحيزًا له من مركز الطريق. لا يعمل هذا الخيار مع وضع السفر "المشي". |
حقل الاتحاد location_type طرق مختلفة لتمثيل موقع جغرافي يمكن أن يكون الحقل "location_type " واحدًا فقط مما يلي: |
|
location |
نقطة يتم تحديدها باستخدام الإحداثيات الجغرافية، بما في ذلك عنوان اختياري. |
placeId |
رقم تعريف مكان نقطة الاهتمام المرتبط بالنقطة الوسيطة |
الموقع الجغرافي
تتضمن هذه السمة موقعًا (نقطة جغرافية وعنوان اختياري).
تمثيل JSON |
---|
{
"latLng": {
object ( |
الحقول | |
---|---|
latLng |
الإحداثيات الجغرافية لنقطة الطريق |
heading |
يرتبط عنوان البوصلة باتجاه تدفق حركة المرور. تُستخدم هذه القيمة لتحديد جانب الطريق المراد استخدامه للاستلام والتسليم. يمكن أن تتراوح قيم العنوان من 0 إلى 360، حيث يشير الرقم 0 إلى عنوان باتجاه الشمال، بينما يحدد الرقم 90 عنوانًا باتجاه الشرق المطلوب، وما إلى ذلك. |
TimeWindow
تقيد الإطارات الزمنية وقت الحدث، مثل وقت الوصول في زيارة، أو وقت بدء وانتهاء المركبة.
يتم فرض أول وأحدث وقت للحدث، startTime
وendTime
، ضمن الإطار الزمني الصعب، مثل startTime <= event_time <=
endTime
. تعبّر الفترة الزمنية الأولية، softStartTime
، عن تفضيلك لإقامة الحدث في softStartTime
أو بعده من خلال تحمُّل تكلفة نسبة إلى المدة التي تسبق وقوع الحدث softStartTime. تعبّر الفترة الزمنية الأولية، softEndTime
، عن تفضيل وقوع الحدث في softEndTime
أو قبله، من خلال تحمُّل تكلفة نسبية إلى مدة وقوع الحدث بعد softEndTime
. يجب أن يكون كلّ من startTime
وendTime
وsoftStartTime
وsoftEndTime
ضمن الحدود الزمنية العالمية (راجِع ShipmentModel.global_start_time
وShipmentModel.global_end_time
) ويجب الالتزام بما يلي:
0 <= `startTime` <= `softStartTime` <= `endTime` and
0 <= `startTime` <= `softEndTime` <= `endTime`.
تمثيل JSON |
---|
{ "startTime": string, "endTime": string, "softStartTime": string, "softEndTime": string, "costPerHourBeforeSoftStartTime": number, "costPerHourAfterSoftEndTime": number } |
الحقول | |
---|---|
startTime |
وقت بدء فترة الوقت الصعب. وفي حال عدم تحديدها، سيتم ضبطها على طابع زمني بتنسيق RFC3339 UTC "Zulu" ، مع دقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
endTime |
وقت انتهاء فترة الوقت الصعب. وفي حال عدم تحديدها، سيتم ضبطها على طابع زمني بتنسيق RFC3339 UTC "Zulu" ، مع دقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
softStartTime |
تمثّل هذه السمة وقت البدء الأولي للفترة الزمنية. طابع زمني بتنسيق RFC3339 UTC "Zulu" ، مع دقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
softEndTime |
وقت الانتهاء الأولي للفترة الزمنية. طابع زمني بتنسيق RFC3339 UTC "Zulu" ، مع دقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
costPerHourBeforeSoftStartTime |
التكلفة في الساعة مُضافة إلى التكاليف الأخرى في النموذج إذا وقع الحدث قبل softStartTime، ويتم احتسابها على النحو التالي:
يجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا في حال ضبط softStartTime. |
costPerHourAfterSoftEndTime |
التكلفة في الساعة مضافة إلى التكاليف الأخرى في النموذج في حال وقوع الحدث بعد
يجب أن تكون هذه التكلفة موجبة، ولا يمكن ضبط الحقل إلا في حال ضبط |
مركبة
يصور مركبة في مشكلة شحن. يؤدي حلّ مشكلة الشحن إلى إنشاء مسار لهذه المركبة يبدأ من startLocation
وينتهي في endLocation
. المسار هو سلسلة من الزيارات (راجِع ShipmentRoute
).
تمثيل JSON |
---|
{ "displayName": string, "travelMode": enum ( |
الحقول | |
---|---|
displayName |
تشير هذه السمة إلى الاسم المعروض الذي يحدّده المستخدم للمركبة. يمكن أن يصل طوله إلى 63 حرفًا، وقد يستخدم أحرف UTF-8. |
travelMode |
وضع السفر الذي يؤثر في الطرق التي يمكن للمركبة استخدامها وسرعتها. يمكنك أيضًا الاطّلاع على |
startLocation |
تشير هذه السمة إلى الموقع الجغرافي الذي تبدأ منه المركبة قبل استلام أي شحنات. وفي حال عدم تحديد هذه السياسة، تبدأ المركبة عند أول استلام لها. إذا كان نموذج الشحن يتضمّن مصفوفات للمدة والمسافة، يجب عدم تحديد السمة |
startWaypoint |
نقطة طريق تمثّل موقعًا جغرافيًا تبدأ منه المركبة قبل استلام أيّ شحنات. إذا لم يتم تحديد |
endLocation |
الموقع الجغرافي الذي تنتهي فيه المركبة بعد اكتمال آخر |
endWaypoint |
نقطة طريق تمثّل موقعًا جغرافيًا تنتهي فيه المركبة بعد إكمال آخر |
startTags[] |
تُحدِّد العلامات المُرفَقة ببداية مسار المركبة. غير مسموح بالسلاسل الفارغة أو المكرّرة. |
endTags[] |
تحدّد العلامات المُرفَقة بنهاية مسار المركبة. غير مسموح بالسلاسل الفارغة أو المكرّرة. |
startTimeWindows[] |
النوافذ الزمنية التي قد تغادر خلالها المركبة موقع انطلاقها. ويجب أن تكون ضمن الحدود الزمنية العامة (راجِع حقول يجب أن تكون النوافذ الزمنية التي تنتمي إلى الحقل المتكرر نفسه منفصلة، بمعنى ألا تتداخل فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب زمني. لا يمكن ضبط كل من |
endTimeWindows[] |
النوافذ الزمنية التي قد تصل خلالها المركبة إلى موقع الانتهاء الخاص بها. ويجب أن تكون ضمن الحدود الزمنية العامة (راجِع حقول يجب أن تكون النوافذ الزمنية التي تنتمي إلى الحقل المتكرر نفسه منفصلة، بمعنى ألا تتداخل فترة زمنية مع أخرى أو تكون مجاورة لها، ويجب أن تكون بترتيب زمني. لا يمكن ضبط كل من |
unloadingPolicy |
سياسة إلغاء التحميل التي تم فرضها على المركبة |
loadLimits |
سعات المركبة (الوزن والحجم وعدد المنصّات النقّالة على سبيل المثال). المفاتيح في الخريطة هي معرّفات نوع التحميل، بما يتوافق مع مفاتيح الحقل عنصر يحتوي على قائمة من أزواج |
costPerHour |
تكاليف المركبة: يجب أن تكون جميع التكاليف في وحدة التكلفة في الساعة لمسار المركبة ويتم تطبيق هذه التكلفة على إجمالي الوقت الذي يستغرقه المسار، ويشمل ذلك مدة السفر ووقت الانتظار ووقت الزيارة. قد يؤدي استخدام |
costPerTraveledHour |
التكلفة لكل ساعة يتم قطعها على مسار المركبة. لا تنطبق هذه التكلفة إلا على مدة الرحلة التي يستغرقها المسار (أي المعدّل المسجّل في |
costPerKilometer |
التكلفة لكل كيلومتر من مسار المركبة يتم تطبيق هذه التكلفة على المسافة المبلّغ عنها في |
fixedCost |
يتم تطبيق تكلفة ثابتة إذا تم استخدام هذه المركبة للتعامل مع شحنة. |
usedIfRouteIsEmpty |
ينطبق هذا الحقل فقط على المركبات عندما لا يخدم مسارها أي شحنات. وتشير إلى ما إذا كان يجب اعتبار المركبة مستعمَلة في هذه الحالة. إذا كانت صحيحة، تنتقل المركبة من موقع البداية إلى النهاية حتى لو لم تكن تقدم أي شحنات، وتؤخذ في الاعتبار تكاليف الوقت والمسافة الناتجة عن انطلاقتها --> الرحلة النهائية. وبخلاف ذلك، لن تتحرك هذه المركبة من موقع البداية إلى النهاية، ولا يتم تحديد موعد لمدة |
routeDurationLimit |
يتم تطبيق الحد على إجمالي مدة مسار المركبة. في سمة " |
travelDurationLimit |
يتم تطبيق الحدّ على مدة التنقّل لمسار المركبة. في |
routeDistanceLimit |
تم تطبيق الحدّ على المسافة الإجمالية لمسار المركبة. في |
extraVisitDurationForVisitType |
تُستخدَم لتحديد خريطة من سلاسلvisitTypes إلى المُدد. وهذه المدة هي الوقت بالإضافة إلى إذا كان طلب الزيارة يتضمن أنواعًا متعددة، ستتم إضافة مدة لكل نوع في الخريطة. عنصر يحتوي على قائمة من أزواج |
breakRule |
توضّح هذه السمة الجدول الزمني للاستراحة الذي سيتم فرضه على هذه المركبة. إذا كانت هذه الميزة فارغة، لن يتم تحديد مواعيد فترات الاستراحة في هذه المركبة. |
label |
تحدّد هذه السمة تصنيفًا لهذه المركبة. يتم الإبلاغ عن هذا التصنيف في الرد باعتباره |
ignore |
في حال ضبطها على "صحيح"، يجب أن تكون قيمة إذا تم تنفيذ عملية شحن من خلال مركبة تم تجاهلها في إذا تم تنفيذ عملية شحن من قِبل مركبة تم تجاهلها في |
travelDurationMultiple |
تحدّد هذه السمة عاملاً مضاعفًا يمكن استخدامه لزيادة أو تقليل مدد التنقّل لهذه المركبة. على سبيل المثال، يعني الضبط على 2.0 أنّ هذه المركبة أبطأ وأن مدّتها تزيد عن ضعف مدة التنقّل للمركبات العادية. لا يؤثر هذا المضاعف في مدد الزيارات. ولا يؤثر ذلك في التكلفة إذا تم تحديد تحذير: سيتم تقريب مدة الرحلة إلى أقرب ثانية بعد تطبيق هذا المضاعف، ولكن قبل إجراء أي عمليات عددية، قد يؤدي المضاعف الصغير إلى فقدان الدقة. راجِع أيضًا |
TravelMode
وسائل النقل التي يمكن للمركبات استخدامها
ويجب أن تكون هذه القنوات مجموعة فرعية من أوضاع التنقّل في واجهة برمجة التطبيقات المفضَّلة لـ "منصة خرائط Google"، ويمكنك الاطّلاع على: https://developers.google.com/maps/documentation/routes_preferred/reference/rest/Shared.Types/RouteTravelMode.
عمليات التعداد | |
---|---|
TRAVEL_MODE_UNSPECIFIED |
وضع السفر غير محدّد، يعادل DRIVING . |
DRIVING |
وضع السفر المقابل لاتجاهات القيادة (سيارة، ...). |
WALKING |
وضع السفر المقابل لاتجاهات المشي. |
UnloadingPolicy
سياسة حول كيفية تفريغ حمولات المركبة ينطبق ذلك فقط على الشحنات التي يتمّ فيها استلام الطلب وتوصيله.
ويمكن إجراء عمليات شحن أخرى مجانًا في أي مكان على المسار بشكل مستقل عن unloadingPolicy
.
عمليات التعداد | |
---|---|
UNLOADING_POLICY_UNSPECIFIED |
سياسة تفريغ شحن غير محدّدة: يجب أن يتم تسليم الطلبات بعد عمليات استلام الطلبات المقابلة لها. |
LAST_IN_FIRST_OUT |
يجب أن يتم تسليم الطلبات بترتيب عكسي لعمليات الاستلام. |
FIRST_IN_FIRST_OUT |
يجب أن تكون عمليات التسليم بنفس ترتيب استلام الطلبات. |
LoadLimit
تحدّد هذه السمة حد الحمولة الذي ينطبق على أي مركبة، على سبيل المثال "لا يمكن لهذه الشاحنة حمل أكثر من 3, 500 كلغ". يمكنك الاطّلاع على loadLimits
.
تمثيل JSON |
---|
{ "softMaxLoad": string, "costPerUnitAboveSoftMax": number, "startLoadInterval": { object ( |
الحقول | |
---|---|
softMaxLoad |
حد خفيف للتحميل. يمكنك الاطّلاع على |
costPerUnitAboveSoftMax |
إذا تجاوز الحمل |
startLoadInterval |
فاصل التحميل المقبول للمركبة في بداية المسار. |
endLoadInterval |
فاصل التحميل المقبول للمركبة في نهاية المسار. |
maxLoad |
الحد الأقصى المقبول لحجم التحميل |
الفاصل الزمني
الفاصل الزمني لمعدّل تحميل البيانات المقبولة
تمثيل JSON |
---|
{ "min": string, "max": string } |
الحقول | |
---|---|
min |
أدنى حِمل مقبول. يجب أن تكون القيمة ≥ 0. إذا تم تحديد كلاهما، يجب أن تكون قيمة الحقل |
max |
الحد الأقصى للتحميل المقبول. يجب أن تكون القيمة ≥ 0. وفي حال عدم تحديد هذه الرسالة، لن يتم فرض قيود على الحد الأقصى للتحميل. إذا تم تحديد كلاهما، يجب أن تكون قيمة الحقل |
DurationLimit
حد يحدّد أقصى مدة لمسار مركبة. يمكن أن يكون صلبًا أو ناعمًا.
عند تحديد حقل الحدّ الأقصى، يجب تحديد كلّ من الحدّ الأقصى الأولي والتكلفة المرتبطة به معًا.
تمثيل JSON |
---|
{ "maxDuration": string, "softMaxDuration": string, "quadraticSoftMaxDuration": string, "costPerHourAfterSoftMax": number, "costPerSquareHourAfterQuadraticSoftMax": number } |
الحقول | |
---|---|
maxDuration |
حد صارم يقيد المدة لتبلغ الحد الأقصى maxDuration. مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
softMaxDuration |
لا يفرض حد أوّلي ويتم إضافة هذه التكلفة إلى التكاليف الأخرى المحددة في النموذج مع الوحدة نفسها. إذا تم تحديدها، يجب أن تكون قيمة مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
quadraticSoftMaxDuration |
لا يفرض الحد الأولي حدًا أقصى للمدة، ولكن عندما يتم انتهاك الطريق، ينتج عنه تكلفة تربيعية خلال المدة. ويتم إضافة هذه التكلفة إلى التكاليف الأخرى المحددة في النموذج مع الوحدة نفسها. إذا تم تحديدها، يجب أن تكون قيمة
مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
costPerHourAfterSoftMax |
التكلفة لكل ساعة يتم تكبدها في حال انتهاك الحد الأدنى
يجب أن تكون التكلفة غير سالبة. |
costPerSquareHourAfterQuadraticSoftMax |
التكلفة لكل ساعة مربّعة يتم تكبدها في حال انتهاك الحدّ الأدنى تكون التكلفة الإضافية 0 إذا كانت المدة أقل من الحدّ الأدنى، وإلا ستعتمد التكلفة على المدة على النحو التالي:
يجب أن تكون التكلفة غير سالبة. |
DistanceLimit
حد يحدد أقصى مسافة يمكن قطعها. يمكن أن يكون صلبًا أو ناعمًا.
في حال تحديد حد أوّلي، يجب تحديد كل من softMaxMeters
وcostPerKilometerAboveSoftMax
واستخدام قيمة غير سالبة.
تمثيل JSON |
---|
{ "maxMeters": string, "softMaxMeters": string, "costPerKilometerAboveSoftMax": number } |
الحقول | |
---|---|
maxMeters |
حد صارم يقيد المسافة لتبلغ أقصى حد للمسافة. يجب أن يكون الحد قيمة غير سالبة. |
softMaxMeters |
لا يفرض الحد الأولي حدًا أقصى للمسافة، ولكن عند انتهاك هذا الحد يؤدي إلى تكلفة ما يصل إلى التكاليف الأخرى المحددة في النموذج، مع الوحدة نفسها. إذا تم تحديد softMaxMeters يجب أن تكون أقل من maxMeters يجب أن يكون قيمة غير سالبة. |
costPerKilometerAboveSoftMax |
التكلفة لكل كيلومتر يتم تكبدها إذا كانت المسافة أعلى من الحد الأقصى البالغ
يجب أن تكون التكلفة غير سالبة. |
BreakRule
قواعد لإنشاء فترات راحة لمركبة (مثل فترات الاستراحة في الغداء) الفاصل هو فترة زمنية متجاورة تظل خلالها المركبة في وضع عدم النشاط في موضعها الحالي ولا يمكنها إجراء أي زيارة. قد يحدث استراحة:
- أثناء السفر بين زيارتين (بما في ذلك الوقت السابق للزيارة أو بعدها مباشرةً، ولكن ليس في منتصفها)، وفي هذه الحالة، يتم تمديد وقت النقل المقابل بين الزيارات.
- أو قبل بدء تشغيل المركبة (قد لا تعمل المركبة في منتصف الاستراحة)، في هذه الحالة لن يؤثّر ذلك في وقت بدء المركبة.
- أو بعد انتهاء المركبة (كما هو الحال مع وقت انتهاء المركبة).
تمثيل JSON |
---|
{ "breakRequests": [ { object ( |
الحقول | |
---|---|
breakRequests[] |
سلسلة من الفواصل الإعلانية. اطّلِع على رسالة |
frequencyConstraints[] |
قد تنطبق عدة |
BreakRequest
ويجب معرفة مسبقًا تسلسل الفواصل (أي عدد الفواصل الإعلانية وترتيبها) الذي ينطبق على كل مركبة. تحدِّد سمات BreakRequest
المتكرّرة ذلك التسلسل بالترتيب الذي يجب أن يحدث به. قد تتداخل الفترات الزمنية (earliestStartTime
/ latestStartTime
)، ولكن يجب أن تكون متوافقة مع الترتيب (يتم وضع علامة في هذا المربّع).
تمثيل JSON |
---|
{ "earliestStartTime": string, "latestStartTime": string, "minDuration": string } |
الحقول | |
---|---|
earliestStartTime |
مطلوبة. الحد الأدنى (شامل) في بداية الفاصل. طابع زمني بتنسيق RFC3339 UTC "Zulu" ، مع دقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
latestStartTime |
مطلوبة. الحد الأقصى (شامل) في بداية الفاصل. طابع زمني بتنسيق RFC3339 UTC "Zulu" ، مع دقة نانوثانية وما يصل إلى تسعة أرقام كسرية. أمثلة: |
minDuration |
مطلوبة. الحد الأدنى لمدة الفاصل. يجب أن تكون القيمة موجبة. مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
FrequencyConstraint
يمكن أيضًا فرض قيود على معدل تكرار الفواصل الإعلانية ومدتها من خلال فرض حد أدنى لتكرار الفواصل الإعلانية، على سبيل المثال "يجب أن تتوفر استراحة لمدة ساعة واحدة على الأقل كل 12 ساعة". لنفترض أنّه يمكن تفسير ذلك على أنّه "يجب أن تكون هناك استراحة واحدة على الأقل لمدة ساعة واحدة على الأقل خلال أي فترة زمنية مدتها 12 ساعة"، وسيترجم هذا المثال إلى FrequencyConstraint
التالي:
{
minBreakDuration { seconds: 3600 } # 1 hour.
maxInterBreakDuration { 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
تمثيل JSON |
---|
{ "minBreakDuration": string, "maxInterBreakDuration": string } |
الحقول | |
---|---|
minBreakDuration |
مطلوبة. الحد الأدنى لمدة الفاصل لهذا القيد. غير سالب. الاطّلاع على وصف مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
maxInterBreakDuration |
مطلوبة. الحد الأقصى للامتداد المسموح به لأي فاصل زمني في المسار لا يشتمل على فاصل جزئي لمدة مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
DurationDistanceMatrix
تحدِّد هذه السياسة مصفوفة المدة والمسافة من المواقع الجغرافية للزيارة وبداية المركبات إلى المواقع الجغرافية لانتهاء المركبة.
تمثيل JSON |
---|
{
"rows": [
{
object ( |
الحقول | |
---|---|
rows[] |
لتحديد صفوف مصفوفة المدة والمسافة. يجب أن يحتوي على العديد من العناصر مثل |
vehicleStartTag |
علامة تحدد المركبات التي تنطبق عليها هذه المدة ومصفوفة المسافة إذا كان الحقل فارغًا، ينطبق ذلك على جميع المركبات، ويمكن أن يكون هناك مصفوفة واحدة فقط. يجب أن تتطابق بداية كل مركبة مع مصفوفة واحدة فقط، أي يجب أن يتطابق حقل واحد فقط من حقول يجب أن تحتوي جميع المصفوفات على |
الصف
لتحديد صف لمصفوفة المدة والمسافة.
تمثيل JSON |
---|
{ "durations": [ string ], "meters": [ number ] } |
الحقول | |
---|---|
durations[] |
قيم المدة لصف محدَّد. يجب أن يحتوي على العديد من العناصر مثل مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
meters[] |
تمثّل هذه السمة قيم المسافة لصف محدَّد. إذا لم تكن هناك تكاليف أو قيود تشير إلى المسافات في النموذج، يمكن ترك هذا الحقل فارغًا، وإلا يجب أن يحتوي على عدد عناصر يساوي |
TransitionAttributes
تحدِّد سمات الانتقالات بين زيارتين متتاليتين على المسار. قد تنطبق العديد من TransitionAttributes
على عملية الانتقال نفسها: في هذه الحالة، يتم جمع جميع التكاليف الإضافية ويتم تطبيق القيد أو الحد الأكثر صرامة (باتباع دلالات "و" الطبيعية).
تمثيل JSON |
---|
{
"srcTag": string,
"excludedSrcTag": string,
"dstTag": string,
"excludedDstTag": string,
"cost": number,
"costPerKilometer": number,
"distanceLimit": {
object ( |
الحقول | |
---|---|
srcTag |
العلامات التي تحدّد مجموعة عمليات النقل (src->dst) التي تنطبق عليها هذه السمات. تتطابق زيارة المصدر أو بدء المركبة إذا كانت |
excludedSrcTag |
يمكنك الاطّلاع على |
dstTag |
تتطابق زيارة الوجهة أو نهاية المركبة إذا كانت |
excludedDstTag |
يمكنك الاطّلاع على |
cost |
تُحدِّد تكلفة تنفيذ عملية النقل هذه. هذه الوحدة موجودة في نفس الوحدة مثل جميع التكاليف الأخرى في النموذج ويجب ألا تكون سالبة. ويتم تطبيقه على جميع التكاليف الحالية الأخرى. |
costPerKilometer |
لتحديد التكلفة لكل كيلومتر يتم تطبيقها على المسافة التي تم قطعها أثناء إجراء هذا الانتقال. يمكن إضافة أي |
distanceLimit |
تحدد هذه السمة حدًا للمسافة المقطوعة أثناء إجراء عملية الانتقال هذه. اعتبارًا من عام 2021/2021، ستتم إتاحة الحدود القصوى فقط. |
delay |
تحدِّد هذه السياسة المهلة الزمنية عند تنفيذ عملية النقل هذه. ويحدث هذا التأخير دائمًا بعد الانتهاء من زيارة المصدر وقبل بدء زيارة الوجهة. مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
ShipmentTypeIncompatibility
تحدِّد أوجه عدم التوافق بين الشحنات استنادًا إلى نوع الشحنة الخاص بها. يتم تقييد ظهور الشحنات غير المتوافقة على المسار نفسه استنادًا إلى وضع عدم التوافق.
تمثيل JSON |
---|
{
"types": [
string
],
"incompatibilityMode": enum ( |
الحقول | |
---|---|
types[] |
قائمة الأنواع غير المتوافقة. الشحنتان اللتان تتضمّنان سمة |
incompatibilityMode |
تم تطبيق الوضع على عدم التوافق. |
IncompatibilityMode
الأوضاع التي تحدّد كيفية حظر ظهور الشحنات غير المتوافقة على المسار نفسه
عمليات التعداد | |
---|---|
INCOMPATIBILITY_MODE_UNSPECIFIED |
وضع عدم التوافق غير محدَّد. يجب عدم استخدام هذه القيمة مطلقًا. |
NOT_PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، لا يمكن مطلقًا لشحنتين ذات نوعَين غير متوافقَين مشاركة المركبة نفسها. |
NOT_IN_SAME_VEHICLE_SIMULTANEOUSLY |
بالنسبة إلى شحنتين ذات نوعَين غير متوافقَين مع وضع عدم التوافق في "
|
ShipmentTypeRequirement
تحدد هذه السمة المتطلبات بين عمليات الشحن استنادًا إلى نوع الشحن الخاص بها. يتم تحديد تفاصيل المتطلبات من خلال وضع المتطلبات.
تمثيل JSON |
---|
{
"requiredShipmentTypeAlternatives": [
string
],
"dependentShipmentTypes": [
string
],
"requirementMode": enum ( |
الحقول | |
---|---|
requiredShipmentTypeAlternatives[] |
قائمة بأنواع الشحن البديلة المطلوبة من قِبل " |
dependentShipmentTypes[] |
تتطلّب جميع الشحنات ذات النوع الوارد في الحقل ملاحظة: لا يُسمح بسلاسل المتطلبات التي يعتمد عليها |
requirementMode |
تم تطبيق الوضع على المتطلبات. |
RequirementMode
الأوضاع التي تحدِّد شكل الشحنات التابعة على مسار معيّن
عمليات التعداد | |
---|---|
REQUIREMENT_MODE_UNSPECIFIED |
وضع المتطلبات غير محدَّد يجب عدم استخدام هذه القيمة مطلقًا. |
PERFORMED_BY_SAME_VEHICLE |
في هذا الوضع، يجب أن تتشارك جميع الشحنات "التابعة" المركبة نفسها مع شحنة واحدة على الأقل من شحناتها "المطلوبة". |
IN_SAME_VEHICLE_AT_PICKUP_TIME |
باستخدام وضع وبالتالي، يجب أن يكون لاستلام الشحنة "التابعة" أيًا مما يلي:
|
IN_SAME_VEHICLE_AT_DELIVERY_TIME |
تمامًا كما في السابق، باستثناء أنّ الشحنات "التابعة" يجب أن تحتوي على شحنة "مطلوبة" لمركباتها في وقت التسليم. |
PrecedenceRule
قاعدة الأولوية بين حدثَين (يمثّل كلّ حدث استلام شحنة أو تسليمها): يجب أن يبدأ الحدث "الثاني" على الأقل بعد offsetDuration
من بدء الحدث "الأول".
يمكن أن تشير العديد من الأسبقية إلى الأحداث نفسها (أو ذات صلة)، على سبيل المثال، "يتمّ استلام الطلب من السلعة (ب) بعد تسليم الطلب (أ)" و"يتمّ استلام الطلب (ج) بعد استلام الطلب (ب)).
إضافةً إلى ذلك، لا تسري الأسبقية إلا عند تنفيذ كلتا الشحنتين وتجاهلهما.
تمثيل JSON |
---|
{ "firstIsDelivery": boolean, "secondIsDelivery": boolean, "offsetDuration": string, "firstIndex": integer, "secondIndex": integer } |
الحقول | |
---|---|
firstIsDelivery |
يشير إلى ما إذا كان الحدث "الأول" عبارة عن عملية تسليم. |
secondIsDelivery |
يشير إلى ما إذا كان الحدث "الثاني" عبارة عن عملية تسليم. |
offsetDuration |
الإزاحة بين الحدث "الأول" و "الثاني". ويمكن أن تكون سلبية. مدة بالثواني يصل عددها إلى تسعة أرقام كسرية وتنتهي بـ " |
firstIndex |
مؤشر الشحن للحدث "الأول" يجب تحديد هذا الحقل. |
secondIndex |
مؤشر الشحن للحدث "الثاني" يجب تحديد هذا الحقل. |